前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQLServer 学习笔记之超详细基础SQL语句 Part 10

SQLServer 学习笔记之超详细基础SQL语句 Part 10

作者头像
授客
发布2019-09-11 20:30:43
6640
发布2019-09-11 20:30:43
举报

-----------------------接Part 9-------------------

删除约束的语法

ALTER TABLE 表名

DROP CONSTRAINT 约束名

6 创建登陆

--添加SQL登陆账户(用户账号:laiyu, 密码:1234)

USE student

GO

EXEC SP_ADDLOGIN 'laiyu', '1234'

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10

双击登录名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"”的错误提示

示例

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10

问题:

编写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

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10

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

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10

全局变量示例

--打印

PRINT 'SQL Server的版本' + @@VERSION

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10

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

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10

--先执行下下面这条错误语句,再打印错误号

INSERT INTO std_table(学号, 姓名, 专业方向)

VALUES(1,'jjk',信息管理)

--如果错误号大于表示上一条语句,执行有错

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10

10 逻辑控制语句

1.IF-ELSE语句

SQL中的IF-ELSE语句

IF (条件)

BEGIN

语句1

语句2

……

END

ELSE

BEGIN

语句1

语句2

……

END

注意:

ELSE是可选部分

如果有多条语句,才需要BEGIN-END语句块

实例

SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10
SQLServer <wbr>学习笔记之超详细基础SQL语句 <wbr>Part <wbr>10

问题:

统计并显示本班笔试平均分,如果平均分在70以上,显示“成绩优秀“,并显示前三名学员的考试信息;如果在70以下,显示“本班成绩较差“,并显示后三名学员的考试信息 。

分析:

第一步,统计平均成绩存入临时变量;

第二步,用IF-ELSE判断;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档