条件查询
使用where限定语句,查询集只返回条件为True的内容。
select * from students where id>13;
逻辑运算符
and or not
select * from students where hometown='深圳' and gender=0;
模糊查询
like rlike(可以匹配正则) %表示任意多个字符 _表示一个字符
如果匹配本身使用%%
between and 表示一段区间
null值判断
直接用hometown=null并不能得到结果,在mysql中null表示空。 如果要查询为null值的应该是使用is select * from students where hometown is null;
排序
order by 字段 [desc/asc]
desc 表示降序(从大到小排序)
asc 默认排序规则,表示升序(从小到大排序)
select * from students order by id desc; #按照id从大到小排序
聚合函数
count 统计行数 max计算最大值 min计算最小值 数据函数sum 求和 avg求平均数
分组查询
group by 字段 # 以xx字段作为分组依据分组
select gender,count(*) from students group by gender;
where与having的区别:where用户from之后的条件过滤 having用在分组之后的条件过滤,两个功能是一样的,只是作用的位置不一样
limit分页
分页的原因:如果数据量很大的话,一次性将所有数据查询出来,不仅不方便查看而且耗费传输带宽。那么就使用到了分页功能,一次只查询一页的数据,如:
select * from students limit start,count;
select * from students limit 0,3;
连接查询
内连接查询:查询的结果为两个表匹配到的数据,两个表都能匹配上的数据将返回给结果集 select * from 表1 inner join 表2 on 表1.列=表2.列;
右连接查询:查询的结果为两个表匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充 select * from 表1 right join 表2 on 表1.列=表2.列;
左连接查询:查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充 select * from 表1 left join 表2 on 表1.列=表2.列
子查询
在一个select语句中嵌入了另外一个select语句,嵌入的这个select语句就是子查询语句。 子查询是辅助主查询的,充当数据源,或者充当条件。子查询是一条独立的语句,即使单独拿出子查询也是可以正常执行的