MySQL——表的增删查改

增删查改CRUD:Create(创建),Retrieve(读取),Update(更新),Delete(删除)

一.Create

创建一个表用来保存学生信息

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

 1.单行数据 + 全列插入

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

 2. 多行数据 + 指定列插入

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

 3.插入否则更新

当主键或唯一键发生冲突,可以选择进行同步更新操作语法:

INSERT INTO students (id, sn, name) VALUES (1, 1, 'zhang')
ON DUPLICATE KEY UPDATE sn = 1, name = 'zhang';
Query OK, 2 rows affected (0.47 sec)
-- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
-- 1 row affected: 表中没有冲突数据,数据被插入
-- 2 row affected: 表中有冲突数据,并且数据已经被更新
-- 通过 MySQL 函数获取受到影响的数据行数
SELECT ROW_COUNT();
+-------------+
| ROW_COUNT() |
+-------------+
|      2      |
+-------------+

4.替换

若没有冲突则直接插入,有冲突则删除后再插入。

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

二.Retrieve

select列

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

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

 1.全列查询

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

但是通常不建议使用*进行全列查询。

2.指定列查询

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

3.查询字段表达式 

3.1表中不包含的字段

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

 3.2表达式包含一个字段

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

3.3表达式包含多个字段

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

 4.为查询结果指定别名

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

5.结果去重

 select distinct table_ele_name from table_name 

WHERE条件

比较运算符:

运算符                                                                    说明
>, >=, <, <=                                   大于,大于等于,小于,小于等于
=                                             等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>                                      等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>                                                                不等于
BETWEEN a0 AND a1             范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, ...)                              如果是 option 中的任意一个,返回 TRUE(1)
IS NULL                                                           是 NULL
IS NOT NULL                                                 不是 NULL
LIKE                      模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

逻辑运算符:

运算符                                                                   说明
AND                               多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR                                  任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT                                条件为 TRUE(1),结果为 FALSE(0)

这是全表

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

1.我们找出数学成绩小于80的同学

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

2.接下来我们来找语文成绩在【75,85】分的同学

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

 上边使用了and进行条件拼接,接下来使用between...and...

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

 3.语文成绩是80.81或82的同学

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

 上面我们使用的是or,下面我们使用in条件

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

 4.姓张的同学

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

 上边%匹配任意多个任意字符,倘若使用_,则匹配一个任意字符。我们再插入数据张三三验证。

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

 5.语文成绩比数学成绩好的同学

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

 6.总分低于150的同学

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

7.总分大于150且不姓张的同学(李四) ,我们来验证一下

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

结果排序

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC

1.我们将表中数据按照数学成绩升序进行显示

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

 2.我们将表中数据按照数学成绩降序进行显示

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

 3.按照语文升序,数学降序进行显示

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

当排序规则冲突时,优先遵循先书写的排序规则。

4.查询同学及总分,由高到低显示(降序)

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

5.查询姓张同学成绩,结果按照数学成绩从高到低显示 (降序) 

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

筛选结果分页

-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;

为了更好观看,我们再插入一个数据

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

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

三.Update

1.将张三的分数改为85

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

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

 2.将李四的语文,数学成绩都改为85

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

 3.给最后一名加10分

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

我们可以看到最后一名是130分(因失误按照130计算) 

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

 4.将所有同学的语文成绩变成原来的二倍

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

四.delete

删除表中数据

1.删除张三数据

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

2.接下来我们删除整表数据 (慎用)

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

 截断表

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

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

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

五.插入查询结果

创建一个重复表

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

 再创建一个无重复表

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

六.聚合函数

函数                                                                        说明
COUNT([DISTINCT] expr)                       返回查询到的数据的 数量
SUM([DISTINCT] expr)                            返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)                            返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)                            返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr)                             返回查询到的数据的 最小值,不是数字没有意义

1.查看班级有几名同学

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

 2.查看表中收集到的qq个数

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

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