数据库题库
更新时间:2023-10-27 07:38:01 阅读量: 综合文库 文档下载
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系学生的姓名、所选的课程号和成绩。
select sname,cno,grade from student join sc on student.sno = sc.sno where sdept = '计算机系'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系年龄大于20的学生详细信息。
select * from student where sdept = '计算机系' and sage > 20
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询第3学期开设的学分为4的课程名。
select cname from course where semester = 3 and creidt = 4
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询第2~4学期开设课程的课程名、学分和开课学期。
select cname,credit,semester from course where semester between 2 and 4
设有课程表:Course(Cno,Cname,Credit,Semester)。
写出在Course表中插入一行新数据的SQL语句,课程号为C100,课程名为Java,开课学期未定,学分为3。
insert into course values('C100','Java',3,null)
'设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询奇数学期(设学期的取值是1~8的整数)开设的课程名、开课学期和学分。 select cname,credit,semester from course where semester in(1,3,5,7)
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester),
选课表:SC(Sno,Cno,Grade)
查询计算机系成绩在80~90之间的学生姓名、课程名和成绩。
select sname,cname,grade from Student join SC on Student.sno = SC.sno join Course on Course.cno = SC.cno
where sdept = '计算机系' and grade between 80 and 90
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
写出在Student表中插入一行新数据的SQL语句,学号为S100,姓名:新生,性别:男,年龄:19,所在系未定。
insert into Student values('S100','新生','男',19,null)
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计每个系的女生人数,列出系名和女生人数。
select sdept,count(*) 女生人数 from student where ssex = '女' group by sdept
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计每个系的选课人数,列出系名和选课人数。
select sdept,count(distinct s.sno ) 选课人数 from student s join sc on s.sno = sc.sno group by sdept
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 将计算机系学生年龄加1。
update student set sage = sage + 1 where sdept = '计算机系'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计计算机系每个学生的选课门数和考试总成绩(不包括没选课的学生),并按选课门数升序显示结果。
select s.sno,count(*) 选课门数,sum(grade) 总成绩 from student s join sc on student.sno = sc.sno
where sdept = '计算机系' group by s.sno order by count(*) asc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询选修了Java课程的学生姓名和所在系。
select sname,sdept from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'Java'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果。
select sname,cno,grade from student s join sc on s.sno = sc.sno where grade > 80 order by grade desc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询选课门数最多的前2位学生,列出学号和选课门数。(不考虑并列情况) select top 2 sno,count(*) 选课门数 from sc group by sno order by count(*) desc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询选课人数最少的2门课程(包括没人选的课程,包括并列的情况),列出课程号和选课人数。(请用外连接实现)
select top 2 with ties c.cno,Count(sc.cno) 选课人数 from course c left join sc on c.cno = sc.cno group by c.cno order by count(sc.cno) asc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询哪些课程没有学生选,列出课程号和课程名。(请用外连接实现)
select c.cno,cname from course c left join sc on c.cno = sc.cno where sc.cno is null
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester),
选课表:SC(Sno,Cno,Grade)
查询计算机系哪些学生没有选课,列出学生姓名。(请用外连接实现)
select sname from student s left join sc on s.sno = sc.sno where sdept = '计算机系' and sc.sno is null
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系Java考试成绩最高的前3名学生的姓名和Java成绩(包括并列情况)。(请用连接查询实现)
select top 3 with ties sname from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'Java' and sdept = '计算机系' order by grade desc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade) 查询年龄最大的男生姓名和年龄。(请用子查询实现) select sname,sage from student where sage in( select max(sage) from student where ssex = '男') and ssex = '男'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询C001课程的考试成绩高于该课程平均成绩的学生的学号和C001课成绩。(请用子查询实现)
select sno,grade from sc where cno = 'c001' and grade >( select avg(grade) from sc where cno = 'c001')
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
删除Java考试成绩小于50的学生的全部选课记录。(请用子查询形式实现) delete from sc where grade < 50 and cno in ( select cno from course where cname = 'Java' )
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
删除计算机系Java成绩不及格(小于60)学生的Java选课记录。(请用子查询形式实现) delete from sc
where sno in ( select sno from student where sdept = '计算机系') and cno in ( select cno from course where cname = 'Java')
and grade < 60
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
删除选课人数少于10人的课程(包括没人选的课程)。(请用子查询实现)
delete from course where cno in ( select cno from course c left join sc on c.cno = sc.cno group by c.cno having count(sc.cno)<10)
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系每个学生的Java考试情况,列出学号、姓名、Java成绩和成绩情况,其中成绩情况的显示规则为:
如果成绩大于等于90,则成绩情况为“好”; 如果成绩在80~89,则成绩情况为“较好”; 如果成绩在70~79,则成绩情况为“一般”; 如果成绩在60~69,则成绩情况为“较差”; 如果成绩小于60,则成绩情况为“差”。 select s.sno,sname,grade,成绩情况 = case when grade >= 90 then '好'
when grade between 80 and 89 then '较好' when grade between 70 and 79 then '一般' when grade between 60 and 69 then '较差' when grade < 60 then '差' end
from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'Java'
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计每个学生的选课门数(包括没有选课的学生),列出学号、选课门数和选课情况,其中选课情况显示规则如下:
如果选课门数大于等于6,则选课情况为“多”; 如果选课门数在3~5,则选课情况为“一般”; 如果选课门在1~2,则选课情况为“偏少”。 如果没有选课,则选课情况为“未选课”。
select s.sno,count(sc.cno) 选课门数, 选课情况 = case when count(sc.cno) >= 6 then '多'
when count(sc.cno) between 3 and 5 then '一般' when count(sc.cno) between 1 and 2 then '偏少' else '未选' end
from student s left join sc on s.sno = sc.sno group by s.sno
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计每个系Java课程的考试情况,列出系名和考试情况,其中考试情况为: 如果Java平均成绩大于等于90,则考试情况为“好”; 如果Java平均成绩在80~89分,则考试情况为“良好”; 如果Java平均成绩在70~79分,则考试情况为“一般”; 如果Java平均成绩低于70分,则考试情况为“较差”。 select sdept,考试情况 = case
when avg(grade) >= 90 then '好'
when avg(grade) between 80 and 89 then '良好' when avg(grade) between 70 and 79 then '一般' when avg(grade) < 70 then '较差' end
from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'Java' group by sdept
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
修改全部课程的学分,修改规则如下:
如果是第1~2学期开设的课程,则学分增加5分; 如果是第3~4学期开设的课程,则学分增加3分; 如果是第5~6学期开设的课程,则学分增加1分; 其他学期开设的课程学分不变。 update course set credit = credit + case when semester in (1,2) then 5 when semester in (3,4) then 3 when semester in (5,6) then 1 else 0 End
为描述乘客对车票的订票情况,定义了三张表:车票表、乘客表和订票情况表,各表结构如下:
1.乘客表
乘客编号:小整型,主键。
姓名:普通编码定长字符型,10位长,非空。
身份证号:普通编码定长字符型,6位长,第一位取值为1,后五位取值均为0~9的整数。
2.车票表
车次:普通编码定长字符型,4位长,主键。 票价 :整数,非空。
起点:普通编码定长字符型,最多存4个汉字。 终点:普通编码定长字符型,最多存4个汉字。
种类:统一字符编码定长字符型,最多存2个汉字,取值范围为:{直达、特快、普快、慢车}。;
发车时间:普通编码定长字符型,5位长,取值格式为:2位时:2位分,其中时和分可以是任何字符。
3. 订票表
乘客编号:小整型,非空。
车次:普通编码定长字符型,4位长,非空。 订票日期:日期型,非空。
订票数量:小整型,默认值为1。 其中:(乘客编号,车次,订票日期)为主键。
乘客编号为引用乘客表的外键,车次为引用车票表的外键。
写出创建这三张表的SQL语句,要求在创建表时定义表中的全部约束。 CREATE TABLE 乘客表(
乘客编号 smallint primary key, 姓名 char(10) not null,
身份证号 char(6) check (身份证号 like '1[0-9][0-9][0-9][0-9][0-9]'))
create table 车票表(
车次 char(4) primary key, 票价 int not null, 起点 char(8) , 终点 char(8),
种类 nchar(2) check (种类 in('直达','特快','普快','慢车')), 发车时间 char(5) check (发车时间 like '__:__'))
create table 订票表(
乘客编号 smallint not null, 车次 char(4) not null,
订票日期 smalldatetime not null, 订票数量 smallint default 1,
primary key(乘客编号,车次,订票日期),
foreign key(乘客编号) references 乘客表(乘客编号), foreign key(车次) references 车票表(车次))
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询Java考试成绩最高的前三个成绩,列出学生姓名、所在系和成绩(包括并列情况)。 select top 3 with ties sname,sdept,grade from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where canme='Java' order by grade desc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计每个学生的选课门数(包括没选课的学生),并按选课门数降序显示结果。 select s.sno,count(sc.cno) 选课门数 from Student s left join SC on s.sno = SC.sno group by s.sno order by count(sc.cno) asc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系总成绩超过200分的学生的学号和总成绩。
select s.sno,sum(grade) 总成绩 from student s join sc on s.sno = sc.sno group by s.sno having sum(grade) > 200
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
列出“Java”考试成绩前三名(包括并列情况)的学生的学号、姓名、所在系和Java考试成绩。
select top 3 with ties s.sno,sname,sdept,grade from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'Java' order by grade desc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询第3学期开设的没人选的课程,列出课程名和学分。(请用子查询实现) select cname,credit from course
where cno not in ( select cno from sc) and semester = 3
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade) 查询计算机系学生中,考试成绩高于计算机系学生总平均成绩的学生的姓名、考试的课程名和成绩。
select sname,cname,grade from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno
where sdept = '计算机系' and grade < (
select avg(grade) from sc join student s on s.sno = sc.sno where sdept = '计算机系')
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询Java考试成绩最低的学生的姓名、所在系和Java成绩。
select top 1 with ties sname,sdept,grade from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'Java' order by grade asc
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询计算机系Java考试成绩高于Java总平均成绩的学生姓名。 select sname from student S join sc on s.sno = sc.sno join course c on c.cno = sc.cno
where sdept = '计算机系' and cname = 'Java' and grade > ( select avg(grade) from sc join course c on c.cno = sc.cno where cname = 'Java')
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
查询平均成绩大于80的课程的课程名、学分和开课学期。 select cname,credit,semester from course where cno in (
select cno from sc group by cno having avg(grade) > 80 )
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计每门课程的选课人数,包括没有人选的课程,列出课程号、选课人数及选课情况,其中选课情况为:如果此门课程的选课人数超过100人,则显示“人多”;如果此门课程的选课人数在40~100,则显示“一般”;如果此门课程的选课人数在1~40,则显示“人少”;如果此门课程没有人选,则显示“无人选”。 select c.cno,count(sc.cno) 选课人数, case when count(sc.cno) > 100 then '人多'
when count(sc.cno) between 40 and 100 then '一般' when count(sc.cno) between 1 and 40 then '人少' else '无人选' end 选课情况
from course c left join sc on c.cno = sc.cno group by c.cno
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
3.出租表
客户号:普通编码定长字符型,长度为8,非空。外键,引用“客户表”的“客户号” 房屋号:普通编码定长字符型,长度为8,非空。外键,引用“房屋表”的“房屋号” 出租日期:日期型,非空。 租期:小整型。(说明:单位为“月”)
其中(客户号,房屋号,出租日期)为主键。
写出创建这三张表的SQL语句,要求在创建表时定义表中的全部约束。 Create table 客户表(
客户号 char(8) primary key, 客户名 char(10) not null, 身份证号 char(18) unique, 年龄 smallint )
Create table 房屋表(
房屋号 char(8) primary key, 使用面积 smallint,
户型 char(4) check(类别 in (‘朝南’, ’朝北’, ’朝西’,’朝东’)) , 月租金 int )
Create table 出租表( 客户号 char(8) not null, 房屋号 char(8) not null, 出租日期 date not null, 租期 smallint,
Primary key(客户号,房屋号,出租日期),
Foreign key(客户号) references 客户表(客户号), Foreign key(房屋号) references 房屋表(房屋号))
为描述教师对课程的授课情况,设计了三张表:教师表、课程表和授课表,各表结构如下:
1. 教师表
教师号:普通编码定长字符型,长度为8,主键。 教师名:普通编码定长字符型,长度为10,非空。
职称:普通编码定长字符型,长度为8,取值范围为:{讲师,副教授,教授}。 所在部门:普通编码定长字符型,长度为20,默认值为“计算机学院”。
2. 课程表
课程号:普通编码定长字符型,长度为6,主键。 课程名:普通编码定长字符型,长度为20,非空。 学分:整型,取值范围为1~10。
学期:整型。
3. 授课表
教师号:普通编码定长字符型,长度为8,非空。外键,引用“教师表”的“教师号” 课程号:普通编码定长字符型,长度为6,非空。外键,引用“课程表”的“课程号” 授课学期:普通编码定长字符型,长度为10,非空。 授课时数:整型。
其中(教师号,课程号,授课学期)为主键。
写出创建这三张表的SQL语句,要求在创建表时定义表中的全部约束。 Create table 教师表(
教师号 char(8) primary key, 教师名 char(10) not null,
职称 char(8) check(职称 in (‘讲师’,’副教授’,’教授’)), 所在部门 char(20) default ‘计算机学院’)
Create table 课程表(
课程号 char(6) primary key, 课程名 char(10) not null,
学分 int check(学分 between 1 and 10), 学期 int )
Create table 授课表( 教师号 char(8) not null, 课程号 char(6) not null, 授课学期 char(10) not null, 授课时数 int,
Primary key(教师号,课程号,授课学年),
Foreign key(教师号) references 教师表(教师号), Foreign key(课程号) references 课程表(课程号))
为描述书店对某一出版社出版的图书的进书情况,创建了三张表:图书表,书店表和书店进书表,各表结构如下:
1.图书表
图书ISBN:普通编码定长字符型,4位长,主键。 书名:普通编码可变长字符型,30位长,非空。
类别:普通编码定长字符型,10位长,取值范围为{计算机、通讯、数学、外语} 印刷数量,小整型,允许空,取值:大于等于1000。 单价:定点小数,小数点后保留2位,小数点前4位。 出版日期:日期型。
2.书店表
书店编号:普通编码定长字符型,4位长,主键。 书店名称:普通编码定长字符型,20位长,非空。 地址:普通编码可变长字符型,30位长。
电话(DH):普通编码定长字符型,12位长,取值形式为:“(3位数字)-6位数字”。
3.书店进书表
图书ISBN:普通编码定长字符型,4位长,非空。 书店编号:普通编码定长字符型,4位长,非空。
进书日期:日期型,非空,默认值为插入记录时的系统当前日期。 进书数量:小整型,取值:大于等于10。 其中:(图书ISBN,书店编号,进书日期)为主键。
图书ISBN为引用图书表的外键,书店编号为引用书店表的外键。
写出创建这三张表的SQL语句,要求在创建表时定义表中的全部约束。 CREATE TABLE 图书表(
图书ISBN CHAR(4) PRIMARY KEY, 书名 VARCHAR(30) NOT NULL,
类别 CHAR(10) CHECK (类别 IN('计算机','通讯','数学','外语')), 印刷数量 SMALLINT CHECK (印刷数量 >= 1000), 单价 NUMERIC(6,2), 出版日期 DATE)
CREATE TABLE 书店表(
书店编号 CHAR(4) PRIMARY KEY, 书店名称 CHAR(20) NOT NULL, 地址 VARCHAR(30),
电话 CHAR(14) CHECK(电话 LIKE '([0-9][0-9][0-9])-[0-9][0-9][0-9][0-9][0-9][0-9]'))
CREATE TABLE 进书表(
图书ISBN CHAR(4) NOT NULL, 书店编号 CHAR(4) NOT NULL,
进书日期 DATE NOT NULL DEFAULT GETDATE(), 进书数量 SMALLINT CHECK (进书数量 >= 10), PRIMARY KEY(图书ISBN,书店编号,进书日期),
FOREIGN KEY (图书ISBN) REFERENCES 图书表(图书ISBN), FOREIGN KEY(书店编号) REFERENCES 书店表(书店编号))
为描述图书的销售情况,创建了三张表:图书表,书店表和图书销售表,各表结构如下:
1.图书表
书号:普通编码定长字符型,4位长,主键。 书名:普通编码可变长字符型,20位长,非空。
类别:普通编码定长字符型,6位长,取值范围为{会计、软件、网络}。 价格:定点小数,小数点后保留1位,小数点前3位。
2.书店表
书店编号:普通编码定长字符型,4位长,主键。 书店名:普通编码定长字符型,10位长,非空。
电话:普通编码定长字符型,4位长,第一位是1-9的数字,后三位是0-9的数字。 邮箱:普通编码可变长字符型,20位长,后8位字符固定为:“@abc.net”。
3.销售表
书号:普通编码定长字符型,4位长,非空。 书店编号:普通编码定长字符型,4位长,非空。 销售时间:小日期时间型,非空。 销售数量:小整型,大于0。 其中:(书号,书店编号,销售时间)为主键,即允许一种图书在不同时间在同一书店有多次销售。
“书号”为引用图书表的“书号”的外键,“书店编号”为引用书店表的“书店编号”的外键。
写出创建这三张表的SQL语句,要求在创建表时定义表中的全部约束。 create table 图书表(
书号 char(4) primary key, 书名 varchar(20) not null,
类别 char(6) check(类别 in('软件','网络','会计')) , 价格 numeric(4,1))
create table 书店表(
书店编号 char(4) primary key, 书店名 char(10) not null,
电话 char(4) check(电话 like '[1-9][0-9][0-9][0-9]'), 邮箱 varchar(20) check(yx like '%@abc.net'))
create table 销售表( 书号 char(4) not null, 书店编号 char(4) not null,
销售时间 smalldatetime not null,
销售数量 smallint check(销售数量>0), primary key(书号,书店编号,销售时间), foreign key(书号) references 图书表(书号),
foreign key(书店编号) references 书店表(书店编号))
为描述产品的定购情况,创建了三张表:产品表,客户表和产品定购表,各表结构如下。 1.产品表
产品号:普通编码定长字符型,4位长,主键。 产品名:普通编码可变长字符型,20位长,非空。
产地:普通编码定长字符型,4位长,允许空,取值范围为{北京、上海、南京、天津}。 价格:定点小数,小数点后保留1位,小数点前5位。
2.客户表
客户号:普通编码定长字符型,4位长,主键。 客户名:普通编码定长字符型,10位长,非空。 年龄:微整型。
邮箱:普通编码可变长字符型,20位长,后8位字符固定为:“@abc.com”,取值不允许有重复。
3.定购表
产品号:普通编码定长字符型,4位长,非空。 客户号:普通编码定长字符型,4位长,非空。
订购日期:日期型,非空,小于等于系统的当前日期时间。 订购数量:小整型。 发货日期(FHRQ):日期型,大于“订购日期”。 其中:(产品号,客户号,订购日期)为主键。 “产品号”为引用产品表的“产品号”的外键,“客户号”为引用客户表的“客户号”的外键。
写出创建这三张表的SQL语句,要求在创建表时定义表中的全部约束。 create table 产品表(
产品号 CHAR(4) PRIMARY KEY, 产品名 NVARCHAR(20) NOT NULL,
产地 CHAR(4) CHECK(产地 IN('北京','上海','南京','天津')), 价格 numeric(6,1))
create table 客户表(
客户号 CHAR(4) PRIMARY KEY, 客户名 CHAR(10) NOT NULL, 年龄 TINYINT ,
邮箱 VARCHAR(20) CHECK (邮箱 LIKE '%@abc.com') UNIQUE)
create table 订购表(
产品号 CHAR(4) NOT NULL, 客户号 CHAR(4) NOT NULL,
订购日期 DATE NOT NULL DEFAULT GETDATE(), 订购数量 SMALLINT ,
发货日期 DATE ,
CHECK(发货日期 > 订购日期),
PRIMARY KEY(产品号,客户号,订购日期),
FOREIGN KEY(产品号) REFERENCES 产品表(产品号), FOREIGN KEY(客户号) REFERENCES 客户表(客户号))
为描述汽车的销售情况,创建了三张表:汽车表,销售商表和汽车销售表。各表结构如下:
1.汽车表
汽车号:普通编码定长字符型,4位长,主键。 汽车名:普通编码定长字符型,8位长,非空。 型号:普通编码定长字符型,6位长,非空。 类型:普通编码定长字符型,6位长。
价格:定点小数,整数部分6位,小数部分1位。
2.销售商表
销售商号:普通编码定长字符型,4位长,主键,
销售商名:普通编码可变长字符型,20位长,非空,最后四个字必须是“销售公司”。 地址:普通编码定长字符型,4位长。
电话:普通编码定长字符型,8位长,取值形式为:“3位区号-4位号码”,即前三位和后四位的每一位必须是0-9的数字,第4位必须是连字符。
3.销售表
汽车号:普通编码定长字符型,4位长,非空。 销售商号:普通编码定长字符型,4位长,非空。 销售日期:日期型,非空, 默认为系统当前日期。 销售数量:小整型。 其中:(汽车号,销售商号,销售日期)为主键。 “汽车号”为引用汽车表的“汽车号”的外键,“销售商号”为引用销售商表的“销售商号”的外键。
写出创建这三张表的SQL语句,要求在创建表时定义表中的全部约束。 create table 汽车表(
汽车号 char(4) primary key, 汽车名 char(8) not null, 型号 char(6) not null, 类型 char(6) ,
价格 numeric(7,1))
create table 销售商表(
销售商号 char(4) primary key,
销售商名 varchar(20) not null check (销售商名 like '%销售公司'), 地址 char(4) ,
电话 char(8) check(电话 like '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'))
create table 销售表(
汽车号 char(4) not null, 销售商号 char(4) not null,
销售日期 date not null default getdate(), XSSL smallint,
primary key(汽车号,销售商号,销售日期),
foreign key(汽车号) references 汽车表(汽车号),
foreign key(销售商号) references 销售商表(销售商号))
已知“图书借阅”表和“借阅历史”表的结构如下: 表名:图书借阅
字段名称 数据类型 长度 备注 条码号 char 10 主键 借阅日期 Date 应还日期 Date
表名:借阅历史
字段名称 数据类型 长度 备注 序号 int 主键,自增 条码号 char 10 借阅日期 Date 应还日期 Date 删除时间 Datetime 默认值为系统当前时间
请创建一个触发器,当从图书借阅表中删除数据时,将被删除的数据存放至借阅历史表。 create trigger tri_book on 图书借阅 for delete as begin
declare @tiaoma char(10), @bdate Date,@rdate Date
select @tiaoma=条码号,@bdate=借阅日期,@rdate=应还日期 from deleted insert into 借阅历史(条码号,借阅日期,应还日期,删除时间) values(@tiaoma,@bd
设计了三张表:图书表、读者表和借阅表,各表结构如下: 读者表:
读者号:普通编码定长字符型,长度为8,主键。 读者名:普通编码定长字符型,长度为10,非空。 读者身份:普通编码定长字符型,长度为4。 图书表:
书号:普通编码定长字符型,长度为8,主键。
书名:普通编码可变长字符型,最大长度为30,非空。(注:该书号为图书的ISBN号,相同书号的图书可以有多本)
单价:定点小数类型,整数部分3位,小数部分1位。 出版日期:日期时间型。
类别:普通编码定长字符型,长度为8。 在库数量:整型。 借阅表:
读者号:普通编码定长字符型,长度为8,非空。外键,引用“读者表”的“读者号” 书号:普通编码定长字符型,长度为8,非空。外键,引用“图书表”的“书号” 借书日期:日期时间型,非空。 还书日期:日期时间型。
其中(读者号,图书号,借书日期)为主键。
针对上述各表,写出限制一个读者的当前借书总数量不能超过5本(小于等于5)的后触发型的触发器。
create trigger tri1 Create trigger tr1
On 借书表 for insert As
If exists(select * from inserted where 读者编号 in ( Select 读者编号 from 借书表 Where 还书日期 is null
group by 读者编号 having count(*)>5) rollback
设计了三张表:图书表、读者表和借阅表,各表结构如下: 读者表:
读者号:普通编码定长字符型,长度为8,主键。 读者名:普通编码定长字符型,长度为10,非空。 读者身份:普通编码定长字符型,长度为4。 图书表:
书号:普通编码定长字符型,长度为8,主键。
书名:普通编码可变长字符型,最大长度为30,非空。(注:该书号为图书的ISBN号,相同书号的图书可以有多本)
单价:定点小数类型,整数部分3位,小数部分1位。 出版日期:日期时间型。
类别:普通编码定长字符型,长度为8。 在库数量:整型。 借阅表:
读者号:普通编码定长字符型,长度为8,非空。外键,引用“读者表”的“读者号” 书号:普通编码定长字符型,长度为8,非空。外键,引用“图书表”的“书号” 借书日期:日期时间型,非空。 还书日期:日期时间型。
其中(读者号,图书号,借书日期)为主键。
针对上述各表,写出限制一个读者的当前借书总数量不能超过5本(小于等于5)的后触发型的触发器。
create trigger tri1 Create trigger tr1
On 借书表 for insert As
If exists(select * from inserted where 读者编号 in ( Select 读者编号 from 借书表 Where 还书日期 is null
group by 读者编号 having count(*)>5) rollback
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
针对以上各表,写出限制一学期开设课程不能超过8门的后触发型触发器。 create trigger tri2 on Course after insert,update as
if exists(select * from course group by semester having count(*) > 8 ) Rollback
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
针对以上各表,写出限制一个学生在一个学期所选课程不能超过8门的后触发型触发器。
create trigger tri3 on SC for insert as
if exists(select * from SC join course c on sc.cno = c.cno
group by semester,sno having count(*) > 8) Rollback
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
针对以上各表,写出不能将不及格成绩改为及格的后触发型触发器。(设60分为及格) create trigger tri4 on SC for upate as
if exists(select * from inserted i join deleted d on i.sno = d.sno and i.cno = d.cno where i.grade >= 60 and d.grade < 60)
Rollback
设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept), 课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
针对以上各表,写出不能删除有人选的课程的后触发型触发器。 create trigger tri5 on Course for delete as
if exists(select * from deleted where cno in (select cno from sc )) Rollback
DBMS的含义是 A、数据库系统... C
关系数据库管理系统应能实现的专门关系运算... B
通配符“%”表示 A、代表一个字符... B
事务的原子性是指 A、事务一旦提... C
在SQL中,下列涉及空值的操作,错误的是... C
DB技术中的“脏数据”是指 A、未回退的... D
视图 vwCust 的基表是Custom... C
一个大学有许多学科,学生在完成相应学科的... B
在数据库的概念设计中,最常用的数据模型是... D
下列 SQL语句中,用于在表中增加一个新... C
规范化过程主要是为克服数据库逻辑结构中的... C
数据库系统的核心是 A、数据模型... B
如果事务T获得了数据项Q上的排它锁,则T... C
在视图上不能进行的操作是 A. 通过视图... C
现实世界中事物的特性在信息世界中称为 ... B
下列关于概念数据模型的说法,正确的是 ... A
构建概念数据模型 A.是对信息世界进行建... B
下列关于外键的描述,正确的是 A、外键一... C
关系模型中,满足2NF的模式 A、可能是...
在定义视图的语句中,可以包含 A.数据增... C
已知实体A与实体B之间是多对多联系,为描... D
下述不属于视图好处的是 A. 封装复杂的... B
下列关于视图的说法,正确的是 A. 视图... D
下列关于视图的说法,正确的是 A.使用视... C
使用数据库技术的主要目的是 ...
在关系数据库中,不同表间的数据冗余带来的... D
下列关于关系数据库的操作特点的说法,正确... B
下列关于关系数据库表的说法,错误的是 ... D
下列关于视图的说法,错误的是 A. 视图... D
如果要限制“学生”表中的姓名字段的取值不... B
B C 在表上建立索引的目的是 A.加快数据的查... A
下列选项中,用于描述单个用户使用的数据视... A
下列全部属于专门关系运算的是 ... B
设有关系R,现要按条件f对关系R进行选择... C
下列关于外键的说法,正确的是 ... C
有UNIQUE约束的列,其取值一定 ...
在二级封锁协议中,事务在进行读操作时 A...
DBMS中实现事务持久性的子系统是 A....
下列不属于事务特征的是 A. 一致性 ...
数据库中的用户可分为 A. 系统管理员、... A
一个电视经销商在表TVType中维护其库...
某广告公司在表DailyExpense中... C
设有图书表,结构如下:Books(cBo...
DB(数据库)、DBMS(数据库管理系统...
下列不属于数据库系统特点的是 ... C
在关系数据库中,不同表之间的数据冗余最易...
数据库中数据的逻辑独立性是指 ... A
在关系数据库系统中,产生数据不一致的根本...
为了存储客户的各种信息,按如下方式创建了...
视图是一种常用的数据对象,它是提供查看和...
经过下列哪个操作,可将1NF的关系模式规...
设有关系R(A,B,C)和S(B,C,D...
D C D B B B B D D B C A B 下列不属于专门关系运算的是 ... D
R和S为两个基本表,“R JOIN S ... C
设R和S为两个基本表,“FROM R L... A
设R和S为两个基本表,“FROM R R... B
若数据库中只包含成功事务提交的结果,则该... B
若系统运行过程中由于某种硬件故障,使存储... C
进行自然连接运算的两个关系必须具有 ...
进行并运算的两个关系必须是 ...
如果要限制“学生”表中的学生年龄字段的取... A
查找全部不姓“张”和不姓“刘”的学生姓名... D
数据库的三个模式两个映象提供了 ... C
数据库系统由多个部分组成,其中最核心的是... B
下列不属于数据库特点的是 ... C
下列查询年龄最大的学生姓名的SQL语句,... D
已知SN是一个字符类型的字段,有查询语句... C
若要将学生张三所在的系从“计算机系”改为... C
下列与“WHERE Grade betw... B
设有学生表,结构为:学生表(学号,姓名,... D
设有教师表(教师号,教师名,所在系,工资... D
数据库系统的独立性是指 ... B 关于关系,下列说法中正确的是 Ⅰ.关系中... D 如果实体A与实体B之间是多对多联系,为描... C 两段锁协议是保证可串行化调度的 A. 充... A 一级封锁协议是 A.读和写都全程加锁 B... D 如果事务T获得了数据项D上的排他锁,则T... C B A
下列构成数据库系统组成部分的是 ... A 在E-R模型中,联系所关联的实体 ... C 关系数据库中的数据完整性是指 ... A 二维表结构是 A. 关系... B 数据库三级模式结构中用于描述表结构的是 ... B 在关系数据库中,主键的作用是 ... D
UNIQUE约束的作用是 ... B 若要定义关系模式中的候选键,下列约束中最... C 现有如下两张表: 部门表(部门号,部门描... A
下列操作中,系统检查默认值约束的是 ... 在一个表上可以 A.1个聚簇和多个非聚簇... A 从数据库三级模式上来说,索引属于 A. ... A 在数据库中,产生数据更新异常的根本原因是... C 下列关于3NF关系模式的说法,正确的是 ... C 下列关于3NF关系模式的说法,正确的是 ... C 关系规范化的主要目的是 A. 维护数据完... C 关系规范化中的插入异常是指 A. 不该插... C 设有关系模式R(工号,姓名,工种,基本工... D 有关系模式R(X,Y,Z),其函数依赖集... D 任何一个满足2NF但不满足3NF的关系模... 关系数据库中的规范化理论解决的主要问题是... A 已知关系模式:S(学号,姓名,所在系,所... B 下列关于第二范式的说法,正确的是 A. ... A 已知关系模式:S(学号,姓名,所在系,所... C
已知关系模式:教师(教师号,所在系,职称... B 关系模式:R(商店编号,商品编号,库存数... B 若事务T的封锁顺序为: LOCAK S(... B 下列用户中需要授权才能对数据库对象进行操... D 数据库的授权机制属于 A.数据库的安全控... A 数据库管理系统通常提供授权功能来控制不同... D 数据库的结构设计包括 A.表结构和视图结... D 如果两个实体A和B之间是一对多联系,则将... B 数据库应用系统设计时需采用的逻辑模式是根... A 设实体A与实体B是多对一联系,则一般应设... B 数据库的结构设计不包括 A.逻辑结构设计... D 从E-R模型向关系模型转换时,一个M:N... D 设一个储蓄所有多个储户,一个储户可在多个... D 现有学生表:学生(宿舍编号,宿舍地址,学... B 在关系数据库应用系统设计中,将E-R模型... B
有关系模式:商品批发(商品编号,批发日期... C 已知关系模式:学生考试(学号,课程号,考... C A B
设有关系模式:图书借阅(读者号,书号,借... C 创建触发器的用处主要是 A. 提高查询效... B 数据库管理系统(DBMS)是 ... D 数据库中数据的逻辑独立性为 ... B 下列关于后触发型触发器的说法,错误的是 ... B 设要在SC表的Grade列上建立一个更新... B Numeric(p, q),其中p是指 ... A 在SQL Server中nvarchar... A 若用类型为char(6)的变量存储‘AB... B 设工资列的数据要求小数点后保留2位,小数... 某表中有“年龄”列,下列数据类型中最合适... 数据类型Numeric(10,4)表示的... nchar(10)数据类型的变量,最多可...
char(10)数据类型的变量,最多可存... 对于nvarchar数据类型,下列说法正... 假设考试成绩的取值范围为0~150的整数... “图书”表中价格列是一个定点小数,小数点... 数据库的备份和恢复机制属于 A.数据库的... 事务故障的恢复是 A.用户读取日志文件完... 下列关于增量转储的说法,错误的是 A. ... 现有一个“教师”表,其中一个字段是教师的... 要限制某表中的“保险号”字段(字符型,非... 在对主表数据进行下列哪个(些)操作时检查... 下列操作中进行实体完整性检查的是 ... 下列SQL语句中,用于修改表结构的是 ... 下列关于Unique约束的说法,错误的是... 在已有数据的表上定义CHECK约束时,默... 设要限制“所在系”的取值只能为“计算机系...
在SQL Server中,删除表中某个列... 在SQL Server中,修改表中列定义... 删除表的SQL语句是 A... 在SQL Server中,在表中添加一个... 下列聚合函数中,不忽略空值的是 ... 在SQL语句中,下列涉及空值的操作,错误... 下列查询语句中,能够正确执行的是 ... 现有雇员表,结构为:雇员表(雇员号,姓名... 语句“SELECT * FROM Stu... 在WHERE子句的条件表达式中,匹配单个... 下述对出生日期进行比较的表达式中,正确的... 下列关于自连接操作的说法,正确的是 ... 设职工表中记录工资的列为:Salary,... “%”通配符的作用是 A... D B C B A B A B B B C D C D D A B B C D C B B D C C D D
C A B C C
“_”通配符的作用是 ... C
设有课程表:C (课程号,课程名称,授课... D 有学生表(学号,姓名,年龄,所在系),查... D 匹配0到多个字符的通配符是 ... B DISTINCT子句的作用是 ... C 子句:WHERE 姓名 like ’[张... B
现要将张三的年龄改为20,系改为计算机系... 字符串匹配中“[]'通配符的作用是 ... 下述属于SQL数据定义功能的语句是 ... 下述属于SQL数据操作功能的语句是 ... 语句“SELECT * FROM Stu... 在关系数据库,表中各条记录 ... D 数据库中数据的独立性是指 ... DBMS中对数据库中的数据进行插入、删除... 数据库中数据的物理独立性是指 ... A 关系数据库中模式和内模式间的映像提供的独... 数据库系统的核心是 A.... 数据库的外模式和模式间的映像提供的独立性...
数据库中的外模式对应 A... 概念数据模型包含的内容是 ... 数据的完整性包括 A.数... 数据库中的模式对应 A.... B 关系数据库采用的组织层数据模型是 ... 数据模型的三要素是 A.... D 数据库系统中模式到内模式的映像提供的数据...
查找全部不姓“张”和不姓“刘”的学生姓名...
B A D B
B
C B
A B
B C B D B
A D
正在阅读:
数据库题库10-27
开学啦作文800字06-27
县人民法院多举措做好裁判文书上网工作11-27
家庭卫生员作文600字06-30
大浪淘沙验真金 电小二等18款移动电源质量报告 - 图文06-15
赞美故乡的诗歌03-30
故乡的秋02-14
《零距离》上海高考历史一轮书简明版答案 2015版05-30
装饰公司薪酬激励制度1206 - 图文06-18
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 题库
- 数据库
- 高中作文课教案
- 司法考试法理学名师讲义 - 法的作用
- Drive window软件调试ABB变频器流程
- 《马克思主义基本原理概论》实践教学指导 - 图文
- 初中英语牛津深圳版《八年级下(旧)》《Chapter 3 Family life》精选课后测试
- 201709考试批次《保险学原理》(结课作业)
- 一年级语文提优资料4
- 2018-2019学年辽宁省普通高中学生学业水平模拟考试语文试题 Word版含答案
- 浙工大2011-2012(1)概率统计期末试卷
- 2017年电大电大电子商务概论形成性考核册作业答案
- 发电厂电气部分课程设计说明书
- 土木工程生产实习报告总结5000字 - 图文
- 融资担保业务风险管理办法
- 第三阶段试题答案
- 著名教育家魏书生班级管理制度大全
- 西安地铁二号线AFC系统自动检票机通行控制运营
- 生物化学习题
- 1.大学生学术诚信现状调查研究
- BS操盘线(类似收费软件的BS)通达信指标公式源码
- 鲁教版四年级语文上册教学计划