数据的查询与修改(sql)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据的查询与修改
查询语句的基本语句结构: 查询语句的基本语句结构:
SELECT <目标序列名> <目标序列名 目标序列名> FROM <数据源> <数据源 数据源> [WHERE <检索条件表达式>] <检索条件表达式 检索条件表达式>] [GFra Baidu bibliotekOUP BY <分组依据列>] <分组依据列 分组依据列>] [HAVING<组提取条件 [HAVING<组提取条件>] 组提取条件>] [ORDER BY<排序依据序列>] BY<排序依据序列 排序依据序列>]
数据的查询与修改
如果要查找的字符串正好含有通配符的符 就需要用一个特殊子句ESCAPE: 号,就需要用一个特殊子句ESCAPE: ESCAPE 转义字符 子句: 如WHERE 子句: WHERE 字段名 LIKE ‘%30!%%’ %30!%%’ ESCAPE ‘!’ WHERE 字段名 LIKE ‘%!_%%’ _%%’ ESCAPE ‘!’
数据的查询与修改
数据的查询与修改
1 数据查询 查询功能是SQL语句的核心功能 语句的核心功能, 查询功能是SQL语句的核心功能,是数 据库中使用最多的操作, 据库中使用最多的操作,查询语句也是 SQL语句中比较复杂的语句 SQL语句中比较复杂的语句。 语句中比较复杂的语句。 1.1 查询语句的基本结构 查询语句是从数据库中检索满足条件的数 据。查询的数据源可以是一个表或多个表 或视图,查询结果是由0 或视图,查询结果是由0行(没有满足条件 的数据)或多行记录组成的记录集, 的数据)或多行记录组成的记录集,并允 许选用一个或多个字段作为输出字段。 许选用一个或多个字段作为输出字段。
数据的查询与修改
[]:匹配[]中的任意一个字符。如[abcd]表示 []:匹配[]中的任意一个字符 中的任意一个字符。 [abcd]表示 匹配a 如果[]中的字符是有序的 中的字符是有序的, 匹配a或b或c或d,如果[]中的字符是有序的, 则可以用连字符-来简化[]中的内容 中的内容, 则可以用连字符-来简化[]中的内容,例如 [abcd]可以简写为 -d]; [abcd]可以简写为[a-d]; 可以简写为[a [^]:不匹配[]中的任意一个字符 [^]:不匹配[]中的任意一个字符。 中的任意一个字符。 例14 查询姓“张”的学生的详细信息。 查询姓“ 的学生的详细信息。 SELECT * FROM Student WHERE Sname LIKE ‘张%’ 查询学生表中姓“ 和姓“ 例15 查询学生表中姓“张”姓“李”和姓“刘” 的学生的详细信息。 的学生的详细信息。 SELECT * FROM Student WHERE Sname LIKE ‘[张李刘]%’ 张李刘]%’
数据的查询与修改
例12 查询信息系、数学系和计算机系学生 查询信息系、 的姓名和性别。 的姓名和性别。 SELECT Sname, Ssex FROM Student WHERE Sdept IN(‘信息 IN(‘ 数学系’ 计算机系’ 系’, ‘数学系’, ‘计算机系’) 查询不是信息系、 例13 查询不是信息系、数学系和计算机系 学生的姓名和性别。 学生的姓名和性别。 SELECT Sname, Ssex FROM Student WHERE Sdept NOT IN(‘信 IN(‘ 息系’ 数学系’ 计算机系’ 息系’, ‘数学系’, ‘计算机系’)
数据的查询与修改
1.2.4 使用计算函数汇总数据
计算函数又称为集合函数或聚合函数,其作用是对一 计算函数又称为集合函数或聚合函数, 组值进行计算并返回一个值。 组值进行计算并返回一个值。 COUNT( ):统计表中的元组个数 COUNT(*):统计表中的元组个数; 统计表中的元组个数; COUNT( 列名〉):统计本列列值个数 COUNT(〈列名〉):统计本列列值个数; 统计本列列值个数; SUM( 列名> ):计算列值总和 必须是数值型); SUM(<列名> ):计算列值总和(必须是数值型); 计算列值总和( AVG( 列名> AVG(<列名> ):计算列值平均值(必须是数值型); 计算列值平均值( MAX( 列名> ):求列值最大值 MAX(<列名> ):求列值最大值; 求列值最大值; MIN( 列名> ):求列值最小值 MIN(<列名> ):求列值最小值。 求列值最小值。 COUNT(*)除外 其它函数在计算过程中均忽略NULL COUNT(*)除外,其它函数在计算过程中均忽略NULL 除外, 值。
数据的查询与修改
1.2.2 选择表中的若干元组
1.消除取值相同的行 1.消除取值相同的行 在修课表中查询有哪些学生修了课程, 例6 在修课表中查询有哪些学生修了课程,要求列 出学生的学号。 出学生的学号。 SELECT Sno FROM Sc SELECT DISTINCT Sno FROM Sc 2.查询满足条件的元组 2.查询满足条件的元组 (1)比较大小 例7 查询计算机系全体学生的姓名 SELECT Sname FROM Student WHERE Sdept=‘计算机系’ Sdept=‘计算机系’
数据的查询与修改
例11 查询年龄不在20-30岁之间的学生姓 查询年龄不在20-30岁之间的学生姓 所在系和年龄。 名、所在系和年龄。 SELECT Sname, Sdept,sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23 (3)确定集合 IN是一个逻辑运算符 IN是一个逻辑运算符,可以用来查找属 是一个逻辑运算符, 性值属于指定集合的元素。格式为: 性值属于指定集合的元素。格式为: IN(常量1 常量2 列名 [NOT] IN(常量1,常量2,…, 常量n 常量n)
数据的查询与修改
例16 查询名字中第二个字为“小”或“大”的 查询名字中第二个字为“ 学生的姓名和学号。 学生的姓名和学号。 SELECT Sname,Sno FROM Student WHERE Sname LIKE ‘_[大小]%’ _[大小 大小]%’ 查询不姓“ 的学生的姓名和学号。 例17 查询不姓“刘”的学生的姓名和学号。 SELECT Sname,Sno FROM Student WHERE Sname NOT LIKE ‘刘%’ 查询表中学号的最后一位不在2 例18 查询表中学号的最后一位不在2-6的范围 内的学生情况。 内的学生情况。 SELECT * FROM Student WHERE Sno LIKE ‘%[^2-6]’ %[^2-6]’
数据的查询与修改
改变列标题的语法格式: 改变列标题的语法格式: 列名 | 表达式 [AS] 列标题 或: 列标题=列名| 列标题=列名|表达式 例如: 例如: SELECT Sname 姓名,‘Year of Birfh’ 姓名, Birfh’ 出生年月,2002出生年月,2002-Sage 年 份,Lower(Sdept) 所在系 FROM Student
数据的查询与修改
1.2.3 对查询结果进行排序
对查询结果按照某个列或某几个列的顺序 进行排序,排序语句格式: 进行排序,排序语句格式:
ORDER BY <列名>[ASC|DESC][,…] <列名 列名>[ASC|DESC][,… 列名>为排序的依据列, 注:<列名>为排序的依据列,可以是列名或列 的别名。如果没有指定排序方式,默认是升序。 的别名。如果没有指定排序方式,默认是升序。 NULL作为最小值处理 NULL作为最小值处理。 作为最小值处理。
数据的查询与修改
(4)字符匹配 LIKE用于查找指定列名与匹配串常量匹配 LIKE用于查找指定列名与匹配串常量匹配 的元组。匹配串不仅可以包含普通字符, 的元组。匹配串不仅可以包含普通字符, 而且还可以包含通配符。 而且还可以包含通配符。 LIKE运算符的一般形式 LIKE运算符的一般形式: 运算符的一般形式: 列名|[NOT] LIKE<匹配串 匹配串> 列名|[NOT] LIKE<匹配串> 通配符: 通配符: —(下划线):匹配任何一个字符; 下划线):匹配任何一个字符; ):匹配任何一个字符 %(百分号):匹配 个或多个字符; 百分号):匹配0 %(百分号):匹配0个或多个字符;
数据的查询与修改
1.2 简单查询
1.2.1 选择表中的若干列 1.查询指定的列 1.查询指定的列 查询全体学生的学号和姓名。 例1 查询全体学生的学号和姓名。 SELECT Sno,Sname FROM Student 查询全体学生的学号、姓名和所在系。 例2 查询全体学生的学号、姓名和所在系。 SELECT Sno,Sname,Sdept FROM Student
数据的查询与修改
例20 查询所有考试成绩的学生的学号和相 应的课程号。 应的课程号。 SELECT Sno ,Cno FROM Sc WHERE Grade IS NOT NULL (6)多重条件的查询 查询计算机系年龄在20岁以下的学生 例21 查询计算机系年龄在20岁以下的学生 的姓名。 的姓名。 SELECT Sname FROM Student WHERE Sdept=‘计算机’ AND Sdept=‘计算机’ Sage<20
数据的查询与修改
例8 查询所有年龄在20岁以下的学生姓名 查询所有年龄在20岁以下的学生姓名 及年龄 SELECT Sname ,Sage FROM Student WHERE Sage<20 或: SELECT Sname, Sage FROM Student WHERE NOT Sage>=20 例9 查询考试成绩不及格的学生的学号 SELECT DISTINCT Sno FROM Sc WHERE Grade<60
数据的查询与修改
(2)确定范围 (2)确定范围 BETWEEN… BETWEEN…AND 和BETWEEN…AND是 BETWEEN…AND是 一个逻辑运算符, 一个逻辑运算符,可 以用来查找属性值在或不在 指定范围内的元组,其中BETWEEN后边指定范 指定范围内的元组,其中BETWEEN后边指定范 围的下限,AND后边指定范围的上限 格式为: 后边指定范围的上限。 围的下限,AND后边指定范围的上限。格式为: 列名| BETWEEN下限值 列名|表达式 [NOT] BETWEEN下限值 AND 上限值 查询年龄在20-30岁之间的学生姓名 岁之间的学生姓名、 例10 查询年龄在20-30岁之间的学生姓名、所在 系和年龄。 系和年龄。 SELECT Sname, Sdept,sage FROM Student WHERE Sage BETWEEN 20 AND 23
数据的查询与修改
2.查询全部列 2.查询全部列 3.查询全体学生的详细记录 例3.查询全体学生的详细记录 SELECT * FROM Student 3. 查询经过计算的列 4.查询全体学生的姓名及出生年份 例4.查询全体学生的姓名及出生年份 SELECT Sname,2002-Sage FROM Sname,2002Student 5.查询全体学生的姓名及出生年份和所在 例5.查询全体学生的姓名及出生年份和所在 系,要求写字母表示所在的系名 SELECT Sname,‘Year of Birfh’,2002Sname,‘ Birfh’,2002Sage,Lower(Sdept) FROM Student
例22 将学生按年龄的升序排序 SELECT * FROM Student ORDER BY Sage
数据的查询与修改
例23 查询选修了“C02”号课程的学生的学 查询选修了“C02” 号用成绩, 号用成绩,查询结果按成绩的降序排列 SELECT Sno,Grade FROM Sc WHERE Cno=‘c02’ ORDER BY Cno=‘c02’ Grade DESC 查询全体学生的信息, 例24 查询全体学生的信息,查询结果按所 在的系名升序排列, 在的系名升序排列,同一系的学生按年龄降 序排列 SELECT * FROM Student ORDER BY Sdept,Sage DESC
数据的查询与修改
(5)涉及空值的查询 SQL中判断空值的语句格式为 中判断空值的语句格式为: 在SQL中判断空值的语句格式为: 列名 IS NOT NULL 例19 查询无考试成绩的学生的学号和相应 的课程号。 的课程号。 SELECT Sno ,Cno FROM Sc WHERE Grade IS NULL
相关文档
最新文档