(一)、T-SQL语句
1、创建数据库:
exec sp_configure 'show advanced options' , 1
go
exec reconfigure
go
exec sp_configure 'xp_cmdshell' , 1
go
exec xp_cmdshell 'mkdir filename'
go
约束:
alter table 表名
添加约束:add constraint 约束名 约束类型 具体的约束说明
删除约束:drop constraint 约束名
约束示例:
alter table Student
add constraint PK_stuNo primary key (StudentNo)
alter table Student
add constraint UQ_stuId UNIQUE (IdentityCard)
alter table Student
add constraint DF_stuAddress default ('No details') for Address
alter table Student
add constraint CK_stuBornDate check (BornDate >= '1980-01-01')
alter table Result
add constraint FK_stuNo foreign key (stuNo) references Student (stuNo)
2、SQL编程
定义变量:declare @variable_name DataType
给变量赋值:set @variable_name = value 或 select @variable_name = value
set 不支持同时对多个变量赋值,表达式返回多个值时出错,未返回值时,变量被赋NULL值
select 支持同时对多个变量赋值,表达式返回多个值时将返回的最后一个值赋给变量,未返回值时,将保持原值
输出:
print 局部变量或字符串
select 局部变量 as 自定义列名
类型转换:
cast (变量名 as 数据类型)
convert (数据类型 , 变量名)
逻辑控制语句:
begin-end语句
begin
语句块
end
if-else条件语句
if (条件) 语句或语句块1
else 语句或语句块2
while循环语句
while (条件)
begin
语句或语句块
[ break | continue ]
end
case多分支语句
case
when 条件1 then 结果1
when 条件2 then 结果2
[else 其他结果]
end
批处理
go指令:每个批处理之间是相互独立的,标志批处理的结束
3、高级查询
子查询:将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个,适合作为查询的筛选条件
表连接:适合查看多表的数据
=^=一般来说,表连接都可以使用子查询完成,但反过来说却不一定=^=
IN子查询,使主查询匹配子查询返回的多个单列值
EXISTS关键字能够检测数据是否存在
子查询注意事项:
select (子查询) from 表名 子查询结果为单行单列,但不必指定列名
select * from (子查询) as 表的别名 必须为表指定别名
4、事务、视图和索引
事务:单个的工作单元
开始事务:begin transaction
提交事务:commit transaction
回滚撤销事务:rollback transaction
视图:
创建:
create view view_name
as
<select 语句>
删除
drop view view_name
索引:
创建索引:
create [unique] [clustered | nonclustered] index index_name
on table_name (column_name [ , column_name] ... )
[ with fillfactor = x ]
删除索引
drop index table_name.index_name,先删除非聚集索引,后删除聚集索引
查询
select * from table_name
with (index = index_name)
where 条件
5、存储过程
创建存储过程:
create proc[edure] 存储过程名
[ { @参数1 数据类型 } [= 默认值 ] output ]
as
SQL语句
删除存储过程:
drop proc[edure] 存储过程名
注意:使用输出参数的时候,需重新定义然后获取输出变量
处理错误消息:
raiserror语句
raiserror ( { msg_id | msg_str } { , severity , state } [ with option ])
msg_id:在sysmessages系统表中指定用户定义错误消息
msg_str:用户定义的特定消息,最长为255个字符
severity:用户定义的严重性级别
state:表示错误状态,是1-127的值
option:指示是否将错误记录到服务器错误日志中