a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 122|回复: 1

[PC技术] 2012年计算机三级考试PC技术基础知识(46)

[复制链接]
发表于 2012-7-31 20:55:16 | 显示全部楼层 |阅读模式
数据开发-经典   1.按姓氏笔画排序:, k' e  O. \) }% R" ?; e
  Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
+ V! `% ~( `: X' S, o  2.数据库加密:! }) T) H' n/ [* D3 x) U
  select encrypt('原始密码')
* T8 I* P9 }' P7 P6 R8 n% ]  select pwdencrypt('原始密码')
  G* e7 U/ A2 v0 u8 C* j+ n4 J) L  select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')
! a  f  W8 Y: ~: V. h$ ?6 m  select pwdencrypt('原始密码')' O8 h& N3 S3 I7 e, v5 f
  select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
8 @' U) H  l3 W/ [/ E+ J0 W) J  3.取回表中字段:
4 V. O8 I( C8 k$ x, S  declare @list varchar(1000),& E0 G7 F: t& I4 n  K. G* v1 b
  @sql nvarchar(1000)
2 q) `) A' D8 Z  select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
" h, P* C* R8 d1 ~* Q' R4 u  set @sql='select '+right(@list,len(@list)-1)+' from 表A'7 F) n* [: X0 i
  exec (@sql)
( f) Y; ~" `1 W7 o2 x' V  4.查看硬盘分区:
; d! c" Y; S0 |  EXEC master..xp_fixeddrives- n- ]6 @1 F9 v4 }
  5.比较A,B表是否相等:5 Z/ Y. ?% p, p8 M
  if (select checksum_agg(binary_checksum(*)) from A)
( o  z9 t3 {& h, h  =4 ?# V! z/ e4 b. a7 u) D) m3 p
  (select checksum_agg(binary_checksum(*)) from B)% B% c8 k1 ~, o
  print '相等'
& B6 u7 ]3 x) l) ~5 n. H  else
% M: k: ~. z$ D' D8 S  w& D7 N) E" ]6 b! ^, W& L% ^( ]
  print '不相等'
回复

使用道具 举报

 楼主| 发表于 2012-7-31 20:55:17 | 显示全部楼层

2012年计算机三级考试PC技术基础知识(46)

  6.杀掉所有的事件探察器进程:</p>  DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
, k) v3 G3 Y: ~+ o0 G4 I4 z7 k6 G  WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
4 X5 V- q- M( q  EXEC sp_msforeach_worker '?'" m- o5 ]4 Y3 i3 T
  7.记录搜索:! \" [1 L' e; u- i' N5 J2 U; {+ k: v
  开头到N条记录
% `1 R* o4 |* Q: F2 D+ U  Select Top N * From 表
3 [4 d, @& {$ T3 V  -------------------------------$ V0 f3 W# a5 l- F! J, N1 p
  N到M条记录(要有主索引ID)
( n( O4 m5 D& c- ?  Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc
% t- Q% k$ O5 D' I& r  ----------------------------------3 u( a3 q" q4 L  B+ m
  N到结尾记录
& s" Z# b0 a  X  Select Top N * From 表 Order by ID Desc
, V$ T; ~, v0 `% g8 j8 ?. s  案例
8 v: O% f9 Y; _# S% ~6 J9 I2 n  例如1:一张表有一万多条记录,表的第一个字段 RecID 是自增长字段, 写一个SQL语句, 找出表的第31到第40个记录。1 v$ ^* i, M8 G  y& x6 f
  select top 10 recid from A where recid not in(select top 30 recid from A)
2 d, l# d; v+ u  S  分析:如果这样写会产生某些问题,如果recid在表中存在逻辑索引。
) z1 \) ?8 K3 }! I/ x' a* @+ j4 w  select top 10 recid from A where……是从索引中查找,而后面的select top 30 recid from A则在数据表中查找,这样由于索引中的顺序有可能和数据表中的不一致,这样就导致查询到的不是本来的欲得到的数据。
& ^0 ^" T5 h' N6 P4 ^  解决方案
" l2 O: c' |3 |3 x& e" f) Z, j  1, 用order by select top 30 recid from A order by ricid 如果该字段不是自增长,就会出现问题
) a5 F7 A2 N0 z1 j; y/ L1 X0 R3 n  2, 在那个子查询中也加条件:select top 30 recid from A where recid>-1
" L* k8 E- |( X  例2:查询表中的最后以条记录,并不知道这个表共有多少数据,以及表结构。& y6 ^8 g# Z1 ?* u6 l5 ]
  set @s = 'select top 1 * from T where pid not in (select top ' + str(@count-1) + ' pid from T)'
! W3 @6 k! T* v* R$ k" {  print @s exec sp_executesql @s6 z% ^, g5 }# Z; P2 w
  9:获取当前数据库中的所有用户表1 Z+ ]1 }! S+ y
  select Name from sysobjects where xtype='u' and status>=0 
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-17 18:25 , Processed in 0.184497 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表