10-1 查询重量在[40,65]之间的产品信息
本题目要求编写SQL语句,
检索出product
表中所有符合40 <= Weight <= 65
的记录。
提示:请使用SELECT语句作答。
表结构:
CREATE TABLE `product` (`Pid` varchar(20), --商品编号`PName` varchar(50), --商品名称`Weight` decimal(10, 3) --重量
);
表样例
product
表:
Pid | PName | Weight |
---|---|---|
P01 | M6螺栓 | 30 |
P02 | M8螺栓 | 40 |
P03 | M16螺栓 | 140 |
P04 | 螺帽 | 30 |
P05 | 螺母 | 45 |
P06 | 垫片 | 10 |
P07 | 铰链 | 70 |
P21 | 螺钉 | 3 |
输出样例:
Pid | PName | Weight |
---|---|---|
P02 | M8螺栓 | 40 |
P05 | 螺母 | 45 |
select Pid,PName,Weight
from product
where 40<=Weight and Weight<= 65
10-2 查询姓刘的员工信息
本题目要求编写SQL语句,
检索出employee
表中姓刘的员工信息。
提示:请使用SELECT语句作答。
表结构:
CREATE TABLE `employee` (`Eid` varchar(10), --职工编号`EName` varchar(30), --职工姓名`Wno` varchar(10), --所在仓库`Salary` int(11) --职工工资
);
表样例
employee
表:
Eid | EName | Wno | Salary |
---|---|---|---|
0010 | 张三 | A01 | 3600 |
0011 | 刘勇 | A01 | 2700 |
0012 | 张立 | A01 | 8500 |
0021 | 刘靖 | A02 | 2500 |
0022 | 王强 | A02 | 5600 |
0023 | 李军 | 5000 | |
0031 | 王林 | 3500 |
输出样例:
Eid | EName | Wno | Salary |
---|---|---|---|
0011 | 刘勇 | A01 | 2700 |
0021 | 刘靖 | A02 | 2500 |
select Eid,EName,Wno,Salary
from employee
where Ename like '刘%'
10-3 查询仓库号为'A01'的所有员工信息,并按照工资降序排列
本题目要求编写SQL语句,
检索出employee
表中仓库号为’A01’的所有员工信息,并按照工资降序排列。
提示:请使用SELECT语句作答。
表结构:
CREATE TABLE `employee` (`Eid` varchar(10), --职工编号`EName` varchar(30), --职工姓名`Wno` varchar(10), --所在仓库`Salary` int(11) --职工工资
);
表样例
employee
表:
Eid | EName | Wno | Salary |
---|---|---|---|
0010 | 张三 | A01 | 3600 |
0011 | 刘勇 | A01 | 2700 |
0012 | 张立 | A01 | 8500 |
0021 | 刘靖 | A02 | 2500 |
0022 | 王强 | A02 | 5600 |
0023 | 李军 | 5000 | |
0031 | 王林 | 3500 |
输出样例:
Eid | EName | Wno | Salary |
---|---|---|---|
0012 | 张立 | A01 | 8500 |
0010 | 张三 | A01 | 3600 |
0011 | 刘勇 | A01 | 2700 |
select Eid,EName,Wno,Salary
from employee
where Wno = 'A01'
order by Salary desc
10-4 查询Product表中登记日期在2019年的商品信息
要求编写SQL语句,查询Product
表中登记日期在2019年的商品信息,并按销售价格降序排列。
表结构:
CREATE TABLE Product
(product_id CHAR(4) NOT NULL, --商品编号product_name VARCHAR(100) NOT NULL, --商品名称product_type VARCHAR(32) NOT NULL, --商品种类sale_price INTEGER , --销售价格purchase_price INTEGER , --进货价格regist_date DATE , --登记日期PRIMARY KEY (product_id));
表样例
Product
表
输出样例:
Product
表
select *
from Product
where year(regist_date) = 2019
order by sale_price desc
10-5 查询所在城市为‘上海’或‘杭州’的仓库编号
本题目要求编写SQL语句,
检索出warehouse
表中``所在城市为‘上海’或‘杭州’的仓库编号```的记录。
提示:请使用SELECT语句作答。
表结构:
CREATE TABLE `warehouse` (`Wno` varchar(10), --仓库编号`City` varchar(20), --所在城市`Size` int(11), --面积
);
表样例
warehouse
表:
Wno | City | Size |
---|---|---|
A01 | 杭州 | 15000 |
A02 | 建德 | 5000 |
B01 | 宁波 | 1200 |
B02 | 奉化 | 7500 |
C01 | 温州 | 10000 |
C02 | 乐清 | 8000 |
D01 | 绍兴 | 11000 |
输出样例:
Wno |
---|
A01 |
select Wno
from warehouse
where City = '杭州' or City ='上海'
10-6 查询销售过的产品编号
例如:本题目要求编写SQL语句,
检索出orders
表中所有销售过的产品编号
。
提示:请使用SELECT语句作答。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `orders` (`OrdNo` int(11), --订单编号`Sid` varchar(10), --供应商编号`Eid` varchar(10), --职工编号`Pid` varchar(20), --商品编号`Price` decimal(10,2), --价格`QTY` int(11), --订购数量`ordDate` date --订单日期
);
表样例
orders
表:
OrdNo | Sid | Eid | Pid | Price | QTY | ordDate |
---|---|---|---|---|---|---|
1 | S01 | 0011 | P01 | 11 | 23 | 2022-02-13 |
2 | S02 | 0012 | P01 | 12 | 25 | 2022-02-14 |
3 | S03 | 0012 | P03 | 60 | 55 | 2022-02-14 |
输出样例:
请在这里给出输出样例。例如:
Pid |
---|
P01 |
P03 |
select distinct Pid
from orders
where QTY is not null;
10-7 查询每个供应商的信息及其供货的订单编号
本题目要求编写SQL语句,
查询每个供应商的信息及其供货的订单编号。
提示:请使用SELECT语句作答。
表结构:
CREATE TABLE `orders` (`OrdNo` int(11), --订单编号`Sid` varchar(10), --供应商编号`Eid` varchar(10), --职工编号`Pid` varchar(20), --商品编号`Price` decimal(10,2), --价格`QTY` int(11), --订购数量`ordDate` date --订单日期
);CREATE TABLE `supplier` (`Sid` varchar(10), --供应商编号`SName` varchar(50), --供应商名称`City` varchar(20) --供应商地址
);
表样例
orders
表:
OrdNo | Sid | Eid | Pid | Price | QTY | ordDate |
---|---|---|---|---|---|---|
1 | S01 | 0011 | P01 | 11 | 23 | 2022-02-13 |
2 | S02 | 0012 | P01 | 12 | 25 | 2022-02-14 |
3 | S03 | 0012 | P03 | 60 | 55 | 2022-02-14 |
supplier
表:
Sid | SName | City |
---|---|---|
S01 | 东风机械厂 | 武汉 |
S02 | 天鹰紧固件厂 | 温州 |
S05 | 长城机电 | 杭州 |
输出样例:
b.Sid | SName | City, | OrdNo |
---|---|---|---|
S01 | 东风机械厂 | 武汉 | 1 |
S02 | 天鹰紧固件厂 | 温州 | 2 |
S02 | 天鹰紧固件厂 | 温州 | 3 |
select
orders.Sid,supplier.SName,supplier.City,orders.OrdNo
from orders
join supplier on orders.Sid = supplier.Sid
10-8 计算Product表中销售价格的最大值和进货价格的最小值
要求编写SQL语句,查询Product
表中销售价格的最大值和进货价格的最小值。
表结构:
CREATE TABLE Product
(product_id CHAR(4) NOT NULL, --商品编号product_name VARCHAR(100) NOT NULL, --商品名称product_type VARCHAR(32) NOT NULL, --商品种类sale_price INTEGER , --销售价格purchase_price INTEGER , --进货价格regist_date DATE , --登记日期PRIMARY KEY (product_id));
表样例:
Product
表
输出样例:
Product
表
select max(sale_price) as top_sale,min(purchase_price) as bottom_pur
from Product
10-9 查询每名职工的工号和姓名及所属的仓库编号和所在城市
本题目要求使用外连接来编写SQL语句,
查询每名职工的工号和姓名及所属的仓库编号和所在城市。
提示:请使用SELECT语句作答。
表结构:
CREATE TABLE `employee` (`Eid` varchar(10), --职工编号`EName` varchar(30), --职工姓名`Wno` varchar(10), --所在仓库`Salary` int(11) --职工工资
);
CREATE TABLE `warehouse` (`Wno` varchar(10), --仓库编号`City` varchar(20), --所在城市`Size` int(11), --面积
);
表样例
employee
表:
Eid | EName | Wno | Salary |
---|---|---|---|
0010 | 张三 | A01 | 3600 |
0011 | 刘勇 | A01 | 2700 |
0012 | 张立 | A01 | 8500 |
0021 | 刘靖 | A02 | 2500 |
0022 | 王强 | A02 | 5600 |
0023 | 李军 | 5000 | |
0031 | 王林 | 3500 |
warehouse
表:
Wno | City | Size |
---|---|---|
A01 | 杭州 | 15000 |
A02 | 建德 | 5000 |
B01 | 宁波 | 1200 |
B02 | 奉化 | 7500 |
C01 | 温州 | 10000 |
C02 | 乐清 | 8000 |
D01 | 绍兴 | 11000 |
输出样例:
Eid | EName | Wno | City |
---|---|---|---|
0010 | 张三 | A01 | 杭州 |
0011 | 刘勇 | A01 | 杭州 |
0012 | 张立 | A01 | 杭州 |
0021 | 刘靖 | A02 | 建德 |
0022 | 王强 | A02 | 建德 |
0023 | 李军 | ||
0031 | 王林 |
select employee.Eid,employee.EName,employee.Wno,warehouse.City
from employee
left join warehouse on employee.Wno = warehouse.Wno
10-10 查询所有产品名中包含’螺母’的产品种类数
本题目要求编写SQL语句,
检索出product
表中所有产品名中包含’螺母’的产品种类数。
提示:请使用SELECT语句作答。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `product` (`Pid` varchar(20), --商品编号`PName` varchar(50), --商品名称`Weight` decimal(10, 3) --重量
);
表样例
product
表:
Pid | PName | Weight |
---|---|---|
P01 | M6螺栓 | 30 |
P02 | M8螺栓 | 40 |
P03 | M16螺栓 | 140 |
P04 | 螺帽 | 30 |
P05 | 螺母 | 45 |
P06 | 垫片 | 10 |
P07 | 铰链 | 70 |
P21 | 螺钉 | 3 |
输出样例:
请在这里给出输出样例。例如:
count(*) |
---|
1 |
select count(*)
from product
where PName like '%螺母%'
10-11 将学号为“1911203”的学生的联系电话改为“590987”
本题目要求编写SQL语句,
在students
表中,将学号为“1911203”的学生的联系电话改为“590987”。
提示:请使用UPDATE语句作答。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE students (sno char(7) ,sname char(8) NOT NULL,class char(10),ssex char(2),bday date ,bplace char(10) ,IDNum char(18) ,sdept char(16),phone char(11),PRIMARY KEY (sno)
) ;
表样例
请在这里给出上述表结构对应的表样例。例如
students
表:
sno | sname | class | ssex | bday | bplace | IDNum | sdept | phone |
---|---|---|---|---|---|---|---|---|
1311104 | 李嘉欣 | 13英语1 | 女 | 1994-05-28 | 山西太原 | 330204199405281056 | 人文学院 | 15900002211 |
1311105 | 苏有明 | 13英语1 | 男 | 1995-04-16 | 内蒙古包头 | 330204199504162036 | 人文学院 | 15900002222 |
1711101 | 赵薇 | 17物流1 | 女 | 1999-02-11 | 安徽合肥 | 330203199902110925 | 经管学院 | 15900001177 |
1911201 | 陈坤 | 19信管2 | 男 | 1990-07-19 | 山东烟台 | 330204199007199604 | 信息学院 | 15911113388 |
1911203 | 张三 | 19物流1 | 女 | 1999-02-17 | 上海 | 330203199902170017 | 经管学院 | 15900001188 |
输出样例:
请在这里给出输出样例。例如:
students
表:
sno | sname | class | ssex | bday | bplace | IDNum | sdept | phone |
---|---|---|---|---|---|---|---|---|
1311104 | 李嘉欣 | 13英语1 | 女 | 1994-05-28 | 山西太原 | 330204199405281056 | 人文学院 | 15900002211 |
1311105 | 苏有明 | 13英语1 | 男 | 1995-04-16 | 内蒙古包头 | 330204199504162036 | 人文学院 | 15900002222 |
1711101 | 赵薇 | 17物流1 | 女 | 1999-02-11 | 安徽合肥 | 330203199902110925 | 经管学院 | 15900001177 |
1911201 | 陈坤 | 19信管2 | 男 | 1990-07-19 | 山东烟台 | 330204199007199604 | 信息学院 | 15911113388 |
1911203 | 张三 | 19物流1 | 女 | 1999-02-17 | 上海 | 330203199902170017 | 经管学院 | 590987 |
update students
set phone ='590987'
where sno = '1911203'
10-12 把选修了“平板撑”课程而成绩不及格的学生的成绩全改为空值(NULL)
本题目要求编写SQL语句,
在``sc```表中,把选修了“平板撑”课程而成绩不及格的学生的成绩全改为空值(NULL)。
提示:请使用UPDATE语句作答。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE sc (sno char(7) ,cno char(7) ,score decimal(4,1),point decimal(2,1),PRIMARY KEY (sno,cno)
) ;CREATE TABLE course (cno char(7) ,cname varchar(20) NOT NULL,cpno char(7),ccredit int NOT NULL,PRIMARY KEY (cno)
) ;
表样例
请在这里给出上述表结构对应的表样例。例如
sc
表:
sno | cno | score | point |
---|---|---|---|
1311104 | 0000011 | 53.0 | 0.0 |
1311104 | 0000027 | 80.0 | 1.0 |
1311105 | 0000027 | 84.0 | 1.0 |
1711101 | 0000052 | 71.0 | 2.0 |
1711101 | 0000011 | 51.0 | 0.0 |
course
表:
cno | cname | cpno | ccredit |
---|---|---|---|
0000001 | 数据库OCP考证 | NULL | 4 |
0000002 | C语言基础 | 0000027 | 9 |
0000003 | Linux操作系统 | 0000013 | 5 |
0000004 | C#程序设计 | 0000002 | 6 |
0000011 | 平板撑 | NULL | 2 |
输出样例:
请在这里给出输出样例。例如:
sc
表:
sno | cno | score | point |
---|---|---|---|
1311104 | 0000011 | 53.0 | 0.0 |
1311104 | 0000027 | 80.0 | 1.0 |
1311105 | 0000027 | 84.0 | 1.0 |
1711101 | 0000052 | 71.0 | 2.0 |
1711101 | 0000011 | NULL | 0.0 |
update sc
set score = null
where cno in
(select cnofrom coursewhere cname = '平板撑'
) and score<60
10-13 80.理学院(CS)新开一门课程“数学建模”,课程编号20, 学分4,学时72,选修课程,最多选课人数为50
本题目要求编写SQL语句,理学院(CS)新开一门课程“数学建模”,无先行课,课程编号20, 学分4,学时72,选修课程,最多选课人数为50。
现有教务管理系统的关系描述如下:
- 每个院系(部门)有多个班级和多名教师,每名教师各自开设有多门课程。
- 每位教师管理多个班级(班主任),每个班级只能被一位老师管理。
- 每名学生属于一个班级,可以选修多门课程。
- 每门课程可被多位老师讲授,并且有些课程具有先导课程,每门课程的成绩由平时成绩、期中成绩、期末成绩组成,最终计算总评成绩。
- 课程信息表供教师和学生查询,包含课程信息、任课教师、上课班级、上课教室、上课日期(周几)、上课时间(第几节课)、上课学期学年等信息。
1.课程表:course
表结构
表数据
insert course values ('20',NULL,'CS','数学建模','4','72','选修','50')
10-14 添加一条学生记录
本题目要求编写 Insert语句,在stu
表中添加一条学生记录:
学号:S012,姓名:周强,性别:1,其它属性为NULL.
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
输出样例:
插入一条学生记录后,stu
表如下:
insert stu
values('S012','周强' , 1,null,null,null)
10-15 修改女生成绩
本题目要求编写UPDATE语句,
把所有低于75分的女生成绩提高5%;
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`)
);
CREATE TABLE `sc` (`sno` char(4) NOT NULL,`cno` char(4) NOT NULL,`grade` decimal(6,1) DEFAULT NULL,PRIMARY KEY (`sno`,`cno`),CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
)
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
sc
表:
输出样例:
例如:
修改女生成绩后的sc
表如下:
update sc
set grade = grade * 1.05
where sno in
(select snofrom stuwhere sex = 0
) and grade<75;
10-16 删除学生所有信息
本题目要求编写DELETE语句,
删除学生姓名为'周强'的所有数据信息。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`)
);
CREATE TABLE `sc` (`sno` char(4) NOT NULL,`cno` char(4) NOT NULL,`grade` decimal(6,1) DEFAULT NULL,PRIMARY KEY (`sno`,`cno`),CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
sc
表:
输出样例:
删除学生周强的所有数据信息后:
stu
表:
sc
表:
delete
from sc
where sno in
(select snofrom stuwhere sname='周强'
);
delete
from stu
where sname = '周强'
10-17 将student表中的数计学院的学生信息插入到stu表中。
题干:
将student表中的数计学院的学生信息插入到stu表中。
提示:请使用INSERT语句作答,stu数据表已存在,结构同student一样。
表结构:
定义表结构的SQL语句如下:
CREATE TABLE student (
sno varchar(6) NOT NULL ,
sname varchar(10) ,
sex char(2) ,
nation char(2) ,
pnum char(18) ,
birth date ,
phone char(11) ,
dept varchar(20) ,
PRIMARY KEY (sno)
) ;
表样例
上述表结构对应的表样例:
student
表:
输出样例:
输出样例:
stu
表:
insert stu
select *
from student
where dept = '数计学院'
10-18 删除没有销售过的产品
本题目要求编写SQL语句,
删除没有销售过的产品。
表结构:
CREATE TABLE `product` (`Pid` varchar(20), --商品编号`PName` varchar(50), --商品名称`Weight` decimal(10, 3) --重量
);
CREATE TABLE `orders` (`OrdNo` int(11), --订单编号`Sid` varchar(10), --供应商编号`Eid` varchar(10), --职工编号`Pid` varchar(20), --商品编号`Price` decimal(10,2), --价格`QTY` int(11), --订购数量`ordDate` date --订单日期
);
表样例
product
表:
Pid | PName | Weight |
---|---|---|
P01 | M6螺栓 | 30 |
P02 | M8螺栓 | 40 |
P03 | M16螺栓 | 140 |
P04 | 螺帽 | 30 |
P05 | 螺母 | 45 |
P06 | 垫片 | 10 |
P07 | 铰链 | 70 |
orders
表:
OrdNo | Sid | Eid | Pid | Price | QTY | ordDate |
---|---|---|---|---|---|---|
1 | S01 | 0011 | P01 | 11 | 23 | 2022-02-13 |
2 | S02 | 0012 | P05 | 12 | 25 | 2022-02-14 |
3 | S03 | 0012 | P03 | 60 | 55 | 2022-02-14 |
输出样例:
Pid | PName | Weight |
---|---|---|
P01 | M6螺栓 | 30 |
P03 | M16螺栓 | 140 |
P05 | 螺母 | 45 |
delete product
from product
left join orders on orders.Pid = product.Pid
where orders.QTY is null
10-19 查询学生表中的女生信息
本题目要求编写SQL语句,
检索出 stu
表中所有的女生记录。注意:sex为1时表示 男生,sex为0时表示女生。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
输出样例:
请在这里给出输出样例。例如:
select sno as 学号,sname as 姓名
from stu
where sex=0
10-20 查询年龄18-20之间的学生信息
本题目要求编写SQL语句,
检索出 stu
表中年龄在18-20之间的学生记录。
注意: 计算年龄时以年计算,不考虑出生月份。假定当前日期为‘2020-03-01'。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
输出样例:
请在这里给出输出样例。例如:
select sno as 学号, sname as 姓名,sex as 性别, mno as 专业,2020-year(birdate) as 年龄,memo as 备注
from stu
where 18<=2020-year(birdate) and 2020-year(birdate)<=20
10-21 查询姓‘李’的学生记录
本题目要求编写SQL语句,
检索出stu
表中所有姓‘李’的学生记录。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
输出样例:
请在这里给出输出样例。例如:
select sno as 学号,sname as 姓名,sex as 性别,mno as 专业,birdate as 出生日期,memo as 备注
from stu
where sname like '李%'
10-22 查询未登记成绩的学生
本题目要求编写SQL语句,
检索出sc
表中‘C001’课程未登记成绩的学生学号
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `sc` (`sno` char(4) NOT NULL, -- 学号`cno` char(4) NOT NULL, -- 课程号`grade` decimal(6,1) DEFAULT NULL, -- 成绩 PRIMARY KEY (`sno`,`cno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
sc
表:
输出样例:
请在这里给出输出样例。例如:
select sno
from sc
where grade is null
10-23 查询选修‘C语言’课程的学生
本题目要求编写SQL语句,
检索出所有选修'C语言'课程的学生成绩记录,输出结果集按照成绩降序排序。
分别尝试用以下几种方式实现。
1)采用连接查询
2)采用嵌套查询
3)采用EXIST查询
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`)
);
CREATE TABLE `cou` (`cno` char(4) NOT NULL,`cname` varchar(30) NOT NULL,`credit` smallint(6) DEFAULT NULL,`ptime` char(5) DEFAULT NULL,`teacher` char(10) DEFAULT NULL,PRIMARY KEY (`cno`)
) ;
CREATE TABLE `sc` (`sno` char(4) NOT NULL,`cno` char(4) NOT NULL,`grade` decimal(6,1) DEFAULT NULL,PRIMARY KEY (`sno`,`cno`),CONSTRAINT `fk_sc_cno` FOREIGN KEY (`cno`) REFERENCES `cou` (`CNO`),CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
cou
表:
sc
表:
输出样例:
请在这里给出输出样例。例如:
select stu.sname as 姓名, sc.grade as 成绩
from stujoin sc on stu.sno =sc.snojoin cou on cou.cno = sc.cno
where cou.cname='C语言'
order by sc.grade desc
10-24 查询同专业的学生
本题目要求编写SQL语句,
检索Student
表中与‘张三’在同一个专业的学生记录。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL, -- 学号`sname` char(8) NOT NULL, -- 姓名`sex` tinyint(1) DEFAULT NULL, -- 性别`mno` char(2) DEFAULT NULL, -- 专业号`birdate` datetime DEFAULT NULL, -- 出生日期`memo` text, -- 备注PRIMARY KEY (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
输出样例:
请在这里给出输出样例。例如:
select sno as 学号,sname as 姓名
from stu
where mno in
(select mnofrom stuwhere sname = '张三'
) and sname <>'张三'
10-25 查询平均分高于80分的学生
本题目要求编写SQL语句,
查询选修课程成绩的平均分高于80分的学生姓名。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`)
);
CREATE TABLE `sc` (`sno` char(4) NOT NULL,`cno` char(4) NOT NULL,`grade` decimal(6,1) DEFAULT NULL,PRIMARY KEY (`sno`,`cno`),CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
sc
表:
输出样例:
请在这里给出输出样例。例如:
select sname
from stu
join sc on stu.sno = sc.sno
group by sc.sno
having avg(sc.grade)>80
10-26 查询所有不姓刘的教师姓名
题目描述:本题目要求编写SQL语句,
查询所有不姓刘的教师姓名。
提示:请使用SELECT语句作答。
表结构:
teacher
表结构:
create table teacher(tno char(15) primary key,tname varchar(10) not null,gender char(2),deptname varchar(50) , -- 所属系部title varchar(20) -- 职称
);
表样例
teacher
表:
输出样例:
请在这里给出输出样例。例如:
select tname
from teacher
where tname not like '刘%'
10-27 查询选修某两门课程的学生(MSSQL)
本题目要求编写SQL语句,
检索出 sc
表中至少选修了’C001’与’C002’课程的学生学号。
提示:MSSQLServer 评测SQL语句。
表结构:
请在这里写定义表结构的SQL语句。例如:
-- 学生选课成绩表
CREATE TABLE sc ( sno char(4) NOT NULL, -- 学生学号cno char(4) NOT NULL, -- 选修课程号grade decimal(4,1) DEFAULT NULL,PRIMARY KEY ( sno , cno )
)
表样例
请在这里给出上述表结构对应的表样例。例如
sc
表:
输出样例:
请在这里给出输出样例。例如:
select sno as 学号
from sc
where cno in('C001','C002')
group by sno
having count(cno)>=2
10-28 查询比“网络工程”专业所有学生年龄都小的学生姓名
本题目要求编写SQL语句,
查询比“网络工程”专业所有学生年龄都小的学生姓名。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`),KEY `fk_stu_mno` (`mno`),CONSTRAINT `fk_stu_mno` FOREIGN KEY (`mno`) REFERENCES `major` (`mno`)
);
CREATE TABLE `major` (`mno` char(2) NOT NULL,`mname` varchar(20) NOT NULL,PRIMARY KEY (`mno`)
)
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
major
表:
输出样例:
请在这里给出输出样例。例如:
select sname
from stu
where birdate>
(select max(birdate)from stuwhere mno =(select mnofrom majorwhere mname ='网络工程'))
10-29 查询成绩最高的前三名同学
本题目要求编写SQL语句,
查询‘C语言’课程成绩最高的前三名同学。
提示:使用"limit n"语句实现 "top n" 。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `stu` (`sno` char(4) NOT NULL,`sname` char(8) NOT NULL,`sex` tinyint(1) DEFAULT NULL,`mno` char(2) DEFAULT NULL,`birdate` datetime DEFAULT NULL,`memo` text,PRIMARY KEY (`sno`)
);
CREATE TABLE `cou` (`cno` char(4) NOT NULL,`cname` varchar(30) NOT NULL,`credit` smallint(6) DEFAULT NULL,`ptime` char(5) DEFAULT NULL,`teacher` char(10) DEFAULT NULL,PRIMARY KEY (`cno`)
);
CREATE TABLE `sc` (`sno` char(4) NOT NULL,`cno` char(4) NOT NULL,`grade` decimal(6,1) DEFAULT NULL,PRIMARY KEY (`sno`,`cno`),CONSTRAINT `fk_sc_cno` FOREIGN KEY (`cno`) REFERENCES `cou` (`CNO`),CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
stu
表:
cou
表:
sc
表:
输出样例:
请在这里给出输出样例。例如:
select stu.sname as 姓名,sc.grade as 成绩
from stu
join sc on sc.sno=stu.sno
join cou on cou.cno = sc.cno
where cname = 'C语言'
order by sc.grade desc
limit 3
10-30 查询S001学生选修而S003学生未选修的课程
本题目要求编写SQL语句,
检索出 sc
表中学号为S001的学生选修的而S003学号学生未选修的课程号。
提示:MySQL不允许使用 except语句。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `sc` (`sno` char(4) NOT NULL, -- 学号`cno` char(4) NOT NULL, -- 课程号`grade` decimal(6,1) DEFAULT NULL, -- 成绩PRIMARY KEY (`sno`,`cno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
sc
表:
输出样例:
请在这里给出输出样例。例如:
select cno as 课程号
from sc
where sno='S001' and cno not in
(select cnofrom scwhere sno='S003'
)
10-31 查询各专业学生的平均成绩
本题目要求编写SQL语句,
统计各专业的学生选课的平均成绩,如果某专业尚未有任何学生选修课程或成绩为空时,平均分计为0。输出结果集按照major
表中的mno
升序排序。
表结构:
请在这里写定义表结构的SQL语句。例如:
CREATE TABLE `major` (`mno` char(2) NOT NULL,`mname` varchar(20) NOT NULL,PRIMARY KEY (`mno`)
);
CREATE TABLE `stu` (`sno` char(4) NOT NULL, -- 学号`sname` char(8) NOT NULL, -- 姓名`sex` tinyint(1) DEFAULT NULL, -- 性别`mno` char(2) DEFAULT NULL, -- 专业号`birdate` datetime DEFAULT NULL, -- 出生日期`memo` text, -- 备注PRIMARY KEY (`sno`),CONSTRAINT `fk_stu_mno` FOREIGN KEY (`mno`) REFERENCES `major` (`mno`)
);
CREATE TABLE `sc` (`sno` char(4) NOT NULL,`cno` char(4) NOT NULL,`grade` decimal(6,1) DEFAULT NULL,PRIMARY KEY (`sno`,`cno`),CONSTRAINT `fk_sc_sno` FOREIGN KEY (`sno`) REFERENCES `stu` (`sno`)
);
表样例
请在这里给出上述表结构对应的表样例。例如
major
表:
stu
表:
sc
表:
输出样例:
请在这里给出输出样例。例如:
select mname 专业,ifnull(avg(grade),0)平均成绩
from major left outer join(
select mno,grade from stu,sc
where stu.sno=sc.sno)as a on major.mno=a.mno
group by major.mno
order by major.mno;
10-32 创建视图计算学生课程平均分
现有一个学生数据库,内包含学生表(Student)、课程表(Course)和选修表(SC)。
在每一学年,学生处需要统计每位学生的学习情况,以便进行奖学金评定。请你设计一个视图V_average_grade,统计数据库中课程平均分在80以上的学生。
提示:请使用CREATE VIEW语句作答,并请注意数据表名、列名大小写需与表结构定义一致。
表结构:
学生表(Student)、课程表(Course)和选修表(SC)结构如下:
CREATE TABLE `Student` (`Sno` varchar(20) NOT NULL,`Sname` varchar(10) DEFAULT NULL,`Ssex` varchar(2) DEFAULT NULL,`Sage` int(3) DEFAULT NULL,`Sdept` varchar(10) DEFAULT NULL,PRIMARY KEY (`Sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `Course` (`Cno` varchar(10) NOT NULL,`Cname` varchar(20) DEFAULT NULL,`Cpno` varchar(10) DEFAULT NULL,`Ccredit` int(3) DEFAULT NULL,PRIMARY KEY (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `SC` (`Sno` varchar(20) NOT NULL,`Cno` varchar(10) NOT NULL,`Grade` int(3) DEFAULT NULL,PRIMARY KEY (`Sno`,`Cno`),KEY `Cno` (`Cno`),CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`Sno`) REFERENCES `student` (`Sno`),CONSTRAINT `sc_ibfk_2` FOREIGN KEY (`Cno`) REFERENCES `course` (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表样例
Student
表:
Course
表:
SC
表:
输出样例:
视图V_average_grade
输出:
create view V_average_grade
as
select Student.Sdept ,SC.Sno,Student.Sname,avg(SC.Grade) Average_grade
from Studentjoin SC on SC.Sno=Student.Snogroup by Student.Sdept,SC.Sno,Student.Sname
having avg(SC.Grade)>80
10-33 创建视图查找不及格学生
现有一个学生数据库,内包含学生表(Student)、课程表(Course)和选修表(SC)。
每学期末,教务处要安排课程补考或者重修,因此需要统计本学期课程考试不合格的学生、课程、成绩。假设选修表中课程成绩小于60的同学都需要补考。请你设计一个视图V_FailedCourseStudent,统计数据库中课程成绩小于60的学生。
提示:请使用CREATE VIEW语句作答,并请注意数据表名、列名大小写。
表结构:
学生表(Student)、课程表(Course)和选修表(SC)结构如下:
CREATE TABLE `Student` (`Sno` varchar(20) NOT NULL,`Sname` varchar(10) DEFAULT NULL,`Ssex` varchar(2) DEFAULT NULL,`Sage` int(3) DEFAULT NULL,`Sdept` varchar(10) DEFAULT NULL,PRIMARY KEY (`Sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `Course` (`Cno` varchar(10) NOT NULL,`Cname` varchar(20) DEFAULT NULL,`Cpno` varchar(10) DEFAULT NULL,`Ccredit` int(3) DEFAULT NULL,PRIMARY KEY (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `SC` (`Sno` varchar(20) NOT NULL,`Cno` varchar(10) NOT NULL,`Grade` int(3) DEFAULT NULL,PRIMARY KEY (`Sno`,`Cno`),KEY `Cno` (`Cno`),CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`Sno`) REFERENCES `student` (`Sno`),CONSTRAINT `sc_ibfk_2` FOREIGN KEY (`Cno`) REFERENCES `course` (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
表样例
Student
表:
Course
表:
SC
表:
输出样例:
视图V_FailedCourseStudent
输出:
create view V_FailedCourseStudent
as
select Student.Sdept,SC.Sno,Student.Sname,Course.Cname, SC.Grade
from Student
join SC on Student.Sno=SC.Sno
join Course on Course.Cno = SC.Cno
where Grade<60;
10-34 创建分组统计视图。
创建每个专业学生修课信息的视图PerView,包括每个专业的专业名称、修课的学生人数、平均成绩。
表结构:
create table Student(sno char(8) primary key,sname varchar(10) not null,gender char(2) check(gender='男' or gender='女'),birthdate date,major varchar(20) default '软件工程');create table SC( scid int auto_increment primary key,sno char(8) references Student(sno),cno char(10) references Course(cno),tno char(15) references Teacher(tno),grade int check(grade>=0 and grade<=100),gpoint decimal(2,1), memo text(100) );
表样例
Student
表:
sno | sname | gender | birthdate | major |
---|---|---|---|---|
21012101 | 李勇 | 男 | 2005-10-20 | 计算机科学 |
21012102 | 刘晨 | 男 | 2006-5-5 | 计算机科学 |
21012103 | 王晓敏 | 女 | 2005-10-6 | 计算机科学 |
21021101 | 李佳睿 | 男 | 2006-3-30 | 软件工程 |
21021102 | 吴宾 | 男 | 2005-9-21 | 软件工程 |
21021103 | 张海 | 男 | 2005-10-20 | 软件工程 |
21031101 | 钱晓萍 | 女 | 2006-6-1 | 网络工程 |
21031102 | 王大力 | 男 | 2005-11-15 | 网络工程 |
21041101 | 于洋 | 男 | 2006-3-15 | 数据科学 |
21041102 | 郭霖 | 男 | 2006-3-2 | 数据科学 |
SC
表:
scid | sno | cno | tno | grade | gpoint | memo |
---|---|---|---|---|---|---|
null | 21012101 | c01 | t200306m12132 | 90 | null | null |
null | 21012101 | c02 | t200703m12218 | 86 | null | null |
null | 21012101 | c03 | t200703m12218 | null | null | 缺考 |
null | 21012102 | c02 | t200703m12218 | 78 | null | null |
null | 21012102 | c03 | t200703m12218 | 66 | null | null |
null | 21021102 | c01 | t200306m12132 | 82 | null | null |
null | 21021102 | c02 | t200608f12205 | 75 | null | null |
null | 21021102 | c03 | t200306m12132 | null | null | 缓考 |
null | 21021102 | c05 | t201803f12405 | 50 | null | null |
null | 21021103 | c02 | t200703m12218 | 68 | null | null |
null | 21021103 | c04 | t201208m12308 | 92 | null | null |
null | 21031101 | c01 | t200306m12132 | 80 | null | null |
null | 21031101 | c02 | t200608f12205 | 95 | null | null |
null | 21041102 | c02 | t200608f12205 | 56 | null | null |
null | 21041102 | c05 | t201803f12405 | 88 | null | null |
输出样例:
PerView
视图:
create view PerView as
selectStudent.major as 专业名,count(distinct Student.sno) as 修课人数,avg(SC.grade) as 平均成绩
from Student
join SC on SC.sno=Student.sno
where SC.grade is not null
group by Student.major
10-35 从视图PerView中查询数据。
从上题中创建的视图PerView中查询平均成绩超过75分的专业有哪些。
PerView视图结构:
Create view PerView(专业名, 修课人数, 平均成绩)
AS Select major, count(distinct sc.sno), avg(grade) from student join sc on student.sno=sc.sno group by major;
PerView视图数据样例
PerView
视图:
专业名 | 修课人数 | 平均成绩 |
---|---|---|
数据科学 | 1 | 72.0 |
网络工程 | 1 | 87.5 |
计算机科学 | 2 | 80.0 |
软件工程 | 2 | 73.4 |
输出样例:
专业名 | 平均成绩 |
---|---|
网络工程 | 87.5 |
计算机科学 | 80.0 |
select 专业名,平均成绩
from PerView
where 平均成绩>75
10-36 创建带表达式的视图StuView
已知学生表Student
,创建学生信息的视图StuView
,包括学生学号、姓名和年龄,在视图中的列名分别为No,Name和Age。
表结构:
create table Student(
sno char(8) primary key,
sname varchar(10) not null,
gender char(2) check(gender='男' or gender='女'),
birthdate date,
major varchar(20) default '软件工程');
表样例
Student
表:
输出样例:
注意:年龄字段会随年份不同而变化,这里只是针对当前时间点得到的情况
create view StuView as
select sno as No,sname as Name,year(getdate())-year(birthdate) as Age
from Student