根据T-SQL语句完成的具体功能,可以将T-SQL语句分为一下几类。
(1)变量说明语句:用来说明变量的语句。
(2)数据定义语句:用来创建数据库、数据库对象和定义列,大部分是以CREATE开头的语句,如CREATE TABLE、CREATE VIEW、DROP TABLE等。
(3)数据操作语句:用来操作数据库中数据的语句,如SELECT、INSERT、UPDATE、DELETE等。
(4)数据控制语句:用来控制数据库组件的获取许可、获取权限等语句,如GRANT、REVOKE等。
(5)流程控制语句:用来设计应用程序流程的语句,如IF WHILE和CASE等。
(6)内嵌函数:说明变量的语句。
(7)其他语句:嵌于语句中使用的标准函数。
1.数据定义语言
(一)CREATE语句
(1)CREATE INDEX:创建数据表索引
(2)CREATE PROCEDURE:创建预存程序
(3)CREATE FUNCTION:创建用户函数
(4)CREATE VIEW:创建视图
(5)CREATE TRIGEER:创建触发器
(6)CREATE DATABASE:创建数据库
(7)CREATE TABLE:创建数据表
(二)ALTER语句
(1)ALTER TABLE table_name
ADD column_name datatype:为表增加列
(2)ALTER TABLE table_name
DROP COLUMN column_name:删除表中的列
(3)ALTER TABLE table_name
ALTER COLUMN column_name datatype:改变列的数据类型
(三)DROP语句
(1)DROP TABLE table_name:删除表
(2)DROP DATABASE database_name:删除数据库
(3)DROP INDEX index_name:删除索引
2.数据操纵语句
(一)INSERT语句
(1)INSERT INTO table_name VALUES(val1,val2,val3,....):为表中所有列插入数据
(2)INSERT INTO table_name(col1,col2,...) VALUES(val1,val2,...):为指定列插入数据。
(二)UPDATE语句
(1)UPDATE table_name SET col1=val1,col2=val2 WHERE some_col=some_val:更新表中已存在的记录。
(三)DELETE语句
(1)DELETE FROM table_name WHERE some_col=some=val:删除表中不需要的记录。
(2)DELETE FROM table_name:删除表中所有数据
3.数据控制语句
(1)查看权限
--exec sp_helprotect NULL,用户名
exec sp_helprotect NULL,dba
(2)GRANT语句(授予权限)
Grant <权限> on 表名[(列名)] to 用户 With grant option
GRANT SELECT ON dept TO dba
//数据对象可以是表名或列名
//权限表示对表的操作,如select,update,insert,delete
注:授权命令是由数据库管理员使用的,若给用户分配权限时带With grant option子句,则普通用户获权后,可把自己的权限授予其他用户。
(3)REVOKE语句(收回权限)
REVOKE <权限> ON <数据对象> FROM <数据库用户名>
--如果没有级联的可以不使用CASCADE
REVOKE SELECT ON dbo.dept FROM dba
CASCADE--取消级联
(4)DENY语句(拒绝权限)
--拒绝用户权限,只有收回拒绝权限用户才能使用自己拥有的权限
DENY SELECT ON goodes TO dba
4.其他基本语句
(一)DECLARE语句
DECLARE语句为数据声明语句。数据声明语句可以声明局部变量、游标变量、函数和存储过程等。
DECLARE
@num INT =1,
@myCOUNT INT
(二)SET语句
SET语句为赋值语句,用于对局部变量进行赋值。
DECLARE
@num INT =1,
@myCOUNT INT
SET=@myCOUNT=2
(三)PRINT语句
PRINT语句为数据输出的语句。
PRINT @name
PRINT '姓名'
5.流程控制语句
(一)BEGIN...END
BEGIN...END语句用于将多个T-SQL语句组合成一个逻辑块
DECLARE
@count INT =0
WHILE @count<5
BEGIN
PRINT '@COUNT' +' '+CONVERT(VARCHAR,@count)
SELECT @count = @count+1
END
PRINT '@COUNT END'+‘ ‘+CONVERT(VARCHAR,@count)
结果
@COUNT 0
@COUNT 1
@COUNT 2
@COUNT 3
@COUNT 4
@COUNT END 5
(2)IF...ELSE语句
IF...ELSE语句用于在执行一组代码之前进行条件判断,根据判断的结果执行不同的代码。
DECLARE
@count INT =0
IF @count =0
PRINT 'GG'
ELSE
PRINT '100'
结果:GG
(3)CASE语句
CASE语句根据表达式逻辑值的真假来决定执行的代码流程。
DECLARE
@count INT =0
SELECT CASE @count WHEN 0 THEN 'GG'
WHEN 1 THEN '100' END
--结果:GG
SELECT CASE WHEN @count=0 THEN 'GG'
WHEN @count>0 THEN '100' END
--结果:GG
(4)WHILE语句
WHILE语句根据条件重复执行一条或多条T-SQL代码,只要条件表达式为真,就循环执行语句。
DECLARE
@count INT =0
WHILE @count!=-1
BEGIN
SELECT @count+=1
PRINT @count
IF @count = 100
BREAK
END
--@count=100时,BREAK跳出循环
(5)GOTO语句
使用goto语句能够改变程序的流程,让程序自己主动跳到我们要运行的程序行
DECLARE
@num INT,@sa INT
SELECT @num=0,@sa=1
WHILE @sa<=100
BEGIN
SET @num=@num+@sa
SET @sa=@sa+1
goto wode
CONTINUE
END
PRINT @num
wode:
PRINT '我跳出来了'
(6)WAITFOR语句
WAITFOR语句用来暂时停止程序的执行,指定所设定的等待时间已过或所设定的时刻快到,才会继续往下执行。
DECLARE
@date DATE
SET @date=GETDATE()
BEGIN
WAITFOR DELAY '00:00:01'
END
PRINT @date
(7)RETURN语句
RETURN语句用于使程序从一个查询、存储过程或批量处理中无条件返回,其后面的语句不再执行。
DECLARE
@num INT,@sa INT
SELECT @num=0,@sa=1
WHILE @sa<=100
BEGIN
SET @num=@num+@sa
SET @sa=@sa+1
return
END
PRINT @num
--执行到return处时停止执行