谁能在上厕所的时候拒绝一篇“MySQL表的增删改查”,看“MySQL表的增删改查”如何让你一泻千里!!

157 阅读3分钟

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

MySQL表的增删改查(初阶)

增删改查即CRUD create Delete Update Retrieve

新增

新增creat
全列插入insert [into] 表名 values(值,值....)
多行插入+全列插入insert [into] 表名 values(值,值..),(值,值...),(值,值...)...
指定列插入insert [into] 表名 (列名,列名.....) values(值,值...)
**分多次插入,涉及到多次网络传输
一次插入多条记录,多个记录仍在一条网络传输上 ,效率高**
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

查询

查询操作得到的表是临时表,查询操作不会影响到磁盘上的数据

查询Retrieve
全列查询select * from 表名
指定列查询select 列名,列名.... from 表名

在这里插入图片描述

在这里插入图片描述

查询字段为表达式

查询字段为表达式select 表达式 from 表名 { 注意null加一个数是null}
在这里插入图片描述

别名

别名select 表达式 [as] 别名 from 表名

在这里插入图片描述

去重

去重 distinctselect distinct 列名,列名.... from 表名
去掉指定列中数据相同的行(保留一个),去重操作涉及"比较操作",比较double,float可能存在误差,但是比较decimal可以精确比较

在这里插入图片描述 在这里插入图片描述

排序(order by)

select...from table_name order by column asc/desc

asc 升序 ascend desc 降序 descend

  1. 如果查询语句没有 order by ,认为查询结果是无序的
  2. null 数据排序,视为比任何值都小
  3. 如果order by后有多个列,先按照第一列排序,第一列相同再按照第二列排序,以此类推
  4. 可使用表达式或别名排序
  5. 如果不加ASC/DESC,默认是ASC 在这里插入图片描述

条件查询(where)

比较运算符
>,>=,<,<=
=相等,但是null=null的结果是null(相当于是false)
<=>相等,null<=>null的结果是true
!=不等于
between a and b范围匹配,前闭后闭 ,a<=value<=b,返回true
in(a,a1,a2,a3....)如果是括号中的任意一个,返回true
is null是null
is not null不是null
like
逻辑运算符
and相当于&&
or相当于||
not条件为true,返回结果为false
  1. where条件可以使用表达式,但不能用别名
  2. .null参与比较,结果是null,也就是false
  3. and的优先级高于or,在使用时可以使用小括号()包裹优先执行的部分
  4. 查询过程 MySQL内部会遍历这个表的每一行记录,拿这个记录的值代入where条件,如果为true就保留这个记录,如果为false就舍弃这个记录
  5. 遍历操作是O(n),遍历数据需要到磁盘上读数据的值,如果MySQL中数据量很大,这就是一个很大的开销
  6. 比较条件的列不一定是前面需要查询的列

在这里插入图片描述 观察and和or的优先级 在这里插入图片描述 between and 在这里插入图片描述 in() 相当于or 在这里插入图片描述

修改(update)

update 表名 set 列名=值,列名=值... where 条件 
update 表名 set 列名=值,列名=值... [order by ...] limit...
  1. where ,limit条件确定行,如果没有条件,相当于把每一行都改了
  2. 注意修改的数据不要越界

在这里插入图片描述

删除(delete)

delete from 表名 where 条件
delete from 表名 [order by...] limit...