MySQL入门4(持续更新)-表数据常见语法

前言

在前面,我们已经了解了什么是MySQL,MySQL的常见名词和常用字段类型,MySQL表结构的常用语法。也就是说,现在的我们已经知道了什么是数据库,什么是表,怎么键表,怎么修改表,怎么添加字段等方面的内容,那么接下来就该学习数据库中数据相关的语法了。

CRUD

我们经常能听到有人说crud,那么什么是crud呢?

crud是指在做计算处理时的增加(Create)、读取(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。

没错,crud就是我们今天要学习的语法了,也就是我们常说的增删改查。
在表结构知识里面,我们创建了一张高考学生表,那么今天的语法学习,也在这张表的基础上完成。
ps:昨天的表,其实只是做教学用,实际工作的时候,这张表中还是有许多问题的。比如电话号码,我们通常是存123****4567这种格式外加一个密文字段,再比如表应该添加一个删除状态,用于业务中数据的假删,因为在实际工作中是不允许物理删除数据,只允许逻辑删除。所以提前说一下,这个表只做教学使用,工作中设计表的一些思路,规范这些,在讲完入门知识,进阶知识后我补充上去。

当我们创建好一张表以后,通常情况下这个表是空的,没有数据,随着业务的进行,我们的应用就会往这个表写入数据,但是我们这里是单独学习,所以只能靠手敲来新增数据。

语法

INSERT INTO table_name(column_1,column_2,column_3,column_4,column_5,column_6 )
		VALUES(value_1,value_2,value_3,value_4,value_5,value_6),
			(value_11,value_22,value_33,value_44,value_55,value_66);
  1. INSERT:关键字,表示添加。
  2. INTO:关键字,表示向哪个表添加。
  3. table_name:表名,表示你要想写入的数据的表。
  4. column_1:列名,也可以叫字段名,后面23456同理,表示这个表中的字段。
  5. VALUES:关键字,后面接要添加到表中的值。
  6. value_1: 列1的值,后面的23456分别对应列的值。

示例

在这里祝高考学子都考一个满意的分数,最好满分。

INSERT INTO college_entrance_examination_student (name, sex, birth_date, email, phone, total_score, chinese_score, math_score, english_score, science_score, humanities_score, created_at)
VALUES 
('李四', 'M', '2002-06-15', 'lisi@example.com', '13900139000', 700, 125, 140, 130, 240, 235, CURRENT_TIMESTAMP),
('王芳', 'F', '2002-07-20', 'wangfang@example.com', '13500135000', 680, 115, 135, 125, 240, 235, CURRENT_TIMESTAMP),
('赵六', 'M', '2002-08-25', 'zhaoliu@example.com', '13600136000', 710, 130, 145, 130, 245, 235, CURRENT_TIMESTAMP),
('刘莉', 'F', '2002-09-30', 'liuli@example.com', '13700137000', 660, 110, 130, 120, 240, 230, CURRENT_TIMESTAMP);

在这里插入图片描述

这里的删除是属于物理删除,也就是说这条数据删掉以后,在你的数据库就找不掉了(除非通过其他手段恢复)。在实际工作中我们基本不会有这种物理删除的场景,所以删除语法了解一下即可,但是别乱用。

语法

DELETE FROM table_name WHERE condition;
  1. DELETE:关键字,表示删除。
  2. FROM:关键字,表示当前操作来自于哪张表,后面接表名
  3. table_name:表名,估计已经不用我说了。
  4. WHERE:关键字,表示之前操作在什么情况下会进行。如果没有后续条件,可以不用表示无条件操作。
  5. condition:条件。满足这个条件的数据会被删除。通常是某个字段的某个取值范围。可以不填条件,删除全部,慎重!

示例

由于我们数据不多,而且都是满分的数据,我们这里不做实际删除,只写个语句示例。

# 删除名字是'李四'
DELETE FROM college_entrance_examination_student WHERE name = '李四';

# 删除名字中带有三字的
DELETE FROM college_entrance_examination_student WHERE name = '%三%';

# 删除姓王的
DELETE FROM college_entrance_examination_student WHERE name = '王%';

# 删除ID大于2的
DELETE FROM college_entrance_examination_student WHERE student_id > 2;

条件各种各样,全看你心情,这里不再做示范了。

表中最开始插入的数据的值也许会随着业务的进行发生改变,这个时候就要通过修改语句来对表中数据的值。

语法

UPDATE table_name SET column_1 = value_1, column_2 = value_2, ... WHERE condition;
  1. UPDATE:关键字,表示修改。
  2. table_name:表名。
  3. SET:关键字,表示设置。
  4. column_1 = value_1:表示把列1的值设置成值1,如果你修改很多列,用逗号隔开,注意到下一个关键之间不需要逗号。
  5. WHERE :关键字
  6. condition:修改条件,与删除条件类似,满足这个条件的数据会被修改。没有条件则是全表修改,慎重!

示例

# 把张三的电话改成13900139001(我们的数据中没有张三,只有满足条件的数据才会被修改)
UPDATE college_entrance_examination_student SET phone = '13900139001' WHERE name = '张三';

# 把ID等于1的名称改成赵六六
UPDATE college_entrance_examination_student SET name= '赵六六' WHERE student_id= 3;

在这里插入图片描述

查询使我们的重头戏,因为查询是用的最多的业务,各种各样的查询业务。增改也就那样,玩不出啥花来,查询就不一样了。
不过本文也不会写很花里胡哨的查询,讲清楚基本的查询,内置函数等就差不多。更复杂的查询在进阶的时候讲。

基础查询

SELECT column_1 AS alias_1,column_2 alias_2,column_3,...  FROM table_name;
  1. SELECT:关键字,表示查询
  2. column_1:列名,多个用逗号拼接,到下个关键字FROM时不需要逗号。表示你想查询哪些列的值出来,* 表示查询全部,实际上这样写的不多。
  3. AS:关键字,表示起一个别名,可以接在字段后面和表名后面。采用表别名+.方式,可以快捷的指定表中的列。当你在图形化软件中的编写代码时采用别名+.的方式有惊喜哦!
  4. alias_2:也是起一个别名,这种方式省略了AS关键字,这里也提一下,防止有看到不明白这是什么写法。
  5. FROM:关键字。
  6. table_name:表名。

示例

# select * 查询,无条件
SELECT * FROM college_entrance_examination_student;

在这里插入图片描述

# 很多时候我们不需要那么多字段的值,就直接指定需要查询的字段,节省资源
SELECT 
s.student_id AS '学生ID', 
s.name AS '学生姓名', 
s.phone '学生电话' 
FROM 
college_entrance_examination_student AS s;

在这里插入图片描述

在后面的查询示例中,不会再出现select * 的查询方式。

条件查询

SELECT column_1,column_2,column_3,... FROM table_name WHERE condition;
  1. SELECT:关键字,表示查询
  2. column_1:列名。
  3. FROM:关键字。
  4. table_name:表名。
  5. WHERE :关键字。
  6. condition:查询条件。

示例

# 很多时候我们不需要那么多字段的值,就直接指定需要查询的字段,节省资源
SELECT 
s.student_id AS '学生ID', 
s.name AS '学生姓名', 
s.phone '学生电话' 
FROM 
college_entrance_examination_student AS s 
WHERE
s.student_id > 2;

在这里插入图片描述

顺序查询

很多时候,我们需要对查询出的数据进行排序,甚至需要对多个字段排序,这个时候就要用到顺序查询。

SELECT column_1,column_2,column_3,...  FROM table_name ORDER BY column_1 SORT, column_2;
  1. SELECT:关键字,表示查询
  2. column_1:列名。
  3. FROM:关键字。
  4. table_name:表名。
  5. ORDER BY:关键字,后面接列名,表示根据某列的值进行排序,多个字段逗号拼接
  6. SORT:排序方式。取值为ASC(正序),DESC(倒序),不填默认ASC。

示例

# 不填默认正序ASC
SELECT 
s.student_id AS '学生ID', 
s.name AS '学生姓名', 
s.phone '学生电话' ,
s.birth_date '学生生日'
FROM 
college_entrance_examination_student AS s
ORDER BY s.birth_date;

在这里插入图片描述

# 指定倒序查询
SELECT 
s.student_id AS '学生ID', 
s.name AS '学生姓名', 
s.phone '学生电话' ,
s.birth_date '学生生日'
FROM 
college_entrance_examination_student AS s
ORDER BY s.birth_date DESC;

在这里插入图片描述

# 多字段排序,先根据理科成绩倒序,再按ID排序。
SELECT 
s.student_id AS '学生ID', 
s.name AS '学生姓名', 
s.phone '学生电话' ,
s.science_score
FROM 
college_entrance_examination_student AS s
ORDER BY s.science_score DESC, s.student_id;

在这里插入图片描述

分页查询

有时候因为数据太多了,我们没办法一次性查出所有数据,这个时候就要用到分页查询。

SELECT column1, column2, ...FROM table_name LIMIT offset, count;
  1. SELECT:关键字,表示查询
  2. column_1:列名。
  3. FROM:关键字。
  4. table_name:表名。
  5. LIMIT :关键字, 表示分页
  6. offset:偏移量,表示开始返回的数据在所有数据的中偏移量。从0开始。注意这个偏移量,会随着页数的增加变化。
  7. count:每页查询的数据量。

示例

# 偏移量是0,页大小是2.这个对应到页面上去,就是查询第一页数据,每页查询2条数据。
SELECT 
s.student_id AS '学生ID', 
s.name AS '学生姓名', 
s.phone '学生电话' ,
s.science_score
FROM 
college_entrance_examination_student AS s
LIMIT 0, 2;

在这里插入图片描述

# 偏移量是2,页大小是2.这个对应到页面上去,就是查询第二页数据,每页查询2条数据。到这里可以类推
# LIMIT 4, 2是第三页, LIMIT 6, 2是第4页。
SELECT 
s.student_id AS '学生ID', 
s.name AS '学生姓名', 
s.phone '学生电话' ,
s.science_score
FROM 
college_entrance_examination_student AS s
LIMIT 2, 2;

在这里插入图片描述

# 偏移量超过数据总数时,返回空结果集
SELECT 
s.student_id AS '学生ID', 
s.name AS '学生姓名', 
s.phone '学生电话' ,
s.science_score
FROM 
college_entrance_examination_student AS s
LIMIT 4, 2;

在这里插入图片描述

分组查询

很多时候我们需要根据字段不同的值统计数据,这个时候就用到分组查询。

SELECT column_1, COUNT(column_2), AVG(column_2), ...FROM table_name GROUP BY column_1;
  1. SELECT:关键字,表示查询
  2. column_1:列名。
  3. COUNT():内置函数,统计数量
  4. AVG():内置函数,统计平均值
  5. FROM:关键字。
  6. table_name:表名。
  7. GROUP BY :关键字, 表示分组
  8. column_1:分组字段,根据此字段所有值进行分组,相等的值分在一组。

示例

SELECT sex '性别', COUNT(*) '人数', AVG(total_score) '总分平均分'
FROM college_entrance_examination_student AS s
GROUP BY sex;

在这里插入图片描述

写在最后

到这里入门的方法已经讲完了。后面会开始将更加复杂的知识。
比如更加复杂的查询,条件排序分页分组混在一起,多表混在一起,更多的内置函数,自定义函数等等。
比如事务的知识,索引的知识,引擎的知识,对MySQL架构更深入的知识等等。

后面文章,对我来说算是复习及再一遍学习,可能没法一天一篇,我还正在自学Python。时间有点难顶,尽力。

之前我就说过每个人对入门的定义是不一样,对于一个0开始的人,我觉得这里入门已经算结束了。如果有不同意见,别问你是对的。

好了,各位加油!!!

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值