您的位置 首页 php

重蔚php学习第三十二天笔记——mysql数据操作高级操作

数据操作高级操作

数据操作包括CRUD,增删改查

插入数据

基本语法:insert into 表名 [(字段列表)] values (值列表),…

蠕虫复制:将已有的数据直接插入到表中

语法:insert into 表名 [(字段列表)] select [字段列表] from 表名(可以是自己,也可以是其他表)

蠕虫复制一般用于测试使用,测试服务器的压力和执行时间。

主键 冲突时处理,正常情况下主键冲突则不能进行数据插入,从而报错。

当主键插入冲突时,需要执行更新操作

语法:insert into 表名 values (值列表) on duplicate key update 字段=值,…

mysql还提供了一种冲突解决方式

语法:replace into 表名 value(值列表); — 当原来的主键已经存在时则覆盖

更新数据

标准语法:update 表名 set 字段=值,… where条件

搭配order by和limit进行更新;order by对字段进行排序,limit 限制受影响的行数

语法:update 表名 set 字段=值 where条件 order by limit

删除数据

标准语法:delete from 表名 where条件

搭配order by和limit进行更新

语法:delete from 表名 [where条件] [order by 字段] [limit 数量]

采用delete并不会改变当前自增长值

有什么办法能够清空数据同时,还重置自增长值呢?

drop 表名,create表名

语法:truncate 表名,第一步:删除表,第二步:创建表

查询数据

标准语法:select *[字段列表] from 表名 [where条件]

详细语法:select [select选项] [字段列表|表达式] [from子句:表名|表名列表] [where子句] [group by子句] [having 子句] [order by 子句] [limit子句]

特别注意:五子句的顺序不能乱,可以只有部分或者全部都没有。

select 选项:all和distinct

all:表示获得全部数据,不管数据是否重复,默认的是all

distinct:去重,指的是对整个记录进行去重,如果两条记录完全一致则被认为是重复。

表达式:凡是能返回结果的语句都是表达式

select 1 + 10;

字段别名

字段 [as] 别名

不适用as

from子句

指定数据源

语法:from 表名

还可以从多张表里获取数据

语法:from 表名1,表名2,…

1.将第一张表的第一条数据与第二张表的每一条数据进行拼接,然后保存该数据

2.结果数据:字段数 = 两张表字段数之和,记录数 = 两张表记录数相乘

以上获得的内容在数学上被称之为: 笛卡尔积

笛卡尔积在数据库中没有意义,所以应当尽量避免。

虚拟表:dual,虚拟的意思

mysql为了保证语句结构的完整性而存在的,并没有真实的表和真实的数据。

from子句可以对数据源使用别名

from 表名 [as] 别名

where子句

用来筛选满足条件的数据

where本身不能筛选,而是通过一些筛选的表达式来实现。

where表达式:逻辑表达式(&&and,||or,!not),比较表达式(<,<= > >= = != <> in not in between-and is like any some all)

where 条件1 and 条件2:两个条件都必须满足

=:mysql里=表示比较,当然也可以是赋值

in:在一个集合内

语法:字段 in (条件集合)

not in刚好取相反的数据

between and:在某个范围之内,是闭区间

语法:between 条件1 and 条件2,包含条件1和条件,条件1必须 小于 条件2

is:因为null和任何数据的计算都会得到null结果,没有办法进行比较,只能通过is null或者is not null来对null属性数据进行判断。

判断数据为空

any,some和all对应的条件应该是子查询的结果。不能直接给出条件。

where子句原理:

where子句之后,所有的操作都是针对内存里的结果进行操作。

group子句

group就是对结果进行分组

语法:group by 字段名

分组是为了统计

将所有的数据按照分组字段先进行排列,所以非分组的信息基本没有用。

一系列统计函数:基本都是针对某个字段,count除外

count:统计记录数,不统计为NULL的记录

max:获取最大值

min:获取最小值

avg:获得平均值

sum:求和

group by原理

group_concat():将分组内的某个字段进行拼接显示

count:统计不为空的所有字段

多字段分组

语法:group by 字段1,字段2,。。。。。

group排序功能,group会对分组的字段进行排序。默认是升序排序

语法:group by 字段 [asc|desc]

回溯统计

将数据进行多字段分组之后,每次在向上一次统计之前,系统会对前一个字段的结果进行一次统计。

语法:with rollup

文章来源:智云一二三科技

文章标题:重蔚php学习第三十二天笔记——mysql数据操作高级操作

文章地址:https://www.zhihuclub.com/152864.shtml

关于作者: 智云科技

热门文章

网站地图