900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > SQL Server 学习笔记 (三) ----- SQL Server SQL语句

SQL Server 学习笔记 (三) ----- SQL Server SQL语句

时间:2021-07-15 19:57:23

相关推荐

SQL Server 学习笔记 (三) ----- SQL Server SQL语句

在很多情况下,可以用CREATE TABLE语句创建数据表、使用ALTER TABLE语句修改表结构、使用DROP TABLE语句删除表;

可以使用CREATE DATABASE创建数据库、ALTER DATABASE修改文件或文件组、DROP DATABASE语句删除数据库;

1、数据定义语句(DDL)

表创建——CREATE表删除——DROP表修改——ALTER

2、数据操作语句(DML)

数据的插入——INSERT数据的更改——UPDATE数据的删除——DELETE数据的查询——SELECT

查询是SQL语言的中心内容,而用于表示SQL查询的SELECT语句,是SQL语句中功能最强大也是最复杂的语句。其主要子句可归纳如下:

[ WITH <common_table_expression>]SELECT select_list [ INTO new_table ][ FROM table_source ] [ WHERE search_condition ][ GROUP BY group_by_expression][ HAVING search_condition][ ORDER BY order_expression [ ASC | DESC ] ]

1)UNION合并多个查询结果:

表的合并操作将两个表的行合并到了一个表中,且不需要对这些行作任何更改。

合并操作与联接相似,因为它们都是将两个表合并起来形成另一个表的方法。然而,它们的合并方法有本质上的不同,结果表的形状如下所示。

注:A和B分别代表两个数据源表。

使用UNION合并不同类型的数据。合并有不同列数的两个表,还可以进行多表合并。

2)子查询与嵌套查询:

子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。

嵌套查询是指将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询。嵌套查询中上层的查询块称为外侧查询或父查询,下层查询块称为内层查询或子查询。

使用比较运算符使用IN关键字使用ANY、SOME和ALL关键字使用EXISTS关键字

3)联接查询:

联接查询是由一个笛卡尔乘积运算再加一个选取运算构成的查询。首先用笛卡尔乘积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算,确保只把分别来自两个数据集合并且具有重叠部分的行合并在一起。联接的全部意义在于水平方向上合并两个数据集合,并产生一个新的结果集合。

联接条件可在 FROM 或 WHERE 子句中指定,建议在 FROM 子句中指定联接条件。WHERE 和 HAVING 子句还可以包含搜索条件,以进一步筛选根据联接条件选择的行。

多表连接查询:

相等连接不等连接带选择条件的连接自连接

左外连接:

USE TestSELECT student.s_id, stu_detail.addrFROM student LEFT OUTER JOIN stu_detailON student.s_id = stu_detail.s_id;

右外连接:

USE TestSELECT student.name, stu_detail.s_idFROM student RIGHT OUTER JOIN stu_detailON student.s_id = stu_detail.s_id;

全外连接:

USE TestSELECT student.name, stu_detail.addrFROM student FULL OUTER JOIN stu_detailON student.s_id = stu_detail.s_id;

4)使用CASE函数进行查询:

联接可分为以下几类:内部联接、外部联接、交叉联接。

CASE函数用于计算条件列表并返回多个可能结果表达式之一。

CASE函数具有两种格式:

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。CASE 搜索函数计算一组布尔表达式以确定结果。

两种格式都支持可选的 ELSE 参数。

5)使用DISTINCT取消重复

6)使用TOP返回前n行

7)使用WHERE子句进行条件查询

使用关系表达式查询使用BETWEEN AND表示范围使用IN关键字使用LIKE关键字使用IS NULL查询空值使用EXISTS关键字使用ORDER BY排序使用GROUP BY分组使用HAVING对分组结果过滤使用COMPUTE子句对查询结果小计使用COMPUTE BY子句分组小计使用UNION合并查询结果集

8)使用聚合函数统计汇总

使用SUM()求列的和使用AVG()求列平均值使用MAX()求列最大值使用MIN()求列最小值使用COUNT()统计

9)使用排序函数

ROW_NUMBER函数RANK函数DENSE_RANK()函数NTILE()函数

3、数据控制语句(DCL)

给用户授予权限——GRANT拒绝权限操作——DENY 收回权限操作——REVOKE

4、其他基本语句

数据声明——DECLARE数据赋值——SET数据输出——PRINT

5、流程控制语句

BEGIN…END语句IF…ELSE语句CASE语句WHILE语句GOTO语句WAITFOR语句RETURN语句

6、批处理语句

批处理是从应用程序发送到SQL Server并得以执行的一条或多条T-SQL语句。使用批处理时,有下面一些注意事项。

一个批处理中只要存在一处语法错误,整个批处理都无法通过编译。

批处理中可以包含多个存储过程,但除第一个过程外,其他存储过程前面都必须使用EXECTUE关键字。

某些特殊的SQL指令不能和别的SQL语句共存在一个批处理中,如CREATE TABLE和CREATE VIEW语句。这些语句只能独自存在于一个单独的存储过程中。

所有的批处理使用GO作为结束的标志,当编译器读到GO的时候就把GO前面的所有语句当成一个批处理,然后打包成一个数据包发给服务器。

GO本身不是T-SQL的组成部分,只是一个用于表示批处理结束的前端指令。

CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE SCHEMA、CREATE TRIGGER和CREATE VIEW语句不能在批处理中与其他语句组合使用。批处理必须以 CREATE 语句开头,所有跟在该批处理后的其他语句将被解释为第一个 CREATE 语句定义的一部分。

不能在删除一个对象之后,在同一批处理中再次引用这个对象。

如果 EXECUTE 语句是批处理中的第一句,则不需要 EXECUTE 关键字。如果 EXECUTE 语句不是批处理中的第一条语句,则需要 EXECUTE 关键字。

不能在定义一个CHECK约束之后,在同一个批处理中使用。

不能在修改表的一个字段之后,立即在同一个批处理中引用这个字段。

使用SET语句设置的某些选项值不能应用于同一个批处理中的查询。

7、规则、默认和完整性约束

规则是对存储的数据表的列或用户定义数据类型中的值的约束,规则与其作用的表或用户定义数据类型是相互独立的,也就是说,对表或用户定义数据类型的任何操作与对其设置的规则不存在影响。

1)规则的基本操作:

创建规则把自定义规则绑定到列验证规则作用取消规则绑定删除规则

2)默认的基本操作

创建默认把自定义默认绑定到列验证默认作用取消默认绑定删除默认

3)完整性约束

主键约束外键约束唯一性约束CHECK约束DEFAULT约束NOT NULL约束

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。