所有表的意义

表名 字段名 意义
customers cust_id 客户编号
cust_name 客户名称
cust_address 客户地址
cust_city 客户所在城市
cust_state 客户所在州
cust_zip 客户邮政编码
cust_country 客户所在国家
cust_contact 客户联系人
cust_email 客户电子邮件地址
orderitems order_num 订单编号
order_item 订单商品编号
prod_id 商品编号
quantity 商品数量
item_price 商品单价
orders order_num 订单编号
order_date 下单日期
cust_id 客户编号
products prod_id 商品编号
vend_id 供应商编号
prod_name 商品名称
prod_price 商品价格
prod_desc 商品描述
vendors vend_id 供应商编号
vend_name 供应商名称
vend_address 供应商地址
vend_city 供应商所在城市
vend_state 供应商所在州
vend_zip 供应商邮编
vend_country 供应商所在国家
productnotes note_id 备注编号
prod_id 商品编号
note_date 备注日期
note_text 备注内容

第三章 查看信息

代码行 代码解释
use mysql_learn; 使用 mysql_learn 数据库
show DATABASES; 显示所有数据库
show TABLES; 显示所有表格
show COLUMNS FROM user; 显示 user 表格中所有的列名和属性
show status; 显示 MySQL 服务器状态
show create DATABASE mysql_learn; 显示 mysql_learn 数据库的创建语句
show create table user; 显示 user 表格的创建语句

第四章 简单检索

SELECT语句 功能 注释
select prod_name from products; 检索单列 检索products表中的prod_name列
select prod_id, prod_name, prod_price from products; 检索多列 检索products表中的prod_id、prod_name、prod_price三列
select * from products; 检索所有列 检索products表中的所有列
select distinct vend_id from products; 检索列,去重 检索products表中的vend_id列,并去重
select * from products limit 5; 限制行数为5 从products表中检索前5行
select * from products limit 1, 4; 限制行数为4,从第二行开始检索 从products表中第二行开始,检索4行
select * from products limit 4 OFFSET 1; 限制行数为4,从第二行开始检索 从products表中第二行开始,检索4行

<aside> 💡 查询时使用通配符会降低性能

</aside>

第五章 排序

查询语句 说明
select * from products ORDER BY prod_price; 简单排序,按产品价格升序排列
select * from products ORDER BY prod_price, prod_name; 多条件排序,先按产品价格升序排序,再按产品名称升序排序
select * from products ORDER BY prod_price desc; 降序排序,按产品价格降序排列
select * from products ORDER BY prod_price desc LIMIT 1; 找最大值,价格最高的产品

第六章 过滤数据

查询代码 解释说明
select * from products where prod_price = 2.50; 查询所有价格等于2.50的产品
select * from products where prod_name = 'fuses'; 查询所有产品名称为"fuses"的产品
select * from products where prod_price < 10; 查询所有价格低于10的产品
select * from products where vend_id != 1003; 查询所有供应商ID不为1003的产品
select * from products where prod_price BETWEEN 5 and 10; 查询所有价格在5和10之间的产品
select * from customers where cust_email is null; 查询所有cust_email为空值的顾客

<aside> 💡 因此,在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有NULL的行。

</aside>

第七章 高级过滤

代码 注释
select * from products where vend_id = 1003 and prod_price <= 10; AND 组合子句
select * from products where vend_id = 1002 or vend_id = 1003 OR 组合子句
select * from products where vend_id = 1002 or vend_id = 1003 and prod_price > 10; SQL优先处理AND操作符,所以会出现age<10的数据
select * from products where (vend_id = 1002 or vend_id = 1003) and prod_price > 10; 使用括号查询,修复Bug
select * from products where vend_id in (1002, 1003) 使用IN查询
select * from products where vend_id not in (1002, 1003) 使用NOT操作

第八章 通配符查询

查询语句 查询条件
select * from products where prod_name like "jet%"; 查询以jet开头的数据
select * from products where prod_name like "%anvil%"; 查询包含anvil的数据,默认不区分大小写
select * from products where prod_name like "_ ton anvil"; 下划线(_)通配符,匹配一个字符

第九章 正则表达式匹配(了解)

代码 注释
select prod_name from products where prod_name regexp '1000'; 查询products表中prod_name列中包含1000的数据
select prod_name from products where prod_name like '%1000%'; 查询products表中prod_name列中包含1000的数据,必须要用通配符
select prod_name from products where prod_name regexp '1000 2000';
select prod_name from products where prod_name regexp '1 2
select prod_name from products where prod_name regexp '[123] ton'; 查询products表中prod_name列中包含1 ton、2 ton、3 ton的数据
select prod_name from products where prod_name regexp '[^5] ton'; 查询products表中prod_name列中包含非5开头的ton的数据
select prod_name from products where prod_name regexp '[1-3]000'; 查询products表中prod_name列中以1、2、3开头,后面跟着000的数据
select prod_name from products where prod_name regexp '\\\\.'; 查询products表中prod_name列中包含.字符的数据,需要用两个\来转义
select prod_name from products where prod_name regexp '[:digit:]000'; 查询products表中prod_name列中包含数字开头(如1 000)的数据
select prod_name from products where prod_name regexp '[[:digit:]]{4}'; 查询products表中prod_name列中包含4个数字在一起的数据
select prod_name from products where prod_name regexp '[0-9][0-9][0-9][0-9]'; 查询products表中prod_name列中包含4个数字在一起的数据,等同于上一句
select prod_name from products where prod_name regexp '\\([0-9] sticks?\\)'; 查询products表中prod_name列中包含"数字 stick"或"数字 sticks"的数据
select prod_name from products where prod_name regexp '^[0-9]'; 查询products表中prod_name列中以数字开头的数据

第十章 计算字段

代码 注释
select Concat(vend_name, ' (', vend_country, ')') from vendors; 数据拼接
select Concat(vend_name, ' (', vend_country, ')') as vend_title from vendors; as 关键字
select prod_id, quantity, item_price, quantity * item_price as expanded_price from orderitems; 计算总价