创建和操纵表
廖家龙 用心听,不照做

创建和操纵表

一般有两种创建表的方法:
1)使用具有交互式创建和管理表的工具
2)表也可以直接用MySQL语句操纵

值得注意的是,在使用交互式工具时,实际上使用的是MySQL语句,但是这些语句不是用户编写的,界面工具会自动生成并执行相应的MySQL语句(更改现有表时也是这样)

为利用CREATE TABLE创建表,必须给出下列信息:
1)新表的名字,在关键字CREATE TABLE之后给出
2)表列的名字和定义,用逗号分隔

1)表的主键可以在创建表时用PRIMARY KEY关键字指定,为创建由多个列组成的主键,应该以逗号分隔的列表给出各列名;主键为其值唯一标识表中每个行的列,主键中只能使用不允许NULL值的列,允许NULL值的列不能作为唯一标识
CREATE TABLE customers
(
custid int NOT NULL AUTOINCREMENT,
cust_name char(50) NOT NULL,
cust_address char(50) NULL,
cust_city char(50) NULL,
cust_state char(5) NULL,
cust_zip char(10) NULL,
cust_country char(50) NULL,
cust_contact char(50) NULL,
cust_email char(255) NULL,
PRIMARY KEY (cust_id)
)ENGINE-InnoDB;




AUTOINCREMENT告诉MySQL,本列每当增加一行时自动增量。每次执行一个INSERT操作时,MySQL自动对该列增量(从而才有这个关键字AUTOINCREMENT),给该列赋予下一个可用的值。这样给每个行分配一个唯一的custid,从而可以用作主键值;每个表只允许一个AUTOINCREMENT列,而且它必须被索引(如通过使它成为主键)

2)如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定
CREATE TABLE orderitems
(
order_num int NOT NULL,
order_item int NOT NULL,
prod_id char(10) NOT NULL,
quantity int NOT NULL DEFAULT 1,
item_price decimal(8,2) NOT NULL,
PRIMARY KEY(ordernum,orderitem)
)ENGINE-InnoDB;


3)更新表
为了使用ALTER TABLE更改表结构,必须给出下面的信息:
1)在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错)
2)所做更改的列表

ALTER TABLE vendors
ADD vend_phone CHAR(20);

删除刚刚添加的列:
ALTER TABLE Vendors
DROP COLUMN vend_phone;


4)删除表:删除整个表而不是其内容,删除表没有确认,也不能撤销,执行这条语句将永久删除该表

DROP TABLE customers2;

5)重命名表

RENAME TABLE customers2 TO customers,
backup_vendors TO vendors;