SQL语言合集 您所在的位置:网站首页 avg无法删除 SQL语言合集

SQL语言合集

2023-03-10 10:56| 来源: 网络整理| 查看: 265

文章目录 模式的定义与删除定义模式删除模式 基本表的定义、删除与修改定义基本表修改基本表删除基本表 索引的建立与删除索引类型建立索引修改索引删除索引 数据查询☆☆☆查询满足条件的子句(WHERE)ORDER BY子句聚集函数GROUP BY子句连接查询嵌套查询带有IN谓词的子查询带有比较运算符的子查询带有ANY(SOME)或ALL谓词的子查询带有EXISTS谓词的子查询 集合查询基于派生表的查询 数据更新插入数据(INSERT)修改数据(UPDATE)删除数据(DELETE) 空值的处理视图定义视图查询视图更新视图视图的作用

模式的定义与删除 定义模式 CREATE SCHEMA AUTHORIZATION [||]; 删除模式 DROP SCHEMA ; 基本表的定义、删除与修改 定义基本表 CREATE TABLE ([列级完整性约束条件] [,[列级完整性约束条件]] ... [,]); 修改基本表 ALTER TABLE [ADD [COLUMN] [完整性约束]] [ADD ] [DROP [COLUMN] [CASCADE|RESTRICT]] [DROP CONSTRAINT [CASCADE|RESTRICT]] [ALTER COLUMN ]; 删除基本表 DROP TABLE [RESTRICT|CASCADE]; 索引的建立与删除 索引类型 顺序文件上的索引B+树索引散列索引位图索引 建立索引 CREATE [UNIQUE][CLUSTER] INDEX ON ([][,[]]...); // CLUSTER 聚簇索引 修改索引 ALTER INDEX RENAME TO ; 删除索引 DROP INDEX ; 数据查询☆☆☆ SELECT [ALL|DISTINCT] [,]... FROM [,...]|()[AS] [WHERE ] [GROUP BY [HAVING]] [ORDER BY [ASC|DESC]];

值得注意的点:

select子句的目标列表达式不仅可以是属性列,而且可以是表达式。例如2014-Sage 'Year of Birth'。列可以指定别名, DISTINCT去掉查询结果中重复的行WHERE子句中不能使用聚集函数作为条件表达式,聚集函数只能在SELECT子句和GROUP BY的HAVING子句中出现 查询满足条件的子句(WHERE) 比较大小确定范围:BETWEEN AND, NOT BETWEEN AND确定集合:IN, NOT IN字符匹配:LIKE, NOT LIKE(在使用LIKE进行字符匹配时,如果LIKE后面不含通配符(%, _),则可以用=取代LIKE,用!=取代NOT LIKE)空值:IS NULL, IS NOT NULL多重条件: AND, OR, NOT

!!!注:在WHERE子句中不能使用聚集函数作为比较表达式,聚集函数应当放在HAVING后,与GROUP BY配合使用

ORDER BY子句

将查询结果进行升序(ASC)或降序(DESC)的排序 eg:ORDER BY Sno就是按照学号大小进行升序排序,不指定ASC或DESC时默认为ASC。

聚集函数 COUNT(*) 统计元组个数 COUNT( [DISTINCT|ALL] ) 统计一列中值的个数 SUM( [DISTINCT|ALL] ) 计算一列值的总和 AVG( [DISTINCT|ALL] ) 计算一列中值的平均值 MAX( [DISTINCT|ALL] ) 求一列值中的最大值 MIN( [DISTINCT|ALL] ) 求一列值中的最小值 GROUP BY子句

GROUP BY将查询结果按某一列或多列的值分组,值相等的为一组。分组后聚集函数将作用于每一组,即每一组都有一个函数值。

连接查询 等值与非等值连接查询,使用比较运算符或BETWEEN AND进行连接查询自身连接,起别名外连接,将一个或者两个表的悬浮元组保存在运算结果中多表连接 // 第一种 [.][.] // 第二种 [.] BETWEEN [.] AND [.] 嵌套查询

查询块:一个SELECT-FROM-WHERE语句称为一个查询块。 eg:查询选修2号课程的学生姓名,这是一个不相关子查询,该查询可以使用连接查询来替代。

SELECT Sname //外层查询或父查询 FROM Student WHERE Sno IN (SELECT Sno // 内层查询或子查询 FROM SC WHERE Cno='2');

不相关子查询:子查询的条件不依赖于父查询 相关子查询:子查询的条件依赖于父查询 相关子查询实例:找出每个学生超过他自己选修课程平均成绩的学号和课程号

SELECT Sno, Cno FROM SC x WHERE Grade >= (SELECT AVG(Grade) FROM SC y WHERE y.Sno = x.Sno); 带有IN谓词的子查询

eg:查询与’刘晨’在一个系学习的所有学生信息

SELECT * FROM Student WHERE Sdept IN (SELECT Sdept FROM Student WHERE Sname = '刘晨'); 带有比较运算符的子查询

示例见相关子查询示例。

带有ANY(SOME)或ALL谓词的子查询

ANY和ALL谓词与比较运算符相结合,实现与子查询所有结果相比较。 >ANY代表大于子查询结果中的某一个值 >ALL代表大于子查询结果中的所有值 >、=、= 90; // 视图定义中的子查询 SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno; // 将上述两者结合,形成下列查询语句 SELECT Sno, AVG(Grade) FROM SC WHERE AVG(Grade) >= 90 GROUP BY Sno;

则在上述示例中发生了转换错误,在WHERE子句中不能使用聚集函数作为条件表达式。 而正确转换的查询语句应该是:

SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade) >= 90;

解决这个问题可以使用基于派生表的查询

SELECT Sno, AVG(Grade) FROM (SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno) AS S_G(Sno, Gavg) WHERE Gavg >= 90;

在这个查询过程中,使用FROM中的子查询生成了一个派生表S_G。而该派生表在查询语句完成后就会被删除,是一张临时表。

更新视图

通过使用插入(INSERT)、删除(DELETE)和修改(UPDATE)数据。而所有对视图的更新最终会回到基本表上。 但是,并不是所有的视图都是可更新的,有些视图的更新不能够唯一的有意义的转换成对相应基本表的更新。一般的,行列子集视图是可更新的。

视图的作用 视图能够简化用户的操作视图使用户能以多种角度看待同一数据视图对重构数据库提供了一定程度的逻辑独立性视图能够对机密数据提供安全保护适当利用视图可以更清晰的表达查询


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有