資料開發庫 經典

2021-08-25 16:10:02 字數 3431 閱讀 8646

1.

按姓氏筆畫排序:

select * from tablename order by customername collate chinese_prc_stroke_ci_as //

從少到多

2.

資料庫加密:

select encrypt('

原始密碼')

select pwdencrypt('原始密碼')

select pwdcompare('原始密碼','加密後密碼') = 1--相同;否則不相同 encrypt('原始密碼')

select pwdencrypt('原始密碼')

select pwdcompare('原始密碼','加密後密碼') = 1--相同;否則不相同

3.

取回表中字段:

declare @list varchar(1000),

@sql nvarchar(1000) 

select @list=@list+

','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name=

'表a'

set @sql=

'select '

+right(@list,len(@list)-1)+

' from 

表a' 

exec (@sql)

4.

檢視硬碟分割槽:

exec master..xp_fixeddrives

5.

比較a,b表是否相等:

if (select checksum_agg(binary_checksum(*)) from a)

=(select checksum_agg(binary_checksum(*)) from b)

print '

相等'else

print '不相等'

6.

殺掉所有的事件探察器程序:

declare hcforeach cursor global for select 'kill '+rtrim(spid) from master.dbo.sysprocesses

where program_name in('sql profiler',n'sql 

事件探查器')

exec sp_msforeach_worker '?'

7.記錄搜尋:

開頭到n條記錄

select top n * from 

表-------------------------------

nm條記錄(要有主索引id)

select top m-n * from 

表where id in (select top m id from 

表) order by id   desc

----------------------------------

n到結尾記錄

select top n * from 

表order by id desc

案例

例如1:一張表有一萬多條記錄,表的第乙個字段 recid 是自增長字段, 寫乙個sql語句, 找出表的第31到第40個記錄。

select top 10 recid from a where recid not  in(select top 30 recid from a)

分析:如果這樣寫會產生某些問題,如果recid在表中存在邏輯索引。

select top 10 recid from a where

……是從索引中查詢,而後面的

select top 30 recid from a

則在資料表中查詢,這樣由於索引中的順序有可能和資料表中的不一致,這樣就導致查詢到的不是本來的欲得到的資料。

解決方案

1,用order byselect top 30 recid from a order by ricid如果該欄位不是自增長,就會出現問題

2,在那個子查詢中也加條件:select top 30 recid from a where recid>-1

2:查詢表中的最後以條記錄,並不知道這個表共有多少資料

,以及表結構。

set 

@s= 

'select top 1 * from t   where pid not in (select top '

+str

(@count-1

) + 

' pid from  t)'

print 

@***ec  

sp_executesql

@s

9

:獲取當前資料庫中的所有使用者表

select name from sysobjects where xtype='u' and status>=0

10

:獲取某乙個表的所有字段

select name from 

syscolumns

where id=

object_id

('表名')

select name from 

syscolumns

where id in (select id from 

sysobjects

where type = 'u' and name = '

表名')

兩種方式的效果相同

經典資料庫問題

1.快速填充數字輔助表 倍增,平方根,平方 2.獲取已有範圍和缺失範圍 3.獲取每個員工最新的3個訂單 4.統計字串內某子字串出現的次數 利用replace函式 5.實現except all 6.拆分元素 table usetempdb goif object id dbo.arrays isnot...

資料庫開發

前面四種 除了基本的sql方面的知識,還要對開發流程,軟體工程,各種框架和開發工具等等 資料庫應用開發這個方向上的機會最多,職位最多,薪水一般 資料建模專家 data modeler 除了基本的sql方面的知識,非常熟悉資料庫原理,資料建模 負責將使用者對資料的需求轉化為資料庫物理設計和物理設計 這...

還原資料庫的經典做法

還原資料庫的經典做法 許可權 如果不存在要還原的資料庫,則使用者必須有 create database 許可權才能執行 restore。如果存在該資料庫,則 restore 許可權預設授予 sysadmin 和 dbcreator 固定伺服器角色成員以及該資料庫的所有者 dbo restore 許可...