当前位置: 首页 > news >正文

PTA数据库编程练习合集

10-1 查询重量在[40,65]之间的产品信息

本题目要求编写SQL语句,
检索出product表中所有符合40 <= Weight <= 65的记录。

提示:请使用SELECT语句作答。

表结构:

CREATE TABLE `product` (`Pid` varchar(20),   --商品编号`PName` varchar(50), --商品名称`Weight` decimal(10, 3)    --重量
);

表样例

product表:

PidPNameWeight
P01M6螺栓30
P02M8螺栓40
P03M16螺栓140
P04螺帽30
P05螺母45
P06垫片10
P07铰链70
P21螺钉3

输出样例:

PidPNameWeight
P02M8螺栓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表:

EidENameWnoSalary
0010张三A013600
0011刘勇A012700
0012张立A018500
0021刘靖A022500
0022王强A025600
0023李军5000
0031王林3500

输出样例:

EidENameWnoSalary
0011刘勇A012700
0021刘靖A022500
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表:

EidENameWnoSalary
0010张三A013600
0011刘勇A012700
0012张立A018500
0021刘靖A022500
0022王强A025600
0023李军5000
0031王林3500

输出样例:

EidENameWnoSalary
0012张立A018500
0010张三A013600
0011刘勇A012700

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

图1.png

输出样例:

Product

图2.png

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表:

WnoCitySize
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表:

OrdNoSidEidPidPriceQTYordDate
1S010011P0111232022-02-13
2S020012P0112252022-02-14
3S030012P0360552022-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表:

OrdNoSidEidPidPriceQTYordDate
1S010011P0111232022-02-13
2S020012P0112252022-02-14
3S030012P0360552022-02-14

supplier表:

SidSNameCity
S01东风机械厂武汉
S02天鹰紧固件厂温州
S05长城机电杭州

输出样例:

b.SidSNameCity,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

图1.png

输出样例:

Product

图2.png

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表:

EidENameWnoSalary
0010张三A013600
0011刘勇A012700
0012张立A018500
0021刘靖A022500
0022王强A025600
0023李军5000
0031王林3500

warehouse表:

WnoCitySize
A01杭州15000
A02建德5000
B01宁波1200
B02奉化7500
C01温州10000
C02乐清8000
D01绍兴11000

输出样例:

EidENameWnoCity
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表:

PidPNameWeight
P01M6螺栓30
P02M8螺栓40
P03M16螺栓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表:

snosnameclassssexbdaybplaceIDNumsdeptphone
1311104李嘉欣13英语11994-05-28山西太原330204199405281056人文学院15900002211
1311105苏有明13英语11995-04-16内蒙古包头330204199504162036人文学院15900002222
1711101赵薇17物流11999-02-11安徽合肥330203199902110925经管学院15900001177
1911201陈坤19信管21990-07-19山东烟台330204199007199604信息学院15911113388
1911203张三19物流11999-02-17上海330203199902170017经管学院15900001188

输出样例:

请在这里给出输出样例。例如:

students表:

snosnameclassssexbdaybplaceIDNumsdeptphone
1311104李嘉欣13英语11994-05-28山西太原330204199405281056人文学院15900002211
1311105苏有明13英语11995-04-16内蒙古包头330204199504162036人文学院15900002222
1711101赵薇17物流11999-02-11安徽合肥330203199902110925经管学院15900001177
1911201陈坤19信管21990-07-19山东烟台330204199007199604信息学院15911113388
1911203张三19物流11999-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表:

snocnoscorepoint
1311104000001153.00.0
1311104000002780.01.0
1311105000002784.01.0
1711101000005271.02.0
1711101000001151.00.0

course表:

cnocnamecpnoccredit
0000001数据库OCP考证NULL4
0000002C语言基础00000279
0000003Linux操作系统00000135
0000004C#程序设计00000026
0000011平板撑NULL2

输出样例:

请在这里给出输出样例。例如:

sc表:

snocnoscorepoint
1311104000001153.00.0
1311104000002780.01.0
1311105000002784.01.0
1711101000005271.02.0
17111010000011NULL0.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
    表结构

    course-1.png

    表数据
    insert course
    values ('20',NULL,'CS','数学建模','4','72','选修','50')

    course-2.png

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.JPG

输出样例:

插入一条学生记录后,stu表如下:

1.JPG

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表:

stu.JPG

sc表:

sc.JPG

输出样例:

例如:
修改女生成绩后的sc表如下:

u2b.JPG

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表:

stu1.JPG

sc表:

sc1.JPG

输出样例:

删除学生周强的所有数据信息后:

stu表:

stu2.JPG

sc表:

sc2.JPG

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表:

student.png

输出样例:

输出样例:

stu表:

3-3.png

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表:

PidPNameWeight
P01M6螺栓30
P02M8螺栓40
P03M16螺栓140
P04螺帽30
P05螺母45
P06垫片10
P07铰链70

