常用 SQL 語句使用的總結


 1 --SQL 語句為表添加字段並設置默認值
 2 alter table Student        --表名
 3 add fee        --添加的字段名
 4 int        --字段類型
 5 not null    --是否為空
 6 default 15        --默認值
 7 
 8 
 9 --修改字段的數據類型和是否為空
10 alter table Student        
11 alter column S_Sex
12 varchar(10) null 
13 
14 
15 -- with 把查詢出來的表當做源表,但是必須把數據庫的兼容性設置為:90+
16 with t as (select * from Student)
17 
18 select * from t
19 
20 
21 -- 為表Student添加一個列
22 alter table Student
23 add C_S_Id int null
24 
25 -- 為表Student新增列添加外鍵約束
26 alter table Student        -- 需要建立外鍵的表名
27 add constraint C_S_Id        -- 外鍵約束名
28 foreign key (C_S_Id)        -- 指定外鍵表的外鍵列的列名
29 references Course(C_Id)    -- 關聯表的關聯列的列名
30 go
31 
32 
33 -- 查詢出指定表的外鍵約束名
34 select name  
35 from  sys.foreign_key_columns f 
36 inner join sys.objects o on f.constraint_object_id=o.object_id 
37 where f.parent_object_id=object_id('Student')    -- Student 表名
38 
39 
40 -- 刪除指定外鍵約束名的外鍵約束
41 alter table Course drop constraint FK__Course__Stu_Id__15502E78        --FK__Course__Stu_Id__15502E78 外鍵約束名
42 
43 
44 --返回一個指定數據庫的信息
45 sp_helpdb Test
46 
47 --返回所有數據庫的信息
48 sp_helpdb
49 
50 --返回一個指定數據庫對象(即表、視圖等)的信息
51 sp_help Course
52 
53 --返回所有數據庫表對象(即表、視圖等)的信息
54 sp_help
55 
56 
57 --設置數據庫兼容性
58 ALTER DATABASE Test        --數據庫名
59 SET COMPATIBILITY_LEVEL = 80||90||100    --可以設置為80、90或100
60 GO
61 
62 
63  -- 設置允許將顯式值插入表的標識列中
64  SET IDENTITY_INSERT Student on
65  go
66  -- 設置不允許將顯式值插入表的標識列中
67  SET IDENTITY_INSERT Student off
68  go
69 
70 --on:表示設置為可以手動輸入標識列的值
71 --off:表示設置為不可以手動輸入標識列的值
72 
73 
74 SET NOCOUNT ON
75 --當 SET NOCOUNT 為 ON 時,不返回計數(表示受 Transact-SQL 語句影響的行數)。
76 --當 SET NOCOUNT 為 OFF 時,返回計數。
77 
78 SET QUOTED_IDENTIFIER ON
79 --當 SET QUOTED_IDENTIFIER 為 ON 時,標識符可以由雙引號分隔,而文字必須由單引號分隔。
80 --當 SET QUOTED_IDENTIFIER 為 OFF 時,標識符不可加引號,且必須遵守所有 Transact-SQL 標識符規則。
81 
82 SET ANSI_NULLS ON
83 --當SET ANSI_NULLS為ON時,那么SQL語句中,判斷為空的寫法就要修改為WHERE 字段 IS NULL。
84 --當SET ANSI_NULLS為OFF時,判斷為空的寫法就要修改為WHERE 字段=NULL。
1 -- 為表 Student 的字段 C_Id 添加唯一約束
2 ALTER TABLE Student                -- 表名
3 ADD CONSTRAINT UQ_CourseID_Primary_Key    -- 約束名
4 UNIQUE (C_Id)    -- 指定字段名
5 
6 -- 為表 Student 的字段 S_Name 添加默認值約束
7 ALTER TABLE Student    -- 表名
8 ADD CONSTRAINT DF_S_Name_Default    -- 約束名
9 DEFAULT('233') FOR S_Name    -- 指定字段名
1 -- 為表 Student 的字段 C_Id 添加外鍵約束並設置級聯刪除、更新
2 
3 ALTER TABLE Student        -- 表名
4 ADD CONSTRAINT FK_C_Id_Foreign_Key    -- 約束名
5 FOREIGN KEY (C_Id)   -- 外鍵列
6 REFERENCES Course(C_Id)        -- 指定關聯表的關聯字段
7 ON UPDATE CASCADE    -- 設置級聯更新
8 ON DELETE CASCADE    -- 設置級聯刪除

補充一個添加和刪除主鍵約束和查詢指定表的主外鍵約束名的 sql 語句:

 1 --為已存在的表添加主鍵
 2 alter table Student        --表名
 3 add constraint S_C_Id    --主鍵約束名
 4 primary key (S_Id)    --指定要添加主鍵的列
 5 
 6 
 7 --根據表名查詢表的主外鍵名
 8 select a.Name as 表名,b.Xtype as 鍵類型,b.Name as 鍵名
 9 from sysobjects a,sysobjects b
