第五章数据库语言sql内容摘要:

 索引越多越好吗。  了解优化器 DDL—— 索引的使用 47  数据添加  用 SQL的插入语句,向数据库表中添加数据  按关系模式的属性顺序 Insert Into Student Values ( ‘95001’, ‘张三 ’ ,27, ‘M’, ‘CS’ )  按指定的属性顺序,也可以只添加部分属性(非Null属性为必需) Insert Into Student ( sno, sname, sage) Values ( ‘95002’, ‘李四 ’ , 26 ) 48  把一列中的值进行聚合运算,返回单值的函数  五个预定义的聚合函数  平均值: Avg  总和: Sum  最小值: Min  最大值: Max  计数: Count  Count(*)、 Count(Distinct… ) 数值 聚合函数 49 Group By 将查询结果集按某一列或多列的 值 分组,值相等的为一组,一个分组以一个元组的形式出现 只有出现在 Group By子句中的属性,才可出现在Select子句中 例:统计各系学生的人数。 Select sdept, count(*) as stu_count From Student Group By sdept 聚合函数 50 Having 针对聚合函数的结果值进行筛选(选择),它作用于分组计算结果集 跟在 Group By子句的后面, 没有 Group By则针对全表 例:列出具有两门(含)以上不及格的学生的学号、不及格的课目数。 Select sno, count(sno) From SC Where grade 60 Group By sno Having count(sno) = 2 聚合函数 51 Having 与 Where的区别 Where 决定哪些元组被选择参加运算,作用于关系中的元组 Having 决定哪些分组符合要求,作用于分组 聚合函数的条件关系必须用 Having, Where中不应出现聚合函数 聚合函数 52 聚合函数忽略 Null Count: 不计 Sum: 不将其计入 Avg:具有 Null 的 元组 不参与 Max / Min: 不参与 例: Select count(sdept) From Student Select Avg(sage) From Student 聚合函数 —— Null 53 子查询是 嵌套 在另一查询中的 SelectFromWhere 表达式( Where/Having) SQL允许多层嵌套,由 内而外地 进行分析,子查询的结果作为父查询的查找条件 可以用多个简单查询来构成复杂查询,以增强SQL的查询能力 子查询中不使用 Order By 子句, Order By子句只能对最终查询结果进行排序 子查询( Subquery ) 54 返回单值的子查询,只返回 一行一列 父查询与 单值 子查询之间用比较运算符进行连接 运算符 : 、 =、 =、 =、 、 例:找出与 95001同龄的学生 Select * From Student Where sage = ( Select sage From Student Where sno = ‘95001’ ) 子查询 —— 单值比较 55 子查询返回 多行一列 运算符: In、 All、 Some(Any)、 Exists 子查询 —— 多值 56 标量值与子查询返回集中的某一个相等, true  IN 被用来测试多值中的成员 例:查询选修‘ C01’课程的学生的学号、姓名。 Select sno,sname From Student Where sno IN ( Select sno From SC Where o = ‘C01’ ) 子查询 多行一列 子查询 —— 多值成员 In 57 例: 查询选修了 ‘数据库’的学生的学号和姓名 Select sno,sname From Student Where sno IN ( Select sno From SC Where o IN ( Select o From Course Where ame = ‘数据库 ’)) 子查询 —— 多值成员 In 58 多值比较: 多行一列  父查询与多值子查询之间的比较需用 All来连接  标量值 s比子查询返回集 R中的每个都大时, sAll R 为True  All表示所有  all、 all、 =all、 =all、 all  all 等价于 not in 例:找出年龄最小的学生 Select * From Student Where sage all ( Select sage From Student ) 子查询 —— 多值比较 ALL 59 多值比较: 多行一列  父查询与多值子查询之间的比较需用 Some/Any来连接  标量值 s比子查询返回集 R中的 某一个 都大时  s Some R为 True 或  s Any R为 True  Some(早期用 Any)表示某一个 ,只要有一个即返回真  some、 some、 =some、 =some、 some  = some 等价于 in、 some 不等价于 not in 子查询 —— 多值比较 Some/Any 60 例:找出不是最小年龄的学生 Select * From student Where sage some ( Select sage From Student ) 子查询 —— 多值比较 61 例:找出具有最高平均成绩的学号及平均成绩 Select sno ,avg(grade) From SC Group By sno Having avg(grade) = all (Select avg(grade) From SC Group By sno) 子查询 —— 多值比较 62 Exists + 子查询用来判断该子查询是否返回元组 当子查询的结果集非空时, Exists为 True 当子查询的结果集为空时, Exists为 False 不关心子查询的具体内容,因此用 Select * 子查询 —— 存在判断 Exists 63 具有外部引用的子查询,称为相关子查询( Correlated Queries) 外层元组的属性作为内层子查询的条件 子查询 —— 相关子查询 64 例:列出选修了 C01课程的学生的学号、姓名 Select sno,sname From Student Where Exists ( Select * From SC Where = And o = ‘C01’) 子查询。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。