数据表
是数据库重要的组成部分,是其他对象的基础。数据表一般为产品或资料提供一个详细具体的数据资料,方便人们使用和工作时能够清楚方便的获得相应的数据信息。且也是我们使用数据库载入数据表的原因。
创建数据表
create table <表名>
(
id char(18), //列名1:数据类型【列级别约束条件】【默认值】,小括号里是最大位数
port tinyint,
name varchar(10),
sex enum(‘男’,‘女’),
//[表级别约束条件]
);
查看数据表
1.show columns from <表名>;
2.descrlbe <表名>;简化:desc <表名>
查看数据表的详细信息
show create table <表名>;
添加新列
alter table <表名> add <新列名> <数据类型> 【约束条件】 【FIRST |AFTER已存在列名】
如:alter table reader add tel varchar(11);
如果指定列后追加新列
alter table reader add tel varchar(11) after <指定列的列名>;
修改列名
alter table <表名> change <旧列名> <新列名> <新的数据类型>;
修改列的数据类型
alter table <表名> modlfy <列名> <新的数据类型>;
修改列的位置
alter table <表名> modlfy <要修改的列名> <数据类型> FIRST|AFTER <列名> <数据类型>;
修改列的位置,需要有一个参照物,我们可以根据这个参照物,移动修改列到参照物之前或者之后, FIRST|AFTER:就是选择在之前还是之后的,若是之前,则用FIRST,之后,则AFTER;
删除列
alter table <表名> drop <要删除的列名>
删除数据表
drop table [IF EXISTS] 表1,表2……;
IF EXISTS:若删除数据表不存在,则隐藏错误信息
删除数据表的SQL命令可以一次性删除多个数据表;
表分区
1.水平分区(Horizontal Partitioning)
这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。
举个简单例子:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。(朋奕注:这里具体使用的分区方式我们后面再说,可以先说一点,一定要通过某个属性列来分割,譬如这里使用的列就是年份)
2.垂直分区(Vertical Partitioning)
这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。举个简单例子:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,这时候就要把这些不经常使用的text和BLOB了划分到另一个分区,在保证它们数据相关性的同时还能提高访问速度。
性能的提升(Increased performance)
在扫描操作中,如果MySQL的优化器知道哪个分区中才包含特定查询中需要的数据,它就能直接去扫描那些分区的数据,而不用浪费很多时间扫描不需要的地方了。需要举个例子?好啊,百万行的表划分为10个分区,每个分区就包含十万行数据,那么查询分区需要的时间仅仅是全表扫描的十分之一了,很明显的对比。同时对十万行的表建立索引的速度也会比百万行的快得多得多。如果你能把这些分区建立在不同的磁盘上,这时候的I/O读写速度就“不堪设想”(没用错词,真的太快了,理论上100倍的速度提升啊,这是多么快的响应速度啊,所以有点不堪设想了)了。
表分区有一个前提:便是你的数据库必须支持表分区
判断数据库是否支持表分区:
show plugins
如果支持,则显示
以水平分区为例:
创建表分区:partition by 类型(字段)
使用values less than 操作符定义分区