文章目录
SQL语句的分类
一、DML数据操作语句
1. 增加数据的INSERT语句
2. 修改数据的UPDATE语句
3. 删除数据的DELETE语句
4. 删除数据的TRUNCAT语句
5. DELETE、DROP、TRUNCAT的区别
二、使用步骤
1.增加数据(INSERT语句)
语法:INSERT INTO `表名` [(`字段1`,`字段2`,...`字段n`)]
VALUES/VALUE ('值1','值2',...'值n')[,('值1','值2',...'值n')...];
示例:方式一
示例:方式二
2.修改数据(UPDATE语句)
语法:UPDATE 表名 SET `字段名1` = '值1' [ , `字段名2` = '值2', …. ]
[ WHERE 条件];
示例1:整表修改
示例2:带条件的修改
示例3:多条件的修改(要用连接符号 and 或者or)
示例4:范围型的多条件
示例5:范围型的多条件(between and)
3.删除数据(DELETE语句)
语法:DELETE FROM 表名 [ WHERE 条件];
示例1:整表删除
示例2:带条件的删除(
delete 不能清除主键自增的序号
)
4.删除数据(TRUNCAT语句)
语法:TRUNCATE [TABLE] 表名
示例1:清空表(将整张表的数据还有索引【主键的自增】全部清空,保留表结构)
5.DELETE、DROP、TRUNCAT的区别
定义:
-- delete只删除数据,表结构还在,属于DML
-- truncate 删除数据,清除索引,表结构还在属于DML
-- drop 数据,索引一起删除,表结构不在属于DDL
区别:
2、truncate是清空的意思,从字面就可以理解为一次删除就可以将表里的数据全部清除,没有回滚操作。对表执行truncate之后,表和索引就会恢复到初始的大小。
3、drop可以将表的结构和数据内容都删除。对表执行drop之后,该表所占用的空间全部释放。
4、delete和truncate都是对数据进行操作,区别是范围不同。delete可以针对数据中的table、view两种类型。而truncate只能针对table类型。
5、速度上:drop>truncate>delete;
6、 在没有备份的时候,尤其小心使用drop和truncate ,删除部分数据行用delete带上where子句,回滚段要足够大。删除表用drop。想要保留表而将所有数据删除,如果和事务无关,用truncate即可,如果和事务有关,或者想触发trigger,还是用delete。如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据。
7、delete是DML(数据操作语言)语句,执行后不会自动提交;drop、truncate都是DDL(数据定义语言)语句,执行后会自动提交。
一、DQL数据操作语句和基本的DQL语句
DQL(Data Query Language 数据查询语言)。用途是查询数据库数据,如 SELECT 语句。是SQL语句中最核心、最重要的语句,也是使用频率最高的语句。其中,可以根据表的结构和关系分为单表查询和多 表联查。
1. 单表查询:针对数据库中的一张数据表进行查询,可以通过各种查询条件和方式去做相关的优化。
2. 多表联查:针对数据库中两张或者两张以上的表同时进行查询,依赖的手段有复杂查询和嵌套查询。
二、使用步骤
1.单表查询
语法:
SELECT [DISTINCT]{*|表1.*|[ 表1.字段1 [as 字段别名1][, 表1.字段2[as 字段别名2]][, …]]}FROM 表1 [ as 表别名 ][ left|right|inner join 表2 on 表之间的关系 ][ WHERE ][ GROUP BY ][ HAVING][ ORDER BY][ LIMIT {[ 位置偏移量,] 行数 }] ;
示例1:最简单的查询
示例2:对基本表的查询,全字段的查询
示例3:部分字段查询(虚拟表,不在磁盘上)
示例4:增加数据
示例5:给表头起别名 AS
语法:SELECT 表别名.字段名1 AS 字段别名1, 表别名.字段名2 AS 字段别名2FROM 表名 AS 表别名
示例6:去除重复的数据 DISTINCT(后面的字段的值要完全相同时才会去除重复)
语法:
SELECT DISTINCT 字段名1, 字段名2...FROM 表名
示例7:带条件的查询
语法:SELECT * FROM 表名 [ WHERE 条件];
示例8:like 模糊查询
语法:
SELECT * FROM 表名 WHERE 字段 LIKE 条件;
示例9:GROUP BY和 HAVING分组
GROUP BY
1、对所有的数据进行分组统计;2、分组的依据字段可以有多个,并依次分组。HAVING与GROUP BY结合使用,进行分组后的数据筛选。
-- having 分组之后的数据进行筛选,不能单独出现,必须要有group by。
示例10:LIMIT
语法:SELECT * FROM 表名 LIMIT [n , m ]
示例11:ODER BY排序
语法:
SELECT * FROM 表名 ORDER BY 字段名 [DESC|ASC]
1.多表联查
- 等值查询和非等值查询
- 连接查询
示例1:非等值查询
示例2:非等值查询
1.内联查询 inner join on
示例1:
2.外联查询 -- 主表和从表
left join on -- 左外联 主表先写用left
right join on -- 右外联 主表后写用right
示例1:
3.子查询
1.where 子查询
示例1:
2.from子查询:把内层的查询结果当成临时表,供外层sql再次查询。查询结果集可以当成表看待。
示例1:
示例1:
4.any some 子查询:表示满足其中任意一个条件,some 是 any的别名,所以用法是一样的,可以替代使用
示例1:
5.all子查询:表示满足其中所有条件条件,ALL关键字与any关键字类似,只不过上面的or改成and。
总结
最后,测试过程中,最常用到的就是查询语句,主要是看接口调用的数据传输是否正常,其中多表关联查询和子查询是用的比较多的;这些只是初级的使用。