mysql 心法口诀复习

开始打鸡血了

  • 语法顺序
select distinct 字段1,字段1,字段3 
from 库.左表
连接类型  join 库.右表 
on 条件
where 条件 
group by 分组条件
having 过滤 
order by 排序字段1,排序字段2
limit n;

  • 执行顺序
1. from  先找左表
2. on 	 筛选过滤
3. join  左右表根据连接类型形成新数据
4. where 过滤数据
5. group by 分组() [没有group by 整体算作一组]
6. having 分组过滤
7. select 执行select
8. distinct去重形成新数据
9  order by 数据排序 
10.limit 限制查询数据条数
  • group by 使用的聚合函数
max()  	最大

min() 	最小

count()	统计

avg() 	平均

sum() 	求和

group_concat() 分组后查看组内所有成员

select 分组字段,group_concat(表字段) from 表 group by 分组字段

  • 设置group by 的 global sql_mode为严格分组模式
set global sql_mode="ONLY_FULL_GROUP_BY"; 

设置后 select 的字段只能取分组字段

select 分组字段 from table group by 分组字段

  • order by排序
order by默认为升序(asc)排序   
   
降序排序(desc)

order by 字段1,字段2 

先按照字段1排序,字段1相同按照字段2排序

  • limit 限制查询条数和分页

【查询 n 条  limit n】

	用法示例:查询工资最高的员工信息
	
	select * from employ order by salary desc limit 1

【分页 limit n,m】
	n--页码		m--每页条数
	
	符合分页的sql 格式为:
	select * from table limit (n-1)*m,m 
	
	如每页十条数据
	第一页 select * from table limit 0,10
	第二页 select * from table limit 10,10
	...
	...
	...
  • 查看某一列外建被别的表引用
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE  WHERE REFERENCED_TABLE_NAME='表名'
  • 在现有字段基础上添加其他字符
UPDATE `us_stock_name` SET STOCKID=CONCAT('US',STOCKID) WHERE 条件
这个代表在所有STOCKID前加US,如果更新前STOCKID=BABA 更新后的STOCKID=USBABA
  • only_full_group_by错误
详细错误可能如下:
which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
在mysql配置文件【ubuntu中位置/etc/mysql/mysql.conf.d/mysqld.cnf】添加配置
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重启数据库【service mysql stop    service mysql start】

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值