题目:
查阅资料:
贴个链接:DQL、DML、DDL、DCL的概念与区别
# 1. 用DDL语言创建上述3个表
CREATE TABLE 商品
(商品号 CHAR(3) PRIMARY KEY,
商品名 CHAR(20) NOT NULL,
单价 DOUBLE PRECISION,
商品类别 CHAR(5),
供应商 CHAR(20)
);
CREATE TABLE 顾客
(顾客号 CHAR(3) PRIMARY KEY,
姓名 CHAR(10) NOT NULL,
住址 CHAR(20)
);
CREATE TABLE 购买
(顾客号 CHAR(3),
商品号 CHAR(3),
购买数量 INT,
PRIMARY KEY (顾客号,商品号)
);
# 2. 用DML往表中插入数据
INSERT
INTO 商品
VALUES
('M01','佳洁士',8.00,'牙膏','宝洁'),
('M02','高露洁',6.50,'牙膏','高露洁'),
('M03','皓乐齿',13.70,'牙刷','盛势达'),
('M04','李宁牙刷',5.50,'牙刷','李宁'),
('M05','舒适达',28.80,'牙膏','舒适达'),
('M06','金号',11.30,'毛巾','金号织业');
INSERT
INTO 顾客
VALUES
('C01','Dennis','海淀'),
('C02','John','朝阳'),
('C03','张三','新加坡'),
('C04','Robin','石家庄'),
('C05','李四','青岛'),
('C06','王五','沈阳');
INSERT
INTO 购买
VALUES
('C01','M01',13),
('C01','M05',12),
('C03','M04',27),
('C05','M02',40),
('C06','M06',0);
结果:
题目:
保留两位小数:
# 3. 将所有的“牙刷”商品单价下调10%
UPDATE 商品
SET 单价 = 单价*0.9
WHERE 商品类别 = '牙膏';
SELECT 商品号,商品名,ROUND(单价,2),商品类别,供应商
FROM 商品;
不能用百分数,会出错???
结果:
关于round函数,可以参考这篇:
Mysql 中 FORMAT、ROUND和TRUNCATE几个函数的区别
题目:
# 4. 将“李宁”供应商改为“Li Ning”
UPDATE 商品
SET 供应商 = 'Li Ning'
WHERE 供应商 = '李宁';
SELECT 商品号,商品名,ROUND(单价,2),商品类别,供应商
FROM 商品;
结果:
题目:
如果不同的人买相同的产品怎么求?
# 5. 删除所有卖出总数量少于20个的商品信息,不包括从没有卖出的商品
DELETE
FROM 商品
WHERE 商品号 IN (
SELECT 商品号
FROM 购买
WHERE 商品.商品号 = 购买.商品号 AND 购买数量 < 20 AND 购买数量 != 0
);
SELECT *
FROM 商品;
结果:
题目:
# 6. 删除没有购买记录的商品,提示:不是指购买数量为0
DELETE
FROM 商品
WHERE 商品号 NOT IN (
SELECT 商品号
FROM 购买
WHERE 购买数量 >= 0
);
SELECT *
FROM 商品;
结果:
题目:
# 7.创建包含顾客号,商品号,商品名称,单价,购买数量字段的视图
CREATE VIEW 顾客购买清单
AS
SELECT 顾客.顾客号,商品.商品号,商品名,单价,购买数量
FROM 顾客,商品,购买
WHERE 商品.商品号 = 购买.商品号 AND 顾客.顾客号 = 购买.顾客号;
结果: