**
SELECT查询的完整格式 _ 不要被吓到 其实很简单 ! _ !
**
SELECT select_expr [,select_expr,…] [
FROM tb_name
[WHERE 条件判断]
[GROUP BY {col_name | postion} [ASC | DESC], …]
[HAVING WHERE 条件判断]
[ORDER BY {col_name|expr|postion} [ASC | DESC], …]
[ LIMIT {[offset,]rowcount | row_count OFFSET offset}]
]
完整的select语句
**
select distinct *
from 表名
where …
group by … having …
order by …
limit start,count
**
执行顺序为:实际使用中,只是语句中某些部分的组合,而不是全部
from 表名
where …
group by …
select distinct *
having …
order by …
limit start,count
– 查询
– 查询所有字段
– SELECT * FROM 表名
-- 查询指定字段
-- SELECT 列1,列2,... FROM 表名;
-- 使用 as 给字段起别名
-- SELECT 字段 as ... FROM 表名;
-- SELECT 表名.字段 as ... FROM 表名;
-- 通过 as 给表起别名
-- SELECT 表名.字段 as ... FROM 表名 as 别名;
-- 消除重复行
-- DISTINCT
– 条件查询
– 比较查询
– > < >= < = <>/!+
-- 逻辑查询
-- and or not
-- 模糊查询
-- LIKE % _
-- % 替换 0 个 或 多个
-- _ 替换1个
-- RLIKE 正则
-- 查询以周开始的姓名
-- SELECT name FROM students WHERE name RLIKE "^周.*";
-- 查询以周开始 伦结尾 的姓名
-- SELECT name FROM students WHERE name RLIKE "^周.*伦$";
-- 范围查询
-- in , between ... and ...
-- in(1,3,8) 表示在一个“非连续”的范围内
-- 即使in指定的范围不存在,也不会报错
-- between ... and ... 表示在一个“连续”的范围内
-- 如 查询编号是3至8的男生
-- select * from students where (id between 3 and 8) and gender=1;
-- not in
-- not between ... and ... 正确
-- not (between ... and ... ) 语法错误
-- 空判断
-- 注意:null 与 '' 是不同的
-- is null 或者 is not null
-- 类似python中 a = None (a指向空对象) 和 a = "" (a指向字符串为空白的对象) 两者不一样
– 排序 :为了方便查看数据,可以对数据进行排序
– 语法 : select * from 表名 order by 列1 asc|desc [,列2 asc|desc,…]
– 例1:查询未删除男生信息,按学号降序
– SELECT * FROM students where gender =1 and is_delete=0 ORDER BY studentNo desc;
– 例2:查询未删除学生信息,按名称升序
– SELECT * from students WHERE is_delete = 0 ORDER BY NAME asc ;
– 例3:显示所有的学生信息,先按照年龄从大–>小排序,当年龄相同时 按照身高从高–>矮排序
– SELECT * FROM students order by age desc , height desc ;
– 聚合函数 :为了快速得到统计数据,经常会用到如下5个聚合函数
– 分组 : 分组的意义—和聚合函数一起使用,否则没有任何意义
– 思想 : 先分组—再聚合 注意 : GROUP_CONCAT(字段名,符号等)
– count() max() min() avg() round(a,b) 注: 查询时,聚合函数不能跟字段一起进行查询,—报错
– SELECT name , count(*) from students WHERE name like “李%” — 语法错误
– group by 字段 having 条件 (大多数情况结合 聚合函数作为having的条件)
– group by + group_concat(如name,"",age," " ,id)
– select gender,group_concat(name,"",age) from students group by gender;
– 分页 limit(n,m) n : 表示从第n+1条记录开始,之后的m条记录
– 连接查询: 内连接 inner join …on… 外连接 : left/right join …on…
– 自关联
– 自关联表,实现了多张表合并在一起(涉及省份地区,公司部门关系等)
– 自关联查询:把一张原表,起别名进行连表查询
– 子查询
– 把一个查询语句返回的结果,传入到 另外一个查询语句中去
– 注:子查询的“性能”比自关联查询或者连表查询性能更低