MySQL 增删查改基础版

增删查改

  • 插入
    • 插入全部列
    • 同时插入多条记录
    • 插入部分列
  • 查找
    • 全列查找
    • 查找部分列
    • 查询的时候进行运算操作
    • 查询每个学生的总分
    • 给查询的临时表起别名
    • 针对查询结果去重
    • 多个列去重
    • 按照总成绩排序
    • 按照别名来排序
    • 对查询结果按照某一列进行排序
    • 根据多个列进行排序
  • 条件查询
    • 查询某一列小于某个值
    • 列和列之间的比较
    • 并且条件查询
    • 或者条件查询
    • and 和 or 的优先级
    • between 方法
    • in 方法
    • 模糊匹配 like
      • % 通配符
      • _ 下划线
    • 查找 NULL 成绩
      • <=>
      • is null
    • 分页查询 limit
      • offset
      • 搭配条件使用
  • 修改
    • 使用 where 来修改
      • 一次修改多个数值
    • 对前几个序列进行修改
    • 修改全部数据
  • 删除
    • 使用 where 删除
    • 删掉所有数据

插入

插入全部列

插入就是增加的意思。先创建一个学生表:

 create table student(id int,name varchar(50),age int,score double(3,1));

然后插入数据,insert into 表名 values(表里面的值); 。四个数据对应的是:班级,名字,年龄。成绩:

insert into student values (1, 'zhangsan', 19, 98.5);

这里先介绍一个简单查询全表的语句:

select * from student;

运行结果如下:
MySQL 增删查改基础版_第1张图片

同时插入多条记录

插入的时候,一个括号代表一条记录。多个括号就是同时插入多条记录。代码如下:

insert into student values (2, '李四', 20, 98.0),(3, '王五', 21, 97);

MySQL 增删查改基础版_第2张图片

插入部分列

在插入部分列的时候,在表名后面加个括号,里面写上要插入的列就好,然后在 values 后面的括号内填入要插入列的数值就好。未插入的列的值就是 NULL 。代码如下:

insert into student (id,name) values (10,'Lockey');

运行结果如下:
MySQL 增删查改基础版_第3张图片

查找

查询是数据库当中用的最多的一种操作。也是考点最多的方式。

全列查找

全列查找就是把一个表的所有的列,所有的行都查询出来。select * from 表名; * 是通配符,表示一个表的所有列。代码如下:

select * from student;

运行结果如下:
MySQL 增删查改基础版_第4张图片
不过这个操作也是很危险的操作。如果数据量很大的话,很容易把服务器挤爆。

查找部分列

在查找的时候,也可以只查找部分列。select 列名,列名 from 表名; 先创建一个包含多个列的表:

create table exam_result(id int, name varchar(50),chinese decimal(3,1),math decimal(3,1),english decimal(3,1));

然后插入多个数据:

INSERT INTO exam_result (id,name, chinese, math, english) VALUES
                                                              (1,'qqq', 67, 98, 56),
                                                              (2,'www', 87.5, 78, 77),
                                                              (3,'eee', 88, 98.5, 90),
                                                              (4,'rrr', 82, 84, 67),
                                                              (5,'ttt', 55.5, 85, 45),
                                                              (6,'yyy', 70, 73, 78.5),
                                                              (7,'uuu', 75, 65, 30);

现在只在表中查询 名字 和 语文成绩 ,代码如下:

select name,chinese from exam_result;

运行结果如下:
MySQL 增删查改基础版_第5张图片
这里通过查询就筛选出了由 名字 和 语文成绩 组成的表。

查询的时候进行运算操作

进行运算就是查询的时候,同时进行一些运算操作(列和列之间)。例如:期望查询结果中的语文成绩比实际多 10 分。代码如下:

select name,chinese + 10 from exam_result;

运行结果如下:
MySQL 增删查改基础版_第6张图片
要注意的是,这里的查询结果都是临时表。并不会对原始数据作出修改。

查询每个学生的总分

查询总分的时候,把所以成绩加起来就好,代码如下:

select name,chinese + math + english from exam_result;

