SQL 创建表

创建表

在前一章中,我们学习了如何在数据库服务器上创建数据库。现在将在数据库中创建一些表来实际保存数据。数据库的表只是将信息组织成行和列。

SQL的CREATE TABLE语句用于创建表。

语法

创建表的基本语法如下:

CREATE TABLE table_name (
    column1_name data_type constraints,
    column2_name data_type constraints,
    ....
);

让我们在demo数据库中创建一个表。在MySQL命令行工具上输入以下语句,然后回车:

示例

-- Syntax for MySQL Database 
CREATE TABLE persons (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);

上面的语句创建了一个名为persons的表,其中包含5个字段idnamebirth_datephone。注意,每个字段后面都有一个数据类型声明,表示该字段将存储何种类型的数据,例如:整数、字符串、日期等。

某些数据类型可以使用length参数声明,该参数指示可以在字段中存储多少字符。例如,VARCHAR(50)最多可以容纳50个字符。

注意: 字段的数据类型可能因数据库系统的不同而不同。例如,MySQL和SQL Server支持整数的INT数据类型,而Oracle数据库支持NUMBER数据类型。

下表总结了MySQL支持的常用数据类型。

数据类型 描述
INT 存储-2147483648到2147483647范围内的数值
DECIMAL 存储精确精度的十进制值。
CHAR 存储最大长度为255个字符的固定长度字符串。
VARCHAR 存储最大长度为65,535个字符的可变长度字符串。
TEXT 存储最大长度为65,535个字符的字符串。
DATE 以YYYY-MM-DD格式存储日期值。
DATETIME 以YYYY-MM-DD HH:MM:SS格式存储组合的日期/时间值。
TIMESTAMP 存储时间戳值,时间戳值存储为自Unix纪元(‘1970-01-01 00:00:01’ UTC)以来的秒数。

前面示例中的字段设置了一些约束(也称为修饰符)。约束定义了字段值的规则。

  • NOT NULL约束确保字段不能接受空值。
  • 主键约束将对应的字段标记为表的主键。
  • AUTO_INCREMENT属性是MySQL对标准SQL的扩展,它告诉MySQL,通过将前一个值增加1来自动为该字段分配一个值,仅适用于数值字段。
  • 唯一约束确保字段值必须唯一。

我们将在下一章学习更多关于SQL约束的知识。

提示: 可以执行命令:DESC table_name;查看MySQL或Oracle数据库中任意表的字段信息,在SQL Server中等价命令:EXEC sp_columns table_name;(用实际的表名替换table_name)。

Create Table If Not Exists

如果你试图创建一个已经存在的表,会得到一个错误消息。在MySQL中,可以使用If Not Exists语句,先检查表是否存在:

示例

-- Syntax for MySQL Database 
CREATE TABLE IF NOT EXISTS persons (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    birth_date DATE,
    phone VARCHAR(15) NOT NULL UNIQUE
);

如果要查看当前数据库中的所有表,可以执行SHOW tables;



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载