SQL

SQL 知识量:22 - 44 - 129

17.1 创建表><

创建表的基本要素- 17.1.1 -

有两种创建表的方法:

  • 直接使用SQL语句创建。

  • 利用DBMS提供的交互式创建和管理数据库表的工具。

其实,DBMS提供的交互式工具在底层也是使用SQL语句来操作表,包括创建表。

要创建表应当使用create table语句。使用时必须给出以下要素:

  • 新表的名字,在关键字create table后面给出。

  • 表列的名字和定义,每个表列间使用逗号分隔。

  • 有的DBMS还要求指定表的位置。

例如:创建一个员工表(staff)。

create table staff
(
  id int(11) not null,
  name varchar(255) not null,
  age int(11) not null,
  sex varchar(255) not null
);

以上SQL语句中,在括号内定义了表的4个列,以列名开始,之后是数据类型和是否可以是空值。每个列定义使用逗号分隔。

创建新表时必须确保表名是不重复的。为防止意外覆盖已有的表,SQL要求如果要使用重复的表名,必须先删除已有的表,再重建它,不能简单的用创建语句覆盖它。

使用NULL值- 17.1.2 -

NULL值就是没有值或缺值。如果一个列定义时为null,那么在插入数据时就允许不给出值,如果定义的是not null,那么在插入或更新数据时,必须确保该列有值。

多数DBMS在不指定not null时,默认认为就是null,但是DB2要求必须指定null或not null,否则将出错,因此,总是明确指定null或not null是个好习惯。

需要注意的是:

  • 主键作为每行数据的唯一标识是不允许为null的,也就是说,可以是null的列不能成为主键。

  • null与空字符串是完全不同的概念,null表示什么都没有,即没有赋值;而空字符串表示是个字符串,但是它是空白的。

指定默认值- 17.1.3 -

SQL允许指定默认值,在插入数据时,如果没有给出值,DBMS就会使用默认值。

默认值在创建表时,由default关键字来指定。

例如:创建员工表(staff),其中国家列默认是“china”。

create table staff
(
  id int(11) not null,
  name varchar(255) not null,
  age int(11) not null,
  sex varchar(255) not null,
  country varchar(255) not null default 'china'
);

在staff表中,country列的默认值是china,如果插入行时,不给出country列的值,那么它的值将默认为china。