Sqlserver

学习笔记

by:授客
QQ:1033553122

-----------------------接Part
3-------------------

17
带比较运算符的嵌套查询

--查询学生表中出生日期大于名为小杰的出生日期的学生记录

SELECT
* FROM
学生

WHERE
出生年月
>

(

SELECT
出生年月
FROM 学生

WHERE 姓名=

'小杰'

)

--查询学生表中出生日期大于名为小杰或小小的出生年月的学生记录

SELECT
* FROM
学生

WHERE
出生年月
> ANY

(

SELECT
出生年月
FROM 学生

WHERE 姓名

IN('小杰',

'小小')

)

--查询学生表中出生日期大于名为小杰和小小的出生年月的学生记录

SELECT
* FROM
学生

WHERE
出生年月
> ALL

(

SELECT
出生年月
FROM 学生

WHERE 姓名

IN('小杰',

'小小')

)

--查询学生表中出生日期大于或等于名为小杰或林欣的出生年月的学生记录

SELECT
* FROM
学生

WHERE
出生年月
>= ANY

(

SELECT
出生年月
FROM 学生

WHERE 姓名

IN('小杰',

'林欣')

)

--查询学生表中出生日期大于或等于名为小杰与林欣的出生年月的学生记录

SELECT
* FROM
学生

WHERE
出生年月
>= ALL

(

SELECT
出生年月
FROM 学生WHERE

姓名
IN('小杰',

'林欣')

)

18
带有
EXISTS运算符的子查询

--使用exists运算符后,子查询不返回任何数据,此时,若子查询结果非

--空(即至小存在一条记录),则父查询的where子句返回真(true),否则返回假(false)

SELECT
* FROM
学生
WHERE EXISTS

(SELECT *
FROM
学生
WHERE 姓名='林欣')

--注解:如果能够查询到学生姓名为林欣的记录,那么父查询的where子句就返回ture,把该记录(元组)中查询的

*
也就是该条记录的各个字段的信息放到结果表。否则不执行

--对比实验如下

SELECT
* FROM
学生
WHERE EXISTS

(SELECT *
FROM
学生
WHERE 姓名='林LIN')

--表别名

SELECT
* FROM
学生
AS a WHERE EXISTS

(SELECT *
FROM
专业
WHERE a.专业代码=

专业.专业代码)

19
创建约束

19.1为已经存在的表创建唯一约束

格式:

ALTER
TABLE 表名

ADD
CONSTRAINT 唯一约束的名称

UNIQUE
NONCLUSTERED (字段名称)

举例:

--为系部表创建唯一约束

ALTER
TABLE
系部

ADD
CONSTRAINT uniq

UNIQUE
NONCLUSTERED(系部名称)

----执行上述操作后,系部名称的输入将被约束为无法输入重复值

19.2为已经存在的表创建检查约束

格式:

ALTER
TABLE 表名

ADD
CONSTRAINT 约束名

CHECK(条件)

举例:

--为班级表创建检查约束

ALTER
TABLE
班级

ADD
CONSTRAINT chek

CHECK(班级代码

> 0 AND
班级代码
< 100)

----上述语句执行后将无法输入班级代码大于,小于的数据

19.3为已经存在的表创建默认值约束

格式:

ALTER
TABLE
表名

ADD
CONSTRAINT
约束名

DEFAULT  ‘默认值’
 FOR

列名

举例:

--为系部表创建默认值约束

ALTER
TABLE
系部

ADD
CONSTRAINT def_name

DEFAULT
'待定'

FOR
系主任

--结果在系部表中天加数据,不填写系主任时,会自动添加'待定'

19.4删除约束

ALTER
TABLE
表名

DROP
CONSTRAINT
约束名

举例:

--删除约束

ALTER
TABLE
系部

DROP
CONSTRAINT def_name

ALTER
TABLE
班级

DROP
CONSTRAINT chek

ALTER
TABLE
系部

DROP

