第1关:null值的判断
任务要求
第一题 查询借阅(borrow)数据表中没有归还的记录的所有字段的值。 当还书日期(hsrq)为null值,表示图书尚未归还。
use library;
#代码开始
SELECT * FROM borrow WHERE hsrq IS NULL;
#代码结束
第2关:between and和in运算
任务要求
第一题 查询高于图书的售价(sj)大于等于10并且小于等于20的的图书的条形码(txm)、书名(sm)和售价(sj)。 使用between and 第二题 查询图书的出版社(cbs)不是上海古籍出版社且不是中华书局的图书的条形码(txm)、书名(sm)和出版社(cbs)。 使用in
use library
#代码开始
#答案一
SELECT txm, sm, sj FROM book WHERE sj BETWEEN 10 AND 20;
#答案二
SELECT txm, sm, cbs FROM book WHERE cbs NOT IN ('上海古籍出版社', '中华书局');
#代码结束
第3关:like运算符
任务要求
第一问 查询图书的书名(sm)中包含诗的图书的条形码(txm)、书名(sm) 第二问 查询图书的书名(sm)中以诗开头的图书的条形码(txm)、书名(sm) 使用like
use library;
#代码开始
#答案1
SELECT txm, sm FROM book WHERE sm LIKE '%诗%';
#答案2
SELECT txm, sm FROM book WHERE sm LIKE '诗%';
#代码结束
第4关:逻辑运算符
任务要求
第一问 查询读者(reader)数据表中所有男性(xb)身份(sf)是研究生的记录的所有字段的信息 第二问 查询读者(reader)数据表中所有男性(xb)身份(sf)是研究生和工作人员的所有字段的信息
use library;
#代码开始
#答案1
SELECT * FROM reader WHERE xb='男' AND sf='研究生';
#答案2
SELECT * FROM reader WHERE xb='男' AND sf IN ('研究生', '工作人员');
#代码结束
视图
第1关:建立基于单表的视图,在视图中插入、删除和修改记录
任务描述
本关任务: 第一题 建立视图ckyg,查询gzry数据表中部门bm为仓库的员工的所有字段的信息 第二题 在视图ckyg中,插入gyh雇员号为019,姓名gyxm为李盛,部门bm为仓库的数据。 第三题 在视图ckyg中,删除姓名为赵国庆的数据 第四题 在视图ckyg中,将王文武的电话改为13319660678
use sale;
#代码开始
#题目1
CREATE VIEW ckyg AS
SELECT * FROM gzry
WHERE bm='仓库';
#题目2
INSERT INTO ckyg(gyh, gyxm, bm) VALUES('019', '李盛', '仓库');
#题目3
DELETE FROM ckyg WHERE gyxm = '赵国庆';
#题目4
UPDATE ckyg
SET dh = '13319660678'
WHERE gyxm = '王文武';
#代码结束
select * from gzry;
第2关:根据多个数据表建立视图
任务要求
打开sale数据库 建立xsdxx视图,包含销售单号xsdh、雇员号gyh、雇员姓名gyxm、会员号hyh、会员姓名name、销售日期xsrq、实际付款sjfk字段。
use sale;
#代码开始
create view xsdxx as select xsd.xsdh,xsd.gyh,gzry.gyxm,xsd.hyh,gk.name,xsd.xsrq,xsd.sjfk
from xsd
left join gzry on gzry.gyh=xsd.gyh
left join gk on gk.hyh=xsd.hyh;
#代码结束
select * from xsdxx;
第3关:根据视图建立视图
任务描述
任务: 根据xsdxx视图建立视图
为了完成本关任务,你需要掌握: 第一题: 根据xsdxx视图建立视图xsdhytj,显示会员号hyh,姓名name和实际付款sjfk的合计金额(命名为hjje) 按合计金额的降序排列
第二题: 根据xsdxx视图建立视图xsdgytj,显示雇员号gyh,姓名xm和实际付款sjfk的合计金额(命名为hjje) 按合计金额的降序排列
use sale
#代码开始
#第一题
CREATE VIEW hytjcx AS
SELECT hyh, name, SUM(sjfk) AS hjje
FROM xsdxx
GROUP BY hyh, name
ORDER BY hjje DESC;
#第二题
CREATE VIEW gytjcx AS
SELECT gyh, gyxm, SUM(sjfk) AS hjje
FROM xsdxx
GROUP BY gyh
ORDER BY hjje DESC;
#代码结束
select * from hytjcx;
select * from gytjcx;
第4关:更新视图
任务要求
在视图xsdxx中,将工作人员gyxm王强的销售日期xsrq2015-6-3的会员名name刘海东的订单的实际付款sjfk设置为800 观察视图xsdgytj和xsdhytj的变化
use sale;
#代码开始
UPDATE xsdxx
SET sjfk = 800
WHERE gyxm = '王强' AND xsrq = '2015-6-3' AND name = '刘海东';
#代码结束
select * from xsdhytj;
select * from xsdgytj;