mysql必知必会(21):创建和操纵表

2019-08-16  本文已影响0人  warmsirius

一、创建表

1. 两种创建表的方法

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

2. 表创建的基础

利用create table创建表,必须给出以下信息:

CREATE TABLE customers
(
    cust_id          int              NOT NULL AUTO_INCREMENT,
    cust_name  char(50)      NOT NULL,
    cust_address  char(50)  NULL,
   cust_city        char(50)    NULL,
   cust_state  char(50)       NULL,
   cust_zip  char(50)          NULL,
   cust_country  char(50)  NULL,
   cust_contact  char(50)  NULL,
   cust_email  char(50)     NULL,
   PRIMARY KEY(cust_id)
) ENGINE = InnoDB;

注意:处理现有的表
在创建新表时,指定的表名必须不存在,否则将出错。如果要防止意外覆盖已有的表,SQL要求首先手工删除该表,然后再重建它,而不是简单地用创建表语句覆盖它。

注意:表不存在则创建
如果你仅想在一个表不存在则创建它,应该在表名后给出IF NOT EXISTS

这样不做检查已有表的模式是否与你打算创建的表模式相匹配。它只是查看表名是否存在,并且仅在表名不存在时创建它。

3. 使用NULL值

区分:null与空串

不要把null与空串相混淆。

4. 主键

主键值必须唯一。

主键可以在创建表时定义,也可以在创建表只会定义。

主键和NULL

主键作为唯一标识表中每个行的列。

5. AUTO_INCREMENT

确定AUTO_INCREMENT的值

如何在使用AUTO_INCREMENT列时获得这个值?

使用last_insert_id()函数获得这个值

SELECT last_insert_id()

此语句返回最后一个AUTO_INCREMENT的值,然后可以将它用于后续的MySQL语句。

6. 指定默认行

注意:默认行不允许函数

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

使用默认值而不是NULL

许多数据库开发人员使用默认值而不是NULL值,特别是对用于计算或数据分组的列更是如此。

7. 引擎类型

几个需要知道的引擎:

引擎类型可以混用。不同的表可以根据需要的功能使用不同的引擎。

注意:外键不能跨引擎

混用引擎有一个大缺陷:外键不能跨引擎,即使用一个引擎的表不能引用具有使用不同引擎的表的外键。

二、更新表

1. 更新表的基础

□ 在ALTER TABLE之后给出要更改的表名(表名必须存在,否则报错)
□ 所做更改的列表

ALTER TABLE vendors
ADD vend_phone CHAR(20);
ALTER TABLE vendors
DROP vend_phone;
ALTER TABLE orderitems
ADD CONSTRAINT fk_orderitems_orders
FOREING KEY(order_num) REFERENCES orders(order_num);

复杂的表结构更改步骤

注意:在使用ALTER TABLE前做一个完整的备份,以防出现错误。

三、删除表

DROP TABLE 表名;

删除表,没有确认,也没有撤销,永久删除该表。

四、重命名表

RENAME TABLE 新表名 TO 旧表名
RENAME TABLE backup_customers TO customers;
上一篇下一篇

猜你喜欢

热点阅读