《SQL必知必会(第5版)》挑战题笔记 | 所用DBMS为Mysql,mysql workbench安装
文章目录
- 一、安装
- step1:mysql安装
- step2:mysql workbench安装
- 二、下载随书资料
- 三、代码实战练习
- 2.2 检索单个列
- 四、MySQL知识点回顾
- 五、挑战题
- 2.9挑战题
- 1、SELECT...FROM...;
- 2、DISTINCT
- 3、注释语句的使用
- 3.6 挑战题
- 1、`ORDER BY` `DESC`
- 2、
- 3、
- 4、纠错
- 4.4 挑战题
- 1、`WHERE`过滤数据
- 2、
- 3、`检索出所有不同的`用`DISTINCT`
- 4、`BETWEEN AND`
- 5.5 挑战题
- 1、
- 2、
- 3、`AND`
- 6.4 挑战题
- 1、`LIKE`
- 2、`NOT LIKE`
- 3、`...LIKE AND ...LIKE`
- 4、 检索按先后顺序同时出现指定字符串的内容`'%toy%carrots%'`
- 7.5 挑战题
- 1、
- 2、`... AS`
- 8
下述为笔者作为SQL小白,在学习《SQL必知必会(第5版)》时的学习笔记以及做题记录。知识在于实践,多敲代码,多练习,掌握得就会很快!
一、安装
SQL(Structed Query Language, 结构化查询语言),是一种与数据库通信的 语言。
step1:mysql安装
DBMS(Database Mangement System, 数据库管理系统),MySQL是众多DBMS中的一种。
MySQL是关系型数据库(RDBMs),以行(row)和列(column)的形式存储数据。
E-R模型的三个主要概念:
① 实体集class对应 数据库中的一个表table;
实体instance对应 数据库表中的一行row;② 属性attribute 对应 数据库表中的
一列column,也称字段③ 联系集
一对一关系:主外键关联
一对多关系:
多对多关系:必须创建第三个表,称为联接表,将多对多关系划分为两个一对多关系,将两个表的主键都插在第三个表中。所以:第三个表至少两个字段。
Redis是非关系型数据库(非RDBMs),以键(key)值(value)对的形式存储数据。
- key作为唯一的标识符,查找速度快。
- 缺点:无法使用条件过滤,需要遍历所有的键,会消耗大量的计算。
- 典型使用场景:内存缓存。
NoSQL是对SQL的补充。在实际开发中,当不需要完整的关系型数据库时,使用性能更高、成本更低的非关系型数据库更明智。eg:日志收集、排行榜、定时器等。
MySQL安装教程:mysql8.0.25安装配置教程(windows 64位)最详细
MySQL从5.7版本直接跳跃发布了8.0版本。
step2:mysql workbench安装
workbench安装教程。
二、下载随书资料
资料下载网站:http://forta.com/books/0135182794。下滑页面,下载mysql对应的资料。
”关于资料的下载、用mysql workbench导入过程”请看Medium论坛的文章:Sams 每天 10 分钟自学 SQL:为成功做好准备。
三、代码实战练习
本节跟随书中的示例代码进行了运行,只试验了了一小部分。
SQL在Windows下不区分大小写,这是由Windows本身的特性决定的。
2.2 检索单个列
SELECT prod_name FROM Products;

多条SQL语句必须以分号(;)分隔。
SELECT prod_id, prod_name,prod_price
From Products;

四、MySQL知识点回顾
参见笔者的文章:MySQL知识点汇总 |《SQL必知必会》《康师傅MySQL从入门到高级》笔记
五、挑战题
答案地址:https://forta.com/books/0135182794/challenges/
2.9挑战题
1、SELECT…FROM…;
SELECT cust_id
FROM Customers;

2、DISTINCT
SELECT DISTINCT prod_id
FROM OrderItems;

3、注释语句的使用
SELECT *
FROM OrderItems;

-- SELECT *
-- FROM OrderItems;
SELECT cust_id
FROM Customers;

3.6 挑战题
1、ORDER BY DESC
SELECT cust_names
FROM Customers
ORDER BY cust_names DESC;
2、
SELECT cust_id,order_num
FROM Orders
ORDER BY cust_id,order_date DESC;

3、
DESC:由多到少、由高到低
SELECT quantity,item_price
FROM OrderItems
ORDER BY quantity DESC,item_price DESC;

4、纠错
错误代码:
SELECT vend_name,
FROM Vendors
ORDER vend_name DESC;
vend_name后多了一个,。注意:逗号只能用在一个语句的结束,用于分开多个columns。
order后面缺失BY
4.4 挑战题
1、WHERE过滤数据
SELECT prod_id,prod_name
FROM Products
WHERE prod_price = 9.49;

2、
SELECT prod_id,prod_name
FROM Products
WHERE prod_price >= 9;

3、检索出所有不同的用DISTINCT
SELECT DISTINCT order_num
FROM OrderItems
WHERE order_num >= 100;

4、BETWEEN AND
SELECT prod_name,prod_price
FROM Products
WHERE prod_price BETWEEN 3 AND 6
ORDER BY prod_price;

5.5 挑战题
1、
SELECT vend_name
FROM Vendors
WHERE vend_city='USA' AND vend_state='CA';

2、
SELECT order_num,prod_id,quantity
FROM OrderItems
WHERE prod_id IN ('BR01','BR02','BR03') AND quantity >= 100;

3、AND
SELECT prod_name,prod_price
FROM Products
WHERE prod_price >= 3 AND prod_price <= 6
ORDER BY prod_price;

6.4 挑战题
1、LIKE
SELECT prod_name,prod_desc
FROM Products
WHERE prod_desc LIKE '%toy%'

2、NOT LIKE
SELECT prod_name,prod_desc
FROM Products
WHERE NOT prod_desc LIKE '%toy%'
ORDER BY prod_name;

3、...LIKE AND ...LIKE
SELECT prod_name,prod_desc
FROM Products
WHERE prod_desc LIKE '%toy%' AND prod_desc LIKE '%CARROTS%';

4、 检索按先后顺序同时出现指定字符串的内容'%toy%carrots%'
SELECT prod_name,prod_desc
FROM Products
WHERE prod_desc LIKE '%toy%carrots%';

7.5 挑战题
1、
①按原始名称进行排序
SELECT vend_id,vend_name AS vname,vend_address AS vaddress,vend_city AS vcity
FROM Vendors
ORDER BY vend_name;
②按新名字进行排序
SELECT vend_id,vend_name AS vname,vend_address AS vaddress,vend_city AS vcity
FROM Vendors
-- ORDER BY vend_name;
ORDER BY vname;
结果一样:

2、... AS
SELECT prod_id,prod_price,prod_price * 0.9 AS sale_price
FROM Products;

8
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

