Appearance
SQL CREATE TABLE
SQL CREATE TABLE 语句用于创建新的数据库表。
语法
sql
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
...
constraint_name constraint_type (column_list)
);常用数据类型
- INT:整数类型
- VARCHAR(n):可变长度字符串,最大长度为 n
- CHAR(n):固定长度字符串,长度为 n
- DATE:日期类型
- DATETIME:日期和时间类型
- BOOLEAN:布尔类型
- DECIMAL(p,s):小数类型,p 是总位数,s 是小数位数
常用约束
- PRIMARY KEY:主键约束,唯一标识表中的每条记录
- FOREIGN KEY:外键约束,用于建立表之间的关系
- UNIQUE:唯一约束,确保列的值唯一
- NOT NULL:非空约束,确保列不能为 NULL
- CHECK:检查约束,用于限制列的值的范围
- DEFAULT:默认约束,为列设置默认值
示例
示例 1:创建一个简单的学生表
sql
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
grade VARCHAR(20) NOT NULL,
gender VARCHAR(10)
);执行结果:创建一个名为 students 的表,包含 id、name、age、grade 和 gender 列。
示例 2:创建带有外键约束的表
sql
-- 创建学生表
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
grade VARCHAR(20) NOT NULL
);
-- 创建成绩表,带有外键约束
CREATE TABLE scores (
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT NOT NULL,
subject VARCHAR(50) NOT NULL,
score DECIMAL(5,2) NOT NULL,
FOREIGN KEY (student_id) REFERENCES students(id)
);执行结果:创建一个名为 scores 的表,其中 student_id 列是外键,引用 students 表的 id 列。
示例 3:创建带有检查约束的表
sql
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL CHECK (age >= 0 AND age <= 100),
grade VARCHAR(20) NOT NULL,
gender VARCHAR(10) CHECK (gender IN ('男', '女', '未知'))
);执行结果:创建一个名为 students 的表,其中 age 列的值必须在 0 到 100 之间,gender 列的值必须是 '男'、'女' 或 '未知'。
示例 4:创建带有默认值的表
sql
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL DEFAULT 18,
grade VARCHAR(20) NOT NULL DEFAULT '高一',
gender VARCHAR(10) DEFAULT '未知'
);执行结果:创建一个名为 students 的表,其中 age 列的默认值为 18,grade 列的默认值为 '高一',gender 列的默认值为 '未知'。
不同数据库系统的语法差异
MySQL
sql
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;SQL Server
sql
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
...
);PostgreSQL
sql
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
...
);注意事项
表名:表名必须唯一,不能与数据库中现有的表名重复。
列名:列名在表中必须唯一。
数据类型:为每个列选择合适的数据类型,以确保数据的完整性和有效性。
约束:根据业务需求,为列添加适当的约束,以确保数据的完整性和一致性。
性能考虑:对于大型表,应该考虑添加索引,以提高查询性能。
小结
SQL CREATE TABLE 语句是创建新数据库表的基本语句,通过指定表名、列名、数据类型和约束,可以创建一个符合业务需求的表结构。不同的数据库系统可能有不同的语法和选项,需要根据实际使用的数据库系统选择正确的语法。