下述为笔者作为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:为成功做好准备

三、代码实战练习

本节跟随书中的示例代码进行了运行,只试验了了一小部分。
SQLWindows下不区分大小写,这是由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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