《SQL必知必会(第5版)》挑战题笔记 | 所用DBMS为Mysql,mysql workbench安装
mysql安装教程:mysql8.0.25安装配置教程(windows 64位)最详细workbench安装教程。资料下载网站:http://forta.com/books/0135182794。下滑页面,下载对应的资料。”关于资料的下载、用mysql workbench导入过程”请看论坛的文章:Sams 每天 10 分钟自学 SQL:为成功做好准备。本节跟随书中的示例代码进行了运行,只试验了了一
下述为笔者作为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安装
二、下载随书资料
资料下载网站: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
更多推荐
所有评论(0)