MySQL数据库的数据高级操作(复习4)
2017-03-09 17:52
225 查看
数据操作: 增删改查
Insert into 表名 [(字段列表)] values (值列表);
在数据插入的时候, 假设主键对应的值已经存在: 插入一定会失败!
主键冲突
当主键存在冲突的时候(Duplicate key),可以选择性的进行处理: 更新和替换
主键冲突: 更新操作
Insert into 表名[(字段列表:包含主键)] values(值列表) on duplicate key update 字段 = 新值;
Update 表名 set 字段 = 值 [where条件];
高级新增语法
Update 表名 set 字段 = 值 [where条件] [limit 更新数量];
Delete from 表名 [where条件] [limit 数量];
删除: 如果表中存在主键自增长,那么当数据删除之后, 自增长不会还原
思路: 数据的删除是不会改变表结构, 只能删除表后重建表
Truncate 表名; – 先删除改变,后新增改变
Select 字段列表/* from 表名 [where条件];
完整语法
Select [select选项] 字段列表[字段别名]/* from 数据源 [where条件子句] [group by子句] [having子句] [order by子句] [limit 子句];
All: 默认的,保留所有的结果
Distinct: 去重, 查出来的结果,将重复给去除(所有字段都相同)
语法
字段名 [as] 别名;
数据源分为多种: 单表数据源, 多表数据源, 查询语句
单表数据源: select * from 表名;
多表数据源: select* from 表名1,表名2…;
子查询: 数据的来源是一条查询语句(查询语句的结果是二维表)
Select * from (select 语句) as 表名;
Where子句返回结果: 0或者1, 0代表false,1代表true.
判断条件:
比较运算符: >, <, >=, <= ,!= ,<>, =, like, between and, in/not in
逻辑运算符: &&(and), ||(or), !(not)
Where原理: where是唯一一个直接从磁盘获取数据的时候就开始判断的条件: 从磁盘取出一条记录, 开始进行where判断: 判断的结果如果成立保存到内存;如果失败直接放弃.
基本语法: group by 字段名;
分组的意思: 是为了统计数据(按组统计: 按分组字段进行数据统计)
SQL提供了一系列统计函数
Count(): 统计分组后的记录数: 每一组有多少记录
Max(): 统计每组中最大的值
Min(): 统计最小值
Avg(): 统计平均值
Sum(): 统计和
Count函数: 里面可以使用两种参数: *代表统计记录,字段名代表统计对应的字段(NULL不统计)
注意:分组会自动排序: 根据分组字段:默认升序
Group by 字段 [asc|desc]; – 对分组的结果然后合并之后的整个结果进行排序
Where是针对磁盘数据进行判断: 进入到内存之后,会进行分组操作: 分组结果就需要having来处理.
Having能做where能做的几乎所有事情, 但是where却不能做having能做的很多事情.
分组统计的结果或者说统计函数都只有having能够使用.
Having能够使用字段别名: where不能: where是从磁盘取数据,而名字只可能是字段名: 别名是在字段进入到内存后才会产生.
使用基本语法
Order by 字段名 [asc|desc]; – asc是升序(默认的),desc是降序
方案1: 只用来限制长度(数据量): limit 数据量;
方案2: 限制起始位置,限制数量: limit 起始位置,长度(显示数量);
Create view 视图名字 as select语句; – select语句可以是普通查询;可以是连接查询; 可以是联合查询; 可以是子查询.
创建单表视图: 基表只有一个
创建多表视图: 基表来源至少两个
视图是一张虚拟表: 表, 表的所有查看方式都适用于视图: show tables [like]/desc 视图名字/show create table 视图名;
视图比表还是有一个关键字的区别: view. 查看”表(视图)”的创建语句的时候可以使用view关键字
修改视图: 修改视图本身的来源语句(select语句)
Alter view 视图名字 as 新的select语句;
新增数据
基本语法Insert into 表名 [(字段列表)] values (值列表);
在数据插入的时候, 假设主键对应的值已经存在: 插入一定会失败!
insert into mytable (10010,'广州联通',1065585292; --id为10010的数据早已存在
主键冲突
当主键存在冲突的时候(Duplicate key),可以选择性的进行处理: 更新和替换
主键冲突: 更新操作
Insert into 表名[(字段列表:包含主键)] values(值列表) on duplicate key update 字段 = 新值;
--主键冲突 insert into mytable values (10010,"中国联通",1065585292) --冲突处理 on duplicate key --更正号码 update phone=1065585292;
更新数据
基本语法Update 表名 set 字段 = 值 [where条件];
高级新增语法
Update 表名 set 字段 = 值 [where条件] [limit 更新数量];
update mytable set phone='1000010010' where id=10010 limit 1;
删除数据
与更新类似: 可以通过limit来限制数量Delete from 表名 [where条件] [limit 数量];
delete from mytable where phone=10010 limit 1;
删除: 如果表中存在主键自增长,那么当数据删除之后, 自增长不会还原
思路: 数据的删除是不会改变表结构, 只能删除表后重建表
Truncate 表名; – 先删除改变,后新增改变
查询数据
基本语法Select 字段列表/* from 表名 [where条件];
完整语法
Select [select选项] 字段列表[字段别名]/* from 数据源 [where条件子句] [group by子句] [having子句] [order by子句] [limit 子句];
Select选项
Select选项: select对查出来的结果的处理方式All: 默认的,保留所有的结果
Distinct: 去重, 查出来的结果,将重复给去除(所有字段都相同)
select distinct * from mytable;
字段别名
字段别名: 当数据进行查询出来的时候, 有时候名字并一定就满足需求(多表查询的时候, 会有同名字段). 需要对字段名进行重命名: 别名语法
字段名 [as] 别名;
select id,name as 学号,phone 电话号码 from mytable;
数据源
数据源: 数据的来源, 关系型数据库的来源都是数据表: 本质上只要保证数据类似二维表,最终都可以作为数据源.数据源分为多种: 单表数据源, 多表数据源, 查询语句
单表数据源: select * from 表名;
多表数据源: select* from 表名1,表名2…;
子查询: 数据的来源是一条查询语句(查询语句的结果是二维表)
Select * from (select 语句) as 表名;
Where子句
Where子句: 用来判断数据,筛选数据.Where子句返回结果: 0或者1, 0代表false,1代表true.
判断条件:
比较运算符: >, <, >=, <= ,!= ,<>, =, like, between and, in/not in
逻辑运算符: &&(and), ||(or), !(not)
Where原理: where是唯一一个直接从磁盘获取数据的时候就开始判断的条件: 从磁盘取出一条记录, 开始进行where判断: 判断的结果如果成立保存到内存;如果失败直接放弃.
Group by子句
Group by:分组的意思, 根据某个字段进行分组(相同的放一组,不同的分到不同的组)基本语法: group by 字段名;
分组的意思: 是为了统计数据(按组统计: 按分组字段进行数据统计)
SQL提供了一系列统计函数
Count(): 统计分组后的记录数: 每一组有多少记录
Max(): 统计每组中最大的值
Min(): 统计最小值
Avg(): 统计平均值
Sum(): 统计和
Count函数: 里面可以使用两种参数: *代表统计记录,字段名代表统计对应的字段(NULL不统计)
注意:分组会自动排序: 根据分组字段:默认升序
Group by 字段 [asc|desc]; – 对分组的结果然后合并之后的整个结果进行排序
Having子句
Having子句: 与where子句一样: 进行条件判断的.Where是针对磁盘数据进行判断: 进入到内存之后,会进行分组操作: 分组结果就需要having来处理.
Having能做where能做的几乎所有事情, 但是where却不能做having能做的很多事情.
分组统计的结果或者说统计函数都只有having能够使用.
Having能够使用字段别名: where不能: where是从磁盘取数据,而名字只可能是字段名: 别名是在字段进入到内存后才会产生.
Order by子句
Order by: 排序, 根据某个字段进行升序或者降序排序, 依赖校对集.使用基本语法
Order by 字段名 [asc|desc]; – asc是升序(默认的),desc是降序
Limit子句
Limit子句是一种限制结果的语句: 限制数量.方案1: 只用来限制长度(数据量): limit 数据量;
方案2: 限制起始位置,限制数量: limit 起始位置,长度(显示数量);
视图
视图: view, 是一种有结构(有行有列)但是没结果(结构中不真实存放数据)的虚拟表, 虚拟表的结构来源不是自己定义, 而是从对应的基表中产生(视图的数据来源).创建视图
基本语法Create view 视图名字 as select语句; – select语句可以是普通查询;可以是连接查询; 可以是联合查询; 可以是子查询.
创建单表视图: 基表只有一个
创建多表视图: 基表来源至少两个
查看视图
查看视图: 查看视图的结构视图是一张虚拟表: 表, 表的所有查看方式都适用于视图: show tables [like]/desc 视图名字/show create table 视图名;
视图比表还是有一个关键字的区别: view. 查看”表(视图)”的创建语句的时候可以使用view关键字
修改视图
视图本身不可修改, 但是视图的来源是可以修改的.修改视图: 修改视图本身的来源语句(select语句)
Alter view 视图名字 as 新的select语句;
删除视图
Drop view 视图名字;相关文章推荐
- mysql数据库,表,表数据的操作(复习,有意者帮忙检查下)
- MySQL数据库的库表数据操作(复习1)
- MySql数据库数据更新操作其高级应用
- MySql数据库数据更新操作其高级应用
- mysql数据库,表,表数据的操作(复习,有意者帮忙检查下)
- MySQL数据库下损坏数据的恢复操作其过程总结
- mysql数据库中命令行下常用命令的操作(增、删、改、查)和数据类型
- MySql数据库的基本操作-表数据的插入和Primary key初步
- objective-c 中数据类型之三 数组(NSArray) 高级操作
- 个人技术作品 - PHP Array 常用排序及数据高级操作的 API Engine
- MySql数据库的基本操作-修改数据表
- C++复习6.C/C++高级数据类型
- MySql数据库的基本操作-表数据中的 设置外键约束
- mysql数据库操作(将一张表的数据插入到另外一张表中)
- 复习笔记6 位运算 2进制数据的操作
- mysql数据库中命令行下常用命令的操作(增、删、改、查)和数据类型
- mysql数据库下损坏数据的恢复操作其过程总结
- 数据结构算法复习[栈操作相关]
- java操作mysql数据库数据(存储过程)
- java web项目操作mysql数据库的数据封装