条件查询
逻辑与或非:
模糊查询
like 表示模糊查询
选项:
- % 表示任意多个字符,如%广,搜索有广的字段
- _ 表示一个字符
- rlike 可以匹配正则
- in 包含在里面的
- 如果匹配%本身,那么则需要使用%%
between查询
null值判断
查询空值语句:is null
排序选择
聚合函数
聚合函数主要是为了快速得到结果 常用函数列表:
- count 统计行数
- max 计算最大值
- min 计算最小值
- sum 求和
- avg 求平均数
数学函数:
- ceiling,向上取整
- mod函数,取模
- round 函数,四舍五入到最近的整数
字符串函数:
- substr(string,start,length) 函数,截取字符串,start从1开始
- left(str,len),返回字符串str的最左面的len个字符
- right(str,len),返回字符串的最右面的len个字符
分组查询
- group by 字段,以该字段作为分组依据来分组
分组之后不能使用where做条件过滤,需要使用having函数 where 与 having 的区别: where 用在from 之后的条件过滤 having 用在分组之后的条件过滤
limit分页
如果数据量很大的话,一次性将所有数据查询出来,不仅不方便查看而且耗费传输带宽,那么就可以使用分页功能 如: 1.select * from students limit start,count;→start从第几条数据开始,count表示获取几条数据
连接查询
内连接查询
查询的结果为两个表匹配到的数据,两个表都能匹配上的数据将返回给结果集,否则返回控制 格式:
select 信息 from 第一个表 inner join 第二个表 on 条件;
其中条件为两个表相关联的地方,如 b1.id = b2.id
左右连接
查询的结果为两个表匹配到的数据,右表特有的数据,对于坐标中不存在的数据使用null填充 格式:
select 信息 from 第一个表 right/left join 第二个表 on 条件 ;
其中条件为两个表相关联的地方,如 b1.id = b2.id,若是右连接,如果b2有的数据,b1没有,则填充b1的行为null,反之亦然
全连接
虽然MySQL本身并不支持 full join(全连接),但可以通过union,和union all 来实现 格式:
select 信息1 from 表一 union/union all select 信息2 from 表2;
注意:union 对于两个表中的重复信息,只会选择一个显示,而union all 会显示所有信息,效率也是union all更高
子查询
在一个select 语句中嵌入另外一个select语句,嵌入的这个select语句就是子查询语句,子查询是辅助主查询的,充当数据源,或者充当条件。子查询是一条独立的语句,即使单独拿出来子查询也是可以正常执行的 子查询分为:
- 标量子查询:标量子查询是指子查询返回的是单一值的标量,如一个数字或一个字符串,也是子查询中最简单的返回形式
- 列级子查询:子查询返回的是一列(或一列多行)的数据,称之为列级子查询
- 行级子查询:子查询返回的是一行(或一行多列)的数据,称之为行级子查询
- 表级子查询:子查询返回的是一个表,该表可以充当数据源
子查询常用的四个关键字: - in,判断某一表达式的值是否在子查询的结果中,如果在则返回
- all,对于子查询返回列中的所有值,如果比较结果为true,则返回true
- any、some,对于子查询返回的列中的任一数值,如果比较结果为true,则返回true
保存查询结果
命令:insert into 表名 (列1,列2) select … ;,可以将查询到的结果直接保存到表中
如:将student 的数据选择插入temp_table中:
mysql> insert into temp_table select b1.id,b1.id,b1.姓名,b1.class_id,b1.年龄 from student as b1;
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> select * from temp_table;
+----+--------+-----------+------------+---------+
| id | stu_id | stu_name | class_name | stu_age |
+----+--------+-----------+------------+---------+
| 1 | 1 | 张三 | 1 | 22 |
| 2 | 2 | 李四 | 2 | 21 |
| 3 | 3 | 王五 | 2 | 23 |
| 4 | 4 | 赵六 | 2 | 24 |
| 5 | 5 | 欧阳七 | 3 | 21 |
+----+--------+-----------+------------+---------+
5 rows in set (0.00 sec)
|