数据库原理及应用开发技术SQL课件_第1页
数据库原理及应用开发技术SQL课件_第2页
数据库原理及应用开发技术SQL课件_第3页
数据库原理及应用开发技术SQL课件_第4页
数据库原理及应用开发技术SQL课件_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理及应用开发技术_SQL1 讲义三 关系数据库标准语言SQL 1 SQL1 SQL简介简介 2 SQL2 SQL定义语言定义语言 3 SQL3 SQL操作语言操作语言 4 SQL4 SQL查询语言查询语言 5 SQL5 SQL的基本语言元素的基本语言元素 6 SQL6 SQL的操作符的操作符 7 SQL7 SQL表达式表达式 8 SQL8 SQL条件条件 9 SQL9 SQL函数函数 10 SQL10 SQL查询与子查询查询与子查询 总结总结 数据库原理及应用开发技术_SQL2 3.1 SQL3.1 SQL简介简介 Structure Query Language(SQL)Struct

2、ure Query Language(SQL)的历史的历史 19701970年年, ,Prof Codd Prof Codd 提出著名的关系数据模型提出著名的关系数据模型 SQLSQL语言由语言由IBM Research LabIBM Research Lab首先开发创建首先开发创建 System RSystem R时使用时使用 19791979年年, ,关系软件公司关系软件公司( (Oracle)Oracle)首先开发出实首先开发出实 用的商业用的商业SQLSQL版本版本 SQL SQL 是高级的非过程化编程语言。是高级的非过程化编程语言。 数据库原理及应用开发技术_SQL3 3.1 SQL

