文章目录

  • 一、摘要
  • 二、演示
    • 范围分区表
    • LIST分区表
    • 哈希分区表
    • 多级分区表

一、摘要

达梦数据库对表是进行水平分区的:水平分区的方式有以下几种:

  • 范围分区表
  • LIST分区表
  • 哈希分区表
  • 多级分区表

二、演示

范围分区表

按商品价格范围,将商品表分为四个子表

分区列 范围区间
PRICE <10
>=10&&<100
>=100&&<1000
>=1000

建表

CREATE TABLE HA.INFO(NAME VARCHAR(50),PRICE INT
)
PARTITION BY RANGE(PRICE)(PARTITION P1 VALUES LESS THAN (10),PARTITION P2 VALUES LESS THAN (100),PARTITION P3 VALUES LESS THAN (1000),PARTITION P4 VALUES LESS THAN (MAXVALUE)
);
COMMIT;

插入数据

insert into HA.INFO values('铅笔',1);
insert into HA.INFO values('笔记本',22);
insert into HA.INFO values('蓝牙耳机',868);
insert into HA.INFO values('电脑',4599);
insert into HA.INFO values('牙刷',8);
insert into HA.INFO values('水杯',15);

查询

SQL> SELECT * FROM HA.INFO PARTITION(P1);行号     NAME   PRICE
---------- ------ -----------
1          铅笔 1
2          牙刷 8已用时间: 0.605(毫秒). 执行号:100.
SQL>  SELECT * FROM HA.INFO PARTITION(P2);行号     NAME      PRICE
---------- --------- -----------
1          笔记本 22
2          水杯    15已用时间: 1.531(毫秒). 执行号:101.
SQL>  SELECT * FROM HA.INFO PARTITION(P3);行号     NAME         PRICE
---------- ------------ -----------
1          蓝牙耳机 868已用时间: 0.866(毫秒). 执行号:102.
SQL>  SELECT * FROM HA.INFO PARTITION(P4);行号     NAME   PRICE
---------- ------ -----------
1          电脑 4599已用时间: 0.839(毫秒). 执行号:103.

LIST分区表

如果分区列是不连续的,那么范围分区将不再适用,这时候如果分区列上有一些固定的值,那么可以进行列表分区。

建表

CREATE TABLE HA.CITYS(CITY VARCHAR(50),PEOPLE VARCHAR(50))
PARTITION BY LIST(CITY)(PARTITION P1 VALUES('北京','天津'),PARTITION P2 VALUES('郑州','武汉'));
COMMIT;

插入数据

INSERT INTO HA.CITYS VALUES('北京','赵剑');
INSERT INTO HA.CITYS VALUES('天津','刘华');
INSERT INTO HA.CITYS VALUES('武汉','吴枫');
INSERT INTO HA.CITYS VALUES('郑州','王鹏');
COMMIT;

查询

SQL> SELECT * FROM HA.CITYS PARTITION(P1);行号     CITY   PEOPLE
---------- ------ ------
1          北京 赵剑
2          天津 刘华已用时间: 41.528(毫秒). 执行号:16.
SQL> SELECT * FROM HA.CITYS PARTITION(P2);行号     CITY   PEOPLE
---------- ------ ------
1          武汉 吴枫
2          郑州 王鹏已用时间: 0.787(毫秒). 执行号:17.

如果CITY不在分区里面怎么办

SQL> insert into ha.citys values('上海','李娇');
insert into ha.citys values('上海','李娇');
[-2731]:没有找到合适的分区.
已用时间: 3.747(毫秒). 执行号:0.
SQL>

这种情况是根本无法插入数据的。

哈希分区表

哈希分区表是针对上面这种情况而设计的,有时候,分区列是离散的,且值的范围也不固定,这时候就要用到哈希分区表了。它在指定数量的分区中均等地划分数据。

建表

CREATE TABLE HA.HASHCITYS(CITY VARCHAR(50),PEOPLE VARCHAR(50))
PARTITION BY HASH(CITY)(PARTITION P1,PARTITION P2 );
COMMIT;

插入数据

INSERT INTO HA.HASHCITYS VALUES('北京','赵剑');
INSERT INTO HA.HASHCITYS VALUES('天津','刘华');
INSERT INTO HA.HASHCITYS VALUES('武汉','吴枫');
INSERT INTO HA.HASHCITYS VALUES('郑州','王鹏');
COMMIT;

查询

SQL> SELECT * FROM HA.HASHCITYS PARTITION(P1);行号     CITY   PEOPLE
---------- ------ ------
1          武汉 吴枫
2          郑州 王鹏已用时间: 0.706(毫秒). 执行号:26.
SQL> SELECT * FROM HA.HASHCITYS PARTITION(P2);行号     CITY   PEOPLE
---------- ------ ------
1          北京 赵剑
2          天津 刘华已用时间: 0.765(毫秒). 执行号:27.

