MySQL表的增删改查

一、新增数据

1.全列插入

表示所有字段都要插入值,且插入的顺序是表定义时的顺序

语法:insert into 表名 values(字段1 要插入的值,字段二要插入的值,...)

MySQL表的增删改查_第1张图片

(整形会设置一个默认长度)

根据上面创建的表来全列插入:

 2.指定列插入

语法:insert into 表名(要插入的字段1,要插入的字段2,...)values (要插入的值1,要插入的值2,...)

只插入需要的数据,其他没有插入的字段就是null

2.1插入多行数据

(1)执行多条insert语句;

(2)执行一条;

语法:

insert into 表名 (要插入的字段1,要插入的字段2,...) values

(要插入的值1,要插入的值2,...),

(要插入的值1,要插入的值2,...);

MySQL表的增删改查_第2张图片

二、查询数据

1.各种查询操作

  • 查询该表所有字段,所有数据(自己查数据用,写代码不要用)

select * from 表名;

MySQL表的增删改查_第3张图片

  • 查询给定的字段

select 查询列1,查询列2 from 表名;

MySQL表的增删改查_第4张图片

  • 查询的字段可以进行计算(字段是数值型)

MySQL表的增删改查_第5张图片

  •  字符串:MySQL中字符串拼接不能使用+,需要使用concat(str1,str2,...)函数

MySQL表的增删改查_第6张图片

正确语法:MySQL表的增删改查_第7张图片

表或字段别名:如果查询字段进行了计算等操作,查询返回的字段就不是数据库定义的字段名,此时一般要使用别名

MySQL表的增删改查_第8张图片

也可以写成如下,都是使用别名:

select id as i,username as u, amount*2  as a from student;

  • 表的别名:

select ... from 表名 [as] 表的别名;

字段要指定为--->表的别名.字段名

  • 别名的作用:
  • (1)简洁一点;
  • (2)规则一点(进行计算就不规则了);
  • (3)可能需要查询多张表的数据,及多张表的字段(可能有重复的字段),此时可以从别名来进行区分;
  • 日期的操作

year(日期的值),month(日期的值),day(日期的值)

MySQL表的增删改查_第9张图片

(日期的运算操作要使用复杂的函数)

2.去重操作

distinct

对下列表进行去重

MySQL表的增删改查_第10张图片

(1)只去重一列--->id列

MySQL表的增删改查_第11张图片

(2)去重两列(这两列结合起来去重)--->id和username

MySQL表的增删改查_第12张图片

3.排序操作

  • 单列排序

操作结果(按照id排序):

MySQL表的增删改查_第13张图片

 可能会出现字段相同时,排序不是我们希望的

  • 多列排序

按多个字段顺序来排序,先按第一个字段来排序,如果第一个字段相同才按照第二个,以此类推。如果第一个字段没有相同的,后面的就没用;

asc--->升序(可以忽略不写);desc--->降序; 

MySQL表的增删改查_第14张图片

MySQL表的增删改查_第15张图片

select id,username,amount from student order by id,amount desc;--->先按照id排好序,再根据amount升序/降序;

注意事项:

(1)排序可以是多个字段

但是需要前面的字段值相同,后面的字段才会排序;

(2)null:升序最前,降序最后

MySQL表的增删改查_第16张图片

 (3)排序的字段,也可以使用表达式计算或者别名

MySQL表的增删改查_第17张图片

4.条件查询

创建一个成绩表:

MySQL表的增删改查_第18张图片

  • 查询英语成绩小于60的

MySQL表的增删改查_第19张图片

 若要查询表中为空的数据--->select * from 表名 where 字段名 is null;

                                        --->select * from student where birthday is null;

若使用比较运算符(=),会返回空的结果集;

  • 范围匹配:

语法:字段名 between 起始值 and 结束值

MySQL表的增删改查_第20张图片

 上述语法等同于:

MySQL表的增删改查_第21张图片

逻辑运算符:

and--->与;(Java中的&&)

or--->或;(Java中的||)

not--->非;(Java中的!)

MySQL表的增删改查_第22张图片

  • in-->匹配小括号中的任意一个就可以返回:

MySQL表的增删改查_第23张图片

 where条件查询,可以是有多个条件进行逻辑运算,是一整个条件的结果来返回查询结果集

  • 模糊匹配--->like

%--->匹配多个字符;_--->匹配一个字符

(以某个字符开头,以孙开头)

MySQL表的增删改查_第24张图片

匹配中间的字符:

MySQL表的增删改查_第25张图片

匹配最后一个字符:

MySQL表的增删改查_第26张图片

(注意以上查询方法的%的位置 )

孙后跟两个下划线,则查询到孙悟空;跟一个下划线则查询到孙权;

MySQL表的增删改查_第27张图片

遍历所有数据,对于每条数据来说,所有条件执行的结果为true就会包含在结果集中,如果为false就不包含。

  • 分页查询:limit

一般来说,一个查询结果集的行数时确定的,给定每页的数量进行分页,就可以确定页数。

数据库中的实现,不是按页数来实现的,时按起始的索引+每页的数量

limit s,n --->从整个结果集进行过滤,从下标s开始,找n条(每行数据下标从0开始,找下标s)

MySQL表的增删改查_第28张图片

结果集顺序不同,分页的结果就可能不同;

分页是按照最终结果集再进行分页,如果有条件过滤,那是以条件过滤后的结果集再进行分页;

三、修改数据

关键字:update

  • update 表名 set 字段1=要修改的值1,字段2=要修改的值2,...  where 条件 order by...

MySQL表的增删改查_第29张图片

update修改操作是可以修改多条数据的,如果只要修改某一条或者每一部分数据那么要给定条件,如果不加条件那么就会修改整个表的数据。

修改需要谨慎操作!!!(建议先把update替换成select语句,先看是不是想要修改的数据)

四、删除操作

  • delete from 表名 where 条件 order by...

按照条件过滤后的结果全部删除,如果没有条件就是全表删除。所以建议:要删除某些条件,但条件复杂是,一定先使用select验证

MySQL表的增删改查_第30张图片

你可能感兴趣的:(mysql,数据库)