0%

MySQL增删改查(CRUD)详解

新增(Create****)语法:**

1
2
3
INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
1、首先创建一个学生表
1
2
3
4
5
6
7
DROP TABLE IF EXISTS student;
CREATE TABLE student (
id INT,
sn INT comment '学号',
name VARCHAR(20) comment '姓名',
qq_mail VARCHAR(20) comment 'QQ邮箱'
);
一、插入数据方式
1.单行数据+全列插入
1
2
INSERT INTO student VALUES(1,101,'张三','123@qq.com');
INSERT INTO student VALUES (2,201,'李四','1234@qq.com');
2、多行数据 + 指定列插入
1
2
3
insert into student (id,sn,name,qq_mail) values
(3,301,'王五','234@qq.com'),
(4,401,'赵六','345@qq.com');

二、 查询(Retrieve

语法:

1
2
3
4
5
6
SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

案列:创建一个考试成绩表

1
2
3
4
5
6
7
8
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
id INT,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1)
);

插入测试数据

1
2
3
4
5
6
7
8
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98.5, 90),
(4,'曹孟德', 82, 84, 67),
(5,'刘玄德', 55.5, 85, 45),
(6,'孙权', 70, 73, 78.5),
(7,'宋公明', 75, 65, 30);
一、查询方式
1、全列查询

通常情况下不建议使用*全列查询
1、查询的列越多,意味着需要传输的数据量越大;
2、可能会影响到索引的使用。

1
select * from exam_result;
2、指定列查询

指定列的顺序不需要按照表中的列顺序来。

1
select id,name,chinese from exam_result;
3、查询字段为表达式

– 表达式不包含字段

1
`SELECT id, name, 10 FROM exam_result;`

**
– 表达式包含一个字段**

1
SELECT id, name, english + 10 FROM exam_result;

– 表达式包含多个字段

1
SELECT id, name, chinese + math + english FROM exam_result;
4 、别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称,语法:

1
SELECT column [ AS ] alias_name [...] FROM table_name ;

这里的总分就是我们定义的别名:

1
SELECT id, name, chinese + math + english 总分 FROM exam_result;
5 去重:DISTINCT

使用 DISTINCT 关键字对某列数据进行去重:

比如我们这里对重复的数学成绩去重:

1
select distinct math from exam_result;

6、 排序:****ORDER BY

语法:

1
2
3
4
5
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

\1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序 。

\2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面。

案例:– 查询同学姓名和 English,按 English 排序显示

升序排列:

1
SELECT name, English FROM exam_result ORDER BY English;

降序排列:

1
SELECT name, English FROM exam_result ORDER BY English desc; 
正在加载今日诗词....