这部分和列表分区是一样的。

插入数据

SQL> INSERT INTO HA.HASHCITYS VALUES('上海','李娇');
影响行数 1已用时间: 0.805(毫秒). 执行号:28.
SQL> COMMIT;
操作已执行
已用时间: 2.454(毫秒). 执行号:29.

这里却能插入成功

查询

SQL> SELECT * FROM HA.HASHCITYS PARTITION(P2);行号     CITY   PEOPLE
---------- ------ ------
1          北京 赵剑
2          天津 刘华
3          上海 李娇已用时间: 0.447(毫秒). 执行号:32.

可以看到这条记录被自动划分到了P2分区当中。

多级分区表

有时候一次分区并不能准确地对数据进行分类,这时候就需要进行多级分区。

下面做一个三级分区。第一级:基于年级的列表分区。第二级:基于性别的列表分区。第三级:基于分数的范围分区。

建表

CREATE TABLE HA.STUDENTS(NAME VARCHAR(50),GRADE INT CHECK (GRADE IN (7,8,9)),SEX CHAR(2) CHECK (SEX IN ('男','女')),CORES INT CHECK (CORES>=0 AND CORES<=100)
)
PARTITION BY LIST(GRADE)SUBPARTITION BY LIST(SEX) SUBPARTITION TEMPLATE(SUBPARTITION S1 VALUES ('男'),SUBPARTITION S2 VALUES ('女')),SUBPARTITION BY RANGE(CORES) SUBPARTITION TEMPLATE(SUBPARTITION C1 VALUES LESS THAN (60),SUBPARTITION C2 VALUES LESS THAN (80),SUBPARTITION C3 VALUES LESS THAN (100))(PARTITION G1 VALUES (7),PARTITION G2 VALUES (8),PARTITION G3 VALUES (9));

插入数据

INSERT INTO HA.STUDENTS VALUES('林华',7,'男',59);
INSERT INTO HA.STUDENTS VALUES('刘烨',8,'男',69);
INSERT INTO HA.STUDENTS VALUES('赵剑',9,'男',81);
INSERT INTO HA.STUDENTS VALUES('刘蕾',7,'女',58);
INSERT INTO HA.STUDENTS VALUES('张月',8,'女',91);
INSERT INTO HA.STUDENTS VALUES('贺兰',9,'女',71);
INSERT INTO HA.STUDENTS VALUES('许昕',7,'女',75);
INSERT INTO HA.STUDENTS VALUES('秦楠',7,'男',58);
INSERT INTO HA.STUDENTS VALUES('叶秋',9,'男',88);
COMMIT;

查询

第一级

SQL> SELECT* FROM HA.STUDENTS PARTITION(G1);行号     NAME   GRADE       SEX CORES
---------- ------ ----------- --- -----------
1          林华 7           男 59
2          秦楠 7           男 58
3          刘蕾 7           女 58
4          许昕 7           女 75已用时间: 1.365(毫秒). 执行号:46.
SQL> SELECT* FROM HA.STUDENTS PARTITION(G2);行号     NAME   GRADE       SEX CORES
---------- ------ ----------- --- -----------
1          刘烨 8           男 69
2          张月 8           女 91已用时间: 1.656(毫秒). 执行号:47.
SQL> SELECT* FROM HA.STUDENTS PARTITION(G3);行号     NAME   GRADE       SEX CORES
---------- ------ ----------- --- -----------
1          赵剑 9           男 81
2          叶秋 9           男 88
3          贺兰 9           女 71已用时间: 1.349(毫秒). 执行号:48.

第二级

SQL> SELECT * FROM HA.STUDENTS  SUBPARTITION(G1_S1);
S
行号     NAME   GRADE       SEX CORES
---------- ------ ----------- --- -----------
1          林华 7           男 59
2          秦楠 7           男 58已用时间: 2.090(毫秒). 执行号:76.

以上语句的作用是查询7年级的所有男生的信息;

第三级

SQL> SELECT * FROM HA.STUDENTS  SUBPARTITION(G3_S2_C2);行号     NAME   GRADE       SEX CORES
---------- ------ ----------- --- -----------
1          贺兰 9           女 71已用时间: 1.108(毫秒). 执行号:82.

以上语句的作用是查询9年级所有60~70分段的女生的信息。

注意顺序不要反了,S2是二级分区而C2是三级分区,位置不可以互换。

