mysql带表注释的按天分区的分区表的建表语句
时间: 2023-08-14 17:18:50 浏览: 110
好的,以下是一个示例的建表语句:
```
CREATE TABLE `my_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`created_at` datetime NOT NULL COMMENT '记录创建时间',
PRIMARY KEY (`id`,`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY RANGE(TO_DAYS(created_at)) (
PARTITION p0 VALUES LESS THAN (TO_DAYS('2021-09-01')),
PARTITION p1 VALUES LESS THAN (TO_DAYS('2021-10-01')),
PARTITION p2 VALUES LESS THAN (TO_DAYS('2021-11-01')),
PARTITION p3 VALUES LESS THAN (TO_DAYS('2021-12-01'))
) COMMENT='按天分区的示例表';
```
可以看到,这是一个按照 `created_at` 字段的日期来进行分区的表,同时在表的注释中也有说明。每个分区都是按照日期范围来定义的,例如 `p0` 分区表示创建时间早于 2021 年 9 月 1 日的数据。
相关问题
mysql带表注释的分区表建表语句
以下是带表注释的分区表建表语句的示例:
```
CREATE TABLE `my_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`age` int(11) NOT NULL,
`date` date NOT NULL,
`comments` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`,`date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY RANGE (YEAR(date)) (
PARTITION p0 VALUES LESS THAN (2020) COMMENT '2019及以前',
PARTITION p1 VALUES LESS THAN (2021) COMMENT '2020',
PARTITION p2 VALUES LESS THAN (2022) COMMENT '2021',
PARTITION p3 VALUES LESS THAN (2023) COMMENT '2022',
PARTITION p4 VALUES LESS THAN (2024) COMMENT '2023',
PARTITION p5 VALUES LESS THAN MAXVALUE COMMENT '2024及以后'
) COMMENT='我的分区表';
```
这个示例创建了一个名为 `my_table` 的表,包含了 `id`、`name`、`age`、`date` 和 `comments` 等列。它将按照 `date` 列的年份进行分区,并对每个分区添加了注释。表本身也有一个表注释。
Doris建表语句
Doris建表语句的语法与MySQL的语法基本一致,下面是一个示例:
```sql
CREATE TABLE <table_name> (
<column_name> <data_type> [NOT NULL] [DEFAULT <default_value>],
...
[PRIMARY KEY (<key_column>, ...)]
)
[COMMENT '<table_comment>']
[PARTITION BY <partition_type> (<partition_column>) [PARTITIONS <num_partitions>]]
[BUCKETS <num_buckets>]
```
其中,`<table_name>`是要创建的表名,`<column_name>`是表的列名,`<data_type>`是列的数据类型,可以是MySQL支持的任意数据类型,`NOT NULL`和`DEFAULT`是可选的列约束,`PRIMARY KEY`是可选的主键约束,`<key_column>`是主键列名。`COMMENT`是可选的表注释,`PARTITION BY`是可选的分区方式,`<partition_type>`可以是`HASH`、`RANGE`或`KEY`,`<partition_column>`是分区键列名,`PARTITIONS`是可选的分区数,`BUCKETS`是可选的分桶数,`<num_buckets>`是分桶数量。
例如,下面是一个按照时间分区、按照用户ID哈希分桶的表的建表语句:
```sql
CREATE TABLE user_log (
user_id BIGINT NOT NULL,
event_time TIMESTAMP NOT NULL,
event_type VARCHAR(16) NOT NULL,
event_data TEXT,
PRIMARY KEY (user_id, event_time)
)
COMMENT '用户行为日志表'
PARTITION BY RANGE (TO_DAYS(event_time)) (
PARTITION p202101 VALUES LESS THAN (TO_DAYS('2021-02-01')),
PARTITION p202102 VALUES LESS THAN (TO_DAYS('2021-03-01')),
PARTITION p202103 VALUES LESS THAN (TO_DAYS('2021-04-01'))
)
BUCKETS 16;
```
这个表按照时间分为三个分区,每个分区包含一个月的数据。同时,这个表使用哈希分桶,分为16个桶。
阅读全文