mysql数据=_mysql 数据操作
数据插入(添加数据)
有3种形式
形式1:
insert into 表名(字段名1,字段名2,....)values (值a1,值a2, .....), (值b1,值b2, .....),..... ;
形式2:
insert into 表名1(字段名1,字段名2,....)select 字段名1,字段名2,.... from 表名2;
形式3:
insert into 表名 set 字段名1=值1,字段名2=值2, ..... ;
解释
1,形式1和形式2,可以一次插入多条数据;
2,不管哪种形式,在“字段”和“值”之间,都有“一一对应”关系。
3,值的形式,通常是这样:数字直接写,字符串和时间加单引号,但如果是函数值,则不能加引号
4,观念问题:不管那种形式,都要理解为:插入数据的单位是“行”;
5,有的字段通常无需插入数据,此时不应该出现该字段名:auto_increment, timestamp,
其他类似插入数据的语句:
载入外部“形式整齐”的数据:
load data infile ‘文件完整名(含路径)’ into table 表名;
复制一个表的结构和数据:
create table 表名1 select * from 表名2;
删除数据
基本语法形式:
delete from 表名 [where条件] [order排序] [limit限定];
解释说明:
1,观念问题:删除也是应该以理解为“以行为单位”进行的。
2,删除语句中,where条件通常都要写上,因为如果不写,则就删除了所有数据,应用中极少如此。
3,order排序子句和limit限定子句,应用中通常不需要。
3.1 order排序子句用于设定删除数据的先后顺序。
3.2 limit限定子句用于限定在设定的顺序情况下删除指定的某些行。
类似删除语句truncate:
truncate [table] 表名;用于直接删除整个表(结构)并重新创建该表。
1,删除整个表(数据和结构都没有了)
2,重新创建该表(全新表)。
3,跟delete 语句不带where条件,有什么区别?
主要影响的是类似:auto_increment这种类型的字段值:
truncate结果会重新计算,delete还能继续增长。
修改数据
基本语法:
update 表名 set 字段名1=值表达式1,字段名2=值表达式2,....[where条件] [order排序] [limit限定]
语法说明
1, 观念问题:仍然要理解为更新是以“行”为单位进行的,虽然可以指定只更新其中的部分字段。
2, where条件子句,在应用中,同样几乎都必须有,否则很可能就失去意义,类似delete
3,order排序子句通常不需要,用于将要更新的数据指定更新的顺序。
4,limit限定子句通常不需要,用于将要更新的数据的指定顺序去更新部分(局部)数据,比如:前500行。
5,字段的值可以是表达式,或直接值,或函数,如果是直接值,同样遵循insert语句中的值的写法。
一个问题:复制表
复制表方法1:
create table tab2 like tab1; //复制结构了
insert into tab2 select * from tab1; //复制数据
这种方法可以比较完整。
复制表方法2:
create table tab2 select * from tab1; //同时复制结构和数据
这种方法可能会丢一些结构信息,比如:索引,约束,自增长属性
基本查询
语法形式
select [all | distinct] 字段或表达式列表 [from子句] [where子句] [group by子句] [having子句] [order by子句] [limit子句];
解释说明:
select语句,作用是从“数据源”中,找出(取出)一定的数据,并作为该语句的返回结果(数据集)
数据源:
通常,数据源就是“表”。但:
也可以没有数据源,而是使用“直接数据”(或函数执行结果)。
[all | distinct]
用于设定所select出来的数据是否允许出现重复行(完全相同的数据行)
all:允许出现——默认不写就是All(允许的)。
distinct:不允许出现——就是所谓的“消除重复行”。
from子句
就是指定数据的来源,其实就是“表”,可以是一个表名,也可以是多个表——多表查询了。
where子句
一个概念:where子句,相当于php或js中的if条件语句:其最终结果就是布尔值(true/false)
php:if($n % 4 == 0 && $n % 100 != 0 || $n % 400 == 0 ){}
则:
where true, where 1; where 1=1; 都表示true
where false, where 0; where 1<>1; 都表示false
where子句
一个概念:where子句,相当于php或js中的if条件语句:其最终结果就是布尔值(true/false)
php:if($n % 4 == 0 && $n % 100 != 0 || $n % 400 == 0 ){}
则:
where true, where 1; where 1=1; 都表示true
where false, where 0; where 1<>1; 都表示false
布尔值的判断方式:
布尔值:本质上,布尔值只是一位整数的“别名”,0表示false,非0表示true。
判断为true: XX is true
判断为fale: XX is false
XX应该是一个字段名,且其类型应该是一个整数。
实际应用中,布尔值判断很少用,因为可以直接使用数学大小。
空值的判断方式:
判断为null: XX is null
判断为非空: XX is not null
XX应该是一个字段名
between语法:
XX between 值1 and 值2;
含义:字段XX的值在值1和值2之间(含),相当于:XX >=值1 and XX<=值2;
in语法:
XX in (值1,值2,.......);
含义:XX等于其中所列出的任何一个值都算成立,相当于:
XX = 值1 or XX = 值2 or XX = 值2
注意:其中的值1通常是“直接值”,但也可以是后面要学习的“查询结果值”
like语法(模糊查找):
语法形式: XX like ‘要查找字符’;
说明:
1,like语法(模糊查找)用于对字符类型的字段进行字符匹配查找
2,要查找的字符中,有2个特殊含义的字符:
2.1: % 其含义是:代表任意个数的任意字符
2.2: _ 其含义是:代表1个的任意字符
2.3:这里的字符,都是指现实中可见的一个“符号”,而不是字节。
3,实际应用中的模糊查找,通常都是这样:like ‘%关键字%’;
如果要查找的字符中包含“%”或“_”,“’”,则只要对他们进行转义就可以:
like ‘%ab\%cd%’ //这里要找的是: 包含 ab%cd 字符的字符
like ‘\_ab%’ //这里要找的是: _ab开头的字符
like ‘%ab\’cd%’ //这里要找的是: 包含 ab’cd 字符的字符
where子句前面必须有from子句。虽然他们2者都可以省略,但有from可以没有where,而有where必须有from。
group by 分组子句
形式:
group by 字段1 排序方式1,字段2 排序方式2, .....
通常都只进行一个字段的分组。
含义:
什么叫分组?就是将数据以某个字段的值为“依据”,分到不同的“组别”里。
分组的结果通常:
1,数据结果只能是“组”——没有数据本身的个体
2,数据结果就可能“丢失”很多特性,比如没有性别,身高,姓名,等等。
3,实际上,结果中通常只剩下“组”作为整体的信息:
首先是该组的本身依据值,
另外,这几个可能的值:组内成员的个数,组内某些字段的最大值,最小值,平均值,总和值。
其他字段,通常就不能用了。
4,如果是2个字段或以上分组,则其实是相当于对前一分组的组内,再进行后一依据的分组。
上述说明的结果,其实是反映在select语句中,就是select的“取出项”(输出项)就基本只剩下以上信息了
可见,在分组查询中,基本都依赖于一下几个函数(聚合函数,统计函数):
count(*): 统计一组中的数量,通常用“*”做参数
max(字段名):获取该字段中在该组中的最大值。
min(字段名):获取该字段中在该组中的最小值。
sum(字段名):获取该字段中在该组中的总和。
avg(字段名):获取该字段中在该组中的平均值。
Group_concat():展示没有展示的项;
having子句
having子句其实概念跟where子句完全一样:
where是针对表的字段的值进行“条件判断”
having是只针对groupby之后的“组”数据进行条件判断,即
其不能使用:字段名>10
但可以使用:count(字段名)>10, 或 max(price) > 2000, 但如果字段是分组依据,也可以。
当然,通常也可以使用select中的有效的字段别名,比如:
select count(*) as f1 , max(f1) as f2 from tab1 group by f3 having f1 > 5 and f2 < 1000;\
mysql数据=_mysql 数据操作相关推荐
- mysql 定时同步数据_MySQL数据同步之otter
一.otter介绍 基于日志数据,用于MySQL或者ORACLE之间准实时同步数据. 用途: mysql/oracle互相同步 中间表/行记录同步 二.原理及架构图 otter整体模块 manager ...
- 删除所有数据_mysql数据库操作——数据库的增删改查
创建数据库 create database 数据库名称 (其他选项) 其他选项可以不要 如: create database test; 则创建了一个数据库名为test的数据库 加上其他选项如字符集设 ...
- 下载 mysql 拖_mysql数据库托从
安装数据库备份工具,因为数据库中的数据量达到270G在使用传统的备份工具mysqldump备份,时间耗费比较长,综合考虑,我们选择比较熟悉的第三方工具xtrabackup进行备份恢复 yum -y i ...
- sp MySQL 导入_mysql数据导入redis
先编写sql脚本,查询好需要导入redis的数据,同时在脚本中设定好redis的类型:最外层的查询需要设定好查询的字段数量,key value各算一个. 我用的是hash结构,将表明以key的形式存储 ...
- mysql 统计_mysql数据统计级别技巧
本文提及技巧只适用数据统计,OLAP场景,不建议用于业务sql. 分组top问题 知识点:巧用局部变量,实现Hive窗口分析函数功能row_number() over(partition by e ...
- php mysql修复_MySQL数据表损坏的巧妙修复
此文章主要向大家描述的是正确修复损坏的MySQL数据表的实际操作流程,我们大家都知道断电或者非正常关机往往会导致MySQL(和PHP搭配之最佳组合)数据库出现错误.其主要有两种方法: 一种方法使用My ...
- java 备份 mysql 日志_MySQL 数据备份与还原
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:逆心 链接:https://www.cnblogs.com/kissdodog 公众 ...
- c mysql导入数据_MySQL 数据导入
MySQL 数据导入 MySQL 可以采用2种简单的方法将之前备份文件中的数据加载进 MySQL 数据库. 利用 LOAD DATA 导入数据 MySQL 利用 LOAD DATA 语句作为批量数据加 ...
- 日历提醒mysql数据_mysql数据从日历检查,如果预订
我有一个数据库与物品保留.所有预订都有:ID,物品ID,personWhoBookedId,time_from(unixtime),time-to(unixtime).mysql数据从日历检查,如果预 ...
最新文章
- CDMA模块上网设置的过程
- Keras构建前馈神经网络并使用callbacks输出acc以及loss曲线(训练接、验证集)及效果可视化
- hdu1287 破译密码
- python数据库操作批量sql执行_使用Python批量修改数据库执行Sql文件
- aspnetboilerplate .net core 使用原生sql
- Qt Qwdget 汽车仪表知识点拆解4 另类进度条实现
- html中间一条虚线怎么画,【html5】HTML5中canvas怎样画虚线
- watch the fixed address in qt
- presto自定义UDF函数
- 【筛法】第十万零二个素数
- 如何直接操作SVN将分支代码合并到主干
- Head First Java
- 空手套白狼高手,一个小姑娘只用3天净赚5万,值得你去深思!
- 黑月教主去水印软件_推荐大家一款免费去水印软和视频编辑软件—无水印剪辑APP...
- 你真正的了解i++和++i吗?
- RestTemplate和ResponseEntity
- linux 设置文件为可修改密码,linux 为用户设定、修改密码 passwd
- 【机器学习笔记7】决策树原理及应用
- e339 java_java-在Spring Mongo中从文档数组中删除项目
- 苹果公司对失败的总结和展望未来
热门文章
- 万物皆可Graph | 当推荐系统遇上图神经网络(三)
- centos7挂载nas存储_NAS同步百度云全攻略!一篇打尽win虚拟机、黑群、Docker操作演示...
- python天气查询小程序加背景图_Python查询天气小程序
- python ix loc iloc_关于python:.ix()是否总是比.loc()和.iloc()更好,因为它速度更快并且支持整数和标签访问?...
- python画图保存网页_一起学Python数据分析——引言
- mysql国内源码安装,mysql 源码包安装
- java的list和数组谁高效_java 中ArrayList与LinkedList性能比较
- native react 图片裁剪,使用react-native-image-picker将图片上传到firebase
- HDU-3537 Mock Turtles型翻硬币游戏
- matlab中未定义与 ‘cell‘ 类型的输入参数相对应的运算符 ‘+‘ 的解决方案