当前位置:首页 > 数据库题库
选课表:SC(Sno,Cno,Grade) 删除没人选的课程。(请用子查询实现) delete from course where cno not in ( select cno from sc)
37.设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
针对以上各表,写出创建满足如下要求的视图的SQL语句。
查询学生的学号、姓名、所在系、课程号、课程名、课程学分。视图名为v1 create view v1 as
select s.sno,sname,sdept,c.cno,cname,credit
from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno 38.设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
写出将下列信息插入到学生表中的SQL语句 学号:2012001001,姓名:王五,性别:男;年龄:20,所在系未定
insert into Student values('2012001001','王五','男',20,NULL) 39.设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
写出查询每门课的选课人数的SQL语句,列出课号及选课人数(包括没有人选的课程)。 select Course.Cno,count(SC.Cno)
from Course left join SC on Course.Cno = SC.Cno group by Course.Cno
40.设有学生表: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
41.已知\图书\表结构如下: 条码码(char(5),主键), 书名(varchar(50)), 状态(char(1)),取值为1、2、3,分别表示:可借、不可借、已借。 写出创建满足如下要求的视图(v_book):查询书名中包含“数据库”的图书,显示:条形码、书名和状态,要求状态用对应的中文含义显示。
create view vw_book as select 条码号,书名, case
when 状态='1' then '可借' when 状态='2' then '不可借'
when 状态='3' then '已借' end case 状态 from 图书 where 书名 like '%数据库%'
42.设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester),
选课表:SC(Sno,Cno,Grade)
针对以上各表,请按如下模式写出创建满足如下要求的视图的SQL语句。 统计每个学生的选课门数,要求列出学生学号和选课门数。 create view v2(学号,选课门数) as create view v2(学号,选课门数) as select sno,count(*) from sc group by sno
43.设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
统计每门课程的选课人数(不包括没人选的课程),列出课程号和选课人数。 select cno,count(*) 选课人数 from sc group by cno
44.设有学生表: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
45.设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
针对以上各表,请按如下模式写出创建满足如下要求的视图的SQL语句。
统计每个学期开设的课程总门数及总学分。 create view v4(学期,课程总门数,总学分) as create view v4(学期,课程总门数,总学分) as select semester,count(*),sum(credit) from course group by semester
46.设有学生表:Student(Sno,Sname,Ssex,Sage,Sdept),
课程表:Course(Cno,Cname,Credit,Semester), 选课表:SC(Sno,Cno,Grade)
写出查询第3学期开设的学分为4的课程名的SQL语句。 select cname from course
where semester = 3 and creidt = 4
47.已知商品表、订单表、订单细节表、顾客表的结构如下所示: 商品 字段名称 数据类型 长度 备注
商品编号 char 5 主键 商品名称 varchar 50 单价 numeric (10,2)
库存数量 int 取值大于等于0 顾客 字段名称 数据类型 长度 备注
顾客编号 char 5 主键 顾客姓名 varchar 50 订单 字段名称 数据类型 长度 备注
订单编号 char 10 主键 下单日期 date
顾客编号 char 5 外键,引用顾客表的顾客编号 订单细节 字段名称 数据类型 长度 备注
订单编号 char 10 主键。外键,引用订单表的订单编号 商品编号 char 5 主键。外键,引用商品表的商品编号 数量 int 默认值为1
针对以上各表,用SQL语句完成以下操作。
查询订购了“10001”号商品的所有订单,显示:订单编号和下单日期,结果按下单日期降序排列
select 订单编号,下单日期 from 订单
where 订单编号='10001' order by 下单日期 desc
48.表如上题,针对以上各表,用SQL语句完成以下操作。 查询从没被订购过的商品的详细信息
select * from 商品 where 商品编号 not in ( select 商品编号 from 订单)
49.表如上题,针对以上各表,用SQL语句完成以下操作。 查询商品种类数大于2的订单(即订单细节中大于2行的订单),列出:订单编号和商品种类数。
select 订单编号,count(商品编号) as 商品种类数 from 订单细节 group by 订单编号 having count(*)>2
50.表如上题,针对以上各表,用SQL语句完成以下操作。
将下列信息插入到商品表中。 商品编号 商品名称 单价 库存数量 10001 电视机 2000 20 insert into 商品 values('10001','电视机',2000,20)
51.表如上题,针对以上各表,用SQL语句完成以下操作。 查询每个订单的商品总金额,列出:订单编号和总金额。 select 订单编号,sum(单价*数量) as 总金额 from 订单 inner join 商品 on 订单.商品编号=商品.商品编号 group by 订单编号
52.表如上题,针对以上各表,用SQL语句完成以下操作。 查询商品名称中包括“电”的商品详细信息 select * from 商品 where 商品名称 like '%电%'
53.已知有学生表、课程表、选课表,各表结构如下所示: 学生表
学号(char(10),主键), 姓名(varchar(20),非空),
性别(char(2),取值范围为“男”和“女”), 出生日期(date)。 课程表
课程号(char(4),主键), 课程名(varchar(50),非空), 学分(int)。 选课表
学号(char(10),主键,引用学生表的外键), 课程号(char(4),主键,引用课程表的外键)
成绩(tinyint,取值范围为:0~100)。
写出创建这三张表的SQL语句,要求考虑全部约束。 Create table 学生表(
学号 char(10) primary key, 姓名 varchar(20) not null,
性别 char(2) check(性别 in ('男','女')), 出生日期 date )
create table 课程表 ( 课号 char(4) primary key, 课程名 varchar(50) not null, 学分 int )
create table 选课表 ( 学号 char(10) ,
课程号 char(4) references 课程表(课程号),. 成绩 int check(成绩 between 0 and 100), primary key(学号,课程号),
foreign key(学号) references 学生表(学号) , foreign key(课程号) references 课程表(课程号) )
54.为描述教师对课程的授课情况,设计了三张表:教师表、课程表和授课表,各表结构如下: 教师表:
教师号:普通编码定长字符型,长度为8,主码。
教师名:普通编码定长字符型,长度为10,不允许空。
职称:普通编码定长字符型,长度为8,取值范围为:{讲师,副教授,教授}。 所在部门:普通编码定长字符型,长度为20,默认值为“计算机学院”。 课程表:
课程号:普通编码定长字符型,长度为6,主码。
课程名:普通编码定长字符型,长度为20,不允许空。 学分:整型,允许空,取值范围为1~10。 学期:整型,允许空。 授课表:
教师号:普通编码定长字符型,长度为8,不允许空。外键,引用“教师表”的“教师号” 课程号:普通编码定长字符型,长度为6,不允许空。外键,引用“课程表”的“课程号” 授课学期:普通编码定长字符型,长度为10,不允许空。 授课时数:整型。
其中(教师号,课程号,授课学期)为主码。 写出创建“教师表”、“课程表”和“授课表”的SQL语句,要求在创建表时定义表中的全部约束。
Create table 教师表(
教师号 char(8) primary key, 教师名 char(10) not null,
职称 char(8) check(职称 in ('讲师','副教授','教授')),
共分享92篇相关文档