orders表:

OrdNoSidEidPidPriceQTYordDate
1S010011P0111232022-02-13
2S020012P0512252022-02-14
3S030012P0360552022-02-14

输出样例:

PidPNameWeight
P01M6螺栓30
P03M16螺栓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表:

stu.JPG

输出样例:

请在这里给出输出样例。例如:

l23.JPG

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表:

stu.JPG

输出样例:

请在这里给出输出样例。例如:

l25.JPG

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表:

stu.JPG

输出样例:

请在这里给出输出样例。例如:

l26.JPG

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表:

sc.JPG

输出样例:

请在这里给出输出样例。例如:

l211.JPG

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表:

stu.JPG

cou表:

cou.JPG

sc表:

sc.JPG

输出样例:

请在这里给出输出样例。例如:

l212.JPG

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表:

stu.JPG

输出样例:

请在这里给出输出样例。例如:

l215.JPG

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表:

stu.JPG

sc表:

sc.JPG

输出样例:

请在这里给出输出样例。例如:

l221.JPG

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表:

image.png

输出样例:

请在这里给出输出样例。例如:

image.png

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表:

sc.JPG

输出样例:

请在这里给出输出样例。例如:

l217.JPG

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表:

stu.JPG

major表:

major.JPG

输出样例:

请在这里给出输出样例。例如:

midt01.JPG

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表:

stu.JPG

cou表:

cou.JPG

sc表:

sc.JPG

输出样例:

请在这里给出输出样例。例如:

l223.JPG

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表:

sc.JPG

输出样例:

请在这里给出输出样例。例如:

l218.JPG

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表:

major.JPG

stu表:

stu.JPG

sc表:

sc.JPG

输出样例:

请在这里给出输出样例。例如:

l29B.JPG

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表:

Student.PNG

Course表:

Course.PNG

SC表:

SC.PNG

输出样例:

视图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表:

Student2.png

Course表:

Course2.png

SC表:

SC.PNG

输出样例:

视图V_FailedCourseStudent输出:

QQ截图20220420145858.jpg

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表:

snosnamegenderbirthdatemajor
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表:

scidsnocnotnogradegpointmemo
null21012101c01t200306m1213290nullnull
null21012101c02t200703m1221886nullnull
null21012101c03t200703m12218nullnull缺考
null21012102c02t200703m1221878nullnull
null21012102c03t200703m1221866nullnull
null21021102c01t200306m1213282nullnull
null21021102c02t200608f1220575nullnull
null21021102c03t200306m12132nullnull缓考
null21021102c05t201803f1240550nullnull
null21021103c02t200703m1221868nullnull
null21021103c04t201208m1230892nullnull
null21031101c01t200306m1213280nullnull
null21031101c02t200608f1220595nullnull
null21041102c02t200608f1220556nullnull
null21041102c05t201803f1240588nullnull

输出样例:

PerView视图:

图片.png

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视图:

专业名修课人数平均成绩
数据科学172.0
网络工程187.5
计算机科学280.0
软件工程273.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表:

image.png

输出样例:

注意:年龄字段会随年份不同而变化,这里只是针对当前时间点得到的情况

image.png

create view StuView as 
select sno as No,sname as Name,year(getdate())-year(birthdate) as Age
from Student


http://www.mrgr.cn/news/57364.html

相关文章:

  • 408算法题leetcode--第39天
  • ctfshow-文件上传-151-161
  • deepinlinux v23安装pl2303的usb串口驱动
  • CMakeLists.txt 编写规则
  • 新手入门之初识maven
  • 关于通信设备中的告警相关知识
  • PostgreSQL(十三)pgcrypto 扩展实现 AES、PGP 加密,并自定义存储过程
  • 10.21-10.23
  • 偷懒总结篇|贪心算法|动态规划|单调栈|图论
  • iPhone图片/照片/视频复制到win10系统的简单方法 - 照片导出
  • R语言统计分析——置换检验3
  • CMOS 图像传感器:像素寻址与信号处理
  • 【ShuQiHere】如何在 Linux 上虚拟化 macOS Catalina
  • 生成式AI的新篇章:从快思维到慢思维
  • 人生是不断排毒的过程
  • Codeforces Round 881 (Div. 3)(A~F1题解)
  • Linux的调度算法
  • ★ Linux ★ 基础开发工具的使用(上)
  • STM32--JQ8900语音模块
  • 嘘,偷偷复制某客巴巴的少许文字……
  • keil新建工程HC32L176MATA
  • 基于Spring Boot+Vue的私人定制旅游系统(协同过滤算法、实时聊天)
  • 堆排序原理及代码
  • 关于使用 C# 处理水位数据多种格式的统一转换
  • input子系统的框架和重要数据结构详解
  • SpringBoot项目整合Mybatis-MySql数据库编程