数据的添加、更新和删除
添加数据
*为表中添加记录(数据)INSERT
语法:
*INSERT [INTO] 表名 [(字段列表)]
VALUES (值列表)
*INSERT [INTO] 表名
SET 字段名1 = 值 ,字段名2 = 值 , …………
同时添加多行数据
*INSERT [INTO] 表名 [(字段列表)]
VALUES (值列表),(值列表),…………
注意:如果表名后面没写字段名,则默认是向所有字段添加值,另外字符串值应该用单引号‘ ’ 括起来。
如何知道数据是否已经插入到表中?使用查询语句:select * from 表名;
如果表名后面没写字段名,则默认是向所有字段添加值,添加值的顺序必须和字段在表中定义的顺序相同。
更新数据
注意:更新数据时指对表中存在的记录进行修改 语法:
UPDATE 表名
SET 字段名1 = 更新值,字段名2 = 更新值,…………
[WHERE 更新条件]
叙述:where 子句是判断语句,用来设定条件,限制只更新满足条件的行,如果不带where子句,则更新所有行数据。可以一次修改多个行,多个列的数据。
删除数据
语法:
DELETE FROM 表名
[WHERE 删除条件]
叙述:此语句删除表中的行,如果不带where子句,则删除整个表中的记录,但是表(表结构)不会被删除。
- DELETE语句与TRUNCATE语句都能实现删除表中所有数据的功能。
DELETE语句与TRUNCATE语句的区别
1、 DELETE语句是DML(数据操纵)语句,TRUNCATE语句是DDL(数据定义)语句。
2、 DELETE语句可以使用where子句来设定只删除表中指定的数据,TRUNCATE语句只能用于删除表中所有记录(数据)。
3、使用TRUNCATE语句删除表中所有数据后,自动增加字段(AUTO_INCREMENT)的默认初始值重新由1开始,而使用DELETE语句删除表中所有记录后,再次添加记录时,自动增加字段的值为删除时该字段的最大值加1。
4、 重要:TRUNCATE语句在本质上直接清空数据表,清空后数据不能恢复,DELETE语句在删除数据前,会将删除操作写入操作日志,数据可以恢复(在满足某些条件时)。
单表查询
查询产生一个虚拟表,看到的是表形式显示的结果,但结果并不真正存储,每次执行查询只是现从数据表中提取数据,并按照表的形式显示出来
简单条件查询
SELECT语句的语法
SELECT [DISTINCT | DISTINCTROW | ALL] * | 字段列表
[FROM 表名
[WHERE 查询条件]
[GROUP BY 分组字段名 [HAVING 分组过滤条件] ]
[ORDER BY 排序字段名 [ASC | DESC] ]
[LIMIT [偏移量,] 记录数]
[PROCEDURE procedure_name]
]
- [DISTINCT | DISTINCTROW | ALL] :用于剔除重复的记录
- "*| 字段列表":需要查询的字段,“ * ”代表表中所有字段
- FROM 表名 :需要查询的表名
- [WHERE 查询条件] :查询条件
- GROUP BY 分组字段名 :用于将查询结果按指定字段进行分组统计
- HAVING 分组过滤条件:对分组统计结果进行过滤的条件
- [ORDER BY 排序字段名 [ASC | DESC] ] :对查询结果按照指定的字段进行排序
- [LIMIT [偏移量,] 记录数] :用于限制查询结果的数量(记录数),[偏移量,] 可以设置查询结果忽略(跳过)的记录数
- [PROCEDURE procedure_name]:查询存储过程返回的结果集数据
*关系运算符
=:等于 |>:大于 |>=:大于或等于 |<:小于 |<=:小于或等于 |<>:不等于
带IN关键字的查询
IN关键字用于判断某个字段的值是否在指定的集合中
集合中的数据使用小括号“ ( ) ”括起来
带BETWEEN …AND关键字的查询
BETWEEN AND用于判断某个字段的值是否在指定的范围内
空值查询
空值(NULL)不同于0,也不同于空字符串!
where ... is (not) NULL;
带DISTINCT关键字的查询
表中的某些字段的数据可能存在重复的值,在查询结果中也有可能有重复的值,从而导致出现重复的数据行
带LINK关键字的查询
使用LIKE可以进行模糊查询。
通配符:
- 下划线 “ _ ”:代表一个任意字符
- 百分号 “ % ”:代表0个或多个任意字符
注意:通配符必须配合LIKE使用。如果在like模糊查询中,字符串中需要使用_和%字符,则需要使用转义字符,即在_和%字符加上反斜杠“ \ ” eg: where ... like ‘%%%’ ;(包含%)
where ... like '';(
*%,%*,*%*,%*%->*代字母,字母开头,字母结尾,开头结尾,包含字母)
带AND,OR关键字的多条件查询
AND:而且(多个条件需要同时满足,表达式才成立)
OR:或者(多个条件只需要满足一个,表达式就成立)
提示:多个查询条件,每个条件最好使用小括号括起来
高级查询
聚合函数
- COUNT():返回某列的行数
- SUM():返回某列的和
- AVG():返回某列的平均值
- MAX():返回某列的最大值
- MIN():返回某列的最小值 上面的函数对一组(一列)数值进行统计,并返回唯一的一个数值(结果),所以这些函数被称为聚合函数。
COUNT()函数 —— 计数
select COUNT( * )
from ...
where ...;
SUM()函数 —— 求和
select SUM( 字段名)
from 表名 ;
MAX()函数——求最大值
select MAX( 字段名 )
from 表名 ;
MIM()函数——求最小值
select MIN( 字段名)
from 表名 ;
对查询结果排序
SELECT [DISTINCT | DISTINCTROW | ALL] * | 字段列表
[FROM 表名
[WHERE 查询条件]
[ORDER BY 排序字段名 [ASC | DESC] ]
]
[ORDER BY 排序字段名 [ASC | DESC] ] :对查询结果按照指定的字段进行排序。
[ASC | DESC] :排序方式ASC 为升序, DESC为降序。默认是ASC 升序。
注意:ORDER BY在WHERE子句的后面
分组查询
SELECT [DISTINCT | DISTINCTROW | ALL] * | 字段列表
[FROM 表名
[WHERE 查询条件]
[GROUP BY 分组字段名 [HAVING 分组过滤条件] ]
[ORDER BY 排序字段名 [ASC | DESC] ]
]
[GROUP BY 分组字段名 [HAVING 分组过滤条件] ]
注意:各个子句的先后次序!
WHERE
GROUP BY
ORDER BY
使用LIMIT限制查询结果的数量
查询数据时,可能会返回很多条记录,用户可以使用LIMIT来限制查询结果显示的行数。例如分页功能,也可以使用LIMIT来实现。 SELECT语句的语法:
SELECT [DISTINCT | DISTINCTROW | ALL] * | 字段列表
[FROM 表名
[WHERE 查询条件]
[GROUP BY 分组字段名 [HAVING 分组过滤条件] ]
[ORDER BY 排序字段名 [ASC | DESC] ]
[LIMIT [偏移量,] 记录数]
[PROCEDURE procedure_name]
]
- [DISTINCT | DISTINCTROW | ALL] :用于剔除重复的记录
*| 字段列表 :需要查询的字段,“ * ”代表表中所有字段- FROM 表名 :需要查询的表名
- [WHERE 查询条件] :查询条件
- GROUP BY 分组字段名 :用于将查询结果按指定字段进行分组统计
- HAVING 分组过滤条件:对分组统计结果进行过滤的条件
- [ORDER BY 排序字段名 [ASC | DESC] ] :对查询结果按照指定的字段进行排序
- [LIMIT [偏移量,] 记录数] :用于限制查询结果的数量(记录数),[偏移量,] 可以设置查询结果忽略(跳过)的记录数
- [PROCEDURE procedure_name]:查询存储过程返回的结果集数据
注意:LIMIT同样适用于UPDATE与DELETE语句