MySQL(四)MySQL Select语句
1. MySQL Select语句
1.1. 基本查询语句
mysql>select 列名 from 表名;(基本结构查询某一列)
mysql>select 列名1,列名2 from 表名;(查询所有列多列)
mysql>select * from 表名;(*代表查询所有列)
查询时可以给列设定别名通过as 关键字,别名可以是汉字,使用汉字需要加双引号
从查询结果中删除重复行 distinct; select distinct 列名 from 表名
mysql>select 列名 from 表名 where 条件表达式;(只查询符合表达式的数据)
例如:select goods_name from goods where goods_type=‘服装’;
(1)基本查询结构
mysql>select 列名 from 表名;(基本结构查询某一列)
mysql>select 列名1,列名2 from 表名;(查询所有列多列)
mysql>select * from 表名;(*代表查询所有列)
(2)列设定别名
查询时可以给列设定别名通过as 关键字,别名可以是汉字,使用汉字需要加双引号(为了防止有特殊字符)
mysql> select goods_name as "商品名称",goods_price from goods;
从查询结果中删除重复行 distinct; select distinct 列名 from 表名
mysql>select 列名 from 表名 where 条件表达式;(只查询符合表达式的数据)
例如:select goods_name from goods where goods_type=‘服装’;
(3)删除查询重复行
从查询结果中删除重复行 distinct; select distinct 列名 from 表名
mysql>select 列名 from 表名 where 条件表达式;(只查询符合表达式的数据)
例如:mysql> select goods_name from goods where goods_price=12;
1.2. 查询基础-基本运算符
(1)查询过程中可以使用算数运算符,查询价格2 goods_price2,获取价格两倍的数据(也可以使用括号改变计算优先级(1+2)*3)
(2)where语句后面可以使用比较运算符,例如查询价格大于100的商品 where goods_price>100;(大于等于或者小于等于的时候不等号在左,等号在右面,>=)。
另外比较常用的还有like模糊查询(若前面有字为 %like),in多个条件查询
(3)where语句后面可以使用逻辑运算符,and和or关键字。对多个表达式进行组合例如(where goods_price>100 and goods_type=’服装’,where goods_price>100 or goods_price<20)
1.3. 查询基础-聚合查询
1.3.1. 聚合函数
(1)count计算表中的记录数;
select count(列名) from 表名
(2)sum计算表中数值列的数据合计值;
select sum(列名) from 表名
(3)avg计算数值列平均值;
select avg(列名) from 表名
(4)max筛选出列中数据最大值;
select max(列名) from 表名
(5)min筛选出列中数据最小值;
select min(列名) from 表名
(6)sum和avg只针对数值列,max和min可以对任意列使用,例如日期或者字符列;
(7)聚合函数也可以使用distinct删除重复值
select count(distinct 列名) from 表名
1.3.2. 分组查询
对查询出的列数据进行分组:group by语句,语句结构:
select 列名1,列名2,.. from 表名 group by 列名1,列名2,...
语句书写顺序:
select-from-group by
执行顺序
from-group by-select
1.3.3. 数据过滤
使用having子句对分组后的数据过滤:having结构:
select 列名1,列名2,... from 表名 group by 列名1,列名2,... having 分组结果对应条件
1.4. 排序查询
(1)对查询结果进行排序,order by语句,语句结构:
select 列名1,列名2,...from 表名order by 排序基准列1,排序基准列1,...
未指定order by的时候select语句的顺序是未知的
(2)指定升序和降序:desc关键字降序排列,asc是升序,不写时默认升宁例句:
order by 排序基准列1 asc,排序基准列2 desc
1.5. 多表查询
(1)inner join(内连接)将左表的所有数据分别与右表的每条数据进行连接组合,返回结果为同时满足左右表联接条件的数据。
(2)left join(左外连接)返回的结果除内连接的数据外,还有左表中不符合条件的数据,并在右表的相应列中填上null值。
(3)right join(右外连接)返回的结果除了内连接的数据外,还有右表中不符合条件的数据,并在左表相应的列中填上null值。
(4)full join(全连接)返回的结果除了内连接的数据外,还有两个妻中不符合条件的数据,并在左表或者右表的相应列中填上null值。(MYSQL不支持,很少使用)