3、3.1 SQL简介简介 SQLSQL标准标准 SQL-86SQL-86是第一个是第一个SQLSQL标准标准 SQL-89SQL-89、SQL-92(SQL2)SQL-92(SQL2)、SQL-99(SQL3)SQL-99(SQL3) 关系型商业数据库遵守的查询语言规范关系型商业数据库遵守的查询语言规范 各种通行的数据库系统在其实践过程中都对各种通行的数据库系统在其实践过程中都对 SQL SQL 规范作了某些编改和扩充规范作了某些编改和扩充 数据库原理及应用开发技术_SQL4 3.1 SQL3.1 SQL简介简介 SQLSQL的使用的使用 直接使用直接使用 交互式查询工具(交互式查询工具(MS

4、sql server:Transact-sqlMS sql server:Transact-sql) 直接键入直接键入SQLSQL命令对数据库进行操作命令对数据库进行操作 由由DBMSDBMS进行解释进行解释 嵌入式嵌入式SQL(Embedded SQL)SQL(Embedded SQL) 嵌入到高级编程语言嵌入到高级编程语言 使应用程序充分利用使应用程序充分利用SQLSQL访问数据库的能力、宿主访问数据库的能力、宿主 语言的过程处理能力。语言的过程处理能力。 需要将嵌入的需要将嵌入的SQLSQL语句转化为宿主语言编译器能处语句转化为宿主语言编译器能处 理的语句理的语句 数据库原理及应用开发技

5、术_SQL5 3.1 SQL3.1 SQL简介简介 SQLSQL语句分类语句分类 数据定义语言(数据定义语言(Data DefinitionData Definition) createcreate alteralter dropdrop 数据操作语言(数据操作语言(Data ManipulationData Manipulation) insertinsert updateupdate deletedelete 数据查询语言数据查询语言 selectselect 数据控制语言数据控制语言(Data Control)(Data Control) grantgrant rolerole revo

6、kerevoke 数据库原理及应用开发技术_SQL6 3.5.1 3.5.1 数据类型数据类型 常用的数据类型常用的数据类型 数据类型数据类型描述描述 CHAR(size)CHAR(size)存储最长为存储最长为n n个字节的定长字符串个字节的定长字符串 VARCHAR(size)VARCHAR(size)存储最长为存储最长为n n个字节的变长字符串个字节的变长字符串 NUMERIC(P,S)NUMERIC(P,S)存储任何类型的数字存储任何类型的数字 DATETIMEDATETIME存储日期时间存储日期时间 INTINT长整形长整形 SMALLINTSMALLINT短整形短整形 FLOAT(

7、n)FLOAT(n)浮点数,精度至少为浮点数,精度至少为n n位数字位数字 数据库原理及应用开发技术_SQL7 3.1 SQL3.1 SQL简介简介 数据定义语句格式数据定义语句格式 1 1 创建表创建表 CREATE TABLE CREATE TABLE ( 列完整性约束条件列完整性约束条件 , 列完整性约束条件列完整性约束条件 , 列完整性约束条件列完整性约束条件, );); 数据库原理及应用开发技术_SQL8 3.1 SQL3.1 SQL简介简介 数据定义语句格式数据定义语句格式 2 2 更改表更改表 ALTER TABLE ALTER TABLE ADD ADD 列完整性约束条件列完整

8、性约束条件 , DROP DROP , MODIFY MODIFY ; 3 3 删除表删除表 DROP TABLE DROP TABLE ; 数据库原理及应用开发技术_SQL9 3.1 SQL3.1 SQL简介简介 数据操作语句格式数据操作语句格式 1 1 插入操作插入操作 INSERT INTO INSERT INTO (, , ,1, )n) VALUES (VALUES (, , ,2, );n); 数据库原理及应用开发技术_SQL10 3.1 SQL3.1 SQL简介简介 数据操作语句格式数据操作语句格式 2 2 修改操作修改操作 UPDATE UPDATE SET SET =, ,

9、= WHERE WHERE ; ; 3 3 删除操作删除操作 DELETEDELETE FROM FROM WHERE WHERE ; 数据库原理及应用开发技术_SQL11 3.1 SQL3.1 SQL简介简介 数据查询语句:数据查询语句: 数据查询是数据库的核心操作数据查询是数据库的核心操作 SELECTSELECT语句的格式为:语句的格式为: SELECT ALL|DISTINCT ALL|DISTINCT 别名别名 , , 别名别名 FROM 别名别名 , , 别名别名 WHERE GROUP BY 1 HAVING ORDER BY ASC|DESC, ASC|DESC, 3 ASC|

10、DESCASC|DESC ; 数据库原理及应用开发技术_SQL12 3.1 SQL3.1 SQL简介简介 数据控制语句:授权数据控制语句:授权 SQLSQL语言用语言用GRANTGRANT语句向用户授予操作权限,语句向用户授予操作权限, GRANTGRANT语句的一般格式为:语句的一般格式为: GRANT GRANT , ON ON TO TO , WITH GRANT OPTION;WITH GRANT OPTION; 数据库原理及应用开发技术_SQL13 3.1 SQL3.1 SQL简介简介 数据控制语句:收回权限数据控制语句:收回权限 授予的权限用授予的权限用REVOKEREVOKE语句

11、收回,语句收回,REVOKEREVOKE语句语句 的一般格式为:的一般格式为: REVOKE REVOKE , ON ON FROM FROM ,; 数据库原理及应用开发技术_SQL14 3.1 SQL3.1 SQL简介简介 数据控制语句:角色数据控制语句:角色 创建角色创建角色 CREATE ROLE CREATE ROLE ; 分配角色:分配角色: GRANT GRANT TO TO ; 数据库原理及应用开发技术_SQL15 3.2 SQL3.2 SQL定义语言定义语言 表、视图是数据库中的主体。表、视图是数据库中的主体。SQLSQL提供数据定提供数据定 义语句对这些主体进行管理义语句对这

12、些主体进行管理 SQLSQL的数据定义语句的数据定义语句 操作对象操作对象操操 作作 方方 式式 创创 建建删删 除除修修 改改 表表CREATE TABLE DROP TABLE ALTER TABLE 视视 图图CREATE VIEWDROP VIEW 数据库原理及应用开发技术_SQL16 3.2.1 3.2.1 表定义表定义 1 表的创建 SQLSQL语言使用语言使用CREATE TABLECREATE TABLE语句定义表,其一语句定义表,其一 般格式如下:般格式如下: CREATE TABLE CREATE TABLE ( 列级完整性约束条件列级完整性约束条件 , 列级完整性约束条件

13、列级完整性约束条件 ) , ); ; 数据库原理及应用开发技术_SQL17 3.2.1 3.2.1 表定义表定义 1 表的创建 (1 1)实体完整性)实体完整性 例例 建立建立StudentStudent表,表,SnoSno作为主码。作为主码。 CREATE TABLE StudentCREATE TABLE Student (Sno CHAR(7) PRIMARY KEY,(Sno CHAR(7) PRIMARY KEY, Sname CHAR(8), Sname CHAR(8), Ssex CHAR(2) , Ssex CHAR(2) , Sage SMALLINT, Sage SMALL

14、INT, Sdept CHAR(20) ); Sdept CHAR(20) ); 数据库原理及应用开发技术_SQL18 3.2.1 3.2.1 表定义表定义 1 表的创建 (1 1)实体完整性)实体完整性 例例 建立建立SCSC表,表,SnoSno和和CnoCno是主码。是主码。 CREATE TABLE SCCREATE TABLE SC (Sno CHAR(7), (Sno CHAR(7), Cno CHAR(4), Cno CHAR(4), Grade SMALLINT,Grade SMALLINT, PRIMARY KEY (Sno,Cno); PRIMARY KEY (Sno,Cno

15、); 数据库原理及应用开发技术_SQL19 3.2.1 3.2.1 表定义表定义 1 表的创建 (2)参照完整性)参照完整性 例例 建立建立SC表,表,Sno和和Cno是主码,且是主码,且Sno和和Cno也是外码,分别引也是外码,分别引 用用Student表的表的Sno列和列和Course表的表的Cno列。列。 CREATE TABLE SC (Sno CHAR(7), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno)

16、REFERENCES Course(Cno); 数据库原理及应用开发技术_SQL20 3.2.1 3.2.1 表定义表定义 1 表的创建 (3)属性值约束)属性值约束 非空值限制非空值限制 指定允许的取值范围指定允许的取值范围 当往表中插入元组或修改属性的值时,当往表中插入元组或修改属性的值时, 数据库管理系统就检查属性上的限制是否数据库管理系统就检查属性上的限制是否 被满足,如果不满足则操作被拒绝执行。被满足,如果不满足则操作被拒绝执行。 数据库原理及应用开发技术_SQL21 3.2.1 3.2.1 表定义表定义 1 表的创建 (3 3)属性值约束)属性值约束 例例 当学生的性别是男时,其名

