a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 119|回复: 1

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

[复制链接]
发表于 2012-7-31 20:55:16 | 显示全部楼层 |阅读模式
数据开发-经典   1.按姓氏笔画排序:
# [. R1 N' B+ z7 V" f  Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
6 }# w- U4 |- }8 E  2.数据库加密:# @& x( i' P( j3 R
  select encrypt('原始密码')5 X% w* M  A5 v* ?. r
  select pwdencrypt('原始密码')
1 L% P7 v7 n: h  select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')
8 i( I$ g8 Z: I  select pwdencrypt('原始密码')
  h& O/ P4 ]$ F" P$ X" R$ f! ]  select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
/ [5 N: i" N6 a+ |" n1 i6 H/ ]  3.取回表中字段:
% [, p" }- A. s# _, \# _. C+ N  declare @list varchar(1000),
9 m) j! G* c8 ^) |: q8 O1 {  @sql nvarchar(1000)* h2 d7 F  A0 }! E
  select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
& `2 r8 N4 F- G. X  set @sql='select '+right(@list,len(@list)-1)+' from 表A'
/ q% ]3 T: R* {) R  exec (@sql)
. l- Q7 l8 n6 b  4.查看硬盘分区:
4 c% s# b) _/ c5 U/ k1 W  EXEC master..xp_fixeddrives& P* H" f( i4 L; l  E$ Z# N
  5.比较A,B表是否相等:
6 G. E, I: L$ p- i0 Z  if (select checksum_agg(binary_checksum(*)) from A)
1 P% r" `) w$ j! e8 ?  =. G% [8 c: v* Q: V( ?$ G
  (select checksum_agg(binary_checksum(*)) from B)
4 Z3 `. F+ {) @0 X  print '相等'8 {) q1 H2 r. {( U; s; w+ G  }! H
  else, K$ _7 q) i" p' G/ L; H

3 ^0 l$ ~0 c& R' q  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
" h' O" G9 L( A* j' G" U  WHERE program_name IN('SQL profiler',N'SQL 事件探查器')- l, a4 K) P$ a) n) z( h, ]: [
  EXEC sp_msforeach_worker '?', Q0 \) G' k' v1 v" g2 o4 x
  7.记录搜索:
% s/ ~7 W2 P: m) Y9 t+ v1 W  开头到N条记录
/ J; d0 s2 a3 D& x  Select Top N * From 表
9 d( @: b" O  _/ K: m  -------------------------------
& I# h3 ?0 F+ D" e; T% V" u( y  N到M条记录(要有主索引ID)
! t/ ?+ {( t1 A0 [1 C  Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc0 K' \2 `; ~# x  z1 }* J
  ----------------------------------
/ _2 \7 z$ x3 e% H+ S; A  N到结尾记录. C- o9 n7 {3 v# y/ }! n/ Y1 @
  Select Top N * From 表 Order by ID Desc, U7 E, R9 e% e7 e- I- Y
  案例
' y1 c3 Q1 H- j( |" T  例如1:一张表有一万多条记录,表的第一个字段 RecID 是自增长字段, 写一个SQL语句, 找出表的第31到第40个记录。- f: V; e2 u; c0 f
  select top 10 recid from A where recid not in(select top 30 recid from A)! L' r7 F1 [: _  n
  分析:如果这样写会产生某些问题,如果recid在表中存在逻辑索引。
7 C7 W7 N; n' s/ ~3 E  select top 10 recid from A where……是从索引中查找,而后面的select top 30 recid from A则在数据表中查找,这样由于索引中的顺序有可能和数据表中的不一致,这样就导致查询到的不是本来的欲得到的数据。
4 k0 I5 z1 x4 G  n( B  解决方案- |; {. |& w' z
  1, 用order by select top 30 recid from A order by ricid 如果该字段不是自增长,就会出现问题4 S6 k4 f& j! D9 }8 ~8 {% _7 N- f9 ^
  2, 在那个子查询中也加条件:select top 30 recid from A where recid>-1
% Y: L; Y2 K& Z; s) _- a% V  例2:查询表中的最后以条记录,并不知道这个表共有多少数据,以及表结构。1 E, F8 n' [5 w  j" R" W+ b
  set @s = 'select top 1 * from T where pid not in (select top ' + str(@count-1) + ' pid from T)'
5 m1 t1 m* }7 v# k  Z$ m1 J1 P  print @s exec sp_executesql @s
0 o3 T4 _$ W* ^3 T5 X, I: M  9:获取当前数据库中的所有用户表
; e6 R6 [$ U1 U- N" H3 A# n' @) A  select Name from sysobjects where xtype='u' and status>=0 
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 10:42 , Processed in 0.275272 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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