这里是把语文,数学,英语的成绩加起来。运行结果如下
MySQL 增删查改基础版_第7张图片

给查询的临时表起别名

在列名之后通过 as 就可以给查询的临时表起别名了。select 列名 as 别名 from 表名; 代码如下:

select name,chinese + math + english as total from exam_result;

运行结果如下:
MySQL 增删查改基础版_第8张图片

针对查询结果去重

使用 distinct 针对查询的结果,将相同的结果去掉。代码如下:

select distinct math from exam_result;

运行结果如下:
MySQL 增删查改基础版_第9张图片

多个列去重

如果要针对多个列进行去重,就得这多个列的值都相同才能去重:

select distinct math,english from exam_result;

运行结果如下:
MySQL 增删查改基础版_第10张图片

按照总成绩排序

在排序的时候,通过 order by 来进行排序。select 列名 from 表名 order by 列名 asc/desc; desc 代表升序和降序。升序排序可以默认不写代码如下:

select name,chinese + math + english from exam_result order  by chinese + math + english;

运行结果如下:
MySQL 增删查改基础版_第11张图片

按照别名来排序

将总成绩换为别名,然后进行排序。代码如下:

select name,chinese + math + english as total from exam_result order  by total;

运行结果如下:
MySQL 增删查改基础版_第12张图片
如果数据库当中是带有 NULL 值的,按照升序是最前面,按照降序是最后面,也就是说:空值是最小值。先插入一个带有空值的数据:

insert into exam_result values (8,'酷酷酷',null ,null ,null );

带有空值的运行结果如下:
MySQL 增删查改基础版_第13张图片

对查询结果按照某一列进行排序

对查询的结果按照数学成绩进行排序,代码如下:

select * from exam_result order by math asc;

运行结果如下:
MySQL 增删查改基础版_第14张图片
结果就是按照数学成绩进行升序排序了。

根据多个列进行排序

在排序的时候,如果两个值相同的话,那么就可以再指定一个列来进行排序。这里使用数学和语文举例。当数学成绩一样的时候,就根据语文成绩进行排序。代码如下:

select name,math,chinese from exam_result order by math,chinese;

运行结果如下:
MySQL 增删查改基础版_第15张图片

条件查询

条件查询的时候,主要用到的是 where 。在 where 后面加一些条件来进行查询。

查询某一列小于某个值

要查询某一列小于某个值的数据的时候,在 where 后面加条件就好。select 列名,列名 from 表名 where 某一列 < 60; 代码如下:

select name,english from exam_result where english < 60;

运行结果如下:
MySQL 增删查改基础版_第16张图片

列和列之间的比较

在比较的时候,通过 where 就可以。代码如下:

select name,english,chinese from exam_result where chinese > english;

要注意的是:前面的 name 和 english 和 chinese 只是查出来的表的显示内容。并不是条件。运行结果如下:
MySQL 增删查改基础版_第17张图片

并且条件查询

在查询的时候,通过 and 来连接多个条件进行查询,and 是并且的意思。代码如下:

select name,chinese,english from exam_result where chinese > 80 and english > 80;

这里查询的是 语文和英语 都大于 80 的学生。运行结果如下:
MySQL 增删查改基础版_第18张图片

或者条件查询

通过 or 来完成对或者条件的查询,代码如下:

select name,chinese,english from exam_result where chinese > 80 or english > 80;

这里查询的是 语文或者英语 负数大于 80 的学生。运行结果如下:
MySQL 增删查改基础版_第19张图片

and 和 or 的优先级

在 SQL 当中 and 的优先级比 or 的优先级大,如果想打破优先级,就需要加括号。比如下面的代码:

select * from exam_result where (chinese > 80 or math > 70) and english > 70;

这里就是先比较括号里面的,然后再 and 比较。运行结果如下:
MySQL 增删查改基础版_第20张图片

between 方法

between 就是介于两者之间的表示,要注意的是 between 两边都是闭区间。代码如下:

select * from exam_result where chinese between 80 and 90;

就是选出语文成绩 大于等于 80,小于等于 90 的学生。运行结果如下:
MySQL 增删查改基础版_第21张图片

in 方法