17、字不能以当学生的性别是男时,其名字不能以Ms.打头。打头。 CREATE TABLE Student (Sno CHAR(7) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20), CHECK (Ssex =女女 OR Sname NOT LIKE Ms.% ); 数据库原理及应用开发技术_SQL22 3.2.1 3.2.1 表定义表定义 2 修改表 一般格式为:一般格式为: ALTER TABLE ADD 完整性约束完整性约束 DROP MODIFY ; 数据库原理及应用开发技术_S

18、QL23 3.2.1 3.2.1 表定义表定义 2 2 修改表修改表 例例 向向Student表增加表增加“入学时间入学时间”列,其数据列,其数据 类型为日期型。类型为日期型。 ALTER TABLE Student ADD Scome DATE; 不论表中原来是否已有数据,新增加的列一不论表中原来是否已有数据,新增加的列一 律为空值。律为空值。 例例 删除学生姓名不能取空值的约束。删除学生姓名不能取空值的约束。 ALTER TABLE Student DROP NOT NULL(Sname); 数据库原理及应用开发技术_SQL24 3.2.1 3.2.1 表定义表定义 3、删除表、删除表 当

19、某个表不再需要时,可以使用当某个表不再需要时,可以使用DROP TABLE语句删除它。其一般格式为:语句删除它。其一般格式为: DROP TABLE 例例 删除删除Student表。表。 DROP TABLE Student; 数据库原理及应用开发技术_SQL25 3.2.2 3.2.2 试图定义试图定义 1、视图的作用、视图的作用 (1)视图能够简化用户的操作)视图能够简化用户的操作 (2)视图可以减少冗余数据)视图可以减少冗余数据 (3)视图对重构数据库提供了一定程度的逻)视图对重构数据库提供了一定程度的逻 辑独立性辑独立性 (4)视图能够对机密数据提供安全保护)视图能够对机密数据提供安全

