SQL--DML增删改&&DQL查询表中数据
DML&&DQL
- 1 添加数据
- 2 删除数据
- 3 修改数据
- 4 查询表中记录
- 4.1 查询语法
- 4.2 基础查询
- 4.2.1 多个字段查询
- 4.2.2 去除重复
- 4.2.3 计算列
- 4.2.4 起别名
- 4.3 条件查询
- 4.3.1 运算符
- 4.3.2 LIKE模糊查询
- 4.4 排序查询
- 4.5 聚合函数
- 4.6 分组查询
- 4.7 分页查询
1 添加数据
INSERT INTO 表名(列名1,列名2,...列名n) VALUES (值1,值2,值3);
INSERT INTO stu VALUES(1,'李四',21,90,'2000-4-21',NULL);
INSERT INTO stu VALUES(2,'张三',22,91,'2000-4-22',NULL);
SELECT * FROM stu;
2 删除数据
//删除
DELETE FROM 表名 [WHERE 条件];
//删除所有记录
DELETE FROM 表名;
TRUNCATE TABLE 表名;//先删除表,然后创建一张一样的表
3 修改数据
UPDATE 表名 SET 列名1 = 值1,列名2 = 值2... WHERE 条件;
4 查询表中记录
对整个表的内容进行查询:
SELECT * FROM 表名;
4.1 查询语法
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组之后的条件
ORDER BY
排序
LIMIT
分页限定
4.2 基础查询
创建一个学生表,源码及创建结果如下:
CREATE TABLE student (
id INT,
-- 编号
NAME VARCHAR (20),
-- 姓名
age INT,
-- 年龄
sex VARCHAR (5),
-- 性别
address VARCHAR (100),
-- 地址
math INT,
-- 数学
english INT -- 英语
);
INSERT INTO student (
id,
NAME,
age,
sex,
address,
math,
english
)
VALUES
(
1,
'马云',
55,
'男',
'杭州',
66,
78
),
(
2,
'马化腾',
45,
'女',
'深圳',
98,
87
),
(
3,
'马景涛',
55,
'男',
'香港',
56,
77
),
(
4,
'柳岩',
20,
'女',
'湖南',
76,
65
),
(
5,
'柳青',
20,
'男',
'北京',
60,
98
),
(
6,
'刘德华',
45,
'男',
'香港',
60,
70
),
(
7,
'马德',
33,
'女',
'杭州',
99,
99
),
(
8,
'张三丰',
66,
'男',
'南极',
56,
65
);
SELECT
*
FROM
student;
4.2.1 多个字段查询
查询上例表中姓名和地址两个字段
SELECT name,address FROM student;
4.2.2 去除重复
去除地址重复的结果集,使用DISTINCT关键字
SELECT DISTINCT address FROM student;
SELECT DISTINCT name,address FROM student;
4.2.3 计算列
计算每个人的math和english之和
SELECT name,math,english,math+english FROM student;
//如果有NULL参与的结果都为null
//如果数学为null,赋值为0
SELECT name,math,english,IFNULL(math,0) + english FROM student;
4.2.4 起别名
//起别名,AS 别名
SELECT name,math,english,IFNULL(math,0) + english AS 总分 FROM student;
4.3 条件查询
4.3.1 运算符
-- 查询年龄大于20岁
SELECT * FROM student WHERE age > 20;
-- 查询年龄大于等于20岁
SELECT * FROM student WHERE age >= 20;
-- 查询年龄等于20岁
SELECT * FROM student WHERE age = 20;
-- 查询年龄不等于20岁
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;
-- 查询年龄大于等于20小于等于30
SELECT * FROM student WHERE age >= 20 && age <= 30;
SELECT * FROM student WHERE age >= 20 AND age <= 30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-- 查询年龄为55岁,45岁,21岁
SELECT * FROM student WHERE age = 55 OR age = 45 OR age = 21;
SELECT * FROM student WHERE age = 55 || age = 45 || age = 21;
SELECT * FROM student WHERE age IN (55,45,21);
-- 查询某处为NULL的数据
SELECT * FROM student WHERE english IS NULL;
-- 查询不为NULL
SELECT * FROM student WHERE english IS NOT NULL;
4.3.2 LIKE模糊查询
-- 查询姓马的有哪些?
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE '_化%';
-- 查询姓名是三个字的人
SELECT * FROM student WHERE NAME LIKE '___';
-- 查询姓名包含三的人
SELECT * FROM student WHERE NAME LIKE '%三%';
4.4 排序查询
//语法
ORDER BY 字句;
ORDER BY 排序字段1 排序方式1 , 排序字段2 排序方式2 ...
1 ASC为升序,DESC为降序
2 如果不注明排序方式则默认按照升序排序
4.5 聚合函数
聚合函数:将一列数据作为一个整体进行纵向的计算
//1、count:计算个数
//1)一般选择非空的列:主键
//2)count(*)
SELECT COUNT(id) FROM student;
SELECT COUNT(IFNULL(math,0)) FROM student;
//2、max:计算最大值
SELECT MAX(math) FROM student;
//3、min:计算最小值
SELECT MIN(math) FROM student;
//4、sum:计算和
SELECT SUM(math) FROM student;
//5、avg:计算平均值
SELECT AVG(math) FROM student;
1 聚合函数的计算,排除NULL值
4.6 分组查询
//语法
GROUP BY 分组字段;
1、分组之后的查询的字段为:分组字段或聚合函数
2、WHERE在分组之前进行限定,如果不满足条件,则不参与分组;HAVING在分组之后进行限定,如果不满足结果则不会被查询出来
3、WHERE后不可以跟聚合函数,HAVING可以跟聚合函数进行判断
4.7 分页查询
//语法
LIMIT 开始的索引 , 每页查询的条数;
//公式
开始的索引 = (当前的页码 - 1) * 每页显示条数
-- 每页显示3条记录
SELECT * FROM student LIMIT 0 , 3; -- 第一页
SELECT * FROM student LIMIT 3 , 3; -- 第二页
还没有评论,来说两句吧...