深入mysql语言_MySQL对数据操作的一些深入语法
其他数据操作
数据的操作也叫作crud:
C:create
R:read
U:update
D:delete
插入数据
蠕虫复制
就是在已有的数据的基础之上,将原来的数据进行复制,插入到相对应的表中!
语法规则:
insert into 表名select *|字段列表from表名
注意:
当一个表中的数据复制到另一个表中的时候,需要注意数据的来源要与被插入的表的字段数量和类型要保持一致!
总结蠕虫复制的优点:
1, 可以以最快的速度复制另外一张表的数据
2, 在短期内产生大量的数据,以测试服务器的压力
主键重复
插入的值与主键中的值发生冲突,重复的时候,需要使用一个语法,一般使用在主键更改的时候:
如果重复的时候及更新值:
insert into 表名[字段列表] values(值列表) on duplicate key update字段1=值1,字段2=值2……
直接将重复的值删除,插入新数据:
replaceinto 表名[字段列表] values(值列表);
修改数据
update 表名set字段1=值1,字段2=值2……[where条件][order by字段名asc|desc][limit数据量]
删除数据
标准语法:
delete from 表名[where条件] [order by字段名asc|desc][limit数据量]
还有一个类似删除功能的语法:
truncate table 表名;或truncate表名;
注意:该语句不属于DML,属于DDL
相当于做了两件事情:
1, 先把原表drop掉!
2, 再按以前的原表的结构重新创建一次!
查询数据
select[select选项]*|字段列表[as 字段别名]from 数据源[where子句][group by子句][having子句][order by子句][limit子句];
以上的语法一般只是单表查询,另外还有多表查询,多表查询又有联合查询、子查询、连接查询(左连接,右连接,内连接,外连接,自然连接)
注意:
1, from后面的子句往往称之为:五子句,也叫五子查询!
2, 五子查询都可以没有,但是,如果要有,就必须按顺序写!
select选项和别名
含义:查询到的数据如何显示
这里的select选项有两个值:
all:也是缺省值(默认值),保留所有的查询结果!
distinct:去重,去掉重复的查询结果!
别名
所谓的别名,就是给字段或其他表达式等标识符另起一个名字,基本语法如下:
字段|表达式|表|子查询[as]别名
这里的as可以省略,但是为了增加可读性,一般还是写上!
where子句
语法:where 表达式
先将表达式计算结果,如果表达式为真(结果不为0)则则返回记录,如果为假(则为0),则不返回记录。相当于对所有记录进行遍历!
MySQL运算符
MySQL支持以下的运算符:
关系运算符
< >
<= >=
= !=(<>)
注意:这里的等于是一个等号
between and
做数值范围限定,相当于数学上的闭区间!
比如:
between A and B相当于[A,B]
在between and前加上not则是反过来。
in和not in
语法形式:in|not in(集合)
表示某个值出现或没出现在一个集合之中!
模糊查询
也就是带有like关键字的查询,常见的语法形式是:
select *|字段列表from表名where字段名[not] like‘通配符字符串’;
所谓的通配符字符串,就是含有通配符的字符串!
MySQL中的通配符有两个:
_ :代表任意的单个字符
% :代表任意的字符
group by子句
分组统计查询语句
group by 字段1[,字段2]……
从形式上看,就是通过表内的某个或某些字段进行分组:
统计函数
sum():求和,就是将某个分组内的某个字段的值全部相加
max():求某个组内某个字段的最大值
min():求某个组内某个字段的最小值
avg():求某个组内某个字段的平均值
count():统计某个组内非null记录的个数,通常就是用count(*)来表示!
多字段分组
group by 字段1[,字段2]……
作用是:先根据字段1进行分组,然后再根据字段2进行分组!
having子句
having子句和where子句一样,也是用来筛选数据的,通常是对group by之后的统计结果再次进行筛选!
二者的比较:
1, 如果语句中只有having子句或只有where子句的时候,此时,它们的作用基本是一样的!
2, 二者的本质区别是:where子句是把磁盘上的数据筛选到内存上,而having子句是把内存中的数据再次进行筛选!
3, where子句的后面不能使用统计函数,而having子句可以!因为只有在内存中的数据才可以进行运算统计!
order by子句
根据某个字段进行排序,有升序和降序!
语法形式为:
order by 字段1[asc|desc]
默认的是asc,也就是升序!如果要降序排序,需要加上desc!
多字段排序
order by 字段1[asc|desc],字段2[asc|desc]……
比如:order by score asc,age desc
联合查询
关键字:union
语法形式
select语句1
union[union选项]
select 语句2
union[union选项]
select 语句3
union[union选项]
……
作用:
所谓的联合查询,就是将多个查询结果进行纵向上的拼接,也就是select语句2的查询结果放在select语句1查询结果的后面。依次类推!
既然是纵向上的拼接,所以联合查询有一个最最基本的语法,就是各个select语句查询出来的结果,其中字段的个数必须相同,比如,不能一个是4列,一个是3列!并且从显示的结果上看,无论“拼接”了多少个select语句,字段名只显示第一条select语句的字段名!
其中,这里的union选项跟前面学习的select选择的值是一样的,只是默认值不一样:
all:也是缺省值,保留所有的查询结果!
distinct:去重(默认值),去掉重复的查询结果!
交叉连接
关键字:cross join
含义
就是从一张表的一条记录去连接另一张表中的所有记录,并且保存所有的记录,其中包括两个表的所有的字段!
交叉连接语法:
select * | 字段列表from表1cross join表2
深入mysql语言_MySQL对数据操作的一些深入语法相关推荐
- 【MySQL】对JSON数据操作(全网最全)
[MySQL]对JSON数据操作(全网最全) 总所周知,mysql5.7以上提供了一种新的字段格式-json,大概是mysql想把非关系型和关系型数据库一口通吃,所以推出了这种非常好用的格式,这样,我 ...
- MySQL基础篇:数据操作语言DML
1.概述 数据操作语言(DML)用于插入.修改.删除.查询数据记录,包括以下SQL语句: INSERT:添加数据到数据库中 UPDATE:修改数据库中的数据 DELETE:删除数据库中的数据 2.插入 ...
- mysql单表数据列_MySQL 之 数据操作及单表查询
1.数据操作 (1)insert 增加数据 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3-字段n) VALUES(值1,值2,值3-值n); 语法二: ...
- mysql 查询姓王_mysql常用数据操作之查
将数据库查询单独开来是因为使用最多,也是技巧最多,同时面试最容易问的部分 简单查询 select * from table_name; select name,age from table_name; ...
- mysql数据 lt =_MySql之数据操作
一.增 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3-字段n) VALUES(值1,值2,值3-值n); 语法二: INSERT INTO 表名 VA ...
- 删除mysql表_Mysql 删除数据表的三种方式详解
用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, 用 delete. 删除程度可从强到 ...
- docker重启mysql数据丢失_mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发
前言 本文篇幅较长,全是干货,建议亲们可以先收藏慢慢看哦 写文不易,欢迎大家一起交流,喜欢文章记得关注我点个赞哟,感谢支持! 本篇文章我们先来看一下mysql是如何确保数据不丢失的,通过本文我们可以了 ...
- mysql数据冗余_MySQL冗余数据的三种方案
一,为什么要冗余数据 互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量. 水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非pa ...
- sql2008能否打开mysql数据库_mysql数据库数据能不能导入到sql server中
点"测试"按钮确认你的链接是正确的. Press the "Test" button to ensure your connection settings ar ...
最新文章
- leetcode算法题--n个骰子的点数
- CSS图形每日一练(下)
- 洛谷2505 [HAOI2012]道路(最短路计数)
- pytorch 笔记:torch.nn.Conv2d
- 10分钟让你明白什么是ERP
- ajax原理及其优缺点
- 计算机科学学什么语言,在计算机科学中,什么不是正式语言? [关闭]
- 安装mysql 图_如何在Windows下安装MYSQL,并截图说明
- UBUNTU下双显示器设置
- nginx ssl加密_如何通过让我们加密SSL证书来保护Nginx
- 【GDB调试学习笔记】 Makefie上
- Kodak Preps 8 for Mac(专业拼版软件)
- 学习笔记-网络安全(二)
- 公钥基础设施PKI体系介绍
- 市场车载音响麦克风摆放以及降噪解决方案
- 技术天才米勒 oracle,奇迹中的奇迹 WW之功能炫技篇
- 寻找AR中的Big Difference - v2.0 | MixLab AR指南
- oracle home 命令,oracle基本命令集锦
- iOS:iPhone手机分辨率、尺寸、导航栏尺寸、Tabbar尺寸对比(菜鸟教程)
- 阿里云服务器Mongodb被黑,数据丢失
热门文章
- mysql 参数bug_MySQL 的这个 BUG,坑了多少人?
- 987C. Three displays
- 服务器网盘系统怎么装,云服务器上怎么安装操作系统
- linux的文件搜索命令,Linux文件搜索命令find的用法 | 术与道的分享
- WinCE中的RAM-Based Registry与HIVE-Based Registry
- Linux编程练习 --进程间通信1--无名管道
- java 正则匹配括号是否成对_十分钟学会正则表达式
- 8个树莓派超级计算机_6 个可以尝试的树莓派教程
- 【转】深入理解Windows消息机制
- C#多线程之旅(2)——详解线程的开始和创建