Mysql语法入门与进阶
时间:2021-09-13
本文章向大家介绍Mysql语法入门与进阶,主要包括Mysql语法入门与进阶使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. Mysql语法分类
-
DDL:数据定义语言(Data Define Language):create(创建),alter(修改),drop(删除),TRUNCATE(截断),RENAME(重命名);
-
DML:select(查询),delete(删除),update(更新),insert(新增);
-
DCL:grant(添加权限),revoke(回收权限);
2. 数据表操作
2.1 修改表名
alter table 旧表名 rename to 新表名;
2.2 增加一列
alter table 表名 add 新列名 字段类型 [字段选项];
2.3 删除一列
alter table 表名 drop 字段名;
2.4 修改列类型
alter table 表名 modify 字段名 新的字段类型 [新的字段选项];
2.5 修改列名称
alter table 表名 change 原字段名 新字段名 新的字段类型 [新的字段选项];
3. 数据操作
SQL完整语法:select * from user where group by having order by limit
3.1 ifnull
注意:只要有null参与的运算,结果一定为null
select name,(sal+comm)*12 as yearsql from emp;
# 解决办法:ifnull()空处理函数
select name,(sal+ifnull(comm,0))*12 as yearsql from emp;
3.2 count(id)与count(*)与count(1)
- count(*):对行的数据进行计算,包含NULL
- count(1):和上述一样
- count(column):对特定列进行计算,不包含NULL
3.3 where后面不能用聚合函数
4. 关于group by,having
分组函数:按照某个字段或某些字段进行分组。
having:对分组之后的数据进行再次过滤。
如:找出每个工作岗位的最高薪资
1. select XXXXXX from emp group by job; # 先分组
2. select max(sql) from emp group by job; # 查询出来的只要最高工资,不知道最高工资属于谁
3. select ename,max(sal),job from emp group by job; # 虽然查出来了人,但是数据有问题,ename是从该job分组里面取的一个人的enma,不一定恰好就是最高工资那个人的名字
4. 结论:当一条sql语句有group by的时候。select 后面只能跟分组字段,或聚合函数(max,avg..) 否则查询出来的结果毫无意义0
如:找出每个部门的最高薪资,要求只显示薪资大于3000的数据【能用where代替having的情况】
# 效率低
select max(sal),detptno from emp group by deptno having max(sal) > 3000;
# 效率高
select max(sql),deptno from emp where sal > 3000 group by deptno;
如:找出每个部门的平均薪资,要求只显示薪资大于3000的数据【不能用where代替having的情况】
select deptno,avg(sql) from emp group by deptno having avg(sal) > 3000
原文地址:https://www.cnblogs.com/itlihao/p/15262558.html
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 如何将DB2数据库转换成Oracle数据库,这一篇告诉你
- MySQL 8.0 安装部署3个注意事项
- 打卡群刷题总结0802——反转链表 II
- 打卡群刷题总结0801——解码方法
- 动手写简单的嵌入式操作系统二
- C++核心准则E.6:使用RAII防止资源泄露
- C++核心准则E.12: 当不可能或不愿意通过抛出异常退出函数时使用noexcept
- C++核心准则E.13: 直接拥有一个对象所有权时永远不要抛出异常
- C++核心准则E.14:使用根据目的设计的用户定制类型异常(非内置类型)
- C++核心准则E.16:析构函数,内存释放和swap操作永远不能失败
- Eclipse配合GDB和jlinkGDBServer仿真调试STM32
- 单片机程序构架
- 打卡群刷题总结0730——格雷编码
- 常用的vim配置,_vimrc文件
- 算法篇:链表之删除和为0的元素