|
知识路径: > 信息系统工程技术知识 > 计算机技术知识与网络知识 > 数据库系统 >
|
相关知识点:24个
|
|
|
|
SQL-86是第一个SQL标准,后续的有SQL-89、SQL-92(SQL2)和SQL-99(SQL3)等。但作为考试而言,所考查的是一些基本的语法知识。
|
|
|
|
SQL语言使用动词CREATE定义基本表,其具体语法格式如下:
|
|
|
|
在这个语句中,主要考查一些约束条件。有关这方面的知识请参考第7章的7.4.3节。
|
|
|
|
|
|
在这个语句中,主要考查各种条件,包括GROUP BY、HAVING等,以及考查IN和EXISTS的区别。另外,还要掌握有关集函数的应用。
|
|
|
|
|
.COUNT([DISTINCT|ALL]*):统计元组个数。
|
|
|
.COUNT([DISTINCT|ALL]<列名>):统计一列中值的个数。
|
|
|
.SUM([DISTINCT|ALL]<列名>):计算一列值的总和(必须是数值型)。
|
|
|
.AVG([DISTINCT|ALL]<列名>):计算一列值的平均值(必须是数值型)。
|
|
|
.MAX([DISTINCT|ALL]<列名>):求一列值中的最大值。
|
|
|
.MIN([DISTINCT|ALL]<列名>):求一列值中的最小值。
|
|
|
集函数只能在SELECT子句和HAVING子句中使用,其他子句中不能使用集函数。
|
|
|
|
GROUP BY指定用来放置输出行的组。如果SELECT子句“目标列表达式”中包含聚合函数,则GROUP BY将计算每组的汇总值。指定GROUP BY时,选择列表中任意非聚合表达式内的所有列都应包含在GROUP BY列表中,或者GROUP BY表达式必须与选择列表表达式完全匹配。
|
|
|
如果没有GROUP BY子句,则SQL列函数应用程序返回一行数据。当使用GROUP BY时,会对每个组运用函数,所以所返回的行数与分组数相同。
|
|
|
当使用GROUP BY子句时,SQL将选出的行按照是否符合表达式的值或者是否符合某一列或多列的值进行分组。接下来,SQL处理每一组,从而为每组生成一行结果。在GROUP BY子句中,可以指定一列或多列或者表达式来对行进行分组。在SELECT语句中指定的项具有由行组成的每一组的属性,而不具备表中或视图中单个行的属性。
|
|
|
例如,EMPLOYEE表有几组行,每一组中的这些行描述了某个特定部门的成员。为了查出每个部门中人员的平均薪水,可以写这样的SQL语句:
|
|
|
|
|
如果在GROUP BY子句中指定的列为空值,则会生成只有一行的结果,行中数据为空值。也可以将行按照多列或按照表达式进行分组。例如,使用CORPDATA.EMPLOYEE表编写一条查找每个部门男性员工和女性员工平均薪水的SELECT语句。为了实现这一点,可以这样做:
|
|
|
|
|
HAVING子句指定组或聚合应满足的搜索条件。当HAVING与GROUP BY ALL一起使用时,HAVING子句优于ALL。
|
|
|
HAVING子句对GROUP BY子句设置条件的方式与WHERE子句和SELECT语句交互的方式类似。WHERE子句搜索条件在进行分组操作之前应用,而HAVING子句搜索条件在进行分组操作之后应用。HAVING语法与WHERE语法类似,但HAVING子句可以包含聚合函数。HAVING子句可以引用选择列表中出现的任意项。
|
|
|
下面的查询得到本年度截止到目前的销售额超过40000的出版商:
|
|
|
|
HAVING子句用来从分组的结果中筛选行。对于可以在分组操作之前或之后应用的搜索条件,在WHERE子句中指定它们更有效。这样可以减少必须分组的行数。应当在HAVING子句中指定的搜索条件只是那些必须在执行分组操作之后应用的搜索条件。
|
|
|
|
在WHERE子句的条件表达式中可以使用算术比较运算符号,对于字符型数据,可以使用LIKE关键词以及通配符。例如,要查找姓李的学生的学号和姓名的SQL语句如下:
|
|
|
|
这里的“%”就是一个通配符,代表0个或多个字符。例如,要查找某个属性中包含“软考在线”的元组,则可以写成“…LIKE'%软考在线%'”。
|
|
|
还有一个通配符是“_”(下划线),这个通配符只代表1个字符。例如,要查找某个属性中第2个字和第3个字是“软考在线”,倒数第2个字和第3个字包含“教育”的元组,则可以写成“…LIKE'_软考在线%教育_'”。
|
|
|
|
视图不真正存在数据,只是把定义存于数据字典,在对视图进行查询时,才按视图的定义从基本表中将数据查出。若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了码,则这个视图称为行列子集视图。
|
|
|
视图对应了数据库系统三级模式/两级映象中的外模式,重建视图即是修改外模式及外模式/模式映象,实现了数据的逻辑独立性。在DBMS中,视图的作用如下:
|
|
|
|
|
|
|
|
|
其中With Check Option表示对视图进行Update、Insert和Delete操作时,要保证更新、插入或删除的行满足视图定义中的谓词条件。
|
|
|
|
|
因为视图没有真实数据,所以对视图的查询要转换为对相应表的查询,这个过程叫视图消解,视图消解过程由DBMS自动完成。
|
|
|