Sqlserver学习笔记
-----------------------接Part 9-------------------
删除约束的语法
ALTER TABLE表名
DROP CONSTRAINT约束名
6创建登陆
--添加SQL登陆账户(用户账号:laiyu,密码:1234)
USEstudent
GO
EXECSP_ADDLOGIN'laiyu','1234'
双击登录名laiyu后可以进行密码的修改等
7创建数据库用户
需要调用系统存储过程:
SP_GRANTDBACCESS ‘登录名’ ‘对应数据库用户账户’
创建用户还可以用sp_adduser。SP_GRANTDBACCESS的执行过程中也会使用sp_adduser,但是在安全性上要比sp_adduser好,因为它能建立一个安全性连接,如果仅仅从添加的用户来说,两者创建的用户没有设么本质的区别
--创建用户
EXECSP_GRANTDBACCESS'laiyu','username'
其中,“数据库用户名“为可选参数,默认为登录帐户,即数据库用户默认和登录帐户同名。
--在数据库student中添加两个用户
USEstudent
GO
EXECSP_GRANTDBACCESS'jbtrain\s123','s123dbuser'
说明:jbtraining为计算机域名
EXECSP_GRANTDBACCESS'zhangsan','zdbuser'
--结果提示出错,因为登陆名不存在
8授权的语法为:
GRANT权限[ON 表名] TO 数据库用户
--授权
USEstuDB
GO
GRANTSELECT,INSERT,UPDATE
ONstuInfo TO laiyu
USEstuDB
GO
GRANTcreatetableTO laiyu
禁用权限的语法为:
DENY权限[ON 表名] TO 数据库用户
--禁用权限
USEstuDB
GO
DENYselect,insert,update
ONstuInfo TO laiyu
--禁用权限
DENYSELECT,INSERT,UPDATE
ONstd_table TO laiyu
--删除权限
--回收laiyu用户的建立表的权限[可以级联CASCADE或者有限制的(RESTRICT)的回收用户的权限]
REVOKECREATETABLEFROM laiyu
9使用变量
变量分为:
1) 局部变量:
a) 局部变量必须以标记@作为前缀,如@age
b) 局部变量的使用也是先声明,再赋值
2) 全局变量:
a) 全局变量必须以标记@@作为前缀,如@@version
b) 全局变量由系统定义和维护,我们只能读取,不能修改全局变量的值
局部变量
声明局部变量
DECLARE@变量名 数据类型
赋值
SET@变量名=值
或SELECT @变量名=值FROM表
--局部变量的声明与赋值
DECLARE@name CHAR(6)
DECLARE@deptNo CHAR(2)
--或者如下
--DECLARE @name CHAR(6), @deptNo CHAR(2)
SET@name ='张三'
--或者如下方式
SELECT@deptNo =系部代码FROMstd_table WHERE高考分数=500;
--这里要注意,执行的时候必须把声明和使用一起执行,即选定声明和使用声明的语句,然后执行,否则会出现“须声明标量变量"@deptNo"”的错误提示
示例
问题:
编写T-SQL查找李文才的左右同桌?
分析:
第一步,找出“李文才“的座位号;
第二步,李文才的座位号加1或减1
DECLARE@name VARCHAR(7)--学员姓名
SET@name='李文才'--使用SET赋值
SELECT*FROM stuInfo WHERE stuName = @name
DECLARE@seat INT--座位号
SELECT@seat=stuSeat FROM stuInfo --使用SELECT赋值
WHEREstuName=@name
SELECT*FROM stuInfo
WHERE(stuSeat = @seat+1) OR (stuSeat = @seat-1)
GO
WHEREstuName=@name
SELECT*FROM stuInfo
WHERE(stuSeat = @seat+1) OR (stuSeat = @seat-1)
GO
全局变量(使用两个@@作为前缀标识)
全局变量示例
--打印
PRINT'SQL Server的版本'+@@VERSION
PRINT'SQL Server的名称'+@@SERVERNAME
--先执行下下面这条错误语句,再打印错误号
INSERTINTO std_table(学号,姓名,专业方向)
VALUES(1,'jjk',信息管理)
--如果错误号大于表示上一条语句,执行有错
10逻辑控制语句
1.IF-ELSE语句
SQL中的IF-ELSE语句
IF(条件)
BEGIN
语句1
语句2
……
END
ELSE
BEGIN
语句1
语句2
……
END
注意:
ELSE是可选部分
如果有多条语句,才需要BEGIN-END语句块
实例
问题:
统计并显示本班笔试平均分,如果平均分在70以上,显示“成绩优秀“,并显示前三名学员的考试信息;如果在70以下,显示“本班成绩较差“,并显示后三名学员的考试信息。
分析:
第一步,统计平均成绩存入临时变量;
第二步,用IF-ELSE判断;