【重学 MySQL】四十六、创建表的方式
- 使用CREATE TABLE语句创建表
- 使用CREATE TABLE LIKE语句创建表
- 使用CREATE TABLE AS SELECT语句创建表
- 使用CREATE TABLE SELECT语句创建表并从另一个表中选取数据(与CREATE TABLE AS SELECT类似)
- 使用CREATE TEMPORARY TABLE语句创建临时表
- 指定表空间的创建方式
- 注意事项
使用CREATE TABLE语句创建表
这是MySQL中创建表最常用的方式,可以通过手动定义表的结构来完成表的创建。CREATE TABLE语句的基本语法如下:
CREATE TABLE [IF NOT EXISTS] table_name (
column1 datatype constraints,
column2 datatype constraints,
...
[table_constraints]
);
table_name
:指定要创建的表的名称。column1, column2, ...
:定义表中的列,包括列名和数据类型,以及可选的约束条件。datatype
:指定列的数据类型,如INT、VARCHAR、DATE等。constraints
:对列进行约束,如NOT NULL、PRIMARY KEY、UNIQUE等。table_constraints
:可选的表级约束,如FOREIGN KEY等。
例如,创建一个名为department
的表,包含部门编号和部门名称两个字段:
CREATE TABLE department (
dept_id INT NOT NULL PRIMARY KEY,
dept_name VARCHAR(50) NOT NULL
);
使用CREATE TABLE LIKE语句创建表
这种方式可以复制已有表的结构来创建新表,但不会复制数据。语法如下:
CREATE TABLE [IF NOT EXISTS] new_table_name LIKE existing_table_name;
例如,基于employee
表的结构创建一个名为emp_copy
的新表:
CREATE TABLE emp_copy LIKE employee;
使用CREATE TABLE AS SELECT语句创建表
这种方式可以通过从另一个表中选取数据来创建新表,并同时复制数据。语法如下:
CREATE TABLE new_table_name AS
SELECT column1, column2, ...
FROM existing_table_name
[WHERE condition];
例如,从employee
表中选取所有员工的信息创建一个名为emp_backup
的新表:
CREATE TABLE emp_backup AS
SELECT * FROM employee;
使用CREATE TABLE SELECT语句创建表并从另一个表中选取数据(与CREATE TABLE AS SELECT类似)
这种方式与CREATE TABLE AS SELECT类似,也是通过从另一个表中选取数据来创建新表,但具体语法可能因MySQL版本而异。在某些版本中,可能需要使用CREATE TABLE new_table_name SELECT ...
的形式。
使用CREATE TEMPORARY TABLE语句创建临时表
临时表只在当前会话中有效,当会话结束时,临时表会自动删除。语法如下:
CREATE TEMPORARY TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
);
例如,创建一个名为temp_table
的临时表:
CREATE TEMPORARY TABLE temp_table (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
指定表空间的创建方式
在创建表时,还可以指定表空间来存储表的数据。这需要使用TABLESPACE
关键字。语法如下:
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
) TABLESPACE tablespace_name;
其中,tablespace_name
是预先创建好的表空间的名称。
注意事项
- 在创建表之前,应确保已经连接到MySQL数据库,并具有相应的权限。
- 表名、列名等标识符应使用有效的MySQL标识符命名规则。
- 数据类型和约束条件应根据实际需求进行选择和设置。
- 创建表时,可以使用
ENGINE
关键字指定表的存储引擎,如InnoDB、MyISAM等。
通过以上方式,可以在MySQL中灵活地创建表,以满足不同的数据存储需求。