MySQL笔记-第21章 创建和操纵表

第21章 创建和操纵表

一、创建表

1. 表创建语法:

create table 表名(列名 类型(长度) 约束,...);

​ 例如:

create table customers
{
	cust_id int NOT NULL AUTO_INCREMENT,
	cust_name char(50) NOT NULL,
	cust_address char(50) NULL,
	PRIMARY KEY(cust_id)
}ENGINE=InnoDB;

注意:在创建新表时,指定的表名必须不存在,否则将出错,使用IF NOT EXISTS以达到在一个表不存在时才创建它目的。

2. 使用NULL值:

每个列要么是NULL列,要么是NOT NULL列,需要在创建表时指出。需要注意的是:不能将NULL值和空串相混淆。NULL值是没有值,不是空串。而空串是一个有效值,并不是空值。

3. 主键:

主键值可以是单个列,也可以是多个列的组合,但都要主键值必须唯一。如果主键是多个列组合,可以使用类似以下语句来定义:

PRIMARY KEY(cust_id, cust_name)

注意:主键的值只能为NOT NULL,而允许NULL值的列是不能作为主键的。

4. 使用AUTO_INCREMENT:

AUTO_INCREMENT能够使得本列没增加一行时,自动增量。

可以使用select last_insert_id()来获取AUTO_INCREMENT列的值

注意:每一张表只允许一个AUTO_INCREMENT列,而且它必须被索引(如,通过使它成为主键)。

5. 指定默认值:

在创建表语句中使用DEFAULT关键字来指定默认值,如:

create table customers
{
   cust_id int NOT NULL AUTO_INCREMENT,
   cust_name char(50) NOT NULL,
   cust_address char(50) NULL,
   cust_total int NOT NULL DEFAULT 0,
   PRIMARY KEY(cust_id)
}ENGINE=InnoDB;

6. 搜索引擎类型:

不同的引擎拥有各自不同的功能和特性,任务需求不同时应该灵活选择引擎,以下是几种常见的引擎:

  • InnoDB是一个可靠的事务处理引擎,但是不支持全文本搜索;

  • MyISAM是一个性能极高的引擎,它支持全文本搜索,但是不支持事务处理;

  • MEMORY在功能上等同于MyISAM,但是由于它的数据存储在内存中,因此它的速度很快。

    注意:引擎类型可以混用,但是外键不能跨引擎。

二、更新表

表的更新可以使用ALTER TABLE语句来实现,但是一般情况下,当表中存储了数据后,该表就不应该再被更新。在进行改动前,应该做一个完整的备份(模式和数据)。表的更改不能被撤销,为了增加不需要的列,可能不能删除他它们。类似地,如果删除了不应该删除的列,可能会丢失该列中的所有数据。

1. 添加一个列:

ALTER TABLE customers
ADD cust_phone CHAR(20);

2. 删除一个列:

ALTER TABLE customers
DROP COLUMN cust_phone;
三、删除表与重命名表

使用DROP TABLE来删除表:

DROP TABLE customers;

使用RENAME TABLE来删除表:

RENAME TABLE customers TO customer;

你可能感兴趣的:(MySQL笔记-第21章 创建和操纵表)