MySQL的数据库查询语句详细解说(部分地方有图,简单地方略过)

**

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…
在这里插入图片描述在这里插入图片描述

– 自关联
– 自关联表,实现了多张表合并在一起(涉及省份地区,公司部门关系等)
– 自关联查询:把一张原表,起别名进行连表查询

– 子查询
– 把一个查询语句返回的结果,传入到 另外一个查询语句中去
– 注:子查询的“性能”比自关联查询或者连表查询性能更低

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值