20、保护 数据库原理及应用开发技术_SQL26 3.2.2 3.2.2 试图定义试图定义 2、视图创建、视图创建 SQL语言用语言用CREATE VIEW命令建立视命令建立视 图,其一般格式为:图,其一般格式为: CREATE VIEW (, ) AS WITH CHECK OPTION; 数据库原理及应用开发技术_SQL27 3.2.2 3.2.2 试图定义试图定义 2 试图创建试图创建 例例 建立计算机系学生的视图。建立计算机系学生的视图。 CREATE VIEW Student_CS AS 数据库原理及应用开发技术_SQL28 3.2.2 3.2.2 试图定义试图定义 2 试图创建试图创建

21、例例 建立英语课(建立英语课(1156)成绩单的视图。)成绩单的视图。 CREATE VIEW English_Grade(Sno, Sname, Grade) AS 数据库原理及应用开发技术_SQL29 3.2.2 3.2.2 试图定义试图定义 2 试图创建试图创建 例例 建立英语课的成绩在建立英语课的成绩在80分以上的学生分以上的学生 的视图。的视图。 CREATE VIEW English_Grade_80 AS 数据库原理及应用开发技术_SQL30 3.2.2 3.2.2 试图定义试图定义 3 删除视图删除视图 当不再需要一个视图时,可以删除它,当不再需要一个视图时,可以删除它, 语句

22、格式为:语句格式为: DROP VIEW 例例 删除视图删除视图Student_CS DROP VIEW Student_CS; 数据库原理及应用开发技术_SQL31 3.3 SQL3.3 SQL操作语言操作语言 1 插入操作插入操作 2 修改操作修改操作 3 删除操作删除操作 数据库原理及应用开发技术_SQL32 3.3.1 3.3.1 插入操作插入操作 1、插入操作、插入操作 插入语句的格式是:插入语句的格式是: INSERT INTO (, ) VALUES ( , ); 数据库原理及应用开发技术_SQL33 3.3.1 3.3.1 插入操作插入操作 例例 将学生王林的信息插入到将学生王

23、林的信息插入到Student表中。表中。 INSERT INTO Student(Sno,Sname,Ssex,Sdept,Sage) VALUES (2000012, 王林王林, 男男, 计算机计算机, 19); INTO子句指定子句指定Student表和要赋值的列,表和要赋值的列, VALUES子句对元组的各列赋值。子句对元组的各列赋值。 数据库原理及应用开发技术_SQL34 3.3.1 3.3.1 插入操作插入操作 例例 在表在表Course中增加课程离散数学的信中增加课程离散数学的信 息。息。 INSERT INTO Course(Cno,Cname,Cpno,Ccredit) VAL

24、UES (1136, 离散数学离散数学, NULL, 4); 符号符号NULL的含义是赋予该列的值是空的含义是赋予该列的值是空 值。值。 数据库原理及应用开发技术_SQL35 3.3.2 3.3.2 修改操作修改操作 2、修改操作、修改操作 修改操作又称为更新操作,语句的一般修改操作又称为更新操作,语句的一般 格式是:格式是: UPDATE SET =, = WHERE ; 数据库原理及应用开发技术_SQL36 3.3.2 3.3.2 修改操作修改操作 例例 将学号为将学号为2000012的学生的年龄改为的学生的年龄改为 18岁。岁。 UPDATE Student SET Sage=18 WH

