常用 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 1

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,')

SQL Server 2

装显示或不形为影响的行数:

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 角色的分子SQL Server用 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

SQL Server 3

SQL Server 4

 查询、删除指定表及指定列的默认值约束,以及去除字段(即列)。

-- 查询指定表的指定列的默认值约束 或 指定表的所有默认值约束
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

 

相关文章