目录
学习目标:
- 掌握DQL数据查询语言:简单、条件、排序、聚合、分类、去重,LIMIT查询
- 熟悉表之间的3种关联关系:一对多、多对多、一对一
- 熟悉外键的概念及了解外键约束的设置和特点
- 掌握多表的关联查询操作:内连接、左连接、右连接、全连接
SQL-DQL数据查询语言
SQL查询五子句:
SELETE * FROM 数据表 ①where条件子句
②group by分组子句
③having条件子句
④order by排序子句
⑤limit限制查询子句
注意:五子句如果有多个同时出现在一条SQL查询中,必须严格按照以上的顺序,否则直接报错。
1、简单查询(能够使用SELECT进行简单查询操作)
# 查询表中的全部数据(所有行所有列的数据)
SELETE * FROM 表名 ;
# 查询表中的指定列数据(所有行指定列的数据)
SELETE 列1,列2,... FROM 表名 ;
# 查询表中的指定列数数据并给结果起列名
SELETE 列1 AS 别名1,列2 AS 别名2,... FROM 表名 ;
# 查询表中的指定列数据(所有行指定列的数据)
SELETE 表名.列1,表名.列2,... FROM 表名 ;
# 查询表中的指定列数据并给表起别名
SELETE 表别名.列1,表别名.列2,... FROM 表名 AS 表别名 ;
- 查询goods商品表中的全部商品
select * from goods;
- 查询goods表中指定列的数据 => id,name,price
select id,name,price from goods;
- 表别名(后期多表查询时使用较多),实际应用中,as可以省略不写
select * from goods as g;
select g.id,g.name,g.price from goods g;
- 字段别名
select id ,name,price from goods;
select id as g_id,name as g_name,price as g_price from goods;
select id as `编号`,name as `商品名称`,price as `商品价格` from goods;
注意:AS起别名时,如果别名和关键字相同,则要在别名两侧添加反引号``,别名尽量不要和关键字相同。
2、条件查询(WHERE条件子句)
SELETE * FROM 表名 WHERE 条件 ;
查询每一行数据时,对WHERE后的条件进行判断,满足条件的数据才会显示,否则忽略
基本语法 => select * from 数据表 where 字段 = 字段值 ;
查询goods商品表中id=1的记录
select * from goods where id = 1;
查询所有自营商品
select * from goods where is_self = '自营';
3、条件运算法简介
SELETE * FROM 表名 WHERE 条件 ;
条件运算符:
- 比较运算符:=、>、<、>=、<=、!=、<> (不等于)
- 逻辑运算符:AND(并且)、OR(或者)、NOT(非,取反)
- LIKE模糊查询:%(表示任意多个字符串)、_(表示任意一个字符)
- 范围查询:BETWEEN ... AND ... 表示在连续一个范围内查询、IN 表示在一个非连续的范围内查询
- 空值判断:IS NULL 和 IS NOT NULL
1、比较运算符(用来对两个数据进行比较,比较结果是成立True或不成立False):
- 例1:查询分类id = 2的所有商品信息
- 例2:查询评分值大于等于9.5的所有商品
- 例3:查询分类id不等于1的所有商品信息
select * from goods where category_id = 2;
select * from goods where score >= 9.5;
select * from goods where id != 1;
2、逻辑运算符(连接多个条件,表示多个条件之间的与、或、非关系):
- 例1:查询自营商品 且 价格大于2000的所有商品信息
- 例2:查询商品价格在3000到5000之间的所有商品
- 例3:查询商品分类为1或3的所有商品信息
- 例4:查询商品分类不为1的所有商品信息
select * from goods where is_self ='自营' and price >= 2000;
select * from goods where price >= 3000 and price <= 5000;
select * from goods where category_id = 1 or category_id = 3;
select * from goods where not(category_id = 1);
3、LIKE模糊查询(模糊查询,查询含有某些内容的数据):
- 例1:查询所有商品中,商品名以'华为'开头的所有商品信息
- 例2:查询所有商品中,商品名以'粉底液'结尾的所有商品信息
- 例3:查询所有商品中,商品名包含'小'字的所有商品信息
- 例4:查询所有商品中,商品名为4个字符的所有商品信息(1个_代表一个字符)
select * from goods where name like '华为%';
select * from goods where name like '%粉底液';
select * from goods where name like '%小%';
select * from goods where name like '____';
4、范围查询(查询指定范围内的数据):
- 例1:查询评分在9.50 - 9.70之间的商品信息
- 例2:查询评分在9、9.5的商品信息(in 等于判断时,尽量不要判断小数)
select * from goods where score between 9.50 and 9.70;
select * from goods where score in (9,9.5);
5、空值判断(筛选出值为NULL的数据):
- 例1:查询score字段为null商品记录
- 例2:查询score字段不为null商品记录
select * from goods where score is null;
select * from goods where score is not null;