mysql数据的查寻练习

10-1 4-3 查询速度低于任何PC的便携式电脑

本题目要求编写SQL语句,
查询速度低于任何PC的便携式电脑。

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

CREATE TABLE pc
( model CHAR(20) NOT NULL, --型号
speed DECIMAL(6,2), --速度
ram INT, --内存
hd DECIMAL(6,2), --硬盘容量
cd CHAR(4), --光驱
price INT, --价钱
PRIMARY KEY(model)
);
CREATE TABLE laptop
( model CHAR(20) NOT NULL, --型号
speed DECIMAL(6,2), --速度
ram INT, --内存
hd DECIMAL(6,2), --硬盘容量
screen DECIMAL(6,2), --屏幕大小
price INT, --价钱
PRIMARY KEY(model)
);

表样例

pc表:
model speed ram hd cd price
1001 133.00 16 1.60 6X 1595
1002 120.00 16 1.60 6X 1399
1003 166.00 24 2.50 6X 1899
1004 166.00 32 2.50 8X 1999
1008 180.00 32 2.00 8X 3699
1009 200.00 32 2.50 8X 2599

laptop表:
model speed ram hd screen price
2001 100.00 20 1.10 9.50 1999
2002 117.00 12 0.75 11.30 2499
2004 133.00 16 1.10 11.20 3499
输出样例:
model
2001
2002

select model
from laptop
where speed <all(
    select speed
    from pc
)

10-2 没有被购买过的商品信息。

分数 10
作者 白彦辉
单位 赤峰学院
题干:

没有被购买过的商品信息。

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

定义表结构的SQL语句如下:

CREATE TABLE good(

gid CHAR(4) PRIMARY KEY,

gname VARCHAR(40) NOT NULL,

price FLOAT(10,2),

stock INT

);

CREATE TABLE recorder(

id INT PRIMARY KEY AUTO_INCREMENT,

cid CHAR(4),

gid CHAR(4),

quantity INT NOT NULL,

sale_date DATETIME,

CONSTRAINT recorder_gid_fk FOREIGN KEY (gid) REFERENCES good(gid)

);
表样例

上述表结构对应的表样例:

good表:
mysql数据的查寻练习_第1张图片

good.png

recorder表:
mysql数据的查寻练习_第2张图片

recorder.png
输出样例:
在这里插入图片描述

输出样例:

答案:

select gid,gname,price,stock
from good
where gid not in(
    select gid
    from recorder
)

10-3 查询至少选修2门课程的女生姓名

本题目要求编写SQL语句,
检索出students表、sc表中至少选修2门课程的女生姓名。

提示:请使用join连接作答。
表结构:

请在这里写定义表结构的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)
) ;

CREATE TABLE sc (
sno char(7) ,
cno char(7) ,
score decimal(4,1),
point decimal(2,1),
PRIMARY KEY (sno,cno)
) ;

表样例

请在这里给出上述表结构对应的表样例。例如

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
1711102 董洁 17物流1 女 1999-02-17 上海 330203199902170017 经管学院 15900001188

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
输出样例:

请在这里给出输出样例。例如:
sname
李嘉欣

select sname
from students join sc
on students.sno=sc.sno
where students.ssex='女'
group by sname
having count(*)>2;

10-5 查询没有选课的学生学号和姓名

分数 5
作者 sy
单位 宁波财经学院

本题目要求编写SQL语句,
检索出students表和sc表中没有选课的学生学号和姓名。

提示:请使用连接查询作答。
表结构:

请在这里写定义表结构的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)
) ;

CREATE TABLE sc (
sno char(7) ,
cno char(7) ,
score decimal(4,1),
point decimal(2,1),
PRIMARY KEY (sno,cno)
) ;

表样例

请在这里给出上述表结构对应的表样例。例如

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
1711102 董洁 17物流1 女 1999-02-17 上海 330203199902170017 经管学院 15900001188

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
输出样例:

请在这里给出输出样例。例如:
sno sname
1711102 董洁

答案:

select sno,sname
from students 
where not exists
       (select *
       from sc
       where students.sno=sc.sno);

10-3 删除没有员工的仓库

分数 10
作者 浙大城院数据库课程组
单位 浙大城市学院

本题目要求编写SQL语句,
删除没有员工的仓库。
表结构:

CREATE TABLE warehouse (
Wno varchar(10), --仓库编号
City varchar(20), --所在城市
Size int(11), --面积
);
CREATE TABLE employee (
Eid varchar(10), --职工编号
EName varchar(30), --职工姓名
Wno varchar(10), --所在仓库
Salary int(11) --职工工资
);

表样例

warehouse表:
Wno City Size
A01 杭州 15000
A02 建德 5000
B01 宁波 1200
B02 奉化 7500
C01 温州 10000
C02 乐清 8000

