MySQL表数据的增删查改

目录

表数据的CURD

1.新增数据

1) 单行插入

2) 单行全列插入

3) 多行某几列插入

4) 多行全列插入

2. 查询数据

全列全行查找

1) 查找指定列

2) 查询字段为表达式

3) 给查询结果起别名

4) 去重查询得到去重处理后的结果distinct

5) 按照结果集排序 order by 可以使用别名

6) 分页查询 limit

7) ****条件查询****where语句(重点)

7.1) 查询所有总成绩>200的同学姓名和他们的总成绩

7.2) where分支中不支持别名

7.3) MySQL的null不包含在 <  <= 的条件中,null = null也不支持

7.4) 区间查询: between...and...

7.5) 包含查询in

7.6) 模糊查询 like

3. 修改表数据

1) 修改一行—列

2) 修改一行多列

3) 修改多行数据

4) 若update语句不带where条件,则该属性的所有行都受影响

4. 删除表数据

1) 删除名字叫空的这一条学生记录

2) 若此时不加where条件,则全表删除

全表删除


表数据的CURD

CURD(Create Update Retrieve Delete)

对于表中数据的增删改查在每—行上进行操作~

1.新增数据

insert into tb_name(属性名称...) values(属性值...);

1) 单行插入

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


2) 单行全列插入

在插入时表名之后没有指定列名,默认为需要单行全列插入

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

注意:若列有三列,values括号中只有两个数据,此时全列插入会报错。

全列插入数据个数必须严格等于列的个数,否则报错,不会使用null占位。

正确写法


3) 多行某几列插入

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


4) 多行全列插入

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

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

2. 查询数据

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

MySQL表数据的增删查改_第7张图片

ExamResult根据名称映射
MySQL中表、数据库、属性名称,统一使用全小写+下划线分隔,不要使用驼峰名称。


全列全行查找

select * from tb_name;

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


1) 查找指定列

select 列名称 from tb_name;

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

select得到的数据,以二维表格的形式展示数据。这个表格是一张临时表,不会存储到具体的硬盘中。


2) 查询字段为表达式

a. 查询所有(学生姓名,语文成绩+10)的结果,此时不会真的给数据+10,只在当前展示有效。

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

b. 查询学生姓名以及总成绩

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


3) 给查询结果起别名

刚才结果直接以表达式展示的,不美观,意义不明确,可以给查询结果起别名~

select 列名 as 新名词 from tb_name;

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


4) 去重查询得到去重处理后的结果distinct

select distinct 列名称 from tb_name; MySQL表数据的增删查改_第13张图片

若要查询多列结果,包含distinct关键字的话,去重查询必须放在第一列,且后面属性默认也会进行去重处理。

select dinstinct 列名称1,列名称2 from tb_name; // 组合属性去重


5) 按照结果集排序 order by 可以使用别名

select 列名称 from tb_name;
         order by 列名称[asc|desc];

默认为升序排序,asc不写的话默认升序。
a. 查询所有学生的姓名和他们的总成绩,按照总成绩升序排序。

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

b. 按照总成绩降序排序。

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

c. 若此时结果集中包含null值,这个值null认为是最小值

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

d. 针对多个列进行的排序?

查询所有学生的姓名,语文成绩,数学成绩,其中按照语文成绩升序,数学成绩降序排序。

按照书写顺序优先级排序

MySQL表数据的增删查改_第17张图片
优先按照语文成绩升序排序,只有两个语文成绩相同的数据才按照数学降序排序。


6) 分页查询 limit

select 属性名称 from tb_name limit n; //查询结果按照前n行输出

查询总成绩前三名同学的姓名以及总成绩多少

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

select 属性名称 from tb_name limit n offset s; // 查询结果按照前n行输出

从第s+1行开始查询(s...s + n]

总成绩在4-5行的同学姓名和他们的总成绩

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


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

若 limit n >所有行数,则全部展示。


当前表只有5行(最高索引为4),令其offset 5,从索引为5开始展示,输出为Empty set(结果为空)。当前数据表就不存在从第6行开始之后的三行数据。

7) ****条件查询****where语句(重点)

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

7.1) 查询所有总成绩>200的同学姓名和他们的总成绩

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


7.2) where分支中不支持别名

为什么order by支持别名而where不支持?
order by的执行顺序,是在已经把结果查出来后,只是给查出来的结果排序。(select查询出来的结果对于order by已经可见了)。
where执行顺序是在查询之前,叫条件过滤。select是先要满足where分支的条件基础上的查询!select的别名这个时候还没执行。

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


7.3) MySQL的null不包含在 <  <= 的条件中,null = null也不支持

null不要使用 < <= = 去比较,我们有专门的运算符过滤 null值

现在的表为

MySQL表数据的增删查改_第24张图片
a. 过滤所有总成绩 < 200的同学姓名

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

结果不包含null

b. 过滤所有成绩非空的同学和他们的总成绩is not null

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

c. Null +任何数据都是Null

MySQL表数据的增删查改_第27张图片
Null本身就是一个没有任何实际数值的值

练习:查询语文成绩优于英语成绩的同学姓名

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


7.4) 区间查询: between...and...

查询语文成绩在[85...100]之间的同学姓名和他们的语文成绩

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

单独使用and也可以实现

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


7.5) 包含查询in

查询数学成绩是20或60或99分的同学姓名和他们的数学成绩

MySQL表数据的增删查改_第31张图片


7.6) 模糊查询 like

%元素[0...n]
a. 查询所有名字中带号的学生姓名

MySQL表数据的增删查改_第32张图片

_严格匹配一个字符

现在的表

MySQL表数据的增删查改_第33张图片
b. 查询所有名字中“号”字出现在第2个位置且名字由4个字符组成的学生姓名

 MySQL表数据的增删查改_第34张图片

3. 修改表数据

update 表名 set 属性名 where 受影响的行
update表名set列名=(表达式-根据这个表达式确定修改的行)

1) 修改一行一列

MySQL表数据的增删查改_第35张图片

成绩表中一号同学的数学成绩+10分
update exam_result set math = math + 10 where name = '1号';

MySQL表数据的增删查改_第36张图片


2) 修改一行多列

成绩表中2号同学的数学和英语成绩+5分
update exam_result set math = math + 5,english = english + 5 where name = '2号';

MySQL表数据的增删查改_第37张图片


3) 修改多行数据

where过滤出来的结果是多行

成绩表中所有名字中带号的同学数学成绩-10分。
update exam_result set math = math - 10 where name like '%号%';

MySQL表数据的增删查改_第38张图片

符合条件的有7行,修改的行数 6,null不能进行数学运算


4) 若update语句不带where条件,则该属性的所有行都受影响

重置学生表,将所有同学的数学成绩都还原为0

update exam_result set math = 0;

MySQL表数据的增删查改_第39张图片

4. 删除表数据

delete from 表名 where 过滤条件;

1) 删除名字叫空的这一条学生记录

delete from exam_result where name = '空'; 

MySQL表数据的增删查改_第40张图片


2) 若此时不加where条件,则全表删除

delete from exam_result;

删除之后会告诉你删除的行数。一行行执行delete操作。

delete删除慢,可恢复,可以加条件。
MySQL表数据的增删查改_第41张图片


全表删除

truncate table 表名
truncate table exam_ret;

MySQL表数据的增删查改_第42张图片

相当于在os上直接把数据文件的大小变成0。将所有表中数据清除,不显示受影响的行数。
turncate删除快,数据不可恢复,不能加条件。

注意:以上表的删除只是将表中数据删除,而drop表相当于直接把操作系统上这个文件删了,表都没了。

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