mysql 之 sql管理数据 二
2017-06-21 00:00
260 查看
1、创建一个指定 存储引擎 的表
create table mytb1(....) engine = memory;
create table mytb1(....) engine = innodb;
> 查看 某张表 使用 何种 存储引擎
也可以 通过: show table status; 来查看.
> 改变某个表的 存储引擎
> 创建一个表的 2种 规范式 示例:
2、创建一个新数据表作为原始数据表的一份空白副本
新表将 会同原表的结构丝毫不差,所有的数据列、索引等都会 复制过来.-- 复制的是表结构,并无数据.
3、创建一个新数据表 复制 原始表部分数据
新表 只是 取 原始表 部分 相同的数据,新表 和 原始表 数据结构 并不一定 相同;
作用:可以用新表来 容纳一次 查询的 结果.
4、merge 操作
merge 存储引擎 把一组 MyISAM 数据表 当做一个逻辑单元对待,方便查询;每一个Merge 数据表的各成员 MyISAM 数据表 必须具有 完全一样的结构。
最后 log_merge 将 会有 log_2016 和 log_2017 表 2个表 综合起来的 数据.
> merge 修改操作
> merge 存储引擎说明
MERGE数据表可以用来创建一个尺寸超过各个MyISAM数据表所允许的最大长度逻辑单元,修改后要通过FLUSH TABLES刷新表缓存,此法可以动态增加减少子表;MERGE只能用 MyISAM 数据表来构成.
5、分区表
同 MerGe 很相似,但是分区数据表可以使用 MyISAM以外的存储引擎,并且是 一个货真价实的数据表。
说明:> 表的分区指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。用户所选择的、实现数据分割的规则被称为分区函数,这在MySQL中它可以是模数,或者是简单的匹配一个连续的数值区间或数值列表,或者是一个内部HASH函数,或一个线性HASH函数。
> 使用场景:某张表的数据量非常大,通过索引已经不能很好的解决查询性能的问题;表的数据可以按照某种条件进行分类,以致于在查询的时候性能得到很大的提升;
> 优点:
[b] >>> [/b]对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区,来很方便地实现。
>>> 一些查询可以得到极大的优化,这主要是借助于满足一个给定WHERE语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区。因为分区可以在创建了分区表后进行修改,所以在第一次配置分区方案时还不曾这么做时,可以重新组织数据,来提高那些常用查询的效率。
>>> 涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理。这意味着查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果。
>>> 通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量。
6、删除数据表
7、修改某个表的 存储引擎
create table mytb1(....) engine = memory;
create table mytb1(....) engine = innodb;
> 查看 某张表 使用 何种 存储引擎
mysql> show create table tt; +-------+---------------------------------------- ------------------------------------------------- ---+ | Table | Create Table | +-------+---------------------------------------- ------------------------------------------------- ---+ | tt | CREATE TABLE `tt` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+----------------------------------------
也可以 通过: show table status; 来查看.
> 改变某个表的 存储引擎
mysql> alter table tt engine = innodb; Query OK, 0 rows affected (0.21 sec) Records: 0 Duplicates: 0 Warnings: 0
> 创建一个表的 2种 规范式 示例:
## 如果不存在,则创建 mysql> create table if not exists hh( id int primary key auto_increment, name varchar(20)) engine = innodb; Query OK, 0 rows affected (0.14 sec) ## 如果存在,删除,再创建 drop table if exists tt; create table tt( id int primary key auto_increment, name varchar(20) ) engine = innodb;
2、创建一个新数据表作为原始数据表的一份空白副本
mysql> create table tt like hh; Query OK, 0 rows affected (0.09 sec)
新表将 会同原表的结构丝毫不差,所有的数据列、索引等都会 复制过来.-- 复制的是表结构,并无数据.
3、创建一个新数据表 复制 原始表部分数据
mysql> create table tt select * from hh; Query OK, 1 row affected (0.15 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> create table tt select * from hh where id > 10; Query OK, 0 rows affected (0.13 sec) Records: 0 Duplicates: 0 Warnings: 0
新表 只是 取 原始表 部分 相同的数据,新表 和 原始表 数据结构 并不一定 相同;
作用:可以用新表来 容纳一次 查询的 结果.
4、merge 操作
merge 存储引擎 把一组 MyISAM 数据表 当做一个逻辑单元对待,方便查询;每一个Merge 数据表的各成员 MyISAM 数据表 必须具有 完全一样的结构。
create table log_2017(dt datetime not null, info varchar(100) not null, describ varchar(20))engine=myisam; create table log_2017(dt datetime not null, info varchar(100) not null, describ varchar(20))engine=myisam; create table log_merge(dt datetime not null, info varchar(100) not null, describ varchar(20))engine=merge union=(log_2016,log_2017);
最后 log_merge 将 会有 log_2016 和 log_2017 表 2个表 综合起来的 数据.
> merge 修改操作
mysql> alter table log_merge union = (log_2016,log_2017); Query OK, 0 rows affected (0.07 sec) Records: 0 Duplicates: 0 Warnings: 0
> merge 存储引擎说明
MERGE数据表可以用来创建一个尺寸超过各个MyISAM数据表所允许的最大长度逻辑单元,修改后要通过FLUSH TABLES刷新表缓存,此法可以动态增加减少子表;MERGE只能用 MyISAM 数据表来构成.
5、分区表
同 MerGe 很相似,但是分区数据表可以使用 MyISAM以外的存储引擎,并且是 一个货真价实的数据表。
mysql> create table log_partition( -> dt datetime not null, -> info varchar(100), -> index(dt)) -> partition by range(year(dt)) -> (partition p0 values less than(2016), -> partition p1 values less than(2017), -> partition p2 values less than maxvalue); Query OK, 0 rows affected (0.51 sec)
说明:> 表的分区指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分。实际上,表的不同部分在不同的位置被存储为单独的表。用户所选择的、实现数据分割的规则被称为分区函数,这在MySQL中它可以是模数,或者是简单的匹配一个连续的数值区间或数值列表,或者是一个内部HASH函数,或一个线性HASH函数。
> 使用场景:某张表的数据量非常大,通过索引已经不能很好的解决查询性能的问题;表的数据可以按照某种条件进行分类,以致于在查询的时候性能得到很大的提升;
> 优点:
[b] >>> [/b]对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区,来很方便地实现。
>>> 一些查询可以得到极大的优化,这主要是借助于满足一个给定WHERE语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区。因为分区可以在创建了分区表后进行修改,所以在第一次配置分区方案时还不曾这么做时,可以重新组织数据,来提高那些常用查询的效率。
>>> 涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理。这意味着查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果。
>>> 通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量。
6、删除数据表
> drop table db_name; drop table db_name1,db_name2; drop table if exists db_name1;
7、修改某个表的 存储引擎
mysql> alter table hh engine=innodb; Query OK, 1 row affected (0.34 sec) Records: 1 Duplicates: 0 Warnings: 0
相关文章推荐
- 6.(Mysql数据管理相关)连接MYSQL,修改密码,增加新用户,数据库相关命令,表操作相关命令,数据相关命令,数据库sql导入和导出,备份数据库,查看不到mysql数据库的解决办法
- mysql 之 sql管理数据 - information_schema
- MySQL技术内幕之一:使用SQL管理数据
- mysql 之 sql管理数据 一
- MySQL(用户管理,常用sql语句,数据库备份恢复,MySQL调优,恢复误操作数据)
- mysql 之 sql管理数据 - 索引和表操作
- MySQL用户管理、常用sql语句、备份和恢复数据
- MySQL、MS SQL、Oracle三种数据库查询M到N行数据
- MySQL数据导入导出方法与工具介绍(2-import from sql files)
- MYSQL集群管理节点和数据节点的检测脚本
- mysql的大批量导入数据sql语句的一点优化
- MySQL - MySQL 5.1参考手册 - 第13章:SQL语句语法 - 13.1. 数据定义语句 - CREATE TABLE
- MySQL复制表结构和数据SQL语句
- 怎么样用PHPMyAdmin 将*.Sql数据倒入MYSQL[经典推荐]
- MySql导出数据解决方案SQL语句
- MySql导入、导出数据解决方案(SQL语句)
- 远程管理SQL数据的方法
- MYSQL 集群数据节点和SQL节点的添加
- Oracle SQL Developer(可管理多种类型数据库主流oracel,sqlserver,mysql)
- MySQL - SQL语句语法(数据定义语句)