§ Table/表管理


§ 什么是表

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

§ 表的创建

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

CREATE TABLE [IF NOT EXISTS] tablename(
	COLUMN_NAME_1 COLUMN_TYPE_1 [CONSTRAINTS] [DEFAULT], 
	COLUMN_NAME_2 COLUMN_TYPE_2 [CONSTRAINTS] [DEFAULT], 
	字段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(地址)四个字段

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)
  );
1
2
3
4
5
6
7

使用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表

DROP TABLE test_greatsql;
1

§ 清空表

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

TRUNCATE TABLE tablename;
1

例如,清空test_greatsql表

TRUNCATE TABLE test_greatsql;
1

§ 表的修改

§ 添加字段

ALTER TABLE tablename ADD COLUMN_NAME COLUMN_TYPE;
1

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

ALTER TABLE test_greatsql ADD age INT;
1

§ 修改字段

ALTER TABLE tablename MODIFY COLUMN_NAME COLUMN_TYPE;
1

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

ALTER TABLE test_greatsql MODIFY age VARCHAR(10);
1

§ 删除字段

ALTER TABLE tablename DROP COLUMN_NAME;
1

例如,删除test_greatsql表的age字段

ALTER TABLE test_greatsql DROP age;
1

§ 重命名表

RENAME TABLE old_tablename TO new_tablename;

-- 或
ALTER TABLE old_tablename RENAME TO new_tablename;
1
2
3
4

例如,将test_greatsql表重命名为test_greatsql1

RENAME TABLE test_greatsql TO test_greatsql1;
1

§ 表的查看

§ 查看数据库中的表

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