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();

列的默认值:
在这里插入图片描述
与大多DBMS不同,MySQL不允许使用函数作为默认值。

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

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

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

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

给表增加一列:

ALTER TABLE tableName
ADD 列定义语句(定义表时的列语句);

删除一列:

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;

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

猜你喜欢

转载自blog.csdn.net/tus00000/article/details/111480072