第六章 关系数据库查询语言SQL

Download Report

Transcript 第六章 关系数据库查询语言SQL

第六章 关系数据库查询语言SQL
SQL是英文(Structured Query Language)的缩写,
意思为结构化查询语言。SQL语言是1974年由Boyce和
Chamberlin提出的。1975~1979年IBM公司的San Jose
实验室研制了著名的关系数据库管理系统原型System R
并实现了这种语言。由于它的功能丰富,语言简捷被众多
计算机公司和软件公司所采用。经各公司的不断修改、扩
充和完善,SQL语言最终发展成为关系数据库的标准语言。
本章介绍了SQL语言的一些基本操作命令,包括数据
定义语句、数据查询语句及数据更新语句。
第六章 关系数据库查询语言SQL
•
•
•
•
•
6.1 SQL概述
6.2 SQL表定义语句
6.3 SQL查询语句
6.4 SQL数据更新语句
习题
6.1 SQL概述
• 6.1.1 SQL语言的特点
SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,
主要特点包括:
1.综合统一
SQL语言集数据定义语言、数据操纵语言、数据控制语言的功能于一
体,语言风格同一,可以独立完成数据库生命周期中的全部活动,为数据
库应用系统提供了良好的环境。用户在数据库系统投入运行后,还可以根
据需要随时地逐步地修改模式,且并不影响数据库的运行,从而使系统具
有良好的可扩展性。
2.高度非过程化
SQL语言高度非过程化,只要提出“做什么”,而无须指明“怎么
做”,减轻了用户的负担,也有利于提高数据独立性。
3.面向集合的操作方式
SQL语言除了操作对象、查找结果是记录的集合,一次插入、删除、
更新操作的对象也可以是记录的集合。
4.以同一种语法结构提供两种使用方式
SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,
它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接
键入SQL命令对数据库进行操作。作为嵌入式语言,SQL语句能够嵌
入到高级语言(例如C、COBOL、FORTRAN、PL/1)程序中,供程
序员设计程序时使用。
5.语言简捷,易学易用
完成核心功能只用9个动词,如下:数据查询(Select)、数据定义
(Create,Drop,Alter)、数据操纵(Insert,Update,Delete)、数据控
制(Grant,Revoke)。
• 6.1.2 SQL语言的基本概念
SQL语言支持关系数据库三级模式结构。其中外模式对应于视图
和部分基本表,模式对应于基本表,内模式对应于存储文件。在SQL
中,关系模式称为“基本表”,存储模式称为“存储文件”,子模式
称为“视图”,记录称“行”,属性称“列”。
以下是SQL的相关概念:
(1)一个SQL数据库是表的汇集。
(2)一个SQL表由行集构成,行是列的序列,每列对应一个数据项。
(3)表可以是基本表,也可以是视图。基本表是实际存储在数据库中的
表,视图是从一个或几个基本表导出的表,它本身不独立存储在数据
库中,即数据库中只存放视图的定义而不存放视图对应的数据,这些
数据仍存放在导出视图的基本表中,因此视图是一个虚表。视图在概
念上于基本表等同,用户可以在视图上再定义视图。
(4) 一个基本表可以跨一个或多个存储文件,一个存储文件也可存放
一个或多个基本表。另外,一个表可以带若干索引,索引也存放在存
储文件中,存储文件与物理文件对应。
(5) 用户可以用SQL语句对表进行操作,包括视图和基本表。基本表
和视图一样,都是关系。
(6) SQL的用户可以是应用程序,也可以是终端用户。
6.2 SQL表定义语句
• 6.2.1 创建表
一个基本表由两部分组成,一部分是由各列名构成的表的结构,
即一个关系模式,也称为表结构;另一部分是具体存放的数据,称为
数据记录,创建基本表时,只需要定义表的结构,包括表名,列名,
列的数据类型和列约束等。SQL语言使用CREATE TABLE语句定义
基本表,其基本命令格式为:
CREATE TABLE <表名> (<字段名1> 类型 [列级完整性约束] [,<字
段名2> 类型 [列级完整性约束]]…)
其中<表名>是所要定义的基本表的名字,它可以由一个或多个
属性(字段)组成。 注意:定义表时每一个定义语句之间用逗号分隔,
最后一条语句不用逗号。每个SQL语句以分号结束。字段类型有:字
符型(Character),数值型(Numeric),整型(Integer),浮点型
(Float),日期型(Date),逻辑型(Logic),备注型(Memo)
和OLE型(General)。
【例6.1】 创建一个新表,教师工资表.dbf,结构可以按表6.1定义
表6.1 教师工资表结构
字段名
字段类型
字段长度
小数点
教师编号
字符型
6
——
工资
数值型
7
2
应扣数
数值型
7
2
奖金
数值型
7
2
实发数
数值型
7
2
图6.1 教师工资表结构
1.在命令窗口输入如下命令:
Create Table 教师工资表.dbf (教师编号 character(6),工资 Numeric(7,2), ;
应扣数 Numeric(7,2),奖金 Numeric(7,2), ;
实发数 Numeric(7,2))
Modify Structure
2.输入完毕后可以得到的运行结果如图6.1所示。
• 6.2.2 修改字段属性
在Visual Foxpro系统中,创建完成的表一旦不能满足应用系统的
需求,可以使用菜单方式、Modify Structure命令和SQL语句进行字段
属性的修改。
SQL语言中的Alter语句修改表的结构,不需要是用Use命令打开表。
语句格式: Alter Table <表名>
Alter <字段名1> 类型(列级完整性约束) [Alter [<字段
名2> ] 类型 (列级完整性约束)…]
语句功能:修改以<表名>为名的表的结构。
【例6.2】 修改“教师工资表.dbf”的结构,将其结构由表6.1定义的内
容修改为表6.2所示的内容。
表6.2 修改后的教师工资表结构
字段名
字段类型
字段长度
小数点
教师编号
字符型
8
——
工资
数值型
8
2
应扣数
数值型
7
2
奖金
数值型
7
2
实发数
数值型
7
2
1.在命令窗口输入如下命令:
Alter Table 教师工资表.dbf Alter 教师编号 Character(8) Alter 工资
Numeric(8,2)
Modify Structure
2.输入完毕后可以得到的运行结果如图6.2所示。
图6.2 修改后的教师工资表的结构
注意:只用Alter语句修改表的结构,不能增加、删除字段,不能更改
字段名,只能更改字段的类型和字段长度。如果要增加、删除字段还
需要结合Drop和Delete语句 。
• 6.2.3 删除字段
在修改表的结构时,如果要删除某字段,可以使用SQL语言中的
Drop语句。
语句格式: Alter Table <表名>
Drop <字段名1> [Drop <字段名2> … ]
语句功能: 删除表<表名>为名的表的部分字段。
【例6.3】 修改“教师工资表.dbf”中的“奖金”和“实发数”2个字段。
1.在命令窗口输入如下命令:
Alter Table 教师工资表.dbf Drop 奖金 Drop 实发数
Modify Structure
2.输入完毕后可以得到的运行结果如图6.3所示。
Drop语句的功能除
了可以删除表中的字段,
还可以直接删除某张表。
其基本命令格式为:
DROP TABLE <表名>
图6.3 删除字段后的教师工资表结构
• 6.2.4 增加字段
修改表的结构时,如果要在表中增加字段,可以使用SQL语言中
的Add语句。
语句格式: Alter Table <表名>
Add <字段名1> 类型 (列级完整性约束) [Add <字段名
2> 类型 (列级完整性约束) … ]
语句功能: 给名为<表名>的表的增加字段。
【例6.5】给“教师工资表.dbf”增加一个“备注”字段。
1.在命令窗口中输入如下命令:
Alter Table 教师工资表.dbf Add 备注 memo(4)
Modify Structure
2.输入完毕后可以得到的运行结果如图6.4所示。
图6.4 给教师工资表增加字段
6.3 SQL查询语句
SQL语言中最重要的功能内就是查询功能。使用SQL语句不需要
在不同的工作区打开不同的表,只需要将要连接的表、查询所需要的
字段名、筛选记录的条件、记录分组的依据排序的方式以及查询结果
的显示方式,写在SQL语句中,就可以完成特定的工作。
SQL语言中实现查询功能的是Select语句。
语句格式:
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…
FROM <基本表名或视图名>[,<基本表名或视图名>]…
[WHERE <条件表达式>]
[GROUP BY <分组字段名1>[HAVING <条件表达式>]]
[ORDER BY <排序选项>[ASC|DESC]];
说明:
1.整个语句的含义
从From子句指定基本表或视图中,根据Where子句的条件表达
式查找出满足该条件的记录,按照Select子句指定的目标字段表达式,
选出记录中的属性值形成结果表。如果有Group By子句,则将结果按
“字段1”的值进行分组,该属性列值相等的记录为一个组;如果
Group By子句带有短语Having,则只有满足短语指定条件的分组才
会输出。如果有Order By子句,则结果表要按照<字段2>的值进行升
序和降序排列。
Select [ALL|DISTINCT]<目标列表达式>实现的是对表的投影操
作,Where <条件表达式>中实现的是选择操作。
2.目标字段表达式
1)字段表达式可以是“字段1,字段2…”的形式;如果FROM子句
指定了多个表,则字段名应是“表名.字段名”的形式。
2)字段表达式可以使用SQL提供的库函数形成表达式。
3) DISTINCT参数:表示在结果集中,查询出的内容相同的记
录只留下一条。
查询计算函数的格式及功能如表6.3所示:
表6.3 查询计算函数的格式及功能
函数格式
函数功能
COUNT(*)
统计记录条数。
COUNT(字段名)
统计一列值得个数。
SUM(字段名)
计算某一数值型列的值的总和。
AVG(字段名)
计算某一数值型列的值的平均值
MAX(字段名)
计算某一数值型列的值的最大值
MIN(字段名)
计算某一数值型列的值的最小值
<条件表达式>:可以是关系表达式,也可以是逻辑表达式,表6.4所示的
内容是组成<条件表达式>常用的运算符。
表6.4 查询条件中常用的运算符
查询条件
运算符
说明
比较
=、>、<、>=、<=、!=、!>、!<
字符串比较从左向右进行
确定范围
Between And
Between后是下限 And后是上限
确定集合
In 、 Not In
检查一个属性值是否属于集合中的值
字符匹配
Like 、 Not Like
用于构造条件表达式中的字符匹配
空值
Is Null 、 Is Not Null
当属性值内容为空时,要用次运算符
多重条件
And 、 Or
用于构造复合表达式
• 6.3.1 单表查询
单表查询是指仅设计一个表的查询,一般只用到Select子句、From
子句和Where子句,分别说明所查询列、查询的表或视图、以及搜索条
件等,也称为简单查询。
1.Select子句选择列表
选择列表指出所查询的字段,它可以是一组列名列表、星号、表达式、
变量(包括局部变量和全局变量)等构成。
1)选择所有字段
【例6.6】查询教师工资表中所有字段的数据
Select * From 教师工资表
该Select语句实际上是无条件地把教师工资表的全部信息都查询
出来,也称为全表查询。查询的结果如图6.5所示。
图6.5 全部字段信息查询结果
2)选择部分列并指定它们的显示次序
一般情况下,查询结果集合中数据的排列顺序与选择列表中所指
定的列名排列顺序相同。
【例6.7】查询教师工资表中教师编号、工资、实发数
Seleect 教师编号 ,工资 , 实发数 From 教师工资表
该Select语句是把教师工资表的“教师编号”、“工资”和“实发数”
三个字段的全部数据都查询出来。查询的结果如图6.6所示。
图6.6 部分字段信息查询结果
2.From子句选择表
From子句指定Select语句查询及与查询相关的表或视图。在
From子句中最多可指定256个表或视图,它们之间用逗号分隔,在单
表查询中From子句后只有一个基本表名
3.使用Where子句设置查询条件
Where子句设置查询条件,过滤掉不需要的数据行,只有满足条
件的行才能出现在查询结果中 。
【例6.8】在教师工资表中查询“教师编号=096201”的所有字段的信
息。
Select * From 教师工资表 Where 教师编号 = ’096201’
在命令窗口中输入上面这条语句后,查询的结果如图6.7所示。
图6.7 按条件查询信息结果
6.3.2 连接查询
一个查询同时涉及两个以上的表,则称之为连接查询。连接查询
主要包括等值连接、非等值连接查询、自身连接查询、外连接查询和
复合条件连接查询。
1.等值与非等值连接查询
连接谓词:用来连接两个表的条件称为连接条件或连接谓词,其一般
格式为:
[<表名1>.]<字段名1> <比较运算符> [<表名2>.]<字段名2>
其中比较运算符主要有:=、>、<、>=、<=、!=
此外连接谓词还可以使用下面形式:
[<表名1>.]<字段名1> Between [<表名2>.]<字段名2> And [<表名
2>.]<字段名3>
当连接运算符为=时,称为等值连接。使用其它运算符称为非等
值连接。
连接谓词中的列名称为连接字段。连接条件中的各连接字段类型
必须是可比,但不必是相同。例如,可以都是字符型,或都是日期型;
也可以一个是整型,另一个是实型,整型和实型都是数值型。
执行连接操作的过程是,首先在表1中找到第一个记录,然后从
头开始顺序扫描或按索引扫描表2,查找满足连接条件的记录,每找
到一个记录, 就将表1中的第一个记录与该记录拼接起来,形成结果表
中一个记录。表2全部扫描完毕后,再到表1中找第二个记录,然后再
从头开始顺序扫描或按索引扫描表2,查找满足连接条件的记录,每
找到一个记录, 就将表1中的第二个记录与该记录拼接起来,形成结果
表中一个记录。重复上述操作,直到表1全部记录都处理完毕为止。
2.自身连接(Self join)
连接操作可以在同一张表内可进行自身连接,即将同一个表的不
同行连接起来。自身连接可以看作一张表的两个副本之间的连接。在
自身连接中,必须为表指定两个别名,使之在逻辑上成为两张表。
3.外连接
在通常的连接操作中,只有满足符合查询条件( Where搜索条件
或 Having条件)和连接条件的记录才能作为结果输出,这样的连接称
作内连接。如果在实际应用中,也想同时输出那些不满足连接条件的
记录,这时就需要使用外连接。
外连接常用的有两种:左外连接和右外连接,左外连接是在查询结果
中包含连接表达式左边表中的不满足连接条件的记录,使用运算符
“*=”;右外连接是在查询结果中包含连接表达式右边表中的不满足连
接条件的记录,使用运算符“=*”。
4.复合条件连接
上面各个连接查询中,Where子句中只有一个条件,即一个连接谓词。
Where子句中有多个条件的连接操作,称为复合条件连接。
连接操作除了可以是两表连接,一个表与其自身连接外,还可以是两个以上
的表进行连接,后者通常称为多表连接。
6.3.3 嵌套查询
在SQL语言中,一个Select-From-Where语句称为一个查询块。将一个查
询块嵌套在另一个查询块的Where子句或Having短语的条件中的查询称为嵌
套查询, 又称子查询。其中处于内层的查询称为子查询,嵌套查询命令在执行
时,每个子查询在上一级查询处理之前求解,即由里向外查,子查询的结果
用于建立其父查询的查找条件。
子查询是SQL语句的扩展,其语句形式如下:
Select <目标表达式1> [,...]
From <表或视图名1 >
Where [表达式] (Select <目标表达式2> [,...]
From <表或视图名2)
[Group By <分组条件>
Having [<表达式>比较运算符] (Select <目标表达式2> [,...]
From <表或视图名2> )]
嵌套查询使得可以用一系列简单查询构成复杂的查询,从而明显地增强了
SQL的查询能力。以层层嵌套的方式来构造程序正是 SQL中“结构化”的含
义所在。
• 6.3.4 集合查询
把多个Select语句的结构完全相同的结果合并为一个结果,用集
合操作来完成,这种查询称为集合查询,标准SQL集合操作只要并操
作Union。 使用Union将多个查询结果合并起来,形成一个完整的查
询结果时,系统可以去掉重复的记录。需要注意的是,参加Union操
作的各结果表的列数必须相同;对应项的数据类型也必须相同。
Union的语法格式为:
(Select查询语句1
Union [All]
(Select查询语句2)
All选项表示将所有行合并到结果集合中。不指定该项时,被联合
查询结果集合中的重复行将只保留一行。
联合查询时,查询结果的列标题为第一个查询语句的列标题。因
此,要定义列标题必须在第一个查询语句中定义。要对联合查询结果
排序时,也必须使用第一查询语句中的列名、列标题或者列序号。
在使用Union运算符时,应保证每个联合查询语句的选择列表中
有相同数量的表达式,并且每个查询选择表达式应具有相同的数据类
型,或是可以自动将它们转换为相同的数据类型。在自动转换时,对
于数值类型,系统将低精度的数据类型转换为高精度的数据类型。
6.4 SQL数据更新语句
使用SQL语句对表中记录进行操作,无须用Use命令打开表。SQL
语句可以完成有关记录的插入、更新、删除等相关操作。
6.4.1 插入记录
给表添加记录是常用的表操作,SQL语句中使用Insert Into语句
实现插入记录的功能,将新的记录在表的末尾位置插入。
语句格式: Insert Into <表名> ( <字段名1> [ , <字段名2> … ] )
Value ( <表达式1> [ , < 表达式2 > … ] )
语句功能:在表的末尾位置添加一条新的记录。
【例6.9】已知在“教师工资表”中的内容如图6.8所示,添加一条新
的记 录,其内容是(096202,2000,120,80,1960)。
图6.8 添加记录前表的内容
1) 在命令窗口输入如下命令:
Insert Into 教师工资表 (教师编号,工资,应扣数,奖金,实发数);
Values (”096202” , 2000 , 120 , 80 , 1960 )
Bvrowse Last
2) 输入完毕后可以得到的运行结果如图6.9所示。
图6.9 添加记录后表的内容
• 6.4.2 修改记录
修改表中的数据同样是表操作的一个经常性的任务,SQL语句中
的修改记录语句是对所有记录或满足条件的指定记录操作的语句。
修改操作使用UPDATE语句来修改数据,其语句的一般格式为:
Update <表名>
Set <字段名> = <表达式> [, <字段名> = <表达式>] …
[Where <条件>]
其功能是修改指定表中满足Where子句条件的记录。其中Set子
句用于指定修改方法,即用<表达式>的值取代相应的属性列值。如果
省略Where子句,则表示要修改表中的所有记录。
【例6.10】修改教师工资表中的一条记录,教师编号为“096201”的
记录中的“教师编号”字段的值,将其修改为“096203”。修改前的
内容如图6.10所示。
图6.10 修改前表的内容
1) 在命令窗口输入如下命令:
Update 教师工资表 Set 教师编号 = “096203” ;
Where 教师编号 = “096201”
Browse Last
2)输入完毕后可以得到的运行结果如图6.11所示。
图6.11 修改后的表的内容
• 6.4.3 删除记录
SQL语句的删除记录语句,是对表中所有记录或满足条件的指定
记录进行逻辑删除操作。
删除语句的一般格式为:
Delete From <表名> [Where <条件>]
DELETE语句的功能是从指定表中删除满足WHERE子句条件的
所有元组。DELETE语句删除的是表中的数据,而不是关于表的定义。
【例6.11】逻辑删除教师工资表中教师编号为“089421”的记录。删除
前的内容如图6.12所示。
图6.12 删除前表的内容
1)在命令窗口中输入如下命令:
Delete From 教师工资表 Where 教师编号 = “089421”
Browse Last
2)输入完毕后可以得到的运行结果如图6.13所示。
图6.13 逻辑删除后表的内容
注意:在记录左边添加了一个逻辑删除的标记,这条记录并没有
真正意义上删除。如果想把这条记录从表中彻底删除的话,还要使用
Pack命令。
3)在命令窗口中输入如下命令:
Pack
Browse
4) 输入完毕后可以得到的运行结果如图6.14所示。
图6.14 彻底删除后表的内容
习题6
一、选择题
1.在SQL语句中,用于创建表的语句是( )。
A.CREATE TABLE
B.MODIFY STRUCTURE
C.CREATE STRUCTURE
D.MODIFY TABLE
2.在SQL语句中,限定查询条件的短语是( )。
A.WHILE B.WHERE C.FOR
D.LOCATE
3.SQL功能的核心是( )。
A.数据查询 B.数据修改 C.数据定义 D.数据控制
4.SQL语句中删除表中数据的语句是( )。
A.DROP B.ERASE C.CANCLE D.DELETE
5.在表中插入数据的SQL语句是( )。
A.INSERT B.INSERT INTO C.INSERT BLANK
D.INSERT DEFORE
6.用于更新表中数据的SQL语句是( )。
A.UPDATE B.REPLACE C.DROP D.ALTER
7.SQL语句中限定查询分组条件的短语是( )。
A.WHERE B.ORDER BY C.HAVING D.GROUP BY
8.SQL语句中将查询结果存入数组中,应使用( )短语。
A.INTO CURSOR B.TO ARRAY C.INTO TABLE D.INTO
ARRAY
9.下列操作中,不能用MODIFY STRUCTURE命令实现的操作是
( )。
A.为表增加字段
B.删除表中的某些字段
C.对表中的字段名进行修改 D.对表中的记录数据进行修改
10.SQL的数据操作语句不包括( )。
A.INSERT B.DELETE C.UPDATE D.CHANGE
11.SQL语言中的INSERT语句可以( )。
A.在表尾插入1条记录
B.在表头插入1条记录
C.在表中插入1条记录
D.在表中任何位置插入1条记录
下面的选择题需要使用下面的表:
“工资”表:
部门(C,10)
姓名(C,8)
基本工资(N,7,2)
奖金(N,7,2)
扣款(N,7,2)
化学系
李霞
650.00
300.00
50.00
化学系
王为民
1000.00
400.00
75.00
物理系
李利
870.00
250.00
45.00
生物系
杨柳
850.00
300.00
56.00
12.为“工资”表添加一个新字段“应领工资(N,7,2)”,使用
SQL语句( )。
A.INSERT TABLE 工资 ADD 应领工资 N(7,2)
B.ALTER TABLE 工资 ADD 应领工资 N(7,2)
C.ALTER TABLE 工资 ALTER 应领工资 N(7,2)
D.ALTER TABLE 工资 INSERT 应领工资 N(7,2)
13.添加“应领工资”字段的值,其中应领工资 = 基本工资 + 奖金 扣款,使用SQL语句( )。
A.INSERT INTO 工资 应领工资 VALUES 基本工资 + 奖金 - 扣款
B.INSERT INTO 工资 应领工资 WITH 基本工资 + 奖金 - 扣款
C.UPDATE 工资 SET 应领工资 WITH 基本工资 + 奖金 - 扣款
D.UPDATE 工资 SET 应领工资 = 基本工资 + 奖金 - 扣款
14.统计各部门的“应领工资”总额,使用SQL语句( )。
A.SELECT 部门,应领工资 FROM 工资 ORDER BY 部门
B.SELECT 部门,SUM(应领工资) FROM 工资 ORDER BY 部
门
C.SELECT 部门,应领工资 FROM 工资 GROUP BY 部门
D.SELECT 部门,SUM(应领工资) FROM 工资 GROUP BY 部
门
15.删除“工资”表中“部门”这个字段,使用SQL语句( )。
A.ALTER TABLE 工资 DELETE 部门 C(10)
B.ALTER TABLE 工资 ALTER 部门 C(10)
C.ALTER TABLE 工资 DROP 部门 C(10)
D.DELETE FROM 工资 部门 C(10)
下面的各题可能要用到下面的表:
“STUDENT”表:
学号(C,4)
姓名(C,6)
性别(C,2)
年龄(N,2)
9801
王芳
男
21
9802
李林
女
20
9803
黄亮
男
21
总成绩(N,3,0)
“COURSE”表:
课程号(C,2)
课程名(C,10)
学时数(N,3,0)
01
数学
180
02
英语
200
03
计算机
150
“SCORE”表:
学号(C,4)
课程号(C,2)
成绩(N,3,0)
9801
01
90
9801
03
89
9802
02
78
9802
03
95
9803
01
67
9803
03
85
16.建立STUDENT表的结构:学号(C,4),姓名(C,8),课程名(C,
20),成绩(N,3),使用SQL语句( )。
A.NEW TABLE STUDENT (学号 C(4),姓名 C(8),课程号 C(20),
成绩 N(3,0))
B.CREATE TABLE STUDENT (学号 C(4),姓名 C(8),课程号 C
(20),成绩 N(3,0))
C.CREATE TABLE STUDENT (学号,姓名,课程号,成绩)WITH(C
(4),C(8),C(20),N(3,0))
D.ALTER TABLE STUDENT (学号 C(4),姓名 C(8),课程号 C
(20),成绩 N(3,0))
17.在上面三张表中查询学生的学号、姓名、课程名和成绩,使用SQL语句
( )。
A.SELECT A.学号,A.姓名,B.课程名,C.成绩 RROM STUDENT,
COURSE,SCORE
B.SELECT学号,姓名,课程名,成绩 RROM STUDENT,
COURSE,SCORE
C.SELECT 学号,姓名,课程名,成绩 RROM STUDENT,
COURSE,SCORE WHERE STUDENT.学号=SCORE.学号
AND COURSE.课程号=SCORE.课程号
D.SELECT A.学号,A.姓名,B.课程名,C.成绩RROM
STUDENT A,COURSE B,SCORE C WHERE STUDENT.学号
=SCORE.学号 AND COURSE.课程号=SCORE.课程号
18.在SCORE表中,按成绩升序排列,将结果存入NEW表中,使用
SQL语句( )。
A.SELECT * FROM SCORE ORDER BY 成绩
B.SELECT * FROM SCORE ORDER BY 成绩 INTO CORSOR
NEW
C.SELECT * FROM SCORE ORDER BY 成绩 INTO TABLE NEW
D.SELECT * FROM SCORE ORDER BY 成绩 TO NEW
19.有SQL语句:
SELECT 学号,AVG(成绩) AS 平均成绩 FROM SCORE;
GROUP BY 学号 INTO TABLE TEMP
执行该语句后,TEMP表中的第二条记录的“平均成绩”字段的内容
是( )。
A.89.5 B.86.5 C.76 D.87
20.有SQL语句:
SELECT DISTINCT 学号 FROM SCORE INTO TABLE T
执行该语句后,T表中记录的个数是( )。
A.6 B.5 C.4 D. 3
21.表结构中空值(NULL)的含义是( )。
A.空格 B.0 C.默认值 D.尚未输入
22.SQL语句中,SELECT命令中JOIN短语用于建立表之间的联系,
联接条件应出现在( )短语中。
A.WHERE B.ON C.HAVING D.IN
23.书写SQL语句时,若语句要占用多行,在行的末尾要加续行符
( )。
A.: B.; C., D.”
24.SQL语言中,集合的并运算符是( )。
A.∪ B.OR C.AND D.UNION
25.HAVING短语不能单独使用,必须接在( )短语之后。
A.ORDER BY B.FROM C.WHERE D.GROUP BY
26.SQL语句中的短语( )。
A.必须是大写字母
B.必须是小写字母
C.大小写字母均可
D.大小写字母不能混合使用
二、填空题
1.SQL是集________、________、________、________功能于一体的语
言。
2.SQL语句最主要的功能就是________功能。
3.SQL语言是一个非________语言,它的大多数语句都是独立执行的。
4.SQL语句除了能够创建查询外,还能够进行________的定义。
5.用SQL语句修改表结构,无须先________表。
下面的填空题将用到下面的“职工”表:
“职工表”:
编号(C,4)
姓名(C,8)
基本工资(N,7,2)
扣款(N,7,2)
奖金(N,7,2)
0001
刘浩
1200.00
120.00
100.00
0002
李英
1100.00
80.00
76.00
0003
张效
2100.00
150.00
200.00
6.用SQL语句实现查找“职工”表中的“基本工资”低于2000元且大于
1000元的所有记录:
SELECT ________ FROM 职工 WHERE 基本工资<2000 ________ 基本工
资>1000
7.用SQL语句实现创建“职工”表,以编号为主关键字:
CREATE ________ 职工 (编号 C(4) ________ ,…)
8.根据“职工”表建立一个视图SHE,它可以向用户提供编号、姓名、性别
的信息,使用SQL语句:
CREATE VIEW SHE ________ 编号、姓名、性别 FROM ________
9.使用SQL语句实现将一条新的记录插入“系”表中:
INSERT ________ 系 (系号,系名) ________ ( ”04” , ”数学” )
10.使用SQL语句实现计算职称为“讲师”的所有职工的平均工资:
SELECT ________ FROM 教师 ________ 职称 = “讲师”
11.用SQL语句实现将所有职工的工资提高5%:
________ 教师 ________ 工资 = 工资 * 1.05
12.使用SQL语句实现向“系”表中添加一个新字段“系主任C(8)”:
________ TABLE 系 ________ 系主任 C(8)
13.使用SQL语句实现求“计算机”系所有职工的工资:
SELECT 工资 FROM 教师 WHERE 系号 ________ (SELECT 系号 FROM
________ WHERE 系名 = ”计算机”)
三、简答题
1.什么是SQL语言?
2.SQL语言的主要功能是什么?
3.SQL语言对表的结构的操作命令有哪些?
4.SQL语言对表中记录的操作命令有哪些?
5.为什么使用SQL语言创建查询?有什么优点?