前端学数据库之记录操作
Posted 小火柴的蓝色理想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端学数据库之记录操作相关的知识,希望对你有一定的参考价值。
前面的话
本文将详细介绍mysql关于记录的增删改查
插入记录
INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE} ({expr|DEFAULT},...),(...),...
首先,创建一个简单的数据表
![](https://image.cha138.com/20210610/fa8fc644d17e49c0ad6227e98b85113d.jpg)
如果省略col_name,则意味着所有的字段按照顺序依次赋值。因为id字段是自动编号的,该字段可以赋值为NULL或DEFAULT
![](https://image.cha138.com/20210610/5cbd937e958449da8f23aa8581507481.jpg)
![](https://image.cha138.com/20210610/12f4b7a64d094e4d8a09f432fc92eb5b.jpg)
通过逗号分隔,可以一次性写入多条记录;而且,值可以使用表达式表示
![](https://image.cha138.com/20210610/e201b73d6a7646cb95655f912b398597.jpg)
数据库并没有布尔类型BOOLEAN,如果声明类型为BOOLEAN,则会被转换为TINYINT类型,true转换为1,false转换为0
![](https://image.cha138.com/20210610/2aaa506fe01c4c018ce73553ffe8b688.jpg)
INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},...
与第一种方法的区别在于,此方法可以使用子查询(SubQuery),以及一次性只能插入一条记录
![](https://image.cha138.com/20210610/7a85449b5f59407999e44ac862fe8b1c.jpg)
方法三
INSERT [INTO] tb1_name [(col_name,...)] SELECT ...
此方法可以将查询结果插入到指定数据表
更新记录
UPDATE [LOW_PRIORITY][IGNORE] table_reference SET col_name1={expr1|DEFAULT}[,col_name2={expr2|DEFAULT}]...[WHERE where_condition]
可以一次更新多条记录;当省略WHERE条件时,所有记录的值将会更新
下面将所有人的年龄都增加5岁
![](https://image.cha138.com/20210610/17d3bc7e02904ff38e82a5a6e85788b7.jpg)
下面将所有人的年龄更新为原有年龄减去其id值,将所有人的性别改成0
![](https://image.cha138.com/20210610/eb737f13b27b4e1e9483bff83123705c.jpg)
下面将所有id值为偶数的人的年龄加10岁
![](https://image.cha138.com/20210610/9e2dd969679846f5b0cbe9cfbc80d891.jpg)
删除记录
DELETE FROM tbl_name [WHERE where_condition]
![](https://image.cha138.com/20210610/f11cd20e99d34ef7b8749093dab6ac68.jpg)
[注意]删除某条记录后,再插入一条新的记录,自动编号不会补到删除记录的编号上,而是基于原有记录最大编号继续增加
![](https://image.cha138.com/20210610/0f56df1229b24adc8e2d1f801a1aeb06.jpg)
查询表达式
SELECT select_expr [,select_expr...] [ FROM tbl_references [WHERE where_condition] [GROUP BY {col_name | position} [ASC | DESC],...] [HAVING where_condition] [ORDER BY {col_name | expo | position} [ASC | DESC],...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] ]
查询表达式的每个表达式表示想要查找的一列,必须有至少一个。多个列之间以英文逗号分开
![](https://image.cha138.com/20210610/369140a56dc5439fb563f09addfa87e0.jpg)
查询表达式的顺序可以和原表中字段的顺序不一致
![](https://image.cha138.com/20210610/0210c43be0ff428fbf7d1317f5e5d194.jpg)
在使用多表连接时,可能会出现不同的表中存在名称相同的字段,如果直接写字段,分不清到底是哪张数据表的字段。在字段名前加上数据表可以分辨出隶属于哪张数据表
![](https://image.cha138.com/20210610/86569a70f2d942f6a30250a396f1cdee.jpg)
星号*号表示所有的列。tbl_name.*可以表示命名表的所有列
![](https://image.cha138.com/20210610/fb6778b2fcea47fa88884505ae4f5d69.jpg)
查询表达式可以使用[AS] alias_name为其赋予别名,别名可用于GROUP BY, ORDER BY, HAVING字句
![](https://image.cha138.com/20210610/5431ae9db77646f9a7c809ed53ab5c47.jpg)
[注意]在使用查询表达式设置别名查询,AS可以使用,也可以不使用。但如果不使用,可能会出现二义性情况
SELECT id username FROM users;
mysql会把上面的语句解析为username作为id的别名
结果处理
[GROUP BY {col_name | position} [ASC | DESC],...]
查询结果分组(GROUP BY)的参数中,ASC是升序,是默认的;DESC是降序
![](https://image.cha138.com/20210610/a77a4232530744168e26aba89e12ccdd.jpg)
col_name代表字段名,position以数字代表位置,如1代表SELECT语句中第一次出现的字段
![](https://image.cha138.com/20210610/aa5950135e774eb8b5b91bf3742001ff.jpg)
分组条件
[HAVING where_condition]
在设置分组(HAVING)时,一定要保证分组条件(where_condition)要么是聚合函数(max,min,avg,count,sum),要么其中的字段必须是SELECT中的一个查询字段,否则会报错
![](https://image.cha138.com/20210610/8f0a8e75dfd045e18d5d80dffb651469.jpg)
分组排序
[ORDER BY {col_name | expo | position} [ASC | DESC],...]
可以使用分组排序(order by)对查询结果进行排序
![](https://image.cha138.com/20210610/8cc50a5f220d4121b0e86b85b74d9b46.jpg)
同时可以用几个条件来排序,按输入顺序来进行优先级的选择
![](https://image.cha138.com/20210610/4807b5ce1eaa461b85f994b5cf547e01.jpg)
限制结果
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
限制查询结果(LIMIT)默认情况下,返回所有查找到的结果
![](https://image.cha138.com/20210610/815fd0fa73e74d358382c0f070beff24.jpg)
如果LIMIT后面只有一个数字,表示从第一条开始返回,并返回相应数字个数的记录
![](https://image.cha138.com/20210610/446742c90b6643f69eeb993905bf82b5.jpg)
SELECT语句默认从0开始编号,如果想从第三条开始返回,则需要offset参数和row_count参数一起使用
![](https://image.cha138.com/20210610/e0d2ad084d7f4ac19abdab7a8250d4b8.jpg)
【补充】
INSERT [INTO] tbl_name [(col_name,...] SELECT ...
与一开始介绍的插入记录的方法不同,现在这种方法可以将查找的结果存储到指定的数据表
![](https://image.cha138.com/20210610/5f079d1cb390476a8675147c35576f7a.jpg)
以上是关于前端学数据库之记录操作的主要内容,如果未能解决你的问题,请参考以下文章