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、其他常用函数
好了,今天的分享就到这里了,还请大家多多关注我们下一篇见!