SQL创建表的语法

在 SQL 中,创建表的基本语法是使用 CREATE TABLE 语句。通过这个语句,可以定义新表的结构,包括列(字段)名称、数据类型以及其他约束。

基本语法

CREATE TABLE table_name (
    column1 datatype [constraint],
    column2 datatype [constraint],
    ...
    [table_constraints]
);
  • table_name:表的名称。
  • column1, column2, ...:列的名称。
  • datatype:列的数据类型(如 INT, VARCHAR, DATE 等)。
  • constraint:可选的列约束(如 NOT NULL, UNIQUE, PRIMARY KEY 等)。
  • table_constraints:可选的表级约束(如 PRIMARY KEY, FOREIGN KEY 等)。

常见数据类型

  • INT:整数类型。
  • VARCHAR(size):变长字符类型,size 指定最大字符长度。
  • CHAR(size):定长字符类型。
  • DATE:日期类型。
  • DATETIME:日期和时间。
  • FLOATDOUBLE:浮动小数类型。
  • TEXT:长文本类型。
  • BOOLEAN:布尔类型。

常见约束

  • NOT NULL:列值不能为 NULL
  • UNIQUE:列中的值必须唯一。
  • PRIMARY KEY:将此列作为表的主键,唯一标识每一行。
  • FOREIGN KEY:定义外键约束,建立与其他表的关联。
  • CHECK:限制列中的值。
  • DEFAULT:为列指定默认值。

示例 1:创建一个简单的表

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    hire_date DATE,
    salary DECIMAL(10, 2) DEFAULT 0.00
);
  • id 列是整数类型,作为主键。
  • name 列是字符串类型,不能为空。
  • hire_date 列是日期类型,允许为空。
  • salary 列是小数类型,默认值为 0.00

示例 2:创建带有外键约束的表

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
  • orders 表包含一个外键 customer_id,引用 customers 表中的 customer_id 列。
  • 外键约束确保只有在 customers 表中存在的 customer_id 才能插入到 orders 表中。

示例 3:创建带有多个列约束的表

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    birth_date DATE CHECK (birth_date < CURRENT_DATE),
    email VARCHAR(100) UNIQUE
);
  • student_id 是主键,唯一标识每个学生。
  • birth_date 列要求日期小于当前日期。
  • email 列必须唯一,不能重复。

总结

CREATE TABLE 语句通过定义列的数据类型和约束来创建新的表。不同的数据类型和约束帮助确保表数据的完整性和规范性。

记录建表操作

create table comment(
	id int unsigned not null auto_increment,
	user_id int not null,
	article_id int not null,
	ipaddr varchar(255) collate utf8mb4_general_ci not null,
	reply_id int default 0,
	create_time datetime default CURRENT_TIMESTAMP,
	update_time datetime default null on update CURRENT_TIMESTAMP,
	primary key(id)
)engine=INNODB default charset=utf8
  • auto_increment 自增
  • utf8mb4_general_ci
    • 使用 UTF-8 编码存储字符,支持多种语言和特殊字符(如表情符号)、
    • 在进行字符串比较和排序时,不区分大小写和重音符号,简化了数据处理和查询
  • default 0 默认值为0
  • CURRENT_TIMESTAMP 获取当前日期和时间的特殊值 格式为 YYYY-MM-DD HH:MM:SS
  • engine=INNODB default charset=utf8 表的存储引擎和字符集的配置选项
  • limit 1 只返回结果集的第一行数据
  • limit n 返回前n行
posted @ 2025-01-18 21:35  清澈的澈  阅读(168)  评论(0)    收藏  举报