1.利用CREATE TABLE创建表,必须包含下列信息:
(1)新表的名字,在关键字CREATE TABLE 之后给出;
(2)表列的名字和定义, 用逗号分隔。
例子:
CREATE TABLE test
(
id int NOT NULL AUTO_INCREMENT,
name char(50) NOT NULL,
age int NOT NULL DEFAULT 20,
city char(50) NULL,
PRIMARY KEY(id)
)ENGINE=InnoDB;
说明一:列名必须在表中是唯一的。
说明二:在创建新表时,指定的表名必须不存在,否则将出错。如果仅想再一个表不存在时创建它,应该这样使用IF NOT EXISTS:
create table if not exists test(........)
这样做不检查已有表的模式是否与你打算创建的表模式相匹配。它只是查看表名是否存在,仅在表名不存在时创建它。
2.创建表时NULL的含义
NULL值代表没有值或者缺值。允许NULL的列允许在插入行时不给出该列的值。不允许NULL值的列,在插入或者更新时,该列必须有值。
NULL为默认设置。
3.创建表时主键的定义
(1)用单个列作为主键
PRIMARY KEY(列名)
(2)用多个列组成的主键
PRIMARY KEY(列名1,列名2)
主键值必须唯一,如果使用多个列,则这些列的组合值必须唯一。主键中只能使用不允许NULL值的列。允许NULL值的列不能作为唯一标识。
4.创建表时使用AUTO_INCREMENT
AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量。每次执行一个insert操作时,MySQL自动对该列增量,给该列赋予一个可用的值。每个表只允许一个AUTO_INCREMENT列,而且它必须被索引。
利用select last_insert_id()获取最后一个AUTO_INCREMENT值。
5.创建表时指定默认值
如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。
与大多数DBMS不一样,MySQL不允许使用函数作为默认值,它只支持常量。
许多数据库开发人员使用默认值而不是NULL列,特别是对用于计算或数据分组的列更是如此。
6.创建表时指定引擎类型
ENGINE=引擎类型
MySQL有一个具体管理和处理数据的内部引擎。在你使用CREATE TABLE语句时,该引擎具体创建表,而在你使用SELECT语句或进行其他数据库处理时,该引擎在内部处理你的请求。
MySQL具有多种引擎,如果省略ENGINE=引擎,则使用默认引擎(很可能是MyISAM)。
引擎类型可以混用。但是混用引擎类型有个大缺陷。外键不能跨引擎,即使用一个引擎的表不能引用具有使用不同引擎的表的外键。
7.更新表
为了更新表定义,可使用ALTER TABLE语句。但是,理想状态下,当表中存储数据以后,该表就不应该再被更新。在表的设计过程中需要花费大量时间来考虑,以便后期不对该表进行大的改动。
使用ALTER TABLE更改表结构,必须给出下面的信息:
(1)在ALTER TABLE之后给出更改的表名(该表必须存在,否则将出错);
(2)所做更改的列表。
例子一:给表test添加一个列school
ALTER TABLE test ADD school char(50);必须明确其数据类型。
例子二:删除刚才添加的列school
ALTER TABLE test DROP COLUMN school;
例子三:更新表中已有字段的类型等信息
ALTER TABLE test MODIFY COLUMN school char(100)not null default ‘’;
8.删除表
删除表(删除整个表而不是其内容)使用DROP TABLE语句:
DROP TABLE test;
删除表没有确认,也不能撤销,执行这条语句将永久删除该表。
9.重命名表
使用RENAME TABLE语句可以重新命名一个表:
RENAME TABLE test TO test1;
也可对多个表重命名:
RENAME TABLE test TO test1,
test2 TO test2;