首页 > 数据库 > 其他综合 >

MySQL高级增删改查

2016-11-01

MySQL高级增删改查。

新增数据

基本语法

insert into 表名 [(字段列表)] values (值列表);

主键冲突

更新和替换

主键冲突:更新操作

insert into 表名[(字段列表:包含主键)] values(值列表) on duplicate key update 字段 = 新值;

这里写图片描述

主键冲突:替换

repalce into 表名[(字段列表:包含主键)] values(值列表) ;

这里写图片描述

蠕虫复制

从已有的数据去获取数据,然后将数据又进行新增操作,数据成倍增长。

表创建的高级操作:从已有表创建新表。

Create table 表名 like 数据库表名;

这里写图片描述

蠕虫复制:先查出数据,然后将查出的数据新增一遍

insert into 表名[(字段列表)] select 字段列表/* from 数据表名;

这里写图片描述

蠕虫复制的意义:

1. 从已有表拷贝数据到新表中

2. 可以迅速的让表中的数据膨胀到一定的数量级,测试表的压力以及效率

更新数据

基本语法

update 表名 set 字段 = 值 [where 条件];

高级新增语法

update 表名 set 字段 = 值 [where 条件] [limit 更新数量];

这里写图片描述

删除数据

与更新类似。

delete from 表名 [where ] [limit ];

这里写图片描述

删除:如果表中存在自增长,那么删除之后,自增长不会还原。

思路:数据的删除是不会改变表结构,只能删除表后重建表。

truncate 表名; – 先删除改变,后新增改变

查询数据

基本语法

select 字段列表/* from 表名 [where ];

完整语法

select [选项] 字段列表[字段别名] / * from 数据源 [where ] [group by ] [having ] [order by ] [limit ];

select 选项

select对查出来的结果的处理方式

All 默认的,保留所有的结果

Distinct:去重

这里写图片描述

字段别名

当数据进行查询出来的时候,有时候名字并不一定满足需求,需要对字段重命名。

语法:字段名 as 别名

这里写图片描述

数据源

本质上只要保证数据类似二维表,最终都可以作为数据源

数据源分为多种:单表数据源,多表数据源,查询语句

单表数据源:select * from 表名;

多表数据源:select * from 表1,,表2… ;(笛卡尔积没什么用,尽量避免)

子查询:select * from ( select 语句) as 别名;

这里写图片描述

where 子句

where 子句返回结果: 0 或者1 0代表false 1代表true

where原理:where是唯一一个直接从磁盘获取数据的时候就开始判断条件:从磁盘取出一条记录,开始进行where判断:判断的结果如果成立保存到内存,如果失败直接放弃。

查询条件1:查出学生id为2或3 或5的学生

这里写图片描述

条件查询2:查出区间在170 ~ 180身高的学生

这里写图片描述

between 本身是闭区间,between左边的值必须<=右边的值。

group by子句

根据某个字段进行分组。

基本语法:group by 字段名

这里写图片描述

分组的意义:是为了统计数据。

sql提供了一系列统计函数

count():统计分组后的记录数

max():统计每组中最大值

min():

avg():

sum():

这里写图片描述

count 函数:里面可以使用两种参数:*代表统计记录,字段名代表统计对应的字段(null不统计)。

这里写图片描述

分组会自动排序:根据分组字段,默认升序。

group by 字段 [asc | desc] ; &ndash; 对分组结果合并之后的整个结果进行排序;

多字段分组:先根据一个字段进行分组,然后对分组后的结果再次按照其他字段进行分组。

group_concat 字段可以对分组的结果中的某个字段进行字符串连接(保留该组所有的某个字段)。

having子句

与where子句一样:进行条件判断的。

where是针对磁盘数据进行判断,进入到内存之后,会进行分组操作,分组结果需要having来处理。

having能做where能做的几乎所有的事情。但是where却不能做having能做的很多事情。

分组后的结果或者说统计函数都只有having能够使用

这里写图片描述

2.having能够使用字段别名,where不能。

这里写图片描述

order by子句

根据某个字段进行排序,依赖校对集

基本语法

order by 字段名 [asc|desc];

这里写图片描述

排序可以进行多字段排序:先根据某个字段排序,排序好后在按照某个数据再次排序

这里写图片描述

limit 子句

限制结果的语句:限制数量

limit有两种使用方式:

方案1:只用来限制长度:limit 数据量;

方案2:限制起始位置,限制数量:limit 起始位置,长度;

这里写图片描述

主要用来实现数据的分页:节省时间,提高响应效率,减少资源浪费

相关文章
最新文章
热点推荐