【DM】达梦数据库中分区表的创建及查询操作相关推荐

  1. 达梦数据库实验三:DMDBMS表查询操作

    目录标题 实验三 DMDBMS表查询操作 一.实验目的: 二.实验要求: 三.实验重点和难点: 四.实验内容: 五.实验步骤与结果: 1. 表创建 2. 数据填充 3. 数据查询 3.1查出选修了20 ...

  2. 达梦数据库简介及索引创建

    前言: 武汉达梦数据库股份有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,致力于数据库管理系统与大数据平台的研发.销售和服务,同时可为用户提供全栈数据产品和解决方案.多年来 ...

  3. oracle数据库计数器,DM 达梦数据库 表的 行计数器(COUNTER)属性

    1 表行计数器 说明 默认情况下,DM 达梦数据库count() 是秒回结果的,不受表中实际行数的影响,执行select count() 都能立即返回正确的结果.因为达梦数据库的count(*)操作不 ...

  4. 国产数据库--DM(达梦数据库)

    公司简介 武汉华工达梦数据库有限公司(达梦公司)是国家规划布局内重点软件企业.公司成立于2000年11月,得到了国家计委.科技部.信息产业部.总装备部.公安部等中央部委.省市政府的支持扶植. 达梦数据 ...

  5. 浅谈DM达梦数据库安全管理之用户身份验证与权限管理

            数据库安全管理是指采取各种安全措施对数据库及其相关文件和数据进行保护.DM达梦数据库提供了包括用户标识与鉴别.自主与强制访问控制.通信与存储 加密.审计等丰富的安全功能.达梦数据库 的 ...

  6. 浅谈DM达梦数据库体系结构概念

    浅谈DM达梦数据库体系结构概念 DM逻辑结构 DM和Oracle一样也分数据库和实例,两者的概念也基本一致. 但是不同点在于:达梦是单进程.多线程,而oracle是多进程的. DM这种对称服务器构架在 ...

  7. DM达梦数据库的使用以及数据迁移工具的使用

    1.找不到DM数据库的相关软件 我们打开虚拟机的终端,在根目录下输入命令: ./manager ------->是打开达梦数据库的管理工具 ./dts --------------->是打 ...

  8. 达梦数据库中迁移过来的数据,在Mysql中批量添加注释,修改注释

    一.原因 数据是从达梦数据库中迁移过来的,迁移完成注释丢失 二.方法 利用 information_schema.COLUMNS 这个表 三.执行步骤 1.这是达梦数据库导出的注释 2.达梦的数数据库 ...

  9. DM达梦数据库删除表时提示锁超时的解决方法

    DM 达梦数据库删除表时提示锁超时的问题 1. 问题描述 达梦数据库删除表时,删除失败,提示的报错信息是 锁超时 2. 解决方法 查询所删除表对应的SESS_ID,sql语句如下: select a. ...

最新文章

  1. CVPR2020:点云三维目标跟踪的点对盒网络(P2B)
  2. 亿级流量系统架构之如何设计承载百亿流量的高性能架构【石杉的架构笔记】...
  3. DirectFB编译环境
  4. Java的注解机制——Spring自动装配的实现原理
  5. 单用户修改root密码--redhat7.2 or centos7
  6. aws rds监控慢sql_AWS RDS SQL Server恢复模型,备份和还原
  7. 在SQL Server中配置索引创建内存设置的最佳实践
  8. 2018 推荐系统总结
  9. 博文视点读书节第十日丨大咖书单最终章技术分享双倍放送!
  10. Mac菜单栏使用过程中遇到的问题及解决方法
  11. SQL存储过程、存储函数
  12. 在Ubuntu系统上安装minidwep-gtk软件
  13. 在vc++如何响应键盘和鼠标事件-visual c++
  14. 如何通过Python进行图片批量下载?
  15. Java的输入/输出
  16. GFP_ATOMIC or GFP_KERNEL 区别
  17. Binutils 相关工具记录
  18. Python办公自动化|批量生成请假条
  19. GLES2.0中文API-glCompressedTexImage2D
  20. 通达信软件开发自定义接口的功能

热门文章

  1. 使用Socket连接穿越CMWAP代理
  2. 低压配电网络中三相潮流计算的前推回代法(Matlab实现)
  3. 洛达1536u升级固件_最新Airpods蓝牙耳机华强北二代终极版洛达1562M
  4. ERP水平测度指标及综合评价
  5. 计算机控制电缆芯数,控制电缆芯数详细解读
  6. c语言求平均数double,编写程序以计算浮点值的平均值
  7. Ubuntu-vim的使用
  8. 基于matlab fir数字滤波器设计 程序流程图,实验五:FIR数字滤波器设计与软件实现...
  9. 蛇形/回形矩阵(超详细!看了不会你来打我)
  10. 进程的通信 - 命名管道