SQL - 创建表CREATE TABLE

阅读:468

之前一直讲解的是数据操纵语言(DML),是对数据进行处理。今天开始我们讲解数据定义语言(DDL),本节讲解如何创建表。

在工作中,一般先用数据库建模工具,然后生成相应的DML语句。也可以通过数据库的客户端软件,通过图形界面创建,客户端软件会自动生成SQL。

1. 创建表

通过 CREATE TABLE来创建,有如下要求:

  • CREATE TABLE之后需要给出表名;
  • 表中的列,需要指定列名、类型,用逗号隔开。

我们以创建课程表为例,建表语句如下:

CREATE TABLE `t_course` (
  `id` bigint(20) NOT NULL COMMENT '课程编号',
  `title` varchar(45) DEFAULT NULL COMMENT '课程名称',
  `intro` varchar(500) DEFAULT NULL COMMENT '课程介绍',
  `sell_price` decimal(18,2) DEFAULT NULL COMMENT '课程售价',
  `hot` int(11) DEFAULT NULL COMMENT '热度',
  `category_id` bigint(20) DEFAULT NULL COMMENT '课程分类',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
)

上面我们就创建了t_course的表。

2. 数据类型

第一个列id,列的数据类型是bigint(20),常见的数据类型有哪些呢,我们以MySQL为例:

  • 整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT
  • 浮点数类型:FLOAT、DOUBLE、DECIMAL
  • 字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB
  • 日期类型:Date、DateTime、TimeStamp、Time、Year
  • 其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等

这些你无需背会它们,常见的就那么几种,用的多了自然就会了。 这里请要注意,不同的数据类型数据存储的范围不同,是使用时超过此范围会报错。

3. 数据类型的属性

上述数据类型用到了很多属性,这里我们列举出所有的属性:

MySQL关键字含义
NULL数据列可包含NULL值
NOT NULL数据列不允许包含NULL值
DEFAULT默认值
PRIMARY KEY主键
AUTO_INCREMENT自动递增,适用于整数类型
UNSIGNED无符号
CHARACTER SET name指定一个字符集

CREATE TABLE `t_course` (
 `id` bigint(20) NOT NULL COMMENT '课程编号',
 .....
  PRIMARY KEY (`id`)
)

列id通过PRIMARY KEY指定该列为主键,NOT NULL主键不能为空。当然了,主键肯定不能空,主键有如下特性:

  • 唯一标识一列的数据;
  • 不能为空;
  • 可以通过AUTO_INCREMENT,指定主键为自动增长。

MySQL存储引擎InnoDB,聚簇索引默认就是主键索引,所以通过主键查询数据时速度非常快。当然,表是可以没有主键的,这时候聚簇索引用一个非空并且唯一的索引列做为主键,成为此表的聚簇索引。如果还有没有的话,没办法,InnoDB会隐式定义一个主键来作为聚簇索引。当然这些已经超出本课程的范畴,看不懂的话你可以忽略。

COMMENT关键字是指定该列的注释,用以辅助说明该列。在实际工作中,最好都写上注释,因为一个项目几百张表,良好的注释可以帮助你快速理解该列。


赞赏支持


精彩留言

发表评论