数据插入(添加数据)

有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 数据操作相关推荐

  1. mysql 定时同步数据_MySQL数据同步之otter

    一.otter介绍 基于日志数据,用于MySQL或者ORACLE之间准实时同步数据. 用途: mysql/oracle互相同步 中间表/行记录同步 二.原理及架构图 otter整体模块 manager ...

  2. 删除所有数据_mysql数据库操作——数据库的增删改查

    创建数据库 create database 数据库名称 (其他选项) 其他选项可以不要 如: create database test; 则创建了一个数据库名为test的数据库 加上其他选项如字符集设 ...

  3. 下载 mysql 拖_mysql数据库托从

    安装数据库备份工具,因为数据库中的数据量达到270G在使用传统的备份工具mysqldump备份,时间耗费比较长,综合考虑,我们选择比较熟悉的第三方工具xtrabackup进行备份恢复 yum -y i ...

  4. sp MySQL 导入_mysql数据导入redis

    先编写sql脚本,查询好需要导入redis的数据,同时在脚本中设定好redis的类型:最外层的查询需要设定好查询的字段数量,key value各算一个. 我用的是hash结构,将表明以key的形式存储 ...

  5. mysql 统计_mysql数据统计级别技巧

    本文提及技巧只适用数据统计,OLAP场景,不建议用于业务sql.   分组top问题 知识点:巧用局部变量,实现Hive窗口分析函数功能row_number() over(partition by e ...

  6. php mysql修复_MySQL数据表损坏的巧妙修复

    此文章主要向大家描述的是正确修复损坏的MySQL数据表的实际操作流程,我们大家都知道断电或者非正常关机往往会导致MySQL(和PHP搭配之最佳组合)数据库出现错误.其主要有两种方法: 一种方法使用My ...

  7. java 备份 mysql 日志_MySQL 数据备份与还原

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:逆心 链接:https://www.cnblogs.com/kissdodog 公众 ...

  8. c mysql导入数据_MySQL 数据导入

    MySQL 数据导入 MySQL 可以采用2种简单的方法将之前备份文件中的数据加载进 MySQL 数据库. 利用 LOAD DATA 导入数据 MySQL 利用 LOAD DATA 语句作为批量数据加 ...

  9. 日历提醒mysql数据_mysql数据从日历检查,如果预订

    我有一个数据库与物品保留.所有预订都有:ID,物品ID,personWhoBookedId,time_from(unixtime),time-to(unixtime).mysql数据从日历检查,如果预 ...

最新文章

  1. CDMA模块上网设置的过程
  2. Keras构建前馈神经网络并使用callbacks输出acc以及loss曲线(训练接、验证集)及效果可视化
  3. hdu1287 破译密码
  4. python数据库操作批量sql执行_使用Python批量修改数据库执行Sql文件
  5. aspnetboilerplate .net core 使用原生sql
  6. Qt Qwdget 汽车仪表知识点拆解4 另类进度条实现
  7. html中间一条虚线怎么画,【html5】HTML5中canvas怎样画虚线
  8. watch the fixed address in qt
  9. presto自定义UDF函数
  10. 【筛法】第十万零二个素数
  11. 如何直接操作SVN将分支代码合并到主干
  12. Head First Java
  13. 空手套白狼高手,一个小姑娘只用3天净赚5万,值得你去深思!
  14. 黑月教主去水印软件_推荐大家一款免费去水印软和视频编辑软件—无水印剪辑APP...
  15. 你真正的了解i++和++i吗?
  16. RestTemplate和ResponseEntity
  17. linux 设置文件为可修改密码,linux 为用户设定、修改密码 passwd
  18. 【机器学习笔记7】决策树原理及应用
  19. e339 java_java-在Spring Mongo中从文档数组中删除项目
  20. 苹果公司对失败的总结和展望未来

热门文章

  1. 万物皆可Graph | 当推荐系统遇上图神经网络(三)
  2. centos7挂载nas存储_NAS同步百度云全攻略!一篇打尽win虚拟机、黑群、Docker操作演示...
  3. python天气查询小程序加背景图_Python查询天气小程序
  4. python ix loc iloc_关于python:.ix()是否总是比.loc()和.iloc()更好,因为它速度更快并且支持整数和标签访问?...
  5. python画图保存网页_一起学Python数据分析——引言
  6. mysql国内源码安装,mysql 源码包安装
  7. java的list和数组谁高效_java 中ArrayList与LinkedList性能比较
  8. native react 图片裁剪,使用react-native-image-picker将图片上传到firebase
  9. HDU-3537 Mock Turtles型翻硬币游戏
  10. matlab中未定义与 ‘cell‘ 类型的输入参数相对应的运算符 ‘+‘ 的解决方案