创建表例子:

mysql的空表 mysql建立空表_mysql的空表


MySQL忽略语句中的空格,可像上例一样格式化一下语句。

创建的表名必须不存在,否则会报错。如果想在一个表不存在时创建它,且在该表已经存在时不报错而是发出警告,则应该在表名前加上IF NOT EXISTS:

CREAT TABLE IF NOT EXISTS tableName ...

列定义中的NOT NULL表示此字段不能为空,NULL表示此字段可以为空。默认值为NULL。

NULL是没有值,它不是空串。

主键值必须唯一,如果主键是多个列,那这些列的组合值必须唯一。

主键可以在建表时定义,也可以在建表后定义。

允许NULL值的列不能作为唯一标识。

每个表只允许一个AUTO_INCREMENT列,并且它必须被索引(如通过使它成为主键)。

在插入行到有自增列的表中时,可以使用至今未使用过的唯一值替代自动生成的值,之后该自增列的值从手工插入的值开始增加。(我测试时自增列可以使用重复的值,且自增列的下一个值会是表中最大值的下一个值)。

获取AUTO_INCREMENT刚插入的值,这个值是客户端独立的,每个客户端获取的都是自己刚刚操作的自增值:

SELECT last_insert_id();

列的默认值:

mysql的空表 mysql建立空表_mysql的空表_02


与大多DBMS不同,MySQL不允许使用函数作为默认值。

MySQL在你创建表时,使用用户指定的引擎或默认引擎创建表,在你SELECT语句或进行其他数据库处理时,该引擎在内部处理你的请求。

几个引擎:
1.InnoDB:可靠的事务处理引擎。
2.MEMORY:功能等同于MyISAM,数据存储在内存,速度很快,适合临时表。
3.MyISAM:支持全文本搜索,不支持事务处理。

每个表都可以有不同的引擎,但外键不能跨引擎。

当表存储数据后,就不应该再更改表结构,应在表的设计过程考虑以便后期不对表进行大的改动。

给表增加一列:

ALTER TABLE tableName
ADD 列定义语句(定义表时的列语句);
# 同上
ALTER TABLE tableName
ADD COLUMN 列定义语句(定义表时的列语句);

删除一列:

ALTER TABLE tableName
DROP COLUMN columnName;

给表增加外键:

ALTER TABLE tableName1
ADD CONSTRAINT constraintName
FOREIGN KEY(field1) REFERENCES tableName2(field2)

以上SQL将field1作为外键,这要求表tableName2中的列field2上有唯一约束。

对于同一个表,可将多条更改用逗号分隔。

使用ALTER TABEL前应做一个完整备份,数据库表的更改不能撤销,如果删除了不应该删除的列,可能会丢失该列中的所有数据。

复杂的表结构更改可以先创建新表,之后通过INSERT SELECT语句将旧表数据拷贝到新表,如有必要可使用转换函数和计算字段。

删除表:

DEOP TABLE tableName;

重命名表:

RENAME TABLE oldTableName TO newTableName;

可用逗号分隔重命名多个表。