MySQL:CRUD(二)_truncate table语法
目录
一、截断表
1、语法
二、插入查询
1、语法
三、聚合函数
1、常用函数
(1)COUTN
(2)SUM
(3)AVG
(4)MAX
(5)MIN
四、Group by分组查询
1、语法
五、having子句
六、内置函数
1、日期函数
2、字符串处理函数
3、数学函数
4、其他常用函数
一、截断表
1、语法
TRUNCATE [TABLE] 表名
TRUNCATE只能对整表操作,不能像DELETE一样针对部分数据 ,会重置AUTO_INCREMENT项(自增)
并且不对数据操作所以比DELETE更快,然而TRUNCATE在删除数据的时候,不经过真正的事物,所以无法回滚
我们先创建一个t_truncate表

我们现在来查看他的表结构,发现他此时的自增值为4。

如果这时我们对他进行截断表操作,我们就会发现在整个表的数据被删除的同时,他的自增值也会被置0.

而如果我们在进行数据的插入时他的自增值就会从1开始计数,所以他会显示2

二、插入查询
1、语法
INSERT INTO table_name [(column [, column ...])] SELECT ...
利用这种方式我们可以将旧表的值放到我们的新表中
我们先创建一个和旧表一样结构的新表

接下来我们用插入查询将值也放入到新表中


三、聚合函数
1、常用函数
(1)COUTN
① 统计sudents表中有多少记录
使用 * 做统计

使用常量做统计

但是在这里更加推荐使用 * 做统计。因为可能有的数据库并不支持常量
而以上两种都是对全列进行查询,如果我们相遇对单独列进行查询,我们就需要指定列了
② 统计有多少学生参加数学考试

当然我们还可以根据条件得到不同的个数
③ 统计英语成绩小于50分的学生个数

(2)SUM
① 统计所有学生数学成绩总分
注意:null不参与计算

但是要注意我们是不能统计非数值的列

(3)AVG
① 统计数学成绩的平均分
注意:null不参与计算

② 统计平均总分

(4)MAX
① 查询英语最高分

(5)MIN
① 查询数学成绩的最高分与英语成绩的最低分

② 查询>70分以上的数学最低分

四、Group by分组查询
GROUP BY子句的作用是通过一定的规则将一个数据集划分成若干个小的分组,然后针对若干个 分组进行数据处理,比如使用聚合函数对分组进行统计。
1、语法
SELECT {col_name | expr} ,... , aggregate_function (aggregate_expr) FROM table_references GROUP BY { col_name | expr }... [HAVING where_condition]
select 列 (聚合函数)(聚合函数传入的表达式) from 表名 group by 要分组的列
我们先来创建一个表:


那么接下来我们我们要对他进行分组,我们发现我们的id和姓名工资,都不能作为分组的选项,因为我们想要进行分组一定是要有重复项的,因此只有我们的角色可以作为分组依据。那么接下来我就进行分组

接下来我们就可以根据我们分组去处理一些问题
① 统计每个角色的人数

② 统计每个角色的平均工资,最高工资,最低工资

五、having子句
使用GROUP BY对结果进行分组处理之后,对分组的结果进行过滤时,不能使用 HAVING 子句,而要使用 HAVING 子句
当然对于为什么要这样还是有疑虑的,首先我们要直到SQL语句的执行顺序:from -> where -> group by -> having -> select -> order by
所以where字句是在分组前进行的,而having是在分组后进行的,因此where过滤的是分组前的结果,having过滤的是分组后的结果
那么接下来我们就使用一下这个having子句:
① 显示平均工资低于50000的人员及其平均工资

注意:
Having用于对分组结果的条件过滤 (临时表中)
Where用于对表中真实数据的条件过滤
六、内置函数
下面这些只需要指定和会用即可
1、日期函数
unit)
(1)获取当前日期

(2)获取当前时间

(3)获取当前日期和时间

(4)提取指定datatime的日期部分

(5)在给定日期的基础上加31天

(6)在给定日期的基础上减去1月

(7)计算两个日期之间相差多少天

注意:在计算时只使用日期部分 ,并且表达式 1 表示的日期早于表达式 2 表示的日期时返回负数

2、字符串处理函数
SUBSTR(Str FROM pOS FORlen)
(1)显示所有参加考试的学生id 学生姓名、姓名字符数和字节长度

(2)显示学生的考试成绩,格式为\"XXX的语文成绩:XXX分,数学成绩:XXX分,英语成绩:XXX分\"

(3)拼接后的字符串用逗号隔开

(4)将给定字符串转换成小写

(5)将给定字符串转换成大写

(6)转换为十六进制
字符串转换为十六进制

数字转换为十六进制

(7)子字符串第一次出现的索引

(8)指定位置插入子字符串

如果从写入点往后不足 10 位相当于删除后面所有字符

(9) 返回指定的子字符串

从 \'Hello, MySQL\' 的第八个字符开始截取 1 个字符

从 \'Hello, MySQL\' 的第八个字符开始截取 10 个字符,不足 10 个读到整个字符串结尾

(10) 替换字符串

(11)比较两个字符串

(12)返回字符串str中最左/最右边的len个字符
(13)删除给定字符串的前导、末尾、前导和末尾的空格

(14)删除给定符串的前导、末尾或前导和末尾的指定字符串
删除前后指定的字符串, BOTH 可以省略

删除前导的指定字符串
删除末尾的指定字符串

3、数学函数
(1)返回-1的绝对值

(2)返回不小于15.28的最小整数值

(3)返回不大于15.28的最小整数值

(4)将一个数从10进制转为16进制

(5)格式化1234567.654321

(6)返回一个随机浮点值

(7)舍弃到小数点后6位
生成一个随机浮点数然后保留6位小数

生成一个 6 位数的随机数

(8)字符串的循环冗余校验

4、其他常用函数
好了,今天的分享就到这里了,还请大家多多关注我们下一篇见!


