行业知识
【MySQL】表的增删查改
文章目录
- 1. insert 插入
- 单行数据插入
- 多行数据插入
- 插入替换
- 替换的第一种方案
- 替换的第二种方案
- 2. select 查找
- 全列查询
- 指定列查询
- 查询字段为表达式
- 结果去重
- 3. where子句
- where子句案例
- and 和 between and 的使用
- in 和 or 的使用
- 模糊匹配(like) 的使用
- NULL的查询
- 4. order by ——排序
- 5. 筛选分页结果
- 6. update——修改
- 7. delete ——删除
- 8. 截断表
- 9. 聚合统计
1. insert 插入
语法:
insert [into] table_name [ colum ] values (value_list)
into 和列属性 都可省略
values左侧为列属性 values右侧为以列属性匹配的数据
创建一张表 students ,内部包含 自增长的主键 id 、 唯一键 sn 、 不为空的name 、 唯一键 qq
输入 desc students; 查看students表结构
单行数据插入
指定列 进行单行插入
由于id为主键 并且是自增长的,所以默认从1开始
若将values 左侧的括号忽略 则为全列插入
多行数据插入
当单个插入后,还想继续插入,就需要加上 逗号进行分割
输入 insert into students values(14,1,‘赵六’,‘8888’),(15,2,‘田七’,‘9999’); 即插入成功赵六和田七的信息
插入替换
插入时,有可能出现 主键冲突 或者 唯一键冲突
主键冲突 即主键的id 值相同
唯一键冲突 即唯一键的qq相同
替换的第一种方案
为了 发生 主键或者唯一键 冲突时,可以修改
选择语句:
insert on duplicate key update colum=value [ ]
如果发生键值冲突,则对指定列进行修正
若插入id值为1的信息,则会发生主键冲突
输入 insert into students values(1,112,‘李四’,‘7777’) on duplicate key update sn=112,qq=‘7777’;
因为发生了主键冲突,所以更新数据库的信息,将原数据库的 sn 值改为112 qq改为7777
输入 select row_count(); 筛选受影响的行
0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
1 row affected: 表中没有冲突数据,数据被插入
2 row affected: 表中有冲突数据,并且数据已经被更新
替换的第二种方案
若没有冲突时,则直接插入
若发生冲突时,删除后再插入
replace into 表名 ( ) values( )
1 row affected: 表中没有冲突数据,数据被插入
2 row affected: 表中有冲突数据,删除后重新插入
由于插入的数据在students表中不存在 所以成功被插入, 显示 1 row affected
由于插入的数据 sn值 qq值 与表中数据相同,则删除原来表中的数据,再添加新插入的数据
显示 2 row affected
2. select 查找
语法:
SELECT
[DISTINCT] {* | {column [, column] …}
[FROM table_name]
[WHERE …]
[ORDER BY column [ASC | DESC], …]
LIMIT …
distinct 表示去重
可以使用* 将所有行全部列举出来,也可以使用 逗号 隔开一列或者多列 按照指定筛选
from 表示想从那个表中去提取
where 提取表结构数据时,想要设置的筛选条件
order by 表示 排序
创建一张表 exam_result ,其中包含 主键自增长的id、不为空的姓名、默认值为0.0 的语文成绩
默认值为0.0的数学成绩、默认值为0.0的英语成绩
在exam_result表中 插入 唐三藏、孙悟空 等人 的 语文 数学 英语 成绩
全列查询
输入 select * from +表名; 即可查看该表的所有信息
但并不推荐 使用 * 进行全列 查询
因为 查询的越多,意味着需要传输的量越大,可能会影响索引的使用
指定列查询
输入 select 指定列名 from 表名; 即可获得对应的表中指定列的信息
也可以通过逗号 获取多个列信息
输入 select 指定列名1,指定列名2 from 表名; 即可获得表中 列名1与列名2的信息
查询字段为表达式
当select 后面跟表达式 如 1+1 、5*6
都会帮助其进行运算出结果
表达式最终的结果是要把表达式计算完
由于10是常数,所以最终显示的每一行都会把10拼上
同样可以计算表中各种数据的加和
将英语 数学 语文 成绩 加在一起 与名字 显示出来
as 可以将列重命名
此时将 英语 、数学、语文成绩 的加和 重命名为 total
可以将as 省略,直接 重命名
将name 重命名为 姓名 、将英语 、数学、语文成绩 的加和 重命名为 总分
结果去重
输入 select distinct 指定列名 from 表名; 即在表的指定列中 去重
3. where子句
where后面跟特定的比较运算符 (比较运算符和逻辑运算符) 来判断 如何进行筛选
mysql中 判断两个子句 是否相等 用 一个等号 即可
NULL 就是为空,0 就是0 ,两者含义不同
无法判断 NULL是否等于 NULL ,等号左右的 NULL 是没办法参与运算的
当使用 ,即可判断 两个NULL 是否相等
不等于 ,既可使用 != 比较 ,也可使用 比较
逻辑运算符
在之前创建的 exam_result 表中,查看之前插入的数据
首先查询exam_result表中 所有人的英语成绩
想要查找 表中 英语成绩 小于60分的人
所以在查询所有人英语成绩的基础上 添加 where english =80 and chinese 70; 即可获得数学分数大于70的的最低分
上一篇:服务器换钱机怎么用的?
下一篇:方舟服务器爆满怎么办?