10 where a.ID=b.parent_obj and a.name='Student'
11 and b.Xtype in('F','PK')
12 
13 
14 --刪除指定表的主鍵約束
15 alter table Student        --表名
16 drop constraint PK__Student__A3DFF08D170CE4CD  -- PK__Student__A3DFF08D170CE4CD 主鍵約束名

 使用 sql 系統存儲過程(sp_helpconstraint)根據指定表的表名查詢表中的約束。

為指定表添加主鍵約束,但顯式設置為非聚集索引。

-- 根據 指定表名 查詢 表的約束
exec sp_helpconstraint UserInfo      -- UserInfo 表名

-- 根據指定主鍵約束名刪除指定表的主鍵約束
alter table UserInfo drop constraint PK__UserInfo__5A2040BBA6D6767A 

-- 添加主鍵約束,但設置為非聚集索引
alter table UserInfo add constraint PK__UserInfo__5A2040BBA6D6767A primary key nonclustered (U_Id)

使用 sql 系統存儲過程(sp_rename)修改指定表的表名或指定表的字段名。

1 --指定表 UserInfo 中的字段名 RoleID 修改為 P_Id
2 exec sp_rename 'UserInfo.RoleID','P_Id'
3 
4 --指定表名 UserInfo 修改為新表名 UserInfo
5 exec sp_rename 'UserInfo_Id','UserInfo'

注意: 更改對象名的任一部分都可能會破壞腳本和存儲過程。

使用 sql 系統存儲過程(sp_helptext)獲取自定義存儲過程、視圖、函數等創建的 T-SQL 文本(不可以用於表)。

1   --獲取自定義創建存儲過程 T-SQL 文本 
2   EXEC sp_helptext 'SctStu'
3   
4   --獲取自定義創建視圖 T-SQL 文本 
5   EXEC sp_helptext 'V_DEMO_Ceshi'
6   
7   --獲取自定義創建函數 T-SQL 文本
8   EXEC sp_helptext 'Split'

sql server 按照 in 的值的順序進行排序:

1 -- 按照 in 的值進行排序
2 select * from Student 
3 where S_StuNo in ('014','003','009')
4 order by CHARINDEX(','+S_StuNo+',',',014,003,009,')

設置顯示或不顯示受影響的行數:

1 -- 設置為 不顯示 受影響的行數
2 set nocount on
3 
4 -- 設置為 顯示 受影響的行數
5 set nocount off

設置等待執行時間:

1 select * from Student    --查詢第一個表
2 
3 waitfor delay '0:0:3'    -- 3秒之后執行下一條語句
4 
5 select * from Course    -- 查詢第二個表

使用 RAISERROR 自定義拋出異常:

1  --拋出自定義的異常,在最后的catch塊中統一處理異常
2  RAISERROR(233333,16,3)

參數:

MessageId:

異常的唯一標識,且這個值會被賦值給 SQL Server 的系統變量 @@Error。自定義異常的 MessageId 建議使用 50000 以后的,因為 50000 以內的會被系統異常占用。

Severity:

異常的級別。任何用戶都可以指定 0 至 18 的級別。小於 0 的級別被解釋為 0,大於 25 的級別被解釋為 25。

19 到 25 級別的錯誤,只能由 sysadmin 角色的成員用 WITH LOG 選項指定。19 到 25 級別的錯誤,將記錄到錯誤日志和應用程序日志。

20 到 25 級別的錯誤,被認為是致命的;遇到致命的級別錯誤,客戶端的連接將在收到消息后終止。C# 中的 catch 塊中可以俘獲 錯誤級別 11 到 19 級別的異常。

0 至 10 之間的級別不會被 catch 捕獲,而 20 到 25 級別的異常,被認為是致命的,會被斷開數據庫連接。所以 C# cath 塊可以接受到這種異常,但異常的內容不是真正的異常內容,可能是類似這樣的內容:“在從服務器接收結果時發生傳輸級錯誤”。

State:

如果輸入負值或大於255 的值會生成錯誤,產生錯誤則會中斷數據庫的連接。

 

使用 for xml path 把查詢的數據轉換為 XML 格式。

select * 
from Student 
where S_Id='7' 
for xml path

 查詢、刪除指定表及指定列的默認值約束,以及刪除字段(即列)。

-- 查詢指定表的指定列的默認值約束 或 指定表的所有默認值約束
SELECT * 
FROM sys.default_constraints a 
LEFT JOIN sys.sysconstraints b ON a.object_id = b.constid AND a.parent_object_id=b.id
LEFT JOIN sys.columns c ON a.object_id = c.default_object_id
WHERE a.parent_object_id = OBJECT_ID('Student')        -- Student 指定的表名稱

AND c.NAME='Flag'    -- Flag 指定的列名稱,如果不加這個條件就查詢整個表的默認值約束
      -- 刪除指定表的默認值約束
      ALTER TABLE Student DROP constraint DF__Stu__Flag__707E9C7C
      
      -- 刪除指定表的指定字段(列)
      ALTER TABLE Student DROP COLUMN Flag

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM