Mysql数据操作指令
-----多数据插入-----
只要写一次insert指令,但是可以直接插入多条记录
insert into table values(),(),();
主键冲突
我们插入值的时候,主键中已经存在某个值,插入重复值引起主键冲突
两种解决方案
1. 主键冲突更新 duplicate key--主键冲突
类似插入数据语法,如果插入的过程中主键冲突,那么采用更新方法
#insert into 表名 [(字段列表)] values(值列表) on duplicate key update 字段 = 新值;
eg: insert into my_student values('stu0004','小婷') on duplicate key update stu_name = '小婷';
2. 主键冲突替换
当主键冲突之后,干掉原来的数据,重新插入进去
Replace into [(字段列表)] values(值列表);
判断->干掉->插入
蠕虫复制
一分为二,成倍增加,从已有的数据中获取数据,并且将获取到的数据插入到数据表中
#insert into 表名[(字段列表)] select */字段列表 from 表;
注意:
1. 蠕虫复制的确通常是重复数据,没有太大业务意义,可以在短期内快速增加表的数据量,从而可以测试表的
压力,还可以通过大量数据来测试表的效率(索引)
2. 蠕虫复制虽好,但时要注意主键冲突
---------高级查询---------
完整的查询指令:
#select select 选项 字段列表 from 数据源 where 条件 group by 分组 having 条件 order by 排序 limit 限制;
Select 选项:系统该如何对待查询得到的结果
ALL:默认的,表示保存所有的记录
Distinct:去重,去除重复的记录,只保留一条(所有字段都相同)
字段列表:有的时候需要从多张表获取数据,在获取数据的时候,可能存在不同表中有同名字段,需要将同名的字段命名成不同命的:
利用别名 alias
语法: 字段名 [as] 别名
数据源:from后面根的数据不是一个实体表,而是一个从表中查询出来得到的二维结果表(子查询)
基本语法:from(select 字段列表 from 表) as 别名
eg:select * from (select int_1,int_8 from my_int) as int_my;
where:条件筛选
group by:根据指定字段,对数据分组,分组目标为了统计
如果只想看数据显示,那么group by没什么含义:group by将数据按照指定的字段分组之后,只会保留每组的第一条记录
统计函数(聚合函数):
count():统计每组中的数量,如果统计目标是字段,那么不统计为空Null字段,如果为count(*)就代表统计记录
avg():平均数
sum():求和
max():最大值
min():最小值
Group_concat():为了将分组中指定的字段进行合并(字符串拼接)
group by多分组:将数据按照某个字段进行分组之后,对已经分组的数据进行再次分组
#基本语法:group by 字段1,字段2;//先按照字段1进行排序,之后将结果在按照字段2进行排序,以此类推
eg:select class_id,gender,count(*),group_concat(stu_name) from my_student group by class_id,gender;
分组排序:
在MySQL中,分组默认有排序的功能:按照分组字段进行排序,默认是升序
基本语法:group by 字段[asc|desc],
eg:select class_id,gender,count(*),group_concat(stu_name) from my_student group by class_id asc,gender desc;
回溯统计:当分组进行多分组之后,往上统计的过程中,需要进行层层上报,将这种层层上报统计的 过程称之为回溯统计:每一次分组向上统计
的过程都会产生一次新的数据,而且当前数据对应的分组字段为NULL
基本语法:group by 字段[asc|desc] with rollup;//向上滚动
大致就是将每次向上回滚的数据进行统计展示 字段是null
Having子句:本质和where一样,是用来进行数据条件筛选
1. Having是在group by子句之后:可以针对分组数据进行筛选,但是where不行(顺序)
2. having在group by 分组之后,可以使用聚合函数或者字段别名
eg:select class_id,count(*) as number from my_student group by class_id having number >=4;
eg:select class_id,count(*) as number from my_student group by class_id having count(*) >=4;
五子句都可以存在,但是必须要按照顺序,Where能做的Having都可以做,但是having是在group by之后进行操作的
强调:having是在group by之后,group by是在where之后:where的时候表示将数据从磁盘拿到内存,where之后的所有操作都是内存操作
Order by子句:
根据校对规则对数据进行排序
基本语法:order by字段 [asc|desc]
-- 班级学生按照身高排序
select * from my_student order by stu_height asc;
order by 也可以像group by一样进行多字段排序,先按照第一个字段进行排序,然后再按照第二个字段进行排序
order by 字段1 规则,字段2 规则;
limit子句:
limit限制子句:主要是用来限制记录数量获取
记录数限制:纯粹限制获取的数量,从第一条到指定的数量
基本语法:limit 数量;
分页:
利用limit来限制获取指定区间的数据
基本语法:limit offset,length;//offset偏移量:从哪开始,length就是具体获取多少条记录
MySQL中记录的数量从0开始
limit 0,2;//表示获取前两条记录
--分页获取数据
select * from my_student limit 0,2;
select * from my_student limit 2,2;//这个取到的是第三条和第四条记录
注意:limit后面的length表示最多获取对应数量,但是如果数量不够,系统不会强求(记录不够就有多少拿多少,不报错)
Mysql数据操作指令的更多相关文章
- mysql 数据操作 目录
mysql 记录的增删改查 mysql 数据操作 单表查询 mysql 数据操作 多表查询
- mysql 数据操作 单表查询 目录
mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...
- mysql 数据操作 多表查询 目录
mysql 数据操作 多表查询 准备 多表连接查询介绍 mysql 数据操作 多表查询 多表连接查询 笛卡尔积 mysql 数据操作 多表查询 多表连接查询 内连接 mysql 数据操作 多表查询 多 ...
- mysql 数据操作 单表查询 where 约束 目录
mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...
- mysql 数据操作 单表查询 group by 分组 目录
mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...
- mysql 数据操作 多表查询 子查询 介绍
子查询就是: 把一条sql语句放在一个括号里,当做另外一条sql语句查询条件使用 拿到这个结果以后 当做下一个sql语句查询条件mysql 数据操作 子查询 #1:子查询是将一个查询语句嵌套在另一个 ...
- SQL学习笔记四之MySQL数据操作
阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操作: DML =========== ...
- python 基础 9.3 mysql 数据操作
#/usr/bin/python #coding=utf-8 #@Time :2017/11/21 0:20 #@Auther :liuzhenchuan #@File :mysql 数据操作 ...
- MySQL数据操作与查询笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 第1章 MySQL数据操作与查询笔记 • [第1章 MySQL数据库基础] 第2章 MySQL数据操作与查询笔记 • [第2章 表结构管 ...
随机推荐
- 关于用命令行和idea对项目打jar包
前提说一下,我们一般是对编译后的项目进行打包,不然打包后还得自己去重新编译class文件. 假如这是你的一个项目目录: 我们要写一个简单的计算器工具类项目,然后对他进行打包, idea里面out文件夹 ...
- Python3安装Crypto加密包
Python3安装Crypto加密包 下载链接 加密包地址 步骤 下载加密包,解压加密包到Python安装目录下Lib\site-packages目录中,尝试在Pycharm中导入 from Cryp ...
- Cows POJ - 2481 (树状数组 + 单点更新 + 区间查询)
Cows 思路:我们可以按照每个范围的S从小到大排序,相同的S按E从大到小排序,这样的好处是当前范围的S一定大于等于之前范围的S(即当前的范围可能被之前范围的包围),那么我们只需要统计之前的范围E比当 ...
- IDEA+Mybatis-generator代码生成工具
IDEA+Mybatis-generator代码生成工具(小白也能用) 插件介绍 MyBatis Generator简称MBG,是MyBatis 官方出的代码生成器.MBG能够自动生成实体类.Mapp ...
- 模拟Java内存溢出
本文通过修改虚拟机启动参数,来剖析常见的java内存溢出异常(基于jdk1.8). 修改虚拟机启动参数Java堆溢出虚拟机栈溢出方法区溢出本机直接内存溢出 修改虚拟机启动参数 这里我们使用的是ID ...
- css3之 景深
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- js之:漂浮线
(function initJParticle( $ ){ "use strict"; var createParticlesSandbox, Utils; Utils = {}; ...
- PTA数据结构与算法题目集(中文) 7-38寻找大富翁 (25 分)
PTA数据结构与算法题目集(中文) 7-38寻找大富翁 (25 分) 7-38 寻找大富翁 (25 分) 胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人.假 ...
- Elasticsearch创建mapping
(put)请求方式 http://192.168.1.200:9200/index_mapping body 参数 { "mappings":{ "properties& ...
- 怎么用scratch做大鱼吃小鱼
行走代码不说了.出鱼代码大概就是 棋子被点击时 重复执行 移到x:从()到()任意选一个数,y一样 克隆自己 等待你想要的秒数.吃鱼代码就是 当作为克隆体启动是 重复执行 如果碰到()那么 删除克隆体 ...