> 技术文档 > MySQL:CRUD(二)_truncate table语法

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、常用函数

函数 说明 COUNT([DISTINCT] expr) 返回查询到的数据的 数量 SUM([DISTINCT] expr 返回查询到的数据的 总和,不是数字没有意义 AVG([DISTINCT]expr) 返回查询到的数据的 平均值,不是数字没有意义 MAX([DISTINCT] expr) 返回查询到的数据的 最大值,不是数字没有意义 MIN([DISTINCT] expr) 返回查询到的数据的 最小值,不是数字没有意义

(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、日期函数

函数 说明 CURDATE() 返回当前日期,同义词CURRENTDATECURRENT DATE() CURTIME() 返回当前时间,同义词 CURRENT TIMECURRENT TIME([fsp]) NOW() 返回当前日期和时间,同义语CURRENT TIMESTAMP,CURRENT TIMESTAMP ADDDATE(date,INTERVAL exprunit) 向日期值添加时间值(间隔),同义词 DATE_ADD() SUBDATE(date,INTERVAL expr
unit)
向日期值减去时间值(间隔),同义词 DATE_SUB() DATEDIFF(exprl,expr2) 两个日期的差,以天为单位,expr1-expr2 DATE(data) 提取date或datetime表达式的日期部分

(1)获取当前日期 

(2)获取当前时间

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

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

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

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

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

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

2、字符串处理函数

函数 说明 CHAR LENGTH(str) 返回给定字符串的长度,同义词CHARACTER_LENGTH() LENGTH(str) 返回给定字符串的字节数,与当前使用的字符编码集有关 CONCAT(strl,str2,...) 返回拼接后的字符串 CONCAT_WS(separator,str1,str2,...) 返回拼接后带分隔符的字符串 LCASE(str) 将给定字符串转换成小写,同义词LOWER() UCASE(str) 将给定字符串转换成大写,同义词 UPPER() HEX(str),HEX(N) 对于字符串参数str,HEX()返回str的十六进制字符串表示形式,对于数字参数N,HEX()返回一个十六进制字符串表示形式, INSTR(str,substr) 返回substring第一次出现的索引 INSERT(str,pos,len,newstr) 在指定位置插入子字符串,最多不超过指定的字符数 SUBSTR(str,pos)
SUBSTR(Str FROM pOS FORlen)
返回指定的子字符串,同义词 SUBSTRING(str,pos),SUBSTRING(Str FROM pOS FOR len) REPLACE(str,from_str,to_str) 把字符串str中所有的from str替换为to str,区分大小写 STRCMP(expr1,expr2)
  逐个字符比较两个字符串,返回-1,0,1 LEFT(str,len),RIGHT(str,len) 返回字符串str中最左/最右边的len个字符 LTRIM(str),RTRIM(str),TRIM(str) 删除给定字符串的前导、末尾、前导和末尾的空格 TRIM([{LEADING | TRAILING | BOTH } [remstr]FR str ) 删除给定符串的前导、未尾或前导和末尾的指定字符串

(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、数学函数

函数 说明 ABS(X) 返回X的绝对值 CEIL(X) 返回不小于X的最小整数值,同义词是CEILING(X) FLOOR(X) 返回不大于X的最大整数值 CONV(N,from base,to base) 不同进制之间的转换 FORMAT(X,D) 将数字X格式化为“#,###,###”的格式。##\',四舍五入到小数点后D位,并以字符串形式返回 RAND([N]) 返回一个随机浮点值,取值范围[0.0,1.0) ROUND(X) ,ROUND(X,D) 将参数X舍入到小数点后D位 CRC32(expr) 计算指定字符串的循环冗余校验值并返回一个32位无符号整数

(1)返回-1的绝对值 

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

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

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

(5)格式化1234567.654321

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

(7)舍弃到小数点后6位 

生成一个随机浮点数然后保留6位小数

生成一个 6 位数的随机数

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

4、其他常用函数

函数 说明 version() 显示当前数据库版本 database() 显示当前正在使用的数据库 user() 显示当前用户 md5(str) 对一个字符串进行md5摘要,摘要后得到一个32位字符串 ifnull(val1,val2) 如果val1为NULL,返回val2,否则返回 val1

好了,今天的分享就到这里了,还请大家多多关注我们下一篇见!