您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL Create 2

1. 前言

在上一节中,我们一起学习了 Create 和数据类型,本小节将站在约束的角度上进一步的探讨 Create 。

2. 约束(Constraints)

约束用于在新建或数据表时,给数据表或数据表中的字段约束条件

当然,你也可以把约束理解为修饰,如 PRIMARY KEY 可以修饰字段为主键,也可以约束该字段非空。

常见的约束有如下几种:

在本小节中,我们将主要介绍 NOT NULL,DEFAULT,UNIQUE,PRIMARY KEY 这些约束的,FOREIGN KEY 会在 Primary Key & Foreign Key 小节详细介绍,而 CHECK 将在 Check 一节中详细探讨。

3. 语法

约束的使用语法如下:

CREATE TABLE [table_name](
  [col1] [datatype1] [constraints1],
  [col2] [datatype2] [constraints2],
  [col3] [datatype3] [constraints3],
  ....,
  [constraints4]);

其中table_name是数据表,col表示字段名,datatype表示字段类型,constraints代表约束,它们的数字后缀 1,2 表示多个字段以及多个约束。

约束既可以在字段上,也可以在表上。字段,或者一张表可以有多个约束。

4. NOT NULL,DEFAULT

NOT NULL,DEFAULT 是两个颇为简单的约束。

DEFAULT 会给字段上认值,若字段在的时候没有指定值,则使用认值。

NOT NULL 表示字段是非空的,当在插入或者时,如果字段为空(NULL)则会报错。

请书写 语句,创建imooc_user表,表共有四个字段,分别是usernameage,其中username为非空字段,字段认为0分。

分析:

imooc_user 表共有四个字段,其中 username 为,使用字符串表示,且每个人的长短不一,为可变短文本,即 varchar,该字段非空,用 NOT NULL 约束;age 代表年龄,是典型的整数类型,即 int; 代表分数,是典型的浮点数类型,即 float,认为 0 分,用 DEFAULT 约束。

语句:

整理可得语句如下:

CREATE TABLE imooc_user(
  username varchar() NOT NULL,
  age int,
   float DEFAULT );

执行成功后,得到 imooc_user 表的信息如下:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | NO   |     | <null>  |       |
| age      | int(11)     | YES  |     | <null>  |       |
|     | float       | YES  |     | 0       |       |
+----------+-------------+------+-----+---------+-------+

5. PRIMARY KEY

PRIMARY KEY,称主键,用于唯一标识数据表中的每一条记录。

主键必须是唯一的,即每条记录的主键必须各不相同;主键不能为空。

每张数据表都应该有主键,且每个表只能有主键。

请书写 语句,新建imooc_user表,表共有2字段,分别是idusername,其中username为非空字段,id字段为主键。

分析

username 代表,使用字符串表示,且每个人的长短不一,为可变短文本,即 varchar,该字段非空,用 NOT NULL 约束; id 字段作为主键,使用整型,且用 PRIMARY KEY 约束。

语句

整理可得语句如下:

CREATE TABLE imooc_user(
  id int PRIMARY KEY,
  username varchar() NOT NULL);

执行成功后,表的信息如下:

+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| id       | int(11)          | NO   | PRI | <null>  |       |
| username | varchar(20)      | NO   |     | <null>  |       |
+----------+------------------+------+-----+---------+-------+

PRIMARY KEY 也可用于约束多个字段,即联合主键

上面的例子,若 imooc_user 表中的idusername为联合主键,则其新建语句如下:

CREATE TABLE imooc_user(
  id int,
  username varchar() NOT NULL,
  CONSTRAINT user_pk PRIMARY KEY(id,username));

操作成功后,imooc_user 表信息如下:

+----------+------------------+------+-----+---------+-------+
| Field    | Type             | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+-------+
| id       | int              | NO   | PRI | <null>  |       |
| username | varchar(20)      | NO   | PRI | <null>  |       |
+----------+------------------+------+-----+---------+-------+

注意: 当使用联合主键约束的时候,必须地用 CONSTRAINT 指定 user_pk 是联合主键。

6. UNIQUE

UNIQUE,用于唯一标识数据表中的每一条记录。

UNIQUE 约束的字段必须是唯一的,即该字段在每条记录中必须各不相同。PRIMARY KEY 约束认拥有 UNIQUE 约束。

每个表可以有多个UNIQUE约束,但是只能有PRIMARY KEY

请书写 语句,新建imooc_user表,表共有2字段,分别是usernameage,其中username为非空字段,且唯一。

分析

username 代表,使用字符串表示,且每个人的长短不一,为可变短文本,即 varchar,该字段非空,用 NOT NULL 约束,且该字段唯一,使用 UNIQUE 约束。

语句

整理可得语句如下:

CREATE TABLE imooc_user(
  username varchar() UNIQUE NOT NULL,
  age int);

执行成功后,表的信息如下:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | NO   | PRI | <null>  |       |
| age      | int(11)     | YES  |     | <null>  |       |
+----------+-------------+------+-----+---------+-------+

UNIQUE 也可用于约束多个字段,即联合唯一键

上面的例子,若 imooc_user 表中的usernameage为联合唯一字段,语句如下:

CREATE TABLE imooc_user(
  username varchar() NOT NULL,
  age int,
  CONSTRAINT username_age UNIQUE(username,age));

创建成功后,imooc_user 表信息如下:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(20) | NO   | MUL | <null>  |       |
| age      | int(11)     | YES  |     | <null>  |       |
+----------+-------------+------+-----+---------+-------+

7. 小结

PRIMARY KEY 、UNIQUE 和 NOT NULL 这些约束的使用都十分普遍,请务必熟练掌握。

Create 的知识点还是较多的,两节的无法是不够的,你可以在实践中进一步加强对它的理解。


联系我
置顶