《[计算机软件及应用]6G-SQL-查询语句.ppt》由会员分享,可在线阅读,更多相关《[计算机软件及应用]6G-SQL-查询语句.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2SELECT 语句-11语句格式: SELECTALL | DISTINCT, FROM ,. WHERE GROUP BY HAVING ORDER BY ASC | DESC 2语句说明: SELECT语句的基本格式是由SELECT子句、FROM子句和WHERE子句组成的查询块。3SELECT 语句-2 整个SELECT语句的含义:根据WHERE子句的筛选条件表达式, 从FROM子句指定的表/查询中找出满足条件的记录,再按SELECT子句中指定的字段次序,选出记录中的字段值构造一个显示结果表。 如果有GROUP子句,则将结果按分组表达式的值进行分组,该值相等的记录为一个组。 如果GROU
2、P子句带HAVING短语,则只有满足指定条件的组才会输出。 如果有ORDER子句,则显示结果表还要按值的升/降序进行排序。 3实例:显示所有学生的学号和姓名。 Select 学号,姓名 from 学生表4SELECT 语句- 基于单表的查询:基于单表的查询:单表查询就是指所处理的问题,仅仅涉及到一个表的记录(数据) 查询指定的字段:查询指定的字段:显示全部学生的班级名、姓名和所在院系。Select 班级名,姓名,所在院系 From 学生表 通配符通配符* *的使用的使用列出学生表的清单。Select * From 学生表 基于字段的表达式基于字段的表达式显示所有学生的学号、姓名和出生年份。Se
3、lect 班级名,姓名,year(getdate()-年龄 as 出生年份 From 学生表5SELECT 语句- 使用使用DISTINCTDISTINCT短语去掉重复的记录短语去掉重复的记录列出学生的姓名,重名的记录自动去掉。Select distinct Select distinct 姓名姓名 from from 学生表学生表 用用WHEREWHERE子句过滤记录子句过滤记录 SQL是一种集合处理语句,所以数据修改及数据检索语句会对表中的所有记录(行)起作用,除非使用WHERE子句来限制查询的范围。WHERE子句必须紧跟在FROM子句之后。 基本格式 SELECT FROM WHERE6
4、关系运算符与逻辑运算符关系运算符与逻辑运算符关系运算符关系运算符 = 等于 小于 大于 = 大于或等于 !=或者 不等于逻辑运算符逻辑运算符 Or 或 And 与 Not 非7特殊运算符-1运算符号 含义 %通配符,表示零或多个字符 - 通配符 ,表示任何一个字符 BETWEEN 定义一个区间范围 IS NULL测试字段值是否为空值 LIKE字符串匹配操作符 IN 检查一个字段值是否属于一组值之中 EXISTS 检查某一个字段值是否有值。实际上,EXISTS是NULL的反义词。8特殊运算符-2 列出年龄在18岁到20岁之间的所有学生名单。 SELECT * FROM 学生表 WHERE 年龄
5、BETWEEN 18 AND 20 列出所有没有先修课的课程名 SELECT 课程名 FROM 课程表 WHERE 先修课 IS NULL 列出计算机系和国际贸易系学生的学号、姓名、性别和所在院系。 SELECT 学号,姓名,性别,所在院系 FROM 学生表 WHERE 所在院系 IN (计算机,国际贸易) 列出所有姓“苏”的教师 SELECT DISTINCT 教师 FROM 授课表 WHERE 教师名 LIKE苏%9ORDER BY子句 基本格式: SELECT FROM WHERE ORDER BY DESC 注:ORDER BY子句默认值为升序(ASC), ORDER BY子句必须写在
6、查询块的最后。 例:显示学生的清单。要求查询结果的入学年份按降序排列;若入学年份相同,则按学号升序排列。 Select * from 学生表 order by 入学年份 desc,学号10SQL 的集合函数-1函数 功能 含义(返回值) COUNT 统计 统计满足条件的行数 MIN 求最小值 求某字段列的最小值 MAX 求最大值 求某字段列的最大值 AVG 求平均值 求指定字段列的算术平均值 SUM 求总和 求指定字段列所有值的总和 11SQL 的集合函数-21COUNT函数的应用 功能:主要是用作计数器,统计满足某种条件的行数。 注:COUNT函数通常与DISTINCT子句一起使用 例:统计
7、学生表中一共有多少名19岁以上的女同学。 SELECT COUNT(*) FROM 学生表 WHERE 性别=女 AND 年龄=192MAX和MIN函数的应用 例:查找年龄最大和最小的学生年龄。 SELECT MAX(年龄),MIN(年龄) FROM 学生表12SQL 的集合函数-3AVG函数的应用 与MIN和MAX的表达式格式一样。 Select AVG(年龄) from 学生表4SUM函数的应用 SUM函数对指定的字段列求和。 例:列出所有学生的年龄总和,并且列出所有学生加1岁后的结果。Select Sum(年龄), Sum(年龄+1) from 学生表13GROUP BY子句-1 功能:
8、能够快速而简便地将查询结果表按照指定的字段进行分组,值相等的记录分为一组。 注:GROUP BY 子句一般和SQL 的集合函数一起使用。 基本格式: SELECT FROM GROUP BY 14GROUP BY子句-2 例1:统计每一届学生的人数。 SELECT 入学年份,COUNT(*) FROM 学生表 GROUP BY 入学年份 例:统计男、女学生各自的人数和平均年龄。SELECT 性别,COUNT(年龄),AVG (年龄) FROM 学生表 GROUP BY 性别15HAVING子句- 功能:对分组后的结果表按某种条件再进行筛选,输出满足用户指定条件的记录。 WHERE子句与HAVI
9、NG子句的区别在于作用对象不同: WHERE子句的作用对象是表(Table) SELECT语句是从WHERE子句指定的表中,筛选出满足条件的记录。 HAVING子句的作用对象是GROUP BY子句所产生的组(Group)。16HAVING子句- 例:写出选修了一门以上课程的学生名单及其选修门数。Select 学号, count(*) from 成绩表 group by 学号 having count(*)117基于多表的查询 在关系型数据库中,将一个查询同时涉及两个以上的表,称为连接查询。 连接查询主要包括以下几种类型: 等值连接查询。 非等值连接查询 自然连接查询 自身连接查询 外连接查询
10、复合条件连接查询18多表查询的连接条件 用来连接多个表的条件称为连接条件。 1基本格式:. 2运算符说明运算符可以是比较运算符 运算符可以是逻辑运算符 可以是BETWEENAND19自然连接等值连接等值连接:若连接条件中的运算符是关系相等符(=),则称为等值连接。非等值连接非等值连接:若连接条件中的运算符是、=、ANY (SELECT 年龄 FROM 学生表 WHERE 所在院系=计算机) AND 所在院系!=计算机 例:列出所有院系中比计算机系所有学生年龄大的学生清单。 SELECT 学号,姓名,年龄,所在院系 FROM 学生表 WHERE 年龄ALL(SELECT 年龄 FROM 学生表
11、WHERE 所在院系=计算机)AND 所在院系!=计算机25嵌套查询-4 带有EXISTS的子查询 功能:只查找满足条件的那些记录,一旦找到第一个匹配的记录后,则马上停止查找。 注:带EXISTS的子查询不返回任何记录,只产生逻辑值“真” TRUE或者逻辑值假”FALSE。26UNION查询 功能:将两个或多个结果表进行逻辑联合,列出在各个结果表中返回的记录。 注:各个结果表的字段个数必须相同,对应的数据类型也必须兼容。 使用UNION时,SQL Server 会自动将重复的记录去掉。 例:显示计算机系的学生以及性别为女的学生名单。27INTO子句 使用SELECT和INTO子句可以使SELE
12、CT语句在运行过程中,创建一个永久表或临时表。 基本格式: SELECT INTO FROM WHERE 例:创建计算机系学生表。 Select * into 计算机学生 From 学生表 Where 所在院系=计算机28数据更新-1 插入记录 删除记录 修改字段29数据更新-2 插入子查询结果 基本格式: INSERT INTO (),.) SELECT (,.) FROM WHERE 30数据更新-3 带子查询的修改语句 在SQL中,子查询也可以嵌套在UPDATE语句中,用来指定修改的条件。 例:将电子系全体学生的成绩加8分。 UPDATE 成绩表 SET 成绩=成绩+8 WHERE 学号
13、 in (SELECT 学号 FROM 学生表 WHERE 所在院系=电子学)31数据更新-4 带子查询的删除语句 子查询可以嵌套在DELETE语句中,用来指定删除的条件。 例:删除电子系所有学生的选修课程记录 DELETE FROM 成绩表 WHERE学号 in (SELECT 学号 FROM 学生表 WHERE 所在院系=电子学)32小结 查询记录时,需要在SELECT语句中指定查询的字段,FROM子句中指定查询的表,WHERE子句中指定查询的条件。 在查询语句中,可以使用各类运算符和集合函数,从表中获取有用的信息。 用ORDER BY可以对结果表进行排序。 可以使用DISTINCT关键字消除重复行。 使用别名做字段的标题,可使结果表更具可读性。 可以用SELECTINTO将结果表输出到一个新表中。 用UNION将两个或多个查询结果表合并成一个表。 可以使用集合函数和GROUP BY子句来进行统计。 子查询首先对内部表求值,然后才对外部表求值。