数据库语言SQL——数据查询1.ppt
《数据库语言SQL——数据查询1.ppt》由会员分享,可在线阅读,更多相关《数据库语言SQL——数据查询1.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章 数据查询数据查询4.1 基本查询基本查询4.2 嵌套查询嵌套查询4.3 连接查询连接查询 在在“学生学籍数据库学生学籍数据库”中创建了以下三个关系模式:中创建了以下三个关系模式:学生信息表(学号,姓名,学生信息表(学号,姓名,性别,年龄,系别)性别,年龄,系别)课程信息表课程信息表(课程号,课程名,课程号,课程名,学分学分)选修信息表(学号,课程号,成绩)选修信息表(学号,课程号,成绩)SQLSQL数据查询语句是数据查询语句是SELECTSELECT语句语句语法:语法:SELECT SELECT FROM FROM WHERE WHERE GROUP BY GROUP BY H
2、AVING HAVING ORDER BY ORDER BY vSELECT语句说明 SELECT语句中必须有:SELECT子句、FROM子句其余子句可选:WHERE子句、GROUP BY子句、HAVING子句、ORDER BY子句SELECTSELECT语句说明语句说明 (1)SELECT(1)SELECT ,称为,称为SELECTSELECT子句。用于指定子句。用于指定整个查询结果表中包含的列。假定已经执行完整个查询结果表中包含的列。假定已经执行完FROMFROM、WHEREWHERE、GROUPBYGROUPBY、HAVINGHAVING子句,子句,SELECTSELECT子子句指定的目
3、标列组成表就为整个查询的结果表。句指定的目标列组成表就为整个查询的结果表。(2)FROM(2)FROM ,称为,称为FROMFROM子句。是整个查询子句。是整个查询语句的数据来源,通常称为数据源表。语句的数据来源,通常称为数据源表。单表查询单表查询 单表查询指的是在单表查询指的是在一个源表一个源表中查找所需的数据。中查找所需的数据。下面首先说明下面首先说明单表查询单表查询SELECTSELECT语句中的语句中的各个子句各个子句3.3.2 3.3.2 单表查询单表查询1.SELECT子句 (1)查询表中若干列 在在SELECTSELECT子句的子句的 中指定整个查询结果中指定整个查询结果表中出现
4、的若干个列名,各列名之间用逗号分隔。表中出现的若干个列名,各列名之间用逗号分隔。【例3.3.1】查询全体学生的学号与姓名SELECT 学号学号,姓名姓名 FROM Students(2)查询表中所有的列 可以用*来代替表的所有列。【例3.3.2】查询全部课程的基本信息Select *from 表名表名Select *from 课程信息表课程信息表(2 2)选择表中所有列)选择表中所有列 可以用可以用*来代替表的所有列。来代替表的所有列。【例例】查查询询全全体体学学生生的的学学号号、姓姓名名、性性别别、年龄、所在系。年龄、所在系。SELECT*FROM SELECT*FROM 学生信息表学生信息
5、表 (3 3)查询经过计算的值查询经过计算的值例例:查询全体学生的姓名及其出生年份。查询全体学生的姓名及其出生年份。SELECT姓名,2011-年龄FROM学生信息表学生信息表输出结果:(4)设置列的别名 所所谓谓别别名名,就就是是给给另另一一个个名名字字,主主要要是是为为了了方方便便阅阅读读。设置列别名的方法有:设置列别名的方法有:原列名 ASAS 列别名【例例】查询全体学生的学号、姓名,并为原来的中文列名设查询全体学生的学号、姓名,并为原来的中文列名设置英文别名:置英文别名:Select 学号学号 as sno,姓名姓名 as sname,年龄年龄 as sage from 学生信息表学生
6、信息表例例:查询全体学生的姓名及其出生年份。查询全体学生的姓名及其出生年份。输出结果:SELECT 姓名姓名,2010-年龄年龄 as 出生年份出生年份FROM 学生信息表学生信息表(4)使用DISTINCT消除结果表中完全重复的行【例】显示所有选课学生的学号,并去掉重复行。解:解:SELECT DISTINCT SELECT DISTINCT 学号学号 FROM FROM 选修信息表选修信息表 与DISTINCT相反的是ALL,ALL表示保留结果表中的重复行。默认情况下是ALL,表示保留重复行。练习练习1 1:1、查询全体课程的课程号、课程名,并为其设置别名CNO,CNAME。3、查询选修了
7、课程的学生的学号。(去掉结果中重复的行)3.WHERE3.WHERE3.WHERE3.WHERE子句子句子句子句 WHERE 中常用的运算符:比较运算符和逻辑运算符。中常用的运算符:比较运算符和逻辑运算符。比较运算符比较运算符用于比较两个数值之间的大小是否相等。用于比较两个数值之间的大小是否相等。常用的比较运算符有:常用的比较运算符有:=、=、=、!=!=或或、!、!8080练习练习2 2:1、查询“系别”不是“英语”的所有学生的基本信息。2、查询所有年龄在20岁以上的学生姓名、系别及其年龄。(2)基于BETWEENAND的查询基本格式:列名基本格式:列名 BETWEEN BETWEEN 下限
8、值下限值 AND AND 上限值上限值 等价于:列名等价于:列名=下限值下限值 ANDAND列名列名=80 AND =80 AND 成绩成绩=90 =90(3)基于IN的查询 ININ用于测试一个列值是否与常量表中的任何一个值相等。用于测试一个列值是否与常量表中的任何一个值相等。ININ条件表示格式为:列名条件表示格式为:列名 IN(IN(常量常量1,1,常量常量2,2,常量常量n)n)当列值与当列值与ININ中的任一常量值相等时,则条件为中的任一常量值相等时,则条件为TRUETRUE,否则,否则为为FALSEFALSE。【例】查询数学系、计算机系、艺术系学生的学号、姓名。解:解:SELECT
9、 SELECT 姓名姓名,学号学号 FROM FROM 学生信息表学生信息表 WHERE WHERE 系系别别 IN IN(数数学学,计计算算机机,艺艺术术)等价于:SELECT SELECT 学号学号,姓名姓名 FROM FROM 学生信息表学生信息表 WHERE WHERE 系别系别 =数学数学 OR OR 系别系别 =计算机计算机 OR OR 系别系别 =艺术艺术(4)基于LIKE的查询LIKELIKE用于测试一个字符串是否与给定的模式匹配。用于测试一个字符串是否与给定的模式匹配。所谓模式是一种特殊的字符串,其中可以包含普通字符所谓模式是一种特殊的字符串,其中可以包含普通字符 ,也可以包
10、含特殊意义的字符,通常叫通配符。,也可以包含特殊意义的字符,通常叫通配符。LIKELIKE运算符的一般形式为:运算符的一般形式为:列名 LIKE 模式串中可包含如下四种通配符:模式串中可包含如下四种通配符:(1 1)_ _:匹配任意一个字符。如:匹配任意一个字符。如 _u_u_表示第二个字符为表示第二个字符为u u,第一、第三个字符为任意字符的字符串。,第一、第三个字符为任意字符的字符串。(2 2)%:匹配多个字符。如:匹配多个字符。如S%S%表示以表示以S S开头的字符串。开头的字符串。(3 3):匹配:匹配 中的任意一个字符,如中的任意一个字符,如SDJ SDJ 。(4 4):不匹配:不匹
11、配 中的任意一个字符,如中的任意一个字符,如SDJ SDJ。可以用LIKE来实现模糊查询【例】查查找找姓姓名名的的第第二二个个字字符符是是晓晓并并且且只只有有三三个个字字符符的的学学生生的的学号、姓名。学号、姓名。解:解:SELECT SELECT 学号学号,姓名姓名 FROM FROM 学生信息表学生信息表 WHERE WHERE 姓名姓名 LIKE LIKE _ _晓晓_【例】查找姓名以李开头的所有学生的学号、姓名。解:解:SELECT SELECT 学号学号,姓名姓名 FROM FROM 学生信息表学生信息表 WHERE WHERE 姓名姓名 LIKE LIKE 李李%【例】查找姓名以李
12、、张或王开头的所有学生的学号、姓名。解:解:SELECT SELECT 学号学号,姓名姓名 FROM FROM 学生信息表学生信息表 WHERE WHERE 姓名姓名 LIKE LIKE 李张王李张王%(5)基于NULL空值的查询 空值是尚未确定或不确定的值。判断某列值是否为空值是尚未确定或不确定的值。判断某列值是否为NULLNULL值只值只能使用专门判断空值的子句,语句格式如下:能使用专门判断空值的子句,语句格式如下:判断列值为空的语句格式为:列名判断列值为空的语句格式为:列名 IS NULL IS NULL 判断列值不为空的语句格式为:列名判断列值不为空的语句格式为:列名 IS NOT N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 语言 SQL 数据 查询
限制150内