Skip to content
On this page

维护表

创建表

sql
CREATE TABLE table1
(
	id    int      NOT NULL  AUTO_INCREMENT,
	name  char(50) NOT NULL DEFAULT 'name',
	num   int      NULL ,
	...
	PRIMARY KEY (id)
) ENGINE=InnoDB;
  • 小括号内定义列信息,PRIMARY指定主键,必须NOT NULL
  • ENGINE指定数据库引擎

使用NULL

NULL值就是没有值或缺值。

允许NULL值的列也允许在插入行时不给出该列的值。

NULL为默认设置,如果不指定NOT NULL,则认为指定的是NULL。

NULL与空串不同,空串是一个有效值,它不是无值。

使用AUTO_INCREMENT

指定列自增,每个表只允许一个AUTO_INCREMENT列,而且它必须被索引。

如何确定AUTO_INCREMENT的值?

可使用last_insert_id()函数获得这个值,此语句返回最后一个AUTO_INCREMENT值,然后可以将它用于 后续的MySQL语句。

使用DEFAULT

列默认值用DEFAULT关键字指定。

不允许指定为函数。

许多数据库开发人员使用默认 值而不是NULL列,方便用于计算或者数据分组。

引擎类型

MySQL与其他DBMS不一样,它具有多种引擎。它打包多个引擎, 这些引擎都隐藏在MySQL服务器内,全都能执行CREATE TABLE和SELECT 等命令。

如果省略ENGINE=语句,则 使用默认引擎(很可能是MyISAM),多数SQL语句都会默认使用它。

需要知道的引擎

  • InnoDB是一个可靠的事务处理引擎,但它不支持全文本搜索
  • MyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理
  • MEMORY在功能等同于MyISAM,但由于数据存储在内存(不是磁盘) 中,速度很快(特别适合于临时表)

引擎类型可以混用。但外键不能跨引擎。

更新表

插入新列

ALTER TABLE table ADD column1 CHAR(20)

删除列

ALTER TABLE table DROP COLUMN column1

使用ALTER TABLE要极为小心,应该在进行改动前做一个完整的备份。

删除表

DROP TABLE table1

重命名表

RENAME TABLE table1 TO table2, table3 TO table4, ...

MIT Licensed | Copyright © 2021 - 2022