employee表:
Eid EName Wno Salary
0010 张三 A01 3600
0011 刘勇 A02 2700
0012 张立 B01 8500
0021 刘靖 C02 2500
输出样例:
Wno City Size
A01 杭州 15000
A02 建德 5000
B01 宁波 1200
C02 乐清 8000

delete
from warehouse
where not exists
         (select Wno
         from employee
         where warehouse.Wno=employee.Wno);

10-2 给所有产品名中含’螺母’的订单的数量增加40%

分数 10
作者 浙大城院数据库课程组
单位 浙大城市学院

本题目要求编写SQL语句,
给所有产品名中含’螺母’的订单的数量增加40%。
表结构:

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 product (
Pid varchar(20), --商品编号
PName varchar(50), --商品名称
Weight decimal(10, 3) --重量
);

表样例

orders表:
OrdNo Sid Eid Pid Price QTY ordDate
1 S01 0011 P01 11 23 2022-02-13
2 S02 0012 P03 12 25 2022-02-14
3 S03 0012 P05 60 50 2022-02-14

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 P03 12 25 2022-02-14
3 S03 0012 P05 60 70 2022-02-14

update orders
set QTY=QTY*(1+0.4)
where Pid in(select Pid
            from product
            where PName like '%螺母%');

注意:此题要用到模糊查询。

10-4 创建视图,包含拥有属性值个数大于1的商品信息
分数 10
作者 冰冰
单位 广东东软学院

本题目要求编写SQL语句,
结合sh_goods表和sh_goods_attr_value表创建视图view_goods_2,包含拥有属性值的数量大于1个的商品对应的商品id和name。
表结构:

CREATE TABLE sh_goods (
id INT PRIMARY KEY, --商品id
category_id INT NOT NULL DEFAULT 0 , – 商品分类id
name VARCHAR(120) NOT NULL, --商品名称
keyword VARCHAR(255) NOT NULL, – 关键词编号
content TEXT NOT NULL , --商品详情
price DECIMAL(10, 2) NOT NULL DEFAULT 0 , --价格
stock INT NOT NULL DEFAULT 0, – 库存
score DECIMAL(3, 2) NOT NULL DEFAULT 0 , – 用户评分
comment_count INT NOT NULL DEFAULT 0 – 评论数量
) ;

CREATE TABLE sh_goods_attr_value (
id INT PRIMARY KEY ,-- 属性值id,
goods_id INT NOT NULL DEFAULT 0 , --商品id
attr_id INT NOT NULL DEFAULT 0 ,-- 属性id
attr_value VARCHAR(80) NOT NULL --属性值
);

表样例

sh_goods表:
mysql数据的查寻练习_第3张图片

sh_goods表数据.PNG

sh_goods_attr_value表:
mysql数据的查寻练习_第4张图片

sh_goods_attr_value表数据.PNG
视图样例:
在这里插入图片描述

答案:

CREATE VIEW view_goods_2 AS
Select id,name 
From sh_goods 
Where id In (Select goods_id 
             From sh_goods_attr_value 
             Group By goods_id 
             Having Count(id)>1);

10-5 创建一个每种货物的销售数量的视图good_total,要求是在2010年04月01日到2010年7月31日之间销售的货品,字段包括(gid,total)。
分数 10
作者 白彦辉
单位 赤峰学院
题干:

创建一个每种货物的销售数量的视图good_total,要求是在2010年04月01日到2010年7月31日之间销售的货品,字段包括(gid,total)。
表结构:

定义表结构的SQL语句如下:

CREATE TABLE customer(

cid CHAR(4) PRIMARY KEY,

cname VARCHAR(20) NOT NULL,

sex CHAR(1) DEFAULT ‘女’,

phone CHAR(11) UNIQUE

);

CREATE TABLE good(

gid CHAR(4) PRIMARY KEY,

gname VARCHAR(40) NOT NULL,

price FLOAT(10,2),

stock INT

);

CREATE TABLE sale_recorder(

id INT PRIMARY KEY AUTO_INCREMENT,

cid CHAR(4),

gid CHAR(4),

quantity INT NOT NULL,

sale_date DATETIME,

CONSTRAINT salrecorder_cid_fk FOREIGN KEY (cid) REFERENCES customer(cid),

CONSTRAINT salrecorder_gid_fk FOREIGN KEY (gid) REFERENCES good(gid)

);
表样例

customer表:
mysql数据的查寻练习_第5张图片

customer.png

good表:
mysql数据的查寻练习_第6张图片

good.png

sale_recorder表:
mysql数据的查寻练习_第7张图片

sale_recorder.png
输出样例:
mysql数据的查寻练习_第8张图片

12-2.png

答案:

CREATE VIEW good_total  AS 
SELECT distinct gid,sum(quantity) as total
FROM sale_recorder
WHERE sale_date between'2010-04-01 00:00:00' AND '2010-07-31 00:00:00'
group by gid

你可能感兴趣的:(笔记,mysql,数据库,database)