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关键字是指定该列的注释,用以辅助说明该列。在实际工作中,最好都写上注释,因为一个项目几百张表,良好的注释可以帮助你快速理解该列。
赞赏支持
