MySQL

MySQL 知识量:16 - 40 - 165

8.1 创建表><

基础- 8.1.1 -

使用SQL语句创建一个表时应当使用create table语句,create table语句的主要语法是:

  • create table后跟新建表的名字。

  • 表名后面是表列的具体定义,用括号括起来,每个表列用逗号分隔。

示例:创建学生表的SQL语句。

 create table student (
     id   int(11)      not null auto_increment,
     name varchar(255) not null,
     age  int(11)      not null,
     sex  varchar(255) not null,
     primary key(id)
) engine=InnoDB

以上语句中,每个列定义由列名、列的数据类型、是否可以为空组成,其中,id列是自增的。primary key规定了主键是id列。engine规定了表的引擎是InnoDB。

NULL值- 8.1.2 -

NULL值就是没有值或缺值。如果定义一个列可以是NULL,就代表允许在数据插入时不给出该列的值。如果定义的是不允许为NULL,在插入数据时就必须给出该列的值。

在表定义中:

  • NULL表示可以为空。

  • NOT NULL表示不可为空。

NULL与空字符串完全不同,NULL是没有值,空字符串是'',空字符串属于NOT NULL的范围。

主键- 8.1.3 -

主键是每个行记录的唯一标示。如果一个表的主键是单个列,那么该列的值必须唯一;如果表的主键是多个列,那么这些列的组合值必须唯一。

在表定义中,使用primary key(列名)来规定主键,如果是多列主键,则为primary key(列名,列名,列名...)的形式。

因为主键必须唯一,因此主键不能是NULL。

默认值- 8.1.4 -

可以在定义表时指定列的默认值,当插入数据而没有给出该列的值时,MySQL就会使用定义的默认值进行填充。

默认值使用列定义中的default关键字指定。

 create table student (
     id   int(11)      not null auto_increment,
     name varchar(255) not null,
     age  int(11)      not null default 10,
     sex  varchar(255) not null,
     primary key(id)
) engine=InnoDB

以上语句中,定义age列时,使用default 10指定了其默认值为10。如果在接下来插入数据时,没有给出age的值,那么age的值就会是10。

需要注意的是:MySQL不允许使用函数作为默认值。

引擎类型- 8.1.5 -

每种DBMS都有一个具体管理数据的内部引擎。在使用select、create table等语句时,由引擎具体负责表的查询和创建。MySQL有多种引擎可供选择,主要的有以下几种:

  • InnoDB 可靠的事务处理引擎,例如外键功能的支持,但在MySQL5.6版本前,不支持全文本搜索。

  • MyISAM 性能极高的引擎,支持全文本搜索,但不支持事务处理。

  • MEMORY 与MyISAM类似,但由于数据存储在内存中,速度更快,适合用于临时表。

选择什么样的引擎取决于你的用途,但需要注意的是,外键是不能跨引擎的,也就是说,使用一种引擎的表不能引用使用不同类型引擎的表的外键。