Sqlserver 学习笔记

by:授客 QQ1033553122

-----------------------接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.IFELSE语句

SQL中的IF-ELSE语句

IF

(条件)

BEGIN

语句1

语句2

……

END

ELSE

BEGIN

语句1

语句2

……

END

注意:

ELSE是可选部分

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


实例

问题:

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

分析:

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

第二步,用IF-ELSE判断;

SQLServer 学习笔记之超详细基础SQL语句 Part 10的更多相关文章

  1. SQLServer 学习笔记之超详细基础SQL语句 Part 3

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 2------------------- 13. 使用compute对查 ...

  2. SQLServer 学习笔记之超详细基础SQL语句 Part 12(The End)

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 11------------------- 现在,我们希望从 " ...

  3. SQLServer 学习笔记之超详细基础SQL语句 Part 11

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 10------------------- DECLARE @myavg ...

  4. SQLServer 学习笔记之超详细基础SQL语句 Part 9

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 8------------------- 3 范式的概念 第一范式的目标 ...

  5. SQLServer 学习笔记之超详细基础SQL语句 Part 8

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 7------------------- --触发器str_trigge ...

  6. SQLServer 学习笔记之超详细基础SQL语句 Part 7

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 6------------------- 29 存储过程和触发器 存储过 ...

  7. SQLServer 学习笔记之超详细基础SQL语句 Part 6

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 5------------------- 28 聚合函数 --求平均分 ...

  8. SQLServer 学习笔记之超详细基础SQL语句 Part 5

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 4------------------- 21使用默认 默认(也称默认值 ...

  9. SQLServer 学习笔记之超详细基础SQL语句 Part 4

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 3------------------- 17 带比较运算符的嵌套查询 ...

随机推荐

  1. cpu负载的探讨 (转)

    文章出处:http://blog.chinaunix.net/uid-12693781-id-368837.html 摘要:确定cpu的负载的定义,帮助管理员设置cpu负载阀值,推测可能的导致cpu负 ...

  2. Docker中使用createdump调试coreclr

    应用上线后可能出现一些问题,通过源码排查,日志分析都不能确定具体原因的情况下,可以使用dump转存文件分析,netcore对于linux系统dump提供了createdump工具,配合lldb sos ...

  3. configure: error: You need a C++ compiler for C++ support.[系统缺少c++环境]

    一.错误configure: error: You need a C++ compiler for C++ support.二.安装c++ compiler情况1.当您的服务器能链接网络时候[联网安装 ...

  4. Gen对于数组Array的处理

    举个例子,如下: public void t() { String[][] a = new String[][] { { "x", "y" } }; Strin ...

  5. Disruptor多个消费者不重复处理生产者发送过来的消息

    1.定义事件事件(Event)就是通过 Disruptor 进行交换的数据类型. package com.ljq.disruptor; import java.io.Serializable; /** ...

  6. maven install 打包 报错 Cannot run program "gpg.exe": CreateProcess error

    打包报错, mvn install后加上参数-Dgpg.skip,例如:mvn install -Dgpg.skip   即可解决. 我们也可以去掉 这个 插件   <plugin>    ...

  7. Tomcat学习总结(9)——Apache Tomcat 8新特性

    一.Apache Tomcat 8介绍 Apache Tomcat 8RC1版于2013年8月份发布.它 经过了2年的开发,引入了很多新特征,由于目前还只是Alpha版,故不推荐在产品中使用.但是我们 ...

  8. Linux 技巧:让进程在后台可靠运行的几种方法(转)

    我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开 ...

  9. java json-lib配置

    用法 项目中要用到json-lib,mvnrepository.com查找它的dependency时结果如下: import net.sf.json.JSONArray; import net.sf. ...

  10. AngularJS学习笔记(五)自定义指令(1)

    先来说说自定义指令 ng通过内置指令的方式实现了对html的增强,同时也赋予了我们自定义指令的功能,让我们根据实际需求进行指令的定制.自定义指令涉及到模板(template).作用域(scope).数 ...