记录一些日常的mysql常用的使用, 方便随用随查。

一、表结构

1.1 查看表结构

  • 方式1: 可以查看建表语句,完整的表结构。
show create table table_name;
  • 方式2:可以比较好的筛选自己要查的表信息,方便整理表结构文档。
# 查询表所有列信息
select *
from information_schema.columns
where table_schema = 'db' #表所在数据库
and table_name = 'tablename' ; #你要查的表 # 查询需要的信息
select
column_name, column_type, column_comment,is_nullable
from information_schema.columns
where table_schema = 'o2o_monitor' #表所在数据库
and table_name = 'dws_o2o_overdue_stat' ; #你要查的表

1.2 表操作

1.2.1 表重命名

Rename table table_old to table_new
OR
alter table table_old Rename to table_new

1.2.2 修改表字段,包括名称、类型、备注等

# 增加字段
alter table table_name add column_new bigint(20) DEFAULT NULL COMMENT '备注' After somecolumn; # 修改字段
alter table competitor_goods change column_old column_new bigint(20) DEFAULT NULL COMMENT '备注';

1.2.3 复制表结构

create table table_new like table_old;

1.2.4 索引

# 删除索引
ALTER TABLE table_name drop index appid_idx # 添加索引
ALTER TABLE table_name ADD INDEX appid_idx (apply_id)

二、SQL使用

2.1 sql执行顺序:

SQL Select语句完整的执行顺序:

(8)  SELECT
(6) SUM(), AVG(),COUNT()
(9) DISTINCT <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(7) HAVING <having_condition>
(10) UNION <other select results>
(11) ORDER BY <order_by_condition>
(12) LIMIT <limit_number>
  1. from子句组装来自不同数据源的数据;

    2-3 on join 多表关联;
  2. where子句基于指定的条件对记录行进行筛选;
  3. group by子句将数据划分为多个分组;
  4. 使用聚集函数进行计算;
  5. 使用having子句筛选分组;

    8-9 计算所有的表达式select distinct等;
  6. 其他数据结果 合并
  7. 使用order by对结果集进行排序。
  8. 使用LIMIT对结果限制输出数据量。

查询关键字执行顺序:

FROM -> ON -> JOIN -> WHERE -> GROUP BY -> 聚合操作 ->HAVING -> SELECT -> DISTINCT -> UNION -> ORDER BY -> LIMIT

2.2 更新记录update

2.2.1 更新记录建议事务操作

select *  from order where order_id=1231540

-- 事务开始
BEGIN -- 更新
update order
set order_date = date_sub(order_date, interval 9 day)
where order_id=1231540 -- 校验
select * from order where order_id=1231540 -- 错误回滚
ROLLBACK -- 正确提交
COMMIT

2.2.2 关联表更新

要更新的数据不能直接找到,需要做表关联才能找到

update order o
(left) join user u
on o.user_id = u.id
set o.order_date = date_sub(o.order_date, interval 9 day)
where u.user_name='张三'

最新文章

  1. OS X EI Capitan安装refind时出现Could not set boot device property: 0xe00002bc
  2. app状态监听广播
  3. 2015 ACM/ICPC Asia Regional Beijing Online
  4. Alt.js的入门
  5. Linux 下C++编写
  6. vc2005 编译ACE-6.2.0
  7. Java hashCode 和 equals()
  8. HDU4666 Hyperspace(曼哈顿)
  9. [置顶] 遇到难题(bug)的解决方法心得
  10. SQL--存储过程+触发器 对比!
  11. 暑假OI规划
  12. vue.js权威指南 PDF
  13. Apache Linux下Apache安装步骤
  14. 带阴影的圆形 QLabel
  15. 20155317 王新玮 2016-2017-2 《Java程序设计》第6周学习总结
  16. MATLAB 的unique函数——数组矩阵的唯一值
  17. REST Client
  18. Mongodb 笔记04 特殊索引和集合、聚合、应用程序设计
  19. 【1】Kali Linux的安装及配置
  20. 显示锁(ReentranLock)

热门文章

  1. 微服务理论之三:RPC框架原理
  2. 杂项:zabbix(WEB界面的提供分布式系统监视以及网络监视功能)
  3. Guice 学习
  4. mybatis---demo1--(1-n)----bai
  5. Could not get lock /var/lib/dpkg/lock - open 解决方法
  6. php学习笔记-可变变量
  7. 如何设置 Windows 默认命令行窗口大小和缓冲区大小
  8. window.parent ,window.top,window.self 详解及parent和opener的区别
  9. 会话临时表 ORA-14452
  10. 【mysql-索引+存储过程+函数+触发器-更新。。。】