select * 列名字 from 表 where 条件
1、查询所有商品
两种方法:
一是把所有的列都列出来
二是 用 * 代替
②列别名
可以用汉字,在实际的开发中,一般用英文
在对有些列进行相加相减的时候,起别名比较方便
4、去掉重复值:distinct
第一条语句是删除某一列重复的信息
第二条语句是删除所有列都重复的信息
select distinct price from product;
select distinct * from product;
5、查询结果是表达式(运算查询):将所有商品的加价10元进行显示
这个你如果不加new_price 的话,那个表名字就是price+10;
<=> 完全等于,用于比较null值
regexp
比较运算符
• 运算符操作 条件查询
查询:
大于等于
在两个数据之间
① between ...and
②and
③&&
满足两个条件其中之一
①in 关键字
② or
③ ||
查询带有某个字的:like关键字
如:查询含有“鞋”字的所有商品
select * from product where pname like '%鞋%’; --%用来匹配任意字符
查询某一项为null,不能用等于null,因为null和任何数都不等,要用 is null
不是null ,要用 is not null
查询最大最小值,要使用相关函数
least()
greatest()
取反:~
0---->1
1---->0
计算机底层32位
• 排序查询:order by
第三个查询:由于是经过 去重的,不能选择某一列,要整表查询
1、查询商品的总条目
一般查询主键的条数
– 查询商品的总条数
select count (pid) from product;
select count (*) from product;
2、查询约束条件下的条目数
–查询价格大于200商品的总条数
select count(pid) from product where price > 200;
3、查询约束条件下的总和
–查询分类为‘c001’的所有商品的总和
select sum (price) from product where category_id = 'c001' ;
group by ,having
执行过程
注意: 分组之后,select 的后边只能写分组字段和聚合函数
这是因为,分组之后的数据是一组数据,不能用其中一行来表示其他的数据
•
having
语句注意:
1、分组之后对统计结果进行筛选的货必须使用having
,不能使用where
2、where
子句用来筛选from
子句中指定的操作所产生的行
3、group by
子句用来从分组where子句的输出
4、having
子句用来从分组的结果中筛选行
group by
后分组必须用having
limit
第一条是0,第n条是n—1
将一张表的数据导入到另一张表中
要求;
目标表必须存在
前面表的字段和后面表都存在,类型一致
1、简单查询
2、运算符操作
3、排序查询--order by asc (升序)| desc(降序)
4、聚合查询
5、分组查询
6、分页查询
• 基本查询DQL
2、运算符操作:
4、聚合查询-count sum max min avg
count(*) = count(1)
如果列中有null,不进行计算,当做不存在
分组之后是对每组进行查询:
eg:
--统计各个分类商品的个数
--注意:分组之后,select 的后边只能写分组字段和聚合函数
select category_id , count(pid) from product group by category_id;
5、分组查询-group by
6、分页显示-limit
查询product 表的前5 条记录
select * from product limit5;
#从第4 条开始显示,显示2条
select* from product limit3,5;
7、sql 的书写顺序:
select
category_id,count(pid) cnt
from
product
where
price >1000
group by
category_id
having
cnt > 4
order by
cnt
limit 1
;
8、SQL 的执行顺序
from
where
group by
count(pid)
having
select
orderby
limit