§ Table/表管理


§ 什么是表

在GreatSQL中,表(Table)是数据库的基本组成部分,用于存储具有相同结构的数据集合。表由行(Row)和列(Column)组成,每一列代表一个属性或字段(Field),每一行代表一个数据记录(Record)。

§ 表的创建

在数据库中创建数据表基本语法如下:

CREATE TABLE [IF NOT EXISTS]tablename(
	COLUMN_NAME_1 COLUMN_TYPE_1 CONSTRAINTS
	COLUMN_NAME_2 COLUMN_TYPE_2 CONSTRAINTS
	字段3, 数据类型 [约束条件] [默认值],  
	...
	COLUMN_NAME_N COLUMN_TYPE_N CONSTRAINTS
)
1
2
3
4
5
6
7

其中,tablename为数据表名称,COLUMN_NAME_1为列名,COLUMN_TYPE_1为列的数据类型,CONSTRAINTS为约束条件,DEFAULT为默认值。

举例: 创建一个test_greatsql的表 表里包括id(idb编号)、name(姓名)、sex(性别)、address(地址)四个字段

greatsql> CREATE TABLE test_greatsql(
          id INT NOT NULL AUTO_INCREMENT,
          ename VARCHAR(10) NOT NULL,
          sex CHAR(1) NOT NULL,
          address VARCHAR(20) NOT NULL,
          PRIMARY KEY(id)
          );
Query OK, 0 rows affected (0.02 sec)
1
2
3
4
5
6
7
8

使用SHOW CREATE TABLE test_greatsql \G可得到更全面的建表信息

greatsql> SHOW CREATE TABLE test_greatsql \G
*************************** 1. row ***************************
       Table: test_greatsql
Create Table: CREATE TABLE `test_greatsql` (
  `id` int NOT NULL AUTO_INCREMENT,
  `ename` varchar(10) NOT NULL,
  `sex` char(1) NOT NULL,
  `address` varchar(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
1
2
3
4
5
6
7
8
9
10
11

§ 表的删除与清空

对表的操作,包括删除表和清空表。

§ 删除表

DROP TABLE [IF EXISTS] tablename;
1

例如,删除test_greatsql表

greatsql> DROP TABLE test_greatsql;
Query OK, 0 rows affected (0.02 sec)
1
2

§ 清空表

不删除表结构,只删除内容

TRUNCATE TABLE tablename;
1

例如,清空test_greatsql表

greatsql> TRUNCATE TABLE test_greatsql;
Query OK, 0 rows affected (0.01 sec)
1
2

§ 表的修改

§ 添加字段

ALTER TABLE tablename ADD COLUMN_NAME COLUMN_TYPE;
1

例如,在test_greatsql表中添加age字段

greatsql> ALTER TABLE test_greatsql ADD age INT;
Query OK, 0 rows affected (0.02 sec)
1
2

§ 修改字段

ALTER TABLE tablename MODIFY COLUMN_NAME COLUMN_TYPE;
1

例如,将test_greatsql表的age字段修改为varchar类型

greatsql> ALTER TABLE test_greatsql MODIFY age VARCHAR(10);
Query OK, 0 rows affected (0.02 sec)
1
2

§ 删除字段

ALTER TABLE tablename DROP COLUMN_NAME;
1

例如,删除test_greatsql表的age字段

greatsql> ALTER TABLE test_greatsql DROP age;
Query OK, 0 rows affected (0.02 sec)
1
2

§ 重命名表

RENAME TABLE old_tablename TO new_tablename;ALTER TABLE old_tablename RENAME TO new_tablename;
1
2
3

例如,将test_greatsql表重命名为test_greatsql1

greatsql> RENAME TABLE test_greatsql TO test_greatsql1;
Query OK, 0 rows affected (0.02 sec)
1
2

§ 表的查看

§ 查看数据库中的表

greatsql> SHOW TABLES;
1

例如,查看test数据库中的表

greatsql> SHOW TABLES;
+------------------+
| Tables_in_test   |
+------------------+
| test_greatsql    |
+------------------+
1 row in set (0.00 sec)
1
2
3
4
5
6
7

§ 表的创建参考

详情可见:Schema设计规范参考

举例几个《Java开发手册》之字段命名

  1. 【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。 正例:aliyun_admin,rdc_config,level3_name 反例:AliyunAdmin,rdcConfig,level_3_name

  2. 【强制】表必备三字段:id, gmt_create, gmt_modified。 说明:其中 id 必为主键,类型为BIGINT UNSIGNED、单表时自增、步长为 1。gmt_create, gmt_modified 的类型均为 DATETIME 类型,前者现在时表示主动式创建,后者过去分词表示被动式更新。

  3. 【推荐】表的命名最好是遵循 “业务名称_表的作用”。 正例:alipay_task 、 force_project、 trade_config

  4. 【推荐】库名与应用名称尽量一致。

  5. 【参考】合适的字符存储长度,不但节约数据库表空间、节约索引存储,更重要的是提升检索速度。 正例:无符号值可以避免误存负数,且扩大了表示范围。

greatsql-wx