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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: SQLServer 学习笔记之超详细基础SQL语句 Part 10

Sqlserver学习笔记


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

删除约束的语法

ALTER TABLE表名 

DROP CONSTRAINT约束名

 

6创建登陆

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

USEstudent

GO

EXECSP_ADDLOGIN'laiyu','1234'

 

 

双击登录名laiyu后可以进行密码的修改等

 

7创建数据库用户

需要调用系统存储过程:

SP_GRANTDBACCESS ‘登录名’ ‘对应数据库用户账户

创建用户还可以用sp_adduserSP_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.IFELSE语句

SQL中的IF-ELSE语句

IF(条件)

 BEGIN

  语句1

  语句2

   ……

 END

ELSE

BEGIN

  语句1

  语句2

   ……

 END

注意:

ELSE是可选部分

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

实例

 

问题:

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

分析:

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

第二步,用IFELSE判断;



 


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
3月前
|
SQL 数据库
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)之解决方案
531 0
|
5月前
|
SQL 运维 监控
SQL Server 运维常用sql语句(二)
SQL Server 运维常用sql语句(二)
49 3
|
5月前
|
SQL XML 运维
SQL Server 运维常用sql语句(三)
SQL Server 运维常用sql语句(三)
42 1
|
5月前
|
Java 应用服务中间件 Maven
从零到英雄:一步步构建你的首个 JSF 应用程序,揭开 JavaServer Faces 的神秘面纱
【8月更文挑战第31天】JavaServer Faces (JSF) 是一种强大的 Java EE 标准,用于构建企业级 Web 应用。它提供了丰富的组件库和声明式页面描述语言 Facelets,便于开发者快速开发功能完善且易于维护的 Web 应用。本文将指导你从零开始构建一个简单的 JSF 应用,包括环境搭建、依赖配置、Managed Bean 编写及 Facelets 页面设计。
115 0
|
5月前
|
SQL 关系型数据库 MySQL
【超全整理】SQL日期与时间函数大汇总会:MySQL与SQL Server双轨对比教学,助你轻松搞定时间数据处理难题!
【8月更文挑战第31天】本文介绍了在不同SQL数据库系统(如MySQL、SQL Server、Oracle)中常用的日期与时间函数,包括DATE、NOW()、EXTRACT()、DATE_ADD()、TIMESTAMPDIFF()及日期格式化等,并提供了具体示例。通过对比这些函数在各系统中的使用方法,帮助开发者更高效地处理日期时间数据,满足多种应用场景需求。
635 0
|
5月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
603 0
|
SQL Java 数据库连接
动态 sql| 学习笔记
快速学习动态 sql。
130 0
|
SQL Java 数据库连接
动态 sql| 学习笔记
快速学习动态 sql。
324 0
|
4月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
6月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
153 13