一般有两种创建表的方法:
1.使用具有交互式创建和管理表的工具;
2.使用MySQL语句。
使用Navicat工具创建表uu。
使用MySQL语句创建表。
利用CREATE TABLE创建表,必须给出下列消息:
1.表的名字,在关键字CREATE TABLE之后给出;
2.表列的名字和定义,用逗号分隔。
CREATE TABLE customers
(
cust_id int NOT NULL auto_increment,
cust_name CHAR(50) NOT NULL,
cust_address CHAR(50) NULL,
cust_email char(50) NULL,
PRIMARY KEY (cust_id)
)ENGINE=INNODB
表名紧跟在CREATE TABLE关键字后面,实际的表定义(所有列)括在圆括号之中。各列之间用逗号分隔。
每列的定义以列名开始,后面跟列的数据类型。
表的主键在创建表时用PRIMARY KEY指定。
创建新表时,指定的表明必须不存在,否则将出错。
不要把NULL值与空串相混淆。NULL值是没有值,它不是空串。如果指定‘’(两个单引号,其中没有字符),这在NOT NULL列中是允许的。空串是一个有效的值,它不是无值。
主键值必须唯一。如果主键使用单列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一。
创建由多个列组成的主键,应该以逗号分隔的列表给出各个列名。PRIMARY KEY(xxxx,xxxx)
主键中只能使用不允许NULL值得列。
AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量。每个表只允许一个自增列,而且它必须被索引。
如果一个列被指定AUTO_INCREMENT,我们也可以在INSERT语句中指定一个值,只要它是唯一的(至今尚未使用)。该值将被用来替代自动生成的值。后续的增量将开始使用该手工插入的值。
如何在使用AUTO_INCREMENT列时获得这个值?可以使用last_insert_id()函数获得这个值。
如:select last_insert_id() 此语句返回最后一个自增值。
指定默认值时可以使用DEFAULT关键字。
xxxx int NOT NULL DEFAULT XXX,
MySQL不允许使用函数作为默认值,只支持常量。
ENGINT指定引擎类型。
InnoDB是一个可靠的事务处理引擎;MEMORY在功能等同于MyISAM,由于数据存储在内存中,速度很快;MyISAM是一个性能极高的引擎,支持全文本搜索,但不支持事务处理。
外键不能跨引擎。即使用一个引擎的表不能引用具有使用不同引擎的表的外键。
更新表使用ALTER TABLE语句。
在ALTER TABLE之后给出要更改的表名;所做更改的列表。
添加一列:
ALTER TABLE customers
ADD cust_age int(5);
删除一列:
ALTER TABLE customers
DROP COLUMN cust_age
定义外键:
ALTER TABLE customers
ADD CONSTRAINT fk_cust_id
FOREIGN KEY(cust_id) REFERENCES user(pid)
删除表使用DROP TABLE语句。
重命名表使用RENAME TABLE语句。
RENAME TABLE customers TO cust;
也可以对多个表进行重命名。
RENAME TABLE xxx TO yyy,aaa TO bbb,ccc TO ddd;