在执行语句前,先要设置mysql字符集set names utf8;
- 添加数据
INSERT INTO 表名(字段名1,字段名2,…)VALUES(值1,值2,…);
若不指定字段名,则添加的值的顺序应和字段在表中的顺序完全一致
INSERT INTO 表名 VALUES(值11,值2,…);
为指定字段添加数据,即只向部分字段添加值,而其他字段的值为表定义时的默认值。
INSERT INTO 表名(字段1,字段2,…) VALUES(值1,值2,…)
其他写法
INSERT INTO 表名SET 字段名1=值1,字段名2=值2,…;
同时添加多条数据
INSERT INTO 表名 VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)
- 删除数据
删除部分数据 DELETE FROM student WHERE id=7;
删除全部数据 DELETE FROM 表名
删除全部数据的另一种方法—TRUNCTE [TABLE ] 表名
(1)DELETE 后面可以跟WHERE子句指定删除部分记录,TRUNCATE只能删除整个表的所有记录
(2)使用TRUNCATE语句删除记录后,新添加的记录时,自动增长字段(如本文中student表中的 id 字段)会默认从1开始,而使用DELETE删除记录后,新添加记录时,自动增长字段会从删除时该字段的的最大值加1开始计算(即原来的id最大为5,则会从6开始计算)。所以如果是想彻底删除一个表的记录而且不会影响到重新添加记录,最好使用TRUNCATE来删除整个表的记录
- 更新指定数据
UPDATE 表名 SET 字段名1=值1, 字段名2=值2,… WHERE 条件表达式
更新全部数据 UPDATE 表名 SET 字段名1=值1
- 查询数据
查询所有字段 SELECT 字段名1,字段名2,…FROM 表名
字段顺序可以更改
带关系运算符的查询 SELECT 字段名1,字段名2,…FROM 表名 WHERE 条件表达式
带 IN 关键字的查询
IN关键字用于判断某个字段的值是否在指定集合中,若在,则该字段所在的记录将会被查询出来.
SELECT * | 字段名1,字段名2,…FROM 表名WHERE 字段名 [ NOT ] IN (元素1,元素2,…)
NOT IN 与 IN 相反,查询的是不在指定范围内的记录
带 BETWEEN AND 关键字的查询
BETWEEN AND 用于判断某个字段的值是否在指定范围之内,若在,则该字段所在的记录会被查询出来,反之不会。
SELECT * | { 字段名1,字段名2,… FROM 表名 WHERE 字段名 BETWEEN 值1 and 值2;
空值查询
在数据表中有些值可能为空值(NULL),空值不同于0,也不同于空字符串,需要使用 IS NULL 来判断字段的值是否为空值。
SELECT * | 字段名1,字段名2,…FROM 表名 WHERE 字段名 IS [ NOT ] NULL
带 DISTINCT 关键字的查询
很多表中某些字段的数据存在重复的值,可以使用DISTINCT关键字来过滤重复的值,只保留一个值。
SELECT DISTINCT 字段名 FROM 表名;
带 LIKE 关键字的查询
SELECT * | 字段名1,字段名2,…FROM 表名 WHERE 字段名 [ NOT LIKE ‘匹配字符串’;
百分号(%)通配符
以z开头
以z开头以n结尾
不含z
下划线(_)通配符
下划线通配符只匹配单个字符,若要匹配多个字符,需要使用多个下划线通配符。例如,字符串“ cu_ ”匹配以字符串“ cu ”开始,长度为3的字符,如“ cut ”,“ cup ”;字符串“ c__l”匹配在“ c ”和“ l ”之间包含两个字符的字符串,如“ cool ”。需要注意的是,连续的“_”之间不能有空格,例如“M_ _QL”只能匹配“My SQL”,不能匹配“MySQL”。
带 AND 关键字的多条件查询
带 OR 关键字的多条件查询
OR 和 AND 一起使用的时候,AND 的优先级高于 OR,因此二者一起使用时,会先运算 AND 两边的表达式,再运算 OR 两边的表达式。