MySQL创建和操纵表-CREATE

MySQL对表数据的增删改查的内容我们都已经学习完了。下面介绍的内容是在表的层面上,介绍表的创建更改删除的基本知识。

1.创建表

MySQL不仅用于对表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理。

一般有两种创建表的方法:

  • 使用具有交互式创建和管理表的工具;
  • 表也可以直接用MySQL语句操纵。

(1)表创建基础

为利用CREATE TABLE创建表,必须给出下列信息:

  • 新表的名字,在关键字CREATE TABLE之后给出;
  • 表列的名字和定义,用逗号分隔。

如下示例,创建customers表:

1)这个表由9列组成。表的主键可以在创建表时用PRIMARY KEY关键字指定。

2)处理现在的表:在创建新表时指定的表名必须不存在,否则将出错。

(2)使用NULL值

NULL值就是没有值或缺值。每个表列或者是NULL列,或者是NOT NULL列,这种状态在创建时由表的定义规定。

(3)主键再介绍

1)主键值必须唯一。如果主键使用单个列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一。

2)为创建由多个列组成的主键,应该以逗号分隔的列表给出各列名。

(4)使用AUTO_INCREMENT

1)AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量。每次执行一个INSERT操作时,MySQL自动对该列增量,给该列赋予下一个可用的值。

2)每个表值允许一个AUTO_INCREMENT列,而且它必须被索引(如,通常使它成为主键)。

3)覆盖AUTO_INCREMENT:如果一个列被指定为AUTO_INCREMENT,则它需要使用特殊的值时,你可以简单地在INSERT语句中指定一个值,只要它是唯一的即可,该值被用来替代自动生成的值。

4)确认AUTO_INCREMENT值:让MySQL生成(通过自动增量)主键的一个缺点是你不知道这些值都是谁。这里可以使用last_insert_id()函数获得这个值,如下所示:
SELECT last_insert_id();

此语句返回最后一个AUTO_INCREMENT值。

(5)指定默认值

如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。

考虑如下示例:

1)不允许函数:与大多数DBMS不一样,MySQL不允许使用函数作为默认值,它只支持常量。

(6)引擎类型

目前我们使用CREATE TABLE语句全都以ENGINE=InnoDB语句结束。MySQL具有多种引擎,它们具有各自不同的功能和灵活性。

以下几个需要知道的引擎:

  • InnoDB是一个可靠的事务处理引擎,它不支持全文本搜索;
  • MEMORY在功能等同于MyISAM,但由于数据存储在内存中,速度很快(特别适合于临时表)。
  • MyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理。
2.更新表

(1)更新表定义,可使用ALTER TABLE语句。为了使用ALTER TABLE语句,必须给出下面的信息:

  • 在ALTER TABLE之后给出要更改的表名
  • 所做更改的列表

(2)考虑如下示例:给vendors表增加一个名为vend_phone的列,必须明确其数据类型

(3)删除刚刚添加的列,可以这样做:

(4)ALTER TABLE的一种常见用途是定义外键,如下定理了4个外键:

3.删除表

删除表(删除整个表而不是其内容),使用DROP语句即可:

DROP TABLE customers2;

这条语句删除表customers表(假定它存在),删除表没有确认,也不能撤销。

4.重命名表

(1)使用RENAME TABLE语句可以重命名一个表:

RENAME TABLE customers2 TO customers;

(2)RENAME TABLE也可以对多个表重命名:

发表评论

电子邮件地址不会被公开。 必填项已用*标注