全部产品

DDL 语法

更新时间:2020-04-26 15:55:57

在使用数据访问代理时,您可以通过 DDL 语句完成建库建表等操作。

DDL 基本语句

  • 创建数据表

    1. CREATE TABLE IF NOT EXISTS `table_name`(
    2. id INTEGER NOT NULL PRIMARY KEY,
    3. name VARCHAR(20) NOT NULL,
    4. age INTEGER NOT NULL
    5. );
  • 删除数据表

    1. DROP TABLE table_name;
  • 修改数据表

    1. /* 修改字段名 */
    2. ALTER TABLE table_name CHANGE name name1 VARCHAR(255);
    3. /* 修改字段类型 */
    4. ALTER TABLE table_name MODIFY name1 VARCHAR(64);
    5. /* 添加字段(默认添加至数据表末尾)*/
    6. ALTER TABLE table_name ADD COLUMN address VARCHAR(20) DEFAULT NULL;
    7. /* 添加主键 */
    8. ALTER TABLE table_name ADD PRIMARY KEY (id);
    9. /* 添加唯一约束 */
    10. ALTER TABLE table_name ADD UNIQUE uni_name1 (name1);
  • 添加索引

    1. /* 创建索引 */
    2. CREATE INDEX idx_addr ON table_name (address);
    3. /* 使用 ALTER TABLE 语句添加索引 */
    4. ALTER TABLE table_name ADD INDEX idx_addr (address);
    5. /* 创建唯一索引 */
    6. CREATE UNIQUE INDEX uni_addr ON table_name (address);
  • 删除索引

    1. /* 删除索引 */
    2. DROP INDEX idx_addr ON table_name;
    3. /* 使用 ALTER TABLE 语句删除索引 */
    4. ALTER TABLE table_name DROP INDEX idx_addr;

使用限制

当您在数据访问代理中使用 DDL 语句时,请注意以下限制:

  • CREATE TABLE 语句不支持 FOREIGN KEY 约束。
  • COMMENT 关键字不支持分号(;)。

Sharding DDL 语句

数据库访问代理在控制台的任务管理与服务端上均支持了 Sharding DDL 功能,即带有拆分规则的建库建表语句。

创建数据库

  • 新建库:

    1. CREATE DATABASE IF NOT EXISTS my_db -- MYSQL原生
    2. default character set utf8 -- MYSQL原生
    3. [SHARDS 100] -- 扩展:【通用】分库数属性
  • 复用已有库:

    1. CREATE DATABASE tradequery_db EXTENDS trade_db;

创建数据表

目前,数据访问代理建表需要在控制台页面中填写表名、分表数量、选择分库分表拆分键和规则,再输入建表语句完成创建逻辑表和物理表。以上操作对于有几十张表的业务而言非常繁琐和低效的,可以通过下面的一条 SQL 完成创建逻辑表和物理表的创建,提高建表的效率。

  1. CREATE TABLE [IF NOT EXISTS] `employee` (
  2. id int(11) not null,
  3. user_id varchar(32) not null,
  4. age int(11) not null
  5. )
  6. DBSHARD BY HASH (col)
  7. TBSHARD BY HASH (dol)
  8. SHARDS NUMS

单拆分列

  • 字符串截断:字符串截断是数据访问代理应用最多的拆分规则,可以配合 substr(str,pos,len) 函数一起使用。

    1. CREATE TABLE [IF NOT EXISTS] `employee` (
    2. id int(11) not null,
    3. user_id varchar(32) not null,
    4. age int(11) not null
    5. )
    6. DBSHARD BY HASH (substr(user_id,-4,2))
    7. TBSHARD BY HASH (substr(user_id,-4,2))
    8. SHARDS 100
  • HASH

    1. CREATE TABLE [IF NOT EXISTS] `employee` (
    2. id int(11) not null,
    3. user_id varchar(32) not null,
    4. age int(11) not null
    5. )
    6. DBSHARD BY HASH (id)
    7. TBSHARD BY HASH (id)
    8. SHARDS 100
  • TOINT

    1. CREATE TABLE [IF NOT EXISTS] `employee` (
    2. id int(11) not null,
    3. user_id varchar(32) not null,
    4. age int(11) not null
    5. )
    6. DBSHARD BY TOINT(id)
    7. TBSHARD BY TOINT(id)
    8. SHARDS 100