CONSTRAINT uniq

20
使用规则

规则类似于check约束,是用来限制数据字段的输入值的范围,实现强制数据的域完整性,但是规则不同于check约束,在前面用到的check约束可以针对一个列应用多个check约束,但一个列不能应用多个规则,规则需要被单独创建,只需要创建一次,以后可以多次使用,可以应用于多个表。

20.1
创建规则

规则作为一种数据库对像,在使用前必须被创建,创建规则的语法格式如下:

CREATE
RULE
规则名

AS
条件表达式

举例:

--创建规则(执行如下语句后,在[可编程性\规则]选项中会出现一个规则)

CREATE
RULE rules

AS

@a > 3 and @a <</span> 10

20.2
绑定规则

要使用创建好的规则作用到指定的列或表等,还必须将规则绑定到列或用户定义的数据类型

格式:

EXEC
SP_BINDRULE  ‘规则名’,
‘表名.字段名’

举例:

--绑定规则(把规则绑定到系部表中的系部代码)

EXEC
SP_BINDRULE 'rules',
'系部.系部代码'

--执行上述语句后,再打开系部表,往里头添加数据,系部代码不在规则所示范围之内。

--会发现,提示错误

SELECT
* INTO
系部
FROM 系部

EXEC
SP_BINDRULE 'rules','系部.系部代码'

----执行上述语句后,右击规则-查看依赖关系,可以查看rules依赖的对象和依赖rules的对象

20.3
解绑规则

如果说字段已经不再需要规则输入了,那么必须把已绑定了的规则去掉,这就是解绑规则,在查询分析器中,同样用存储过程来完成解绑定操作,

格式:

EXEC
SP_UNBINDRULE  ‘表名.字段名’

举例:

--解除绑定

EXEC
SP_UNBINDRULE '系部.系部代码'

20.4
删除规则

如果规则已经没有用了,那么可以将其删除。在删除前应该对规则进行解绑,当规则不再作用于任何表或字段时,可以删除规则

格式:

DROP
RULE
规则名称

举例:

--
删除绑定

DROP
RULE rules

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

  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 10

    Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 9------------------- 删除约束的语法 ALTER T ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. C# SqlHelper类的数据库操作

    #region 私有构造函数和方法 private SqlHelper() { } /// <summary> /// 将SqlParameter参数数组(参数值)分配给SqlComman ...

  2. Consul使用

  3. Android get current Locale, not default

    he default Locale is constructed statically at runtime for your application process from the system ...

  4. Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  5. 程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)

    程序员必知的8大排序(一)-------直接插入排序,希尔排序(java实现) 程序员必知的8大排序(二)-------简单选择排序,堆排序(java实现) 程序员必知的8大排序(三)-------冒 ...

  6. ResNet 论文研读笔记

    Deep Residual Learning for Image Recognition 原文链接 摘要 深度神经网络很难去训练,本文提出了一个残差学习框架来简化那些非常深的网络的训练,该框架使得层能 ...

  7. Spark入门——什么是Hadoop,为什么是Spark?

    #Spark入门#这个系列课程,是综合于我从2017年3月分到今年7月份为止学习并使用Spark的使用心得感悟,暂定于每周更新,以后可能会上传讲课视频和PPT,目前先在博客园把稿子打好.注意:这只是一 ...

  8. Mybatis 的配置xml和properties放在jar包以外的一种方法

    1.问题 开发时候,将xml和properties放resources,直接可以访问到,然而打包后这两个文件也一同被打包到jar包里面,如果发布后想修改就会比较麻烦,所以希望将xml配置文件和prop ...

  9. [转]C# Bootstrap table之 分页

    本文转自:https://www.cnblogs.com/zhangjd/p/7895453.html 效果如图: 一.声明talbe <div class="container&qu ...

  10. PhpStorm快捷方式

    转载源:http://www.cr173.com/html/66775_1.html PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,PhpStorm可随时帮助用 ...