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

 

很早之前看到的一篇文章里面的内容,但找不到了。如果有人知道出处,麻烦告知一下。我备注上

posted @ 2022-03-01 15:14  测试-13  阅读(767)  评论(0编辑  收藏  举报