( 6 )MySQL中数据的高级操作 (五子句)
时间:2021-07-01 10:21:17
帮助过:9人阅读
数据操作:增删改查
新增数据
语法:
insert into 表名 [(字段列表)] values (值列表);
主键冲突
当主键存在冲突(Duplicate key)的时候,可以进行选择性处理:更新和替换。
更新操作
insert into 表名 [(字段列表:包含主键)] values(值列表) on duplicate key update 字段 = 新值;
替换操作
replace into 表名 [(字段列表:包含主键)] values(值列表) ;
蠕虫复制
特点:从已有的数据中去获取数据,然后将数据又进行新增操作
分裂式增长,数据成倍增加。
表创建的高级操作:从已有表创建新表(复制表结构)
Create table 表名 like 数据库.表名;
蠕虫复制:
先查出数据,然后将查出的数据新增一遍
insert into 表名[(字段列表)] select 字段列表/* from 数据库表名;
可以复制自己的表也可以复制另外的表。
注意:复制的时候不要复制主键,防止主键冲突。
意义:
1,从已有的表中拷贝数据到新表中;
2,可以迅速的让表中的数据膨胀到一定的数量级,可以测试表的压力和效.
更新数据
基本语法
update 表名 set 字段 = 值 [where条件] ;
高级新增语法
update 表名 set 字段 = 值 [where条件] limit 数量;
删除数据
高级基本语法
delete from 表名 [where条件] limit 数量;
删除:如果表中存在主键自增长,那么当删除之后,自增长不会被还原。
数据的删除是不会改变表结构的,只能删除表之后的重建表。
truncate table 表名; --先删除表,后增加表;
查询数据
基本语法
select */字段列表 from 表名[where条件];
完整语法
select [select选项] 字段列表 [as] [字段别名] /* from 数据源 [where条件] [group by子句] [hanving 子句] [order by 子句] [limit 子句];
select 选项:
All:默认的,保留所有的结果;
Distinct:去重,查出来的结果,将重复的去除(所有字段相同)
字段别名:
当数据进行查询的时候,有时候名字并不一定满足需求(对表查询的时候可能会出现同名字段),需要对字段名进行重命名:别名。
语法: 字段名 as 别名;
数据源:
数据的来源,关系型数据库的数据的来源数据表,本质上只要保证数据类似二维表,最终都可以作为数据源。
数据源分类:单表数据源,多表数据源,查询语句(表子查询:数据的来源是一条查询语子)。
where子句:
用来判断数据,筛选数据;
where子句返回结果:0或1;0代表false;1代表true;
判断条件:
运算符:>,<,>=,<=,!=,<>,=,like,between and ,in ,not in .
逻辑运算符:&&(and) , ||(or) , !(not).
where 原理:
where是唯一一个直接从磁盘获取数据的时候就开始判断的条件,从磁盘取出一条记录,开始进行条件判断,判断的结果如果成立就保存到内存中,如果失败就直接放弃.
group by子句:
group by :分组字句,根据某个字段进行分组(相同的放一组,不同的分到不同的分组)
基本语法:
select * from 表名 group by 字段名;
having 子句:
having子句 :与where子句一样 进行条件的判断.
1. where是针对磁盘数据进行操作:进入内存之后,会进行分组操作,分组的结果就要
用having子句来处理.
having 几句能做where能做的所有事情,但是where却不能做having能做的很多事情
分组统计的结果或者说函数统计的结果都之后having能够使用.
2. having 能够使用字段别名 ,where不能. 因为where是从磁盘取数据,别名只能是字段名,别名是字段进入到内存后才会产生的.
order by 子句 :
order by : 排序 根据某个字段进行升序或者降序,依赖校对集
使用基本语法:
order by 字段名 [asc | desc]; --asc 是升序(默认),desc是降序.
排序可以进行多字段排序:
先根据某个字段进行排序,然后排序好的内部,再按照某个字段进行再次排序
limit子句:
limit子句是一种限制结果的语句 : 限制数量.
limit有两种使用方式:
方案1. 只用来限制长度(数据量) :limit 数据量 ;
方案2. 限制起始位置,限制数量: limit 起始位置 , 长度;-- limit Offset length;
从指定的位置,找几个出来. 记录数从0开始.
limit方案2 主要用来实现数的分页:为用户节省时间,提交服务器的响应效率减资源的浪费Length : 每页显示的数据量,基本不变 .
Offset :
offset = ( 页码 - 1 ) * Length
---要显示的起始位置
( 6 )MySQL中数据的高级操作 (五子句)
标签:高级 排序 字段 limit 选择 产生 单表 多表 失败