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章 表结构管 ...
随机推荐
- 一文综述python读写csv xml json文件各种骚操作
Python优越的灵活性和易用性使其成为最受欢迎的编程语言之一,尤其是对数据科学家而言.这在很大程度上是因为使用Python处理大型数据集是很简单的一件事情. 如今,每家科技公司都在制定数据战略. ...
- ——JAVA基础部分
1. 我们能不能声明main()方法为非静态?√ 不能,main()方法必须声明为静态的,这样JVM才可以调用main()方法而无需实例化它的类. 如果从main()方法去掉“static”这个声明, ...
- redis 练习
redis-server启动服务 redis-cli 进入redis redis 常用的keys键操作: exists key ---检查key是否存在 del key1 key2 ---删除指定的 ...
- 2.Metasploit数据库配置及扫描模块介绍
01.Metasploit数据库配置及扫描模块介绍 信息收集 信息收集是渗透测试中首先要做的重要事项之一,目的是尽可能多的查找关于目标的信息,我们掌握的信息越多,渗透成功的机会越大.在信息 ...
- 使用Markdown编辑总结
Markdown是轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档. Markdown可以导出HTML .Word.图像.PDF.Epub 等多种格式的文档. 后缀为.md或者.markdo ...
- 用命令在本地创建github仓库
问题 每次创建github仓库,都要到github官网,有点麻烦,想在本地直接创建github仓库,写好项目后直接push. 操作系统:linux 步骤 1, 首先在github申请一个私人api t ...
- JavaScript 进阶入门
17:56:11 2019-08-09 如题所见 还是入门 23:10:17 2019-08-11 继续学习 16:34:59 2019-08-14 虽然入了门 但还是缺少实践 本文资料来源: 慕课网 ...
- CPU、内存、硬盘、指令之间的关系
我们都知道所有的程序最终都是一系列计算机能够识别的指令和数据,通过执行这些指令来控制整个计算机. 而CPU就是负责读取和解释执行这些指令的,CPU主要包括运算器.控制器和寄存器,控制器负责把指令.数据 ...
- 路由与交换,cisco路由器配置,基础知识点(一)
基础知识点 1.路由器与交换机端口初始化区别 路由器的所有接口默认都是关闭的 交换机的所有接口默认都是打开的 2.路由器 fastEthernet 端口 fastEthernet 0/0 第一个0代表 ...
- linux基础篇,数据流重定向
数据流重定向 很多时候,我们执行一些命令的时候,会在屏幕中得到这些命令的执行结果.这些叫作标准输出. 但是很多情况下,我们并不想将这些信息直接显示在屏幕上,这个时候,就得用重定向这个功能了 标准输入 ...