语法
create table [IF NOT EXISTS] 表名 (
字段名 类型 [约束条件],
字段名 类型 [约束条件],
字段名 类型 [约束条件],
字段名 类型 [约束条件]
);
- 字段定义在括号内
- 约束条件可以有多个
- 多个字段定义之间用都会隔开
常见约束
- NOT NULL 非空
- DEFAULT 0 默认值
- AUTO_INCREMENT 自增长
- PRIMARY KEY 主键
示例
sql
create table if not exists t_one (
id bigint(20) UNSIGNED NOT NULL auto_increment primary key COMMENT '主键',
name varchar(64) COMMENT '名称',
age int(10) COMMENT '仙人寿命'
) engine=innoDB default charset=utf8mb4;
Jsqlparser创建建表语句
引入依赖
xml
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.3</version>
</dependency>
Demo
java
import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.create.table.ColDataType;
import net.sf.jsqlparser.statement.create.table.ColumnDefinition;
import net.sf.jsqlparser.statement.create.table.CreateTable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CreateTableDemo {
public static void main(String[] args)throws Exception {
CreateTable createTable = new CreateTable();
// 设置表名
Table table = new Table("t_one");
createTable.setTable(table);
// 定义字段
// id
ColDataType bigint = new ColDataType("BIGINT");
bigint.setArgumentsStringList(Collections.singletonList("20"));
ColumnDefinition id = new ColumnDefinition("id", bigint);
id.setColumnSpecs(Arrays.asList("UNSIGNED", "NOT NULL", "PRIMARY KEY", "AUTO_INCREMENT", "COMMENT '主键'"));
// name
ColDataType varchar = new ColDataType("VARCHAR");
varchar.setArgumentsStringList(Collections.singletonList("64"));
ColumnDefinition name = new ColumnDefinition("name", varchar);
name.setColumnSpecs(Collections.singletonList("COMMENT '名字'"));
// age
ColDataType anInt = new ColDataType("INT");
ColumnDefinition age = new ColumnDefinition("age", anInt);
age.setColumnSpecs(Collections.singletonList("COMMENT '仙人年龄'"));
// 设置字段
List<ColumnDefinition> columnDefinitionList = new ArrayList<>();
columnDefinitionList.add(id);
columnDefinitionList.add(name);
columnDefinitionList.add(age);
createTable.setColumnDefinitions(columnDefinitionList);
// 设置IF NOT EXISTS
createTable.setIfNotExists(true);
// 设置引擎、字符集、排序规则
createTable.setTableOptionsStrings(Arrays.asList("ENGINE = InnoDB", "CHARACTER SET = utf8mb4", "COLLATE = utf8mb4_general_ci"));
// 打印建表语句
System.out.println(createTable);
}
}
结果:
sql
CREATE TABLE IF NOT EXISTS t_one (id BIGINT (20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键', name VARCHAR (64) COMMENT '名字', age INT COMMENT '仙人年龄') ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci