## DML:增删改表中数据
1、添加数据
语法:
INSERT INTO 表名(列名1,列名2,...列名n) valves(值1,值2,...值n);
注意:
1、列名和值要一一对应。
2、如果表名后不添加列名,则默认给所有列添加值。
3、除了数字类型,其他类型需要使用引号引起来。(单双引号皆可)
2、删除数据
DELETE FROM 表名 [where条件];
eg:DELETE FROM stu WHERE id=2;
注意:
1、如果不加条件,则删除表中所有记录
DELETE FROM 表名;
(将会删除表中的所有记录(不推荐使用,因为有多少条记录就会执行
多少次删除操作,效率比较低))
2、推荐使用
删除表,然后再创建一个一摸一样的空表
TRUNCATE TABLE 表名;
3、修改数据
语法:
UPDATE 表名 SET 列名1 = 值1,列名2 = 值2,...[where条件];
*注意:
1、如果不加条件,则修改表中所有记录。
## DQL:查询表中的记录
SELECT * FROM 表名;
1、语法:
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组之后的条件
ORDER BY
排序
LIMIT
分页限定
2、基础查询
1、多个字段的查询
SELECT 字段名1,字段名2... FROM 表名;
*注意:
如果查询所有字段,则可以使用*来代替字段列表。(公司可能不让用)
2、去除重复
SELECT DISTINCT adress FROM student;
3、计算列
一般可以使用四则运算计算一些列的值。(一般只会进行数值型的运算)
ifnull(表达式1,表达式2):
*表达式1:哪个字段需要判断是否为null
*表达式2:如果该字段为null的替换值。
eg:SELECT NAME,math,english,math+english AS 总分 FROM student;
SELECT NAME,math,english,math+ifnull(english,0) AS 总分 FROM student;
4、起别名
*as:as也可以省略
eg:SELECT NAME,math,english,math+english AS 总分 FROM student;
SELECT NAME,math,english,math+english 总分1 FROM student;
3、条件查询
1、where子句后跟条件
2、运算符
*>、<、<=、>=、=、<>
eg:select * from student where age >= 20;
select * from student where age = 20;
*不等于
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;
SELECT * FROM student WHERE age >=20 && age <=30;(不推荐使用)
SELECT * FROM student WHERE age >=20 AND age <=30;
*between...and
eg:SELECT * FROM student WHERE age BETWEEN 20 AND 30;(大于等于20,小于等于30)
*in(集合)
eg:SELECT * FROM student WHERE age = 22 OR age = 19 OR age = 25;
SELECT * FROM student WHERE age IN (22,18,25);
*like:模糊查询
*占位符:
_:单个任意字符
%:多个任意字符
eg:
SELECT * FROM student WHERE NAME LIKE '马%';--查姓马的人
SELECT * FROM student WHERE NAME LIKE '_化%';--名字第二个字是化的人
SELECT * FROM student WHERE NAME LIKE '___';--查名字是三个字的人
SELECT * FROM student WHERE NAME LIKE '%马%';--查姓名中包含马的人
*is null
eg:
SELECT * FROM student WHERE english = NULL;--不对的,null值不能用 = !=判断
SELECT * FROM student WHERE english IS NULL;
SELECT * FROM student WHERE english IS NOT NULL;
*or 或 ||
*not 或 !