SQLServer 学习笔记之超详细基础SQL语句 Part 10
Sqlserver 学习笔记
-----------------------接Part 9-------------------
删除约束的语法
ALTER TABLE 表名
DROP CONSTRAINT 约束名
6 创建登陆
--添加SQL登陆账户(用户账号:laiyu, 密码:1234)
USE student
GO
EXEC SP_ADDLOGIN 'laiyu', '1234'


双击登录名laiyu后可以进行密码的修改等
7 创建数据库用户
需要调用系统存储过程:
SP_GRANTDBACCESS ‘登录名’ ‘对应数据库用户账户’
创建用户还可以用sp_adduser。SP_GRANTDBACCESS的执行过程中也会使用sp_adduser,但是在安全性上要比sp_adduser好,因为它能建立一个安全性连接,如果仅仅从添加的用户来说,两者创建的用户没有设么本质的区别
--创建用户
EXEC SP_GRANTDBACCESS 'laiyu', 'username'
其中,“数据库用户名“为可选参数,默认为登录帐户,即数据库用户默认和登录帐户同名。
--在数据库student中添加两个用户
USE student
GO
EXEC SP_GRANTDBACCESS 'jbtrain\s123', 's123dbuser'
说明:jbtraining为计算机域名
EXEC SP_GRANTDBACCESS 'zhangsan', 'zdbuser'
--结果提示出错,因为登陆名不存在
8 授权的语法为:
GRANT 权限 [ON 表名 ] TO 数据库用户
--授权
USE stuDB
GO
GRANT SELECT,INSERT,UPDATE
ON stuInfo TO laiyu
USE stuDB
GO
GRANT create table TO laiyu
禁用权限的语法为:
DENY 权限 [ON 表名 ] TO 数据库用户
--禁用权限
USE stuDB
GO
DENY select,insert,update
ON stuInfo TO laiyu
--禁用权限
DENY SELECT, INSERT, UPDATE
ON std_table TO laiyu
--删除权限
--回收laiyu用户的建立表的权限[可以级联CASCADE或者有限制的(RESTRICT)的回收用户的权限]
REVOKE CREATE TABLE FROM 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 = 系部代码 FROM std_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 赋值
WHERE stuName=@name
SELECT * FROM stuInfo
WHERE(stuSeat = @seat+1) OR (stuSeat = @seat-1)
GO
WHERE stuName=@name
SELECT * FROM stuInfo
WHERE(stuSeat = @seat+1) OR (stuSeat = @seat-1)
GO


全局变量(使用两个@@作为前缀标识)


全局变量示例
--打印
PRINT
'SQL Server的版本'
+ @@VERSION


PRINT
'SQL Server的名称'
+ @@SERVERNAME


--先执行下下面这条错误语句,再打印错误号
INSERT
INTO 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判断;
SQLServer 学习笔记之超详细基础SQL语句 Part 10的更多相关文章
- SQLServer 学习笔记之超详细基础SQL语句 Part 3
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 2------------------- 13. 使用compute对查 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 12(The End)
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 11------------------- 现在,我们希望从 " ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 11
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 10------------------- DECLARE @myavg ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 9
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 8------------------- 3 范式的概念 第一范式的目标 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 8
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 7------------------- --触发器str_trigge ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 7
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 6------------------- 29 存储过程和触发器 存储过 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 6
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 5------------------- 28 聚合函数 --求平均分 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 5
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 4------------------- 21使用默认 默认(也称默认值 ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 4
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 3------------------- 17 带比较运算符的嵌套查询 ...
随机推荐
- javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){ if ( ...
- (转)contextlib — 上下文管理器工具
原文:https://pythoncaff.com/docs/pymotw/contextlib-context-manager-tool/95 这是一篇社区协同翻译的文章,你可以点击右边区块信息里的 ...
- 线上问题定位--CPU100%
服务器CPU突然告警,如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载? 步骤一.找到最耗CPU的进程 工具:top 方法: 执行top -d 1 -c,每秒刷新一 ...
- *2 FastCGI sent in stderr: "PHP message: PHP Parse error: syntax error, unexpected '[' in /application/nginx-1.6.3/html/zabbix/index.php on line 32" while reading response header from upstream, clien
今天呢想学习一下zabbix监控一下我的服务情况,然后就开始安装我的zabbix服务,首先LNMP环境准备好了,Nginx版本为1.6.3,php版本为5.3.27,MySQL版本为二进制包安装的5. ...
- 使用gitlab, jenkins搭建CI(持续集成)系统(4) 灰度发布publish
publish环境是正式环境,和dev, test, prepublish环境不同的是,正式环境一般要更加谨慎一些,发布的时候需要有一个灰度过程,即:分多次部署,每次部署几个服务器节点,验证没有问题以 ...
- ZOJ 3960 What Kind of Friends Are You?(读题+思维)
题目链接 :http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5592 Japari Park is a large zoo hom ...
- UVA 11054 Wine trading in Gergovia(思维)
题目链接: https://vjudge.net/problem/UVA-11054 /* 问题 输入村庄的个数n(2=<n<=100000)和n个村庄的数值,正代表买酒,负代表卖酒,k个 ...
- Silverlight 在ie8 下 报2152 错误
前几天改别人的一个silverlight程序,在项目属性上 选中了 “通过使用应用程序库缓存减小XAP 大小”,编译无错,发布无错误. 放服务器上测试: 站点绑定域名,使用ie9.ie10 都没有问题 ...
- Java类MemoryUsage查看虚拟机的使用情况
原文地址:https://www.cnblogs.com/xubiao/p/5465473.html Java类MemoryUsage,通过MemoryUsage可以查看Java 虚拟机的内存池的内存 ...
- 【WePY小程序框架实战四】-使用async&await异步请求数据
[WePY小程序框架实战一]-创建项目 [WePY小程序框架实战二]-页面结构 [WePY小程序框架实战三]-组件传值 async await 是对promise的近一步优化,既解决了promise链 ...