mysql的增删改查以及常用关键字
1、增加数据
insert into 表名 (字段名1,字段名2,...)
values (值1,值2,...) --增加数据
例:insert into student (id,name,age)
values(1,'张三',24)
insert语句不指定字段名
若不指定字段名,则添加的值的顺序应和字段在表中的顺序完全一致
insert into 表名
values (值1,值2,...)
例:insert into student
values (1,'张三',24)
insert语句的其它写法
insert into 表名 set 字段名1=值1,字段名2=值2,字段名3=值3
例:insert into student set id=15,name='王五',age='18'
同时添加多条数据
例:insert into student values
(1,'张三',22)
(2,'李四',12)
(3,'王五',33)
2、删除数据
delete from 表名 where 条件表达式
例:删除student表中id值为7的数据
delete from student where id=7
删除全部数据
若delete语句中没有where语句,则会将表中所有纪律全部删除
例:delete from student;
删除全部数据的另一种方法--truncate
语法:truncate table 表名
例:truncate table student 即可删除student表
注意:
1、delete后面可以跟where子句指定删除部分记录,truncate只能删除整个表的所有记录
2、使用truncate语句删除记录后,新添加的记录是自动增长字段(如本文中student表中的id字段会默认从1开始,而使用delete删除记录后,新增加记录时,自动增长字段会从删除时改字段的最大值加1开始计算(即原来的id最大为5,则会从6开始计算)。所以如果是像彻底删除一个表的记录而且不会影响到重新添加记录,最好使用truncate来删除整个表的记录)
3、更新数据
更新数据是指对表中现存的数据进行修改
update 表名
set 字段名1=值1,字段名2=值2
where 条件表达式
例:更新student表中id为13的数据age为17
update student set age=17 where id=13
注意:还可以使用其它where条件表达试,如:id>4
4、查询
select 字段名1,字段名2
from 表名
查询student表中id,name,age字段的信息
例:
select id,name,age from student
4.1带in关键字的查询
in关键字用于判断某个字段的值是否在指定的集合中,若在,则该字段所在的记录会被查询出来
例:查询student表中id为1,2,3的记录
命令:select * from student where id in (1,2,3)
注意:not in 和 in 相反,查询的是不在指定范围内的记录
4.2带between and 关键字的查询
between and用于判断某个字段的值是否在指定范围之内,若在,则该字段所在的记录会被查询出来,反之不会
例:查询student表中id值2~5之间的人的id和name
select id,name from student where id between 2 and 5
4.3空值查询
在数据表中有些值可能为空值(null),空值不同于0,也不同于空字符串,需要使用is null来判断字段的值是否为空值
例:查询student表中gender值为空值的记录
select * from student where gender is null
4.4带distinct关键字的查询
很多表中的某些字段的数据存在重复的值,可以使用distinct关键字来过滤重复的值,只保留一个值
语法:select distinct 字段名 from 表名
例:查询student表中的age字段的值,结果中不允许出现重复的值
select distinct age from student
4.5带like关键字的查询
语法:select 字段名1,字段名2...
from 表名
where 字段名 like '匹配字符串'
4.5.1、百分号%为通配符:匹配任意长度的字符串,包括空字符串
例:查询student表中name字段以字符's'开头的人的id,name
select id,name from student where name like 's%'
例:查询student表中name字段以字符‘w’开始,以字符‘g’结尾的id,name
select id,name from student where name like 'w%g'
4.5.2、下划线_通配符:下划线通配符只匹配单个字符串,若要匹配多个字符,需要使用多个下划线通配符
例:查询student表中name字段以'wu'开始,以‘ong’结束,并且中间只要一个字符的记录
select * from student where name like 'wu_ong'
4.6使用and关键字的多条件查询
在使用select语句查询数据时,为了使查询结果更加精确,可以使用多个查询条件,如使用and关键字可以连接两个或者多个查询条件
例:查询student表中id字段小于5,并且gender字段值为'女'的人的id和name
select id,name from student where id < 5 and gender='女'
4.7使用or关键字的多条件查询
与and关键字不同,or关键词只要满足一个条件就会被查询出来
例:查询student表中id字段小于3,或者gender字段值为'女'的人的id,name和gender
select id,name,gender from student where id<3 or gender='女'
4.8or和and一起使用的情况
or和and一起使用的时候,and优先级高于or,因此二者一起使用时,会先运算and两边的表达式,再运行or两边的表达式
例:查询student表中gender值为'女'或者gender值为'男'并且grader字段为100的人的记录
select * from student where gender='女' or gender='男' and grander=100
4.9高级查询
聚合函数
count() 返回某列的行数
sum()返回某列表值的和
avg()返回某列的的平均值
max()返回某列的最大值
min()返回某列的最小值
4.9.1count()函数:统计记录的条数
select count(*) from 表名
例:查询student表中一共有多少条记录
select count(*) from student
4.9.2sum()函数:求出表中某个字段所有值的总和
select sum(字段名) from 表名
例:求出student表中grade字段的总和
select sum(grade) from student
4.9.3avg()函数:求出表中某个字段的平均值
select avg(字段名) from 表名
例:求出student表中grade字段的平均值
select avg(grade) from student
4.9.4max()函数:求出表中某个字段的最大值
select max(字段名) from 表名
例:求出student表中所有人种grade字段的最大值
select max(grade) from student
4.9.5min()函数:求出表中某个字段的最小值
select min(字段名) from 表名
例:求出student表中所有人种grade字段的最小值
select min(grade) from student
4.10对查询表进行排序
select 字段名1,字段名2
from 表名
order by 字段名1[asc|desc] ASC 表示升序排列,DESC表示降序排列,默认情况时升序排列
例:查出student表中的所有记录,并按照grade字段进行升序排列
select * from student order by grade
例:查出student表中的所有记录,并按照grade字段进行降序排列
select * from student order by grade desc
4.11分组查询
在对表中数据进行统计的时候,可以使用group by 按某个字段或者多个值字段进行分组,字段中值相同的为一组,如果男生一组,女生一组
select 字段名1,字段名2...
from 表名
group by 字段名1,字段名2,...[having 表达式]
4.11.1单独使用group by进行分组
单独使用group by关键字,查询的是某个分组中的一条记录
例:查询student表中的数据,按照gender字段进行分组
select * from student group by gender
4.11.2group by和聚合函数一起使用
group by和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中的最大值、最小值、平均值等
例:将student按照gender字段进行分组查询,计算出每组共有多少个人
select count(*),gender from student group by gender
group by 和having关键字一起使用
having关键字和where关键字的作用相同,区别在于having关键字可以跟聚合函数,而where关键字不能。通常having关键字都和group by一起使用,用于对分组后的结果进行过滤
例:将student表按照gender字段进行分组查询,查询出grade字段值之和小于300的分组
select sum(grade),gender from student group by gender having sum(grade)<300
4.11.3使用limit限制查询结果的数量
select 字段名1,字段名2
from 表名
limit [offset,] 记录数;
limit后面可以跟两个参数,第一个参数“offset”表示偏移量,如果偏移量为0,则从查询结果的第一条记录开始,偏移量为1则从查询结果的第二天记录开始,以此类推。offset为可选值,默认值为0,
第二个参数“记录数”表示指定返回查询记录的条数
例:查询student表中的前四条记录
select * from student limit 4;
例:查询student表中grade字段从第五位到第八位的人(从高到低)
select * from student order by grade DESC limit 4,4
很早之前看到的一篇文章里面的内容,但找不到了。如果有人知道出处,麻烦告知一下。我备注上
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