文章目录
- 前言
- 一、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聚合,分组可以理解为分表.筛选出来的表都可以叫做表.