文章目录
- 前言
- 一、insert
- 1.单行插入
- 2.多行插入
- 3.插入更新/替换
- 二、select
- 1.全列查询
- 2.指定列插入
- 3.列别名
- 4. 表达式计算
- 5.去重
- 6.where条件查询
- 7.排序
- 8.limit分页显示
- 三、update
- 四、delete
- 五、插入查询结果
- 六、聚合函数
- 六、聚合分组
- 1.格式
- 2.where和having的区别
前言
一、insert
1.单行插入
指定列单行插入
可以省略into关键字
全列单行插入
2.多行插入
指定列多行插入
全列多行插入
3.插入更新/替换
如果插入时唯一键或者主键冲突,将冲突数据更新,更新的同时不插入. 可用select row_count();命令查询受影响的行数.
插入时,如果冲突就将冲突数据删除,插入新的数据
二、select
1.全列查询
2.指定列插入
3.列别名
可以带as也可以省略
4. 表达式计算
5.去重
6.where条件查询
比较运算符,null不能直接参与比较,<=>和<>是null安全运算符,可以比较null.
英语不及格的同学及英语成绩 ( < 60 )
语文成绩在 [80, 90] 分的同学及语文成绩
数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
姓孙的同学 及 孙某同学
语文成绩好于英语成绩的同学
总分在 200 分以下的同学
这里的对于总分起的别名不能用在条件语句中,因为,sql的语句执行顺序先执行from语句,在执行条件语句,最后执行列选项.
语文成绩 > 80 并且不姓孙的同学
孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80
NULL 的查询
7.排序
asc(ascending)升序,desc(dscending)降序
查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
查询同学及总分,由高到低
order by语句可以使用别名是因为语句执行顺序是先有条件,通过条件筛选数据,有数据之后再排序.
查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示
8.limit分页显示
limit 3 offset 0其中3代表显示几行,0代表从第几行开始显示
limit 2,3其中2代表其实位置,3代表显示几行,表的小标是从0开始的.
三、update
将孙悟空同学的数学成绩变更为 80 分,如果不加where语句,会对全列的值更新.
将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
将所有同学的语文成绩更新为原来的 2 倍
四、delete
删除指定行的数据
删除整表数据,delete是对数据操作,不对表结构操作,所以表信息不被重置.truncate会重置表信息.
截断表,truncate不对数据 操作,而是对表操作,所以比delete快,但是truncate不被记录在sql日志中,无法回滚.
五、插入查询结果
删除表中的的重复复记录,重复的数据只能有一份
六、聚合函数
统计班级共有多少同学
统计数学成绩总分
统计平均总分
返回英语最高分
返回 > 70 分以上的数学最低分
六、聚合分组
1.格式
select column1,column2,聚合统计 from tablename group by column1,column2;
显示每个部门的平均工资和最高工资
显示每个部门每个岗位的平均工资和最低工资
显示平均工资低于2000的部门以及平均工资.
2.where和having的区别
where和having的区别在于筛选的阶段不同.
比如:显示小于2000的员工中各部门工资最高的工资
select deptno,max(sal) as 最高 from emp where sal<2000 group by deptno;
语句执行顺序是先执行from语句->where筛选->group by分组->max聚合,分组可以理解为分表.筛选出来的表都可以叫做表.