in 方法就是给定几个值,如果有满足这些数据的时候,就输出。代码如下:

select * from exam_result where math in (58,59,98,99);

这里筛选的就是数学成绩在:58,58,98,99 当中。运行结果如下:
MySQL 增删查改基础版_第22张图片

模糊匹配 like

模糊匹配就是有一些关键字一样就可以查询出来。like 查询的时候要搭配通配符来使用

% 通配符

通过 % 通配符就可以进行模糊查询,% 可以代表任意字符,包含 0 个字符。代码如下:

select * from exam_result where name like 'q%';

这里查询出来的是以 q 开头的名字。运行结果如下:
MySQL 增删查改基础版_第23张图片

_ 下划线

下划线通配符,一个下划线只能匹配到一个字符。代码如下:

select * from exam_result where name like 'q__';

这里查询的是以 q 开头的三个符号。运行结果如下:
MySQL 增删查改基础版_第24张图片

查找 NULL 成绩

查找 NULL 成绩的时候,有两种方法:

  1. 通过 <=> 来判断是不是
  2. 通过 is null 来判断是不是

<=>

通过 <=> 来判断,代码如下:

select * from exam_result where chinese <=> null;

运行结果如下:
MySQL 增删查改基础版_第25张图片

is null

is null 也是判断 空 的一中方法,代码如下:

select * from exam_result where chinese is null;

运行结果如下:
MySQL 增删查改基础版_第26张图片

分页查询 limit

分页查询当中,使用 limit 来进行分页。代码如下:

select * from exam_result limit 3;

运行结果如下:
MySQL 增删查改基础版_第27张图片
这里的 limit 限制是 3,也就是一页显示 3 条记录。

offset

offset 是配合 limit 来使用的,就是从 offset 这个位置去查找。代码如下:

select * from exam_result limit 3 offset 3;

运行结果如下:
MySQL 增删查改基础版_第28张图片

搭配条件使用

limit 可以搭配 条件,以及 order by 等操作来组合使用。代码如下:

select name,chinese + math + english as total from exam_result order  by total desc limit 3;

运行结果如下:
MySQL 增删查改基础版_第29张图片

修改

修改主要是使用 update 来进行的。修改: update 表名 set 列名 = 值,列名 = 值 where 条件; where 后面的条件,是针对哪些进行修改。符合 where 条件的就会修改,不符合就不修改。如果 where 省略了,就是修改所有记录。在修改的时候会把原始数据修改。

使用 where 来修改

通过 where 后面加条件就可以完成修改。代码如下:

update exam_result set math = 98 where name = 'eee';

运行结果如下:
MySQL 增删查改基础版_第30张图片

一次修改多个数值

在修改的时候可以一次修改多个数值,代码如下:

update exam_result set math = 60, chinese = 70 where name = 'uuu';

运行结果如下:
MySQL 增删查改基础版_第31张图片

对前几个序列进行修改

在对前几个序列进行修改的时候,可以通过 order by 来进行排序,然后再通过 limit 来限制前几个序列,然后修改就好了。代码如下:

update exam_result set math = math + 10 order by chinese + math + english limit 3;

这里是对总成绩倒数前三的人的数学成绩加上 10 分。运行结果如下:
MySQL 增删查改基础版_第32张图片

修改全部数据

修改全部数据的时候,只要不加 where 就可以了。例如:把语文成绩全部修改为原来的一半。代码如下:

update exam_result set chinese = chinese / 2;

运行结果如下:
MySQL 增删查改基础版_第33张图片

删除

删除操作的时候,使用的是 delete 关键字。delete from 表名 where 条件;

使用 where 删除

在 where 后面加上条件就好了。代码如下:

delete from exam_result where id = 6;

这里就是删除 id 为 6 的信息。运行结果如下:
MySQL 增删查改基础版_第34张图片

删掉所有数据

删掉所有数据的时候,就不用加 where 了。要注意删除的时候一定写准条件,不然写错就可能删掉很多数据。代码如下:

delete from exam_result;

运行结果如下:
MySQL 增删查改基础版_第35张图片

你可能感兴趣的:(数据库,MySQL,增删查改)