– 使用数据库day02
USE day02;
sql简单查询语句:
使用关键字 select(查询) from(从) where(哪里)
格式一:查询指定的列
select 列名1,列名2... from 表名;
– 查询商品名称和商品价格的所有信息
SELECT pname,price FROM product;
格式二:查询所有列的数据
select 列出所有的列 from 表名;
select * from 表名;
注意:
工作很少用,查询的数据多,效率慢
SELECT pid,pname,price,category_id FROM product;
SELECT * FROM product;
格式三:过滤重复的数据
select distinct 字段1,字段2.. from 表名;
注意:
distinct关键字之后只有一个字段,那么就会过滤掉这个字段中重复的数据
distinct关键字之后如果有多个字段,那么多个字段必须同时满足才会过滤掉
– 查询商品价格,过滤掉重复的价格
SELECT DISTINCT price FROM product;
格式四:别名查询
1.给表起别名:多表查询时使用
select *|字段 from 表名 [as] 别名;
2.给表中的字段起别名
select 字段1 [as] 别名,...字段n [as] 别名 from 表名;
注意:
1.别名只是对查询的结果临时起一个名字,不会改变表中原有的名字
2.别名中如果有特殊符号或者空格,那么必须使用引号包裹起来
条件查询语句:
格式:
select 字段|* from 表名 [where 条件]
1.比较运算符
基本的比较运算符: >,<,>=,<=,=,<>(!=)
表示查询区间的: between...and 并且的关系,相当于 >= && <=
表示多个条件的: in(....) 或者关系 in(10,20) 10 || 20
表示为空的:is null
模糊查询:使用关键字like
%:多个任意字符
_:1个任意字符
2.逻辑运算符:
与: and &&
或: or ||
非: not !
使用 between...and 优化sql语句
注意:
1.小的值要写在前边,大的值写后边
2.可以对时间的区间进行查询 '2018-01-01' 到 '2018-09-14'
模糊查询:使用关键字like
%:多个任意字符
_:1个任意字符
*/
**排序查询语句:**对查询的结果进行排序
使用关键字: order by [ASC]|DESC
格式:
select *|字段 from 表名 [where 条件] order by 被排序字段 [ASC]|DESC;
ASC:升序,不写默认
DESC:降序
注意:
无论sql语句多么复杂,排序语句必须写在sql语句的末尾
/*
聚合查询语句:对某列的数据进行查询,结果返回一个单一的值,会忽略null值
- count:统计指定列不为NULL的记录行数;
- sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
- max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
- min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
- avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
格式:
select count(字段|*),sum(字段),max(字段),min(字段),avg(字段) from 表名;
/*
分组查询语句:
格式:
select 被分组的字段,(求和,平均值,个数,最大,最小) from 表名 [where 条件] group by 被分组的字段 [having 条件]
注意:被分组的字段,一般都写在select语句的后边,作为查询条件,方便查看结果
where:用于分组前进行条件过滤
having:用于分组后,对分组的数据进行条件过滤
– 按照商品类别分组,统计各个分组商品的个数,只查询每组商品价格大于200的商品
例子:
– 先where过滤,在分组,在统计
SELECT category_id,COUNT(*) FROM product WHERE price>200 GROUP BY category_id;
– 按照商品类别分组,统计各个分组商品的个数,且只显示统计个数等于3的信息
– 先where过滤,在分组,在统计,在having过滤
SELECT category_id,COUNT() FROM product GROUP BY category_id HAVING COUNT()=3;
分页查询语句(了解)
使用关键字:limit
格式:
只要前n条数据
select *|字段 from 表名 limit n;
分页查询
select *|字段 from 表名 limit m,n;
m:每页开始行的索引,变化的
n:每页显示的数量,不变的
注意:
数据库行的索引从0开始,列的索引从1开始
1对多关系
建表原则:从表使用主表的主键作为外键
添加外键约束:
格式:使用修改表结构,添加列
alter table 从表名 add [constraint 外键名称] foreign key(从表中的外键字段) references 主表名(主键);
作用:保证数据的准确性和完整性
主表中有的数据,从表可以有,可以没有
主表中没有的数据,从表中也不能有
删除主表中的数据,必须保证从表没有使用
*/
删除外键约束:使用修改表结构,删除列
alter table 从表名 drop foreign key 外键名称;
商品表和订单表的多对多关系
建表原则:创建一张中间表,使用两个主表的主键作为外键