一、填空题
1.数据库系统的外模式在SQL中称为(视图),它由(基本表)产生出来。
2.SQL是高度(非过程化)和面向(集合)操作的语言。
3.由create schema KUCUN authorization LIU命令建立的一个数据库为(KUCUN),所有者为(LIU)。
4.在SQL中,若一个完整性约束只涉及到一个列,则该完整性约束既可以作为(列级)完整性约束定义,也可以作为(表级)完整性约束定义,两者只选其一。
5.在列级和表级完整性约束中同时存在的约束分别为(主码)、(单值)、(外码)和(检查)等四种约束。
6.在SQL中,主码约束的关键字为(primary key),外码约束的关键字为(foreign key)。
7.在SQL中,create table、alter table和drop table命令分别为在数据库中(建立)、(修改)和(删除)基本表结构的命令。
8.向基本表中插入数据有两种命令格式,一种称为(单行)插入格式,另一种称为(多行)插入格式。
9.在SQL中,insert、update和delete分别为对基本表进行(插入)、(修改)和(删除)记录操作的命令。
10.在SQL中,每个视图中的列可以来自不同的(表),它是在原有表的基础上(建立)的逻辑意义上的新关系。
11.当建立一个视图后,通常只对它做(修改)和(查)这两种操作。
12.在(基本表)中,通常不应包括由计算可以得到的属性,而在(视图)中,为了用户查询数据的方便,则需要包含它们。
13.当建立和删除一个视图时,对相应的基本表(没有影响),当修改一个视图时,则对相应的基本表(有影响)。
14.在SQL中,建立视图、修改视图内容和删除视图的命令分别为(create view)、(update)和(drop view)。
15.在SQL新版的查询语句中,select选项实现(投影)运算,from选项实现(连接)运算,where选项实现(选择)运算。
16.在SQL的查询语句中,(group by)选项实现分组统计功能,(order by)选项实现对结果表的排序功能。
17.在新版的SQL中,表之间的连接共有三种方式,对应的关键字分别为(inner join)、(left join)和(right join)。
18.在实际的数据库管理系统中,对数据库的操作方式有(命令交互)、(程序执行)和(窗口界面)三种。
19.在SQL中建立和删除数据库模式的命令分别为(create schema)和(dropschema)。
20.在SQL中完整性约束分为(列级)完整性约束和(表级)完整性约束两个方面。
21.在SQL中,列级完整性约束分为(6)各情况,表级完整性约束分为(4)种情况。
22.在列级和表级完整性约束中同时存在的约束分别为(主码)(单值)(外码)和(检查)四种约束。
23.在(列级)完整性约束中,每个约束只能涉及到一个属性;在(表级)完整性约束中,每个约束可以涉及多个属性。
24.在SQL中,单值约束的关键字为(Unique),检查约束的关键字为(check)。
25.向基本表插入数据时,可以在命令中例用关键字(Values)引出记录值,或者在命令中通过(Select)子句得到一个结果表。
26.在SQL中,对基本表进行插入、修改和删除记录的命令分别为(insert)、(update)和(delete)。
27.基本表属于全局模式的表,它是(实表),而视图则属于局部模式中的表,它是(虚表)。
28.在SQL中通过使用视图,能够使在关系规范化时被分解的关系(连接)起来,能够增强数据库的(安全)性。
29.在(基本表)中,通常不应包括由计算可以得到的属性;而在(视图)中为了用户查询数据的方便,则需要包含它们。
30.在SQL中,根据基本表建立一个视图时,包括建立了该视图的(结构)和(内容)两个方面。
31.在SQL中,create view、update和drop view命令分别为(建立)(修改)和(删除)视图的命令。
32.在SQL中,建立视图、修改视图内容和删除视图的命令分别为(create view)(update)和(drop view)。
33.在SQL的查询语句中,group by选项实现(分组统计)功能,order by选项实现对结果表的(排序)功能。
34.在新版的SQL中,查询所涉及的表及表之间的连接是在from选项中实现的,表之间的连接共有三种方式,分别称为(中间连接)(左连接)和(右连接)。
二、根据主教材第四章所给的商品库和教学库,按照下列所给的每条SQL查询语句写出相应的功能。
⑴在名称为商品库的数据库中包含有商品表1和商品表2,它们的定义分别为:
商品表1(商品代号 char(8),分类名 char(8),单价 float,数量 int)
商品表2(商品代号 char(8),产地 char(6),品牌 char(6),)
⑵在名称为教学库的数据库中包含有学生、课程和选课三个表,它们的定义分别为:
学生(学生号 char(7),姓名 char(6),性别 char(2),出生日期 datetime,
专业 char(10),年级 int)
课程(课程号 char(4),课程名 char(10),课程学分 int)
选课(学生号 char(7),课程号 char(4),成绩 int)
1.select x.商品代号,分类名,数量,品牌
  from 商品表1 x,商品表2 y
  where x.商品代号=y.商品代号
从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息。
2. select distinct 品牌
from 商品表2
从商品库中查询出所有商品的不同品牌。
3. select x.商品代号,分类名,产地,品牌
from 商品表1 x,商品表2 y
where x.商品代号=y.商品代号 and (品牌=’熊猫’ or 品牌=’春兰’)
从商品库中查询出品牌为熊猫或春兰的所有商品的商品代号、分类名、产地和品牌。
4. select 课程.课程号,课程.课程名,count(*) as 选课人数
from 课程,选课
where 课程.课程号=选课.课程号
group by 课程.课程号,课程.课程名
从教学库中查询出每门课程被选修的学生数。
5. select *
from 学生
where 学生号 in (select 学生号
      from 选课
      group by 学生号 having count(*)=1
sql统计每个系的学生人数)
从教学库中查询出只选修了一门课程的全部学生。
6. select x.*
from 课程 x,选课 y
where x.课程号=y.课程号 and y.学生号=@s1
      and y.课程号 not in (select 课程号
            from 选课
            where 选课.学生号=@s2
            )
从教学库中查询出学生号为@s1的学生所选修、而学生号为@s2的学生没有选修的全部课程。
注:@s1和@s2分别是已保存相应学生号的字符型变量
7. select *
from 课程
where exists (select *
      from 选课
where 课程.课程号=选课.课程号
)
从教学库中查询出所有已被学生选修的课程。
8. select *
from 学生
where exists (select *
    from 选课
    where 学生.学生号=选课.学生号
    group by 选课.学生号 having count(*)=3   
)
从教学库中查询出同时选修了3门课程的全部学生。
9. select 专业,count(*) as 专业人数
from 学生
group by 专业
order by 专业人数 desc
从教学库中查询出每个专业的学生人数,并按人数多少降序排列。
10. select x.*,课程名,课程学分,成绩