本题目要求编写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
作者 白彦辉
单位 赤峰学院
题干:
没有被购买过的商品信息。
提示:请使用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.png
输出样例:
答案:
select gid,gname,price,stock
from good
where gid not in(
select gid
from recorder
)
本题目要求编写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;
分数 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
作者 浙大城院数据库课程组
单位 浙大城市学院
本题目要求编写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
作者 浙大城院数据库课程组
单位 浙大城市学院
本题目要求编写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表数据.PNG
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.png
good.png
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