创建表
表创建基础
一般有两种创建表的方法:
- 使用具有交互式创建和管理表的工具;
- 直接用MySQL语句。
使用CERATE TABLE创建表,必须给出下列信息:
- 新表的名字,在关键字CREATE TABLE之后给出;
- 表列的名字和定义,用逗号分隔。
创建customers表:
1 | CREATE TABLE customers |
创建新表时,指定的表名必须不存在,否则将出错。
如果想在一个表不存在时创建它,应该在表名后给出IF NOT EXISTS。
使用None值
列的定义可以含有关键字NOT NULL。这将会阻止插入没有值的列。如果试图插入没有值的列,将返回错误,且插入失败。
NULL为默认设置,如果不指定NOT NULL,则认为指定的是NULL。
主键
主键值必须唯一。即,表中的每个行必须具有唯一的主键值。如果主键使用单个列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一。
主键可以在创建表时定义,或者在创建表之后定义。
主键为其值唯一标识表中每个行的列。主键中只能使用不允许NULL值的列。允许NULL值的列不能作为唯一标识。
使用AUTO_INCREMENT
可以使用SELECT语句得出最大的数(使用第12章介绍的Max()函数),然后对它加1。但这样做并不可靠(你需要找出一种办法来保证,在你执行SELECT和INSERT两条语句之间没有其他人插入行,对于多用户应用,这种情况
是很有可能出现的),而且效率也不高(执行额外的MySQL操作肯定不是理想的办法)。
AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量。每次执行一个INSERT操作时,MySQL自动对该列增量(从而才有这个关键字AUTO_INCREMENT),给该列赋予下一个可用的值。
每个表只允许一个AUTO_INCREMENT列,而且它必须被索引(如,通过使它成为主键)。
让MySQL生成(通过自动增量)主键的一个缺点是你不知道这些值都是谁。可使用select last_insert_id()语句返回最后一个AUTO_INCREMENT值,然后可以将它用于后续的MySQL语句。