25、ERE Sno=2000012; 例例6 将所有学生的年龄增加将所有学生的年龄增加1岁。岁。 UPDATE Student SET Sage= Sage+1; 数据库原理及应用开发技术_SQL37 3.3.3 3.3.3 删除操作删除操作 3、删除操作、删除操作 语句的一般格式为:语句的一般格式为: DELETE FROM WHERE ; 数据库原理及应用开发技术_SQL38 3.3.3 3.3.3 删除操作删除操作 例例 删除学号为删除学号为2000012的学生记录。的学生记录。 DELETE FROM Student WHERE Sno=2000012; 例例 删除所有的学生选课记录。删除

26、所有的学生选课记录。 DELETE FROM SC; 数据库原理及应用开发技术_SQL39 3.4 SQL3.4 SQL查询语音查询语音 1.1.查询基本结构概述查询基本结构概述 2.2.查询子句概述查询子句概述 3.SELECT 3.SELECT 列表列表 4.FROM4.FROM子句子句 5.WHERE5.WHERE子句子句 数据库原理及应用开发技术_SQL40 3.4.1 查询基本结构概述 查询基本结构概述:查询基本结构概述: SELECT 列表:指定列列表:指定列 FROM 指定表指定表 WHERE 指定行指定行 语义:语义: Select Select 子句中的属性列表,对上述结果作

27、投子句中的属性列表,对上述结果作投 影(影( )操作。)操作。 From From 子句:对指定关系,作笛卡儿积(子句:对指定关系,作笛卡儿积() Where Where 子句:进行选择(子句:进行选择()运算,找出符)运算,找出符 合条件的元组。合条件的元组。 数据库原理及应用开发技术_SQL41 3.4.2 查询子句概述 SELECT SELECT 子句指定您要检索的列。子句指定您要检索的列。 FROM FROM 子句指定从中请求列的表。在所有从表中检索数据子句指定从中请求列的表。在所有从表中检索数据 的查询中都需要该子句。的查询中都需要该子句。 ON ON 子句指定子句指定 FROM F

28、ROM 子句中的表将如何进行连接。该子句子句中的表将如何进行连接。该子句 只用于多表查询。只用于多表查询。 WHERE WHERE 子句指定表中您要查看的行。子句指定表中您要查看的行。 GROUP BY GROUP BY 子句用于集合数据。子句用于集合数据。 HAVING HAVING 子句指定要在其上收集集合数据的行。子句指定要在其上收集集合数据的行。 ORDER BY ORDER BY 子句对结果集中的行进行排序。子句对结果集中的行进行排序。 数据库原理及应用开发技术_SQL42 3.4.3 SELECT 列表 1从表中选择所有列 SELECT distinct SELECT distin

29、ct * * FROM table-expression FROM table-expression 2从表中选择特定的列 SELECT dept_id, dept_name FROM departmentSELECT dept_id, dept_name FROM department 3重命名查询结果中的列 SELECT column-namecolumn-name AS aliasalias SELECT column-namecolumn-name aliasalias 4查询结果中显示字符串 select the firstname is as “ ”,first_name from

30、 employees;select the firstname is as “ ”,first_name from employees; 5计算 SELECT 列表中的值 SELECT first_name, salary - 10 AS salary after tax FROM SELECT first_name, salary - 10 AS salary after tax FROM employees; employees; 数据库原理及应用开发技术_SQL43 3.4.4 FROM子句 直接使用表名 FROM table_name 使用相关名 您可以赋予表名一个相关名以减少需要键入

31、的字符。 您可以在 FROM 子句中指派相关名,方法是在表名之 后键入该相关名,如下所示: SELECT d.dept_id, d.dept_name FROM Department d FROM 子句包括链接两个或多个表的表名 数据库原理及应用开发技术_SQL44 3.4.5 WHERE 子句 比较 WHERE salary 50000 范围 WHERE salary BETWEEN 40000 AND 60000 列表 WHERE station IN ( beijing, shanghai, jinan) 字符匹配 WHERE phone LIKE 415% 未知值 WHERE firs

32、t_name is not NULL 组合组合 WHERE salary 50000 AND first_name like A% 数据库原理及应用开发技术_SQL45 3.5 SQL3.5 SQL的基本语言元素的基本语言元素 数据类型数据类型 数值常量数值常量 数据格式化数据格式化 空值空值 数据库原理及应用开发技术_SQL46 3.5.1 3.5.1 数据类型数据类型 数据类型自动转换规则数据类型自动转换规则 INSERTUPDATEINSERTUPDATE语句中语句中, ,数据值按照字段的类型进行转数据值按照字段的类型进行转 换换 SELECTSELECT语句中语句中, ,字段值按照定义

33、的变量类型转换字段值按照定义的变量类型转换 比较字符数值与数字数值时比较字符数值与数字数值时, ,将字符数值转换为数字将字符数值转换为数字 比较字符数值与日期数值时比较字符数值与日期数值时, ,将字符数值转换为日期将字符数值转换为日期 赋值语句中赋值语句中, ,一般将等号右边的变量转换为左边的数据一般将等号右边的变量转换为左边的数据 类型类型 数据库原理及应用开发技术_SQL47 3.5.1 3.5.1 数据类型数据类型 字符自动转换字符自动转换 SELECT salary + 10 FROM employees; SELECT last_name FROM employees WHERE e

34、mployee_id = 200; SELECT last_name FROM employees WHERE hiredate = 1982-01-23; 数据库原理及应用开发技术_SQL48 3.5.2 3.5.2 数值常量数值常量 字符常量字符常量 Hello ORACLE 09-MAR-98 数字常量数字常量 25 +6.34 0.5 25e-03 -1 数据库原理及应用开发技术_SQL49 3.5.3 3.5.3 数据格式化数据格式化 字符串格式化字符串格式化 CAST ( CAST ( expressionexpression AS AS data_type data_type )

35、 ) CONVERT ( CONVERT ( data_type data_type ( ( length length ) , ) , expressionexpression , , style style ) ) 日期格式化日期格式化 字符串转日期字符串转日期 Select cast(2009-01-01 as datetime) Select cast(2009-01-01 as datetime) 日期格式转换日期格式转换 Select CONVERT(varchar(100), GETDATE(), Select CONVERT(varchar(100), GETDATE(), 0

36、)0) 数据库原理及应用开发技术_SQL50 3.5.4 NULL(3.5.4 NULL(空空) ) Null:Null:表明记录的字段中不包含任何值表明记录的字段中不包含任何值( (空空) ) 目前将目前将等同于等同于Null Null (ORACLE)ORACLE) 条件中的条件中的NULLNULL If A is: Condition Evaluates to: 10 a IS NULL FALSE 10 a IS NOT NULL TRUE NULLa IS NULL TRUE NULL a IS NOT NULL FALSE 10 a = NULL UNKNOWN 10 a != N

37、ULL UNKNOWN 数据库原理及应用开发技术_SQL51 3.6 SQL3.6 SQL的操作符的操作符 操作符介绍操作符介绍 一元操作符一元操作符 二元操作符二元操作符 多元操作符多元操作符 算术运算符算术运算符 连接运算符连接运算符 组合操作符组合操作符 数据库原理及应用开发技术_SQL52 3.6.1 3.6.1 算数运算符算数运算符 运算符运算符举例举例 + -+ - SELECT * FROM WHERE quantity = -1; SELECT hire_date FROM employees WHERE convert(int,GETDATE() - hire_date,1)

38、 365; * * / / UPDATE employees SET salary = salary * 1.1; 数据库原理及应用开发技术_SQL53 3.6.2 3.6.2 连接运算符连接运算符 连接运算符连接运算符:+:+ Example: CREATE TABLE tab1 (col1 VARCHAR(6), col2 CHAR(6),col3 VARCHAR(6), col4 CHAR(6) ); INSERT INTO tab1 (col1, col2, col3, col4) VALUES (abc, def, ghi, jkl); SELECT col1+col2+col3+c

39、ol4 Concatenation FROM tab1; - Abcdef ghijkl 数据库原理及应用开发技术_SQL54 3.6.3 3.6.3 组合操作符组合操作符 将两个或多个查询的结果组合到一个结果将两个或多个查询的结果组合到一个结果 集中集中 操作符 返回结果 UNION 组合组合查询的结果(不重复)查询的结果(不重复) UNION ALL 组合查询的全部结果组合查询的全部结果 INTERSECT 组合查询的共有结果组合查询的共有结果 MINUS对第一个查询取唯一记录,对共对第一个查询取唯一记录,对共 有记录不返回有记录不返回 数据库原理及应用开发技术_SQL55 3.6.3 3

40、.6.3 组合操作符组合操作符 举例:举例: create table a1(t1 char(1),t2 char(2); create table a2(t01 char(1),t02 char(2); insert into a1(t1,t2) values(1,11); insert into a1(t1,t2) values(2,22); insert into a2(t01,t02) values(2,22); insert into a2(t01,t02) values(3,33); select t01,t02 from a2 Union select t1,t2 from a1

41、; 数据库原理及应用开发技术_SQL56 3.7 SQL3.7 SQL表达式表达式 SQLSQL表达式的应用范围表达式的应用范围 Select exprSelect expr、where exprwhere expr、having exprhaving expr Order by expr Order by expr insert insert 的的values() values() 、update update 的的set exprset expr SQLSQL表达式的形式表达式的形式 简单表达式、复合表达式、简单表达式、复合表达式、CASECASE表达式表达式 DatetimeDateti

42、me表达式、间隔表达式表达式、间隔表达式 变量表达式、表达式列表变量表达式、表达式列表 数据库原理及应用开发技术_SQL57 3.7.1 SQL3.7.1 SQL简单表达式简单表达式 举例举例 Select Select Employees.first_name from from EmployeesEmployees Select Select 1 from Employees where from Employees where first_name = first_name = w w Select Select any string from Employees from Employ

43、ees where where 数据库原理及应用开发技术_SQL58 3.7.2 SQL3.7.2 SQL复合表达式复合表达式 举例举例 (CLARK + SMITH) LEN(MOOSE) * 57 SQRT(144) + 72 数据库原理及应用开发技术_SQL59 3.7.3 CASE3.7.3 CASE表达式表达式 CASECASE表达式让你可以在表达式让你可以在SQLSQL中使用中使用 IFIFELSEELSEEND IF END IF 的逻辑的逻辑 ExampleExample SELECT sno,CASE WHEN grade 85 THEN high WHEN grade ,=

44、,=,= 2500; ANY,SOMESELECT * FROM employees WHERE salary = ANY (SELECT salary FROM employees WHERE department_id = 30); ALLSELECT * FROM employees WHERE salary = ALL ( 1400, 3000); 数据库原理及应用开发技术_SQL64 3.8.2 3.8.2 逻辑条件逻辑条件 逻辑类型逻辑类型ExampleExample NOTSELECT * FROM employees WHERE NOT (job_id IS NULL); SE

45、LECT * FROM employees WHERE NOT (salary BETWEEN 1000 AND 2000); ANDORSELECT * FROM employees WHERE job_id = PU_CLERK ANDOR department_id = 30; 数据库原理及应用开发技术_SQL65 3.8.3 3.8.3 成员条件成员条件 类型类型ExampleExample INSELECT * FROM employees WHERE job_id IN (PU_CLERK,SH_CLERK); SELECT * FROM employees WHERE salar

46、y IN (SELECT salary FROM employees WHERE department_id =30); NOT INSELECT * FROM employees WHERE job_id NOT IN (PU_CLERK, SH_CLERK); 数据库原理及应用开发技术_SQL66 3.8.4 3.8.4 范围条件范围条件 类型类型ExampleExample not between X and y SELECT * FROM employees WHERE salary BETWEEN 2000 AND 3000; 数据库原理及应用开发技术_SQL67 3.8.5 NUL

47、L条件条件 类型类型ExampleExample IS NOT IS NOTSELECT last_name NULL FROM employees WHERE salary IS NULL; 数据库原理及应用开发技术_SQL68 3.8.6 LIKE条件条件 举例:举例: SELECT ename FROM emp WHERE ename LIKE A_L% ESCAPE ; 类型 X not LIKE y esca pe z 数据库原理及应用开发技术_SQL69 3.8.7 3.8.7 复合条件复合条件 通过()、通过()、not not 、and and 、or or 复合各类简单复合各

48、类简单 的条件的条件 ExampleExample Select first_name from employees Select first_name from employees Where first_name like Where first_name like m%m% and and (salary = 2000 or department_id in (salary = 2000 or department_id in (10,20);(10,20); 数据库原理及应用开发技术_SQL70 3.9 3.9 功能函数功能函数 内部函数内部函数 单行函数单行函数 聚集函数聚集函数 用

49、户自定义函数用户自定义函数 数据库原理及应用开发技术_SQL71 3.9 3.9 功能函数功能函数 常用的单行函数常用的单行函数 数值函数数值函数 absabs、sqrtsqrt、roundround、modmod 字符函数字符函数 lowerlower、upperupper、lenlen、trimtrim、substrsubstr 日期函数日期函数 Day,month,year,getdate,weekday,todayDay,month,year,getdate,weekday,today 转换函数转换函数 ConvertConvert、castcast 数据库原理及应用开发技术_SQL7

50、2 3.9 3.9 功能函数功能函数 常用的聚集函数常用的聚集函数 求平均:求平均:AVG 总计:总计:COUNT 最大值:最大值:MAX 最小值:最小值:MIN 求总和:求总和:SUM 数据库原理及应用开发技术_SQL73 3.10 SQL3.10 SQL查询和子查询查询和子查询 1.1.SQLSQL查询举例查询举例 2.2.SQLSQL子查询子查询 子查询简介子查询简介 子查询的作用子查询的作用 WHEREWHERE子句中的子查询子句中的子查询 FROMFROM子句中的子查询子句中的子查询 HAVINGHAVING子句中的子查询子句中的子查询 数据库原理及应用开发技术_SQL74 3.10

51、.1 SQL3.10.1 SQL汇总、分组与排序汇总、分组与排序 SQLSQL汇总:汇总: 应用了集合函数的每一组行生成一个值应用了集合函数的每一组行生成一个值 举例:举例: SELECT avg(salary + 1) FROM SELECT avg(salary + 1) FROM SELECT count(distinct id) FROM SELECT count(distinct id) FROM SELECT sum(salary) FROM SELECT sum(salary) FROM SELECT max(salary) FROM SELECT max(salary) FRO

52、M 数据库原理及应用开发技术_SQL75 3.10.2 SQL3.10.2 SQL汇总、分组与排序汇总、分组与排序 SQLSQL分组:分组: GROUP BY GROUP BY 字句,将表的输出划分为若干个字句,将表的输出划分为若干个 组组 举例:举例: SELECT employee_id,avg(salary) FROM SELECT employee_id,avg(salary) FROM employees GROUP BY employee_id;employees GROUP BY employee_id; 数据库原理及应用开发技术_SQL76 3.10.2 SQL3.10.2 S

53、QL汇总、分组与排序汇总、分组与排序 WHEREWHERE子句与子句与HAVINGHAVING子句:子句: Where Where 决定哪些元组被选择参加运算,作用于关系决定哪些元组被选择参加运算,作用于关系 中的元组。中的元组。 Having Having 决定哪些分组符合要求,作用于分组。决定哪些分组符合要求,作用于分组。 聚合函数的条件关系必须用聚合函数的条件关系必须用HavingHaving,WhereWhere中不应出中不应出 现聚合函数。现聚合函数。 举例:举例: SELECT department_id, MIN(salary), MAX (salary) FROM employees GROUP BY department_id HAVING MIN(salary) (WHERE salary (SELECT avg(e.salary) from employees e ); ; 数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论