mysql之表相关操作

Posted wanlifeipeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql之表相关操作相关的知识,希望对你有一定的参考价值。

1.创建表

参考: create-table

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name(
字段名称 数据类型 [NOT NULL | NULL] [DEFAULT default_value]  [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]  [COMMENT ‘string‘]
[REFERENCES tbl_name (index_col_name,...)],
...
)ENGINE=引擎名称 [DEFAULT] CHARSET=编码方式;

利用查询的结果创建表,同时插入数据

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name  [AS] query_expression;

利用已有的表创建空表

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name LIKE old_tbl_name;

2.显示当前数据库中所有表名称

SHOW TABLES;

3.查询指定表结构或指定字段的类型及约束

{DESC | DESCRIBE | EXPLAIN} tbl_name [col_name]
SHOW {COLUMNS | FIELDS} FROM tbl_name  [FROM db_name];

例如:

DESC user;  -- 显示user表的结构
DESC user username; -- 只显示user表username字段的类型及约束
SHOW COLUMNS FROM user FROM testdb;
SHOW COLUMNS FROM testdb.user;

4.显示表的创建过程

SHOW CREATE TABLE tbl_name;

5.删除表格定义和对应的的数据

DROP [TEMPORARY] TABLE [IF EXISTS] 
tbl_name [, tbl_name] ...

需要注意: If any tables named in the argument list do not exist, the statement returns an error indicating by name which nonexisting tables it was unable to drop, but also drops all tables in the list that do exist. DROP TABLE 只会删除列表中存在的数据表,对于不存在的会返回错误。

6.清空表格数据,但表格仍然存在

TRUNCATE [TABLE] tbl_name

和DELETE from tbl_name的区别在于: TRUNCATE TABLE是先删除表,然后在重新创建,而不是逐行删除表格中的数据,因此对于数据量很大的表格要删除所有数据时,TRUNCATE TABLE的速度更快

 

表结构相关:

参考: alter-table

alter table 可以同时完成添加、删除、修改字段类型、修改字段名称等多种操作

ALTER TABLE tbl_name [alter_specification [, alter_specification] ...]

1.修改表名称

ALTER TABLE tbl_name  RENAME [TO|AS] new_tbl_name; 
RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ... --可以同时修改多个表名称

2.添加字段

ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]-- first表示插入字段作为该表的首列

3.删除字段

ALTER TABLE tbl_name DROP [COLUMN] col_name;

4.只修改字段的类型以及在表格中的位置

ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name];

同时修改字段类型、在表格中的位置和字段名称

ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name];

5.设置、取消默认值

ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT default_value | DROP DEFAULT};

6. 添加、删除主键

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY  [index_type] (index_col_name,...); -- 添加主键
ALTER TABLE tbl_name DROP PRIMARY KEY-- 删除主键

注意: 当主键设为自增长时,尝试删除主键会发生错误。需要先使用ALTER TABLE MODIFY去除AUTO_INCREMENT属性。

mysql> CREATE TABLE IF NOT EXISTS test(
    -> id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY
    ->  );
mysql> ALTER TABLE test DROP PRIMARY KEY;
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
mysql> ALTER TABLE test MODIFY id INT UNSIGNED; -- 去除主键的AUTO_INCREMENT属性
mysql> ALTER TABLE test DROP PRIMARY KEY;

7.添加、删除唯一索引

ALTER TABLE tbl_name  ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...); -- 添加唯一索引
ALTER TABLE tbl_name  DROP {INDEX|KEY} index_name;  -- 删除索引

添加的索引默认以对应的字段名称命名

8.修改存储引擎

ALTER TABLE tbl_name ENGINE [=] engine_name;

9.修改自增长的值

ALTER TABLE tbl_name  AUTO_INCREMENT [=] value;

10.修改字符集

ALTER TABLE tbl_name [DEFAULT] CHARACTER SET [=] charset_name;

 


以上是关于mysql之表相关操作的主要内容,如果未能解决你的问题,请参考以下文章

MySQL之表相关操作

MySQL之表的基本操作及存储引擎和数据类型

mysql之表分区

MySQL之表操作

MYSQL之表操作

Mysql之表的操作与索引操作