❮ MySQL 解锁用户账户
MySQL Show Tables 显示表语句 ❯
MySQL - 创建表
更新于 2025/6/17 14:52:17
MySQL CREATE TABLE 语句
从命令提示符创建表
从现有表创建表
IF NOT EXISTS 子句
使用客户端程序在 MySQL 数据库中创建表
在 MySQL 关系数据库系统中,SQL 用于以结构化表的形式存储数据。这些表由字段和记录组成。字段代表定义表中存储数据类型的列,而记录则代表包含实际数据的行。MySQL 提供各种查询来与数据交互,允许您创建、更新、删除表等。
MySQL CREATE TABLE 语句
要在 MySQL 关系型数据库 (RDBMS) 中快速创建表,请使用 CREATE TABLE 语句。
在 SQL Server 数据库中可以创建任意数量的表。但是,数据库中可存在的对象数量存在限制。包括表、视图、索引等,一个数据库不能超过 2,147,483,647 个对象。因此,单个用户定义表最多可以定义 1024 列。
用于创建表的 MySQL 查询必须定义表的结构。该结构由表名、表中列名以及每列的数据类型组成。请注意,每个表在数据库中必须具有唯一的名称。
首先,创建表的命令需要以下详细信息 -
表名。
列名。
每列的定义。
语法
以下是创建 MySQL 表的基本 SQL 语法 -
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
示例
在下面的查询中,我们使用 CREATE TABLE 语句创建一个名为 CUSTOMERS 的表 -
CREATE TABLE CUSTOMERS (
ID INT AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
这里需要解释几点 −
MySQL 中的字段属性 AUTO_INCREMENT 会自动为每条新添加的记录增加 ID 列的值。它从下一个可用的数字开始。
使用字段属性 NOT NULL 是因为我们不希望此字段为 NULL。因此,如果用户尝试在该字段中创建包含 NULL 值的记录,MySQL 将引发错误。
关键字 PRIMARY KEY 用于将列定义为主键。它确保该列中的每条记录都是唯一的。您还可以将其用于多个列,只需用逗号分隔即可。
输出
执行上述查询后,将获得以下输出:-
Query OK, 0 rows affected (0.03 sec)
验证
创建表后,我们可以使用以下查询检查表是否创建成功:-
DESC CUSTOMERS;
上述查询显示了 CUSTOMERS 表的结构:列名、数据类型等。
Field
Type
Null
Key
Default
Extra
ID
int
NO
PRI
NULL
auto_increment
NAME
varchar(20)
NO
NULL
AGE
int
NO
NULL
ADDRESS
char(25)
YES
NULL
SALARY
decimal(18,2)
YES
NULL
通过命令提示符创建表
我们可以通过定义结构和列,在命令提示符中创建 MySQL 表。
以下是通过命令提示符创建 MySQL 表的步骤:
首先,打开命令提示符并输入以下命令:mysql -u root -p 以访问 MySQL 数据库管理系统。
输入命令后,输入密码登录 MySQL 服务器。
然后,我们可以使用相应的 SQL CREATE TABLE 查询开始创建表。
示例
在下面的示例中,我们将通过命令创建一个名为 CUSTOMERS 的 MySQL 表提示。
CREATE TABLE CUSTOMERS (
NAME VARCHAR(20) NOT NULL,
ID INT AUTO_INCREMENT,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
注意 − 除非在 SQL 命令末尾添加分号 (;),否则 MySQL 不会终止命令。
输出
执行上述查询后,输出如下 −
Query OK, 0 rows affected (0.03 sec)
验证
我们可以使用以下查询来验证表是否已成功创建 −
mysql> DESC CUSTOMERS;
上述查询将显示 CUSTOMERS 表的结构和描述 −
Field
Type
Null
Key
Default
Extra
ID
int
NO
PRI
NULL
auto_increment
NAME
varchar(20)
NO
NULL
AGE
int
NO
NULL
ADDRESS
char(25)
YES
NULL
SALARY
decimal(18,2)
YES
NULL
从现有表创建表
我们可以使用 SQL CREATE TABLE 和 SELECT 语句创建现有表的副本表,包括其结构和数据。副本表具有相同的列及其定义,并且填充与原始表相同的数据。
注意 − 由于它是一个全新的表,因此对其所做的任何更改都不会反映在原始表中。
语法
以下是从另一个表创建表的语法 −
CREATE TABLE NEW_TABLE_NAME AS
SELECT [column1, column2...columnN]
FROM EXISTING_TABLE_NAME
[WHERE CONDITION];
此处,column1、column2……是现有表的字段,这些字段将用于创建新表的字段。WHERE 子句是可选的。
示例
假设 TUTORIALS 数据库中存在一个现有表 CUSTOMERS -
mysql> USE TUTORIALS;
Database changed
mysql> SELECT * FROM CUSTOMERS;
以下是 CUSTOMERS 表 -
ID
NAME
AGE
ADDRESS
SALARY
1
Ramesh
32
Ahmedabad
2000.00
2
Khilan
25
Delhi
1500.00
3
kaushik
23
Kota
2000.00
4
Chaitali
25
Mumbai
6500.00
5
Hardik
27
Bhopal
8500.00
6
Komal
22
Hyderabad
4500.00
7
Muffy
24
Indore
10000.00
现在,使用以下查询,我们将创建一个名为 SAMPLE 的新表,其结构和记录与 CUSTOMERS 相同。
CREATE TABLE SAMPLE AS
SELECT * FROM CUSTOMERS;
输出
从输出中可以看出,表 SAMPLE 已成功创建。
Query OK, 7 rows affected (0.03 sec)
Records: 7 Duplicates: 0 Warnings: 0
验证
使用以下 SELECT 语句,验证新表 SAMPLE 是否包含记录。
SELECT * FROM SAMPLE;
从下面的输出中可以看出,SAMPLE 表已创建,其中包含 CUSTOMERS 表中的所有记录。-
ID
NAME
AGE
ADDRESS
SALARY
1
Ramesh
32
Ahmedabad
2000.00
2
Khilan
25
Delhi
1500.00
3
kaushik
23
Kota
2000.00
4
Chaitali
25
Mumbai
6500.00
5
Hardik
27
Bhopal
8500.00
6
Komal
22
Hyderabad
4500.00
7
Muffy
24
Indore
10000.00
IF NOT EXISTS 子句
如果您尝试创建一个名称已存在的表,将会生成错误 -
CREATE TABLE Employee(Name VARCHAR(255));
ERROR 1050 (42S01): Table 'employee' already exists
如果您将 IF NOT EXISTS 子句与 CREATE 语句一起使用(如下所示),则会创建一个新表;如果指定名称的表已存在,则查询将被忽略。
CREATE TABLE Test(Name VARCHAR(255));
Query OK, 0 rows affected (0.69 sec)
使用客户端程序在 MySQL 数据库中创建表
除了使用 MySQL 查询在 MySQL 数据库中创建表之外,我们还可以使用客户端程序执行 CREATE TABLE 操作。
语法
以下是使用各种编程语言创建表的语法 -
PHP
NodeJS
Java
Python
要通过 PHP 程序在 MySQL 数据库中创建表,我们需要使用 mysqli 函数 query() 执行 CREATE TABLE 语句,如下所示:-
$sql = "CREATE TABLE table_name (column_name column_type)";
$mysqli->query($sql);
要通过 Node.js 程序在 MySQL 数据库中创建表,我们需要使用 mysql2 库中的 query() 函数执行 CREATE TABLE 语句,如下所示:-
sql = "CREATE TABLE table_name (column_name column_type)";
con.query(sql);
要通过 Java 程序在 MySQL 数据库中创建表,我们需要使用 JDBC 函数 executeUpdate() 执行 CREATE TABLE 语句,如下所示:-
String sql = "CREATE TABLE table_name (column_name column_type)";
statement.execute(sql);
要通过 Pyhton 程序在 MySQL 数据库中创建表,我们需要使用 MySQL Connector/Python 的 execute() 函数执行 CREATE TABLE 语句,如下所示:-
sql = "CREATE TABLE table_name (column_name column_type)";
cursorObj.execute(sql);
示例
以下是程序:-
PHP
NodeJS
Java
Python
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'root@123';
$dbname = 'TUTORIALS';
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if($mysqli->connect_errno ) {
printf("Connect failed: %s
", $mysqli->connect_error);
exit();
}
printf('Connected successfully.
');
$sql = "CREATE TABLE tutorials_tbl( ".
"tutorial_id INT NOT NULL AUTO_INCREMENT, "
"tutorial_title VARCHAR(100) NOT NULL, ".
"tutorial_author VARCHAR(40) NOT NULL, ".
"submission_date DATE, ".
"PRIMARY KEY ( tutorial_id )); ";
if ($mysqli->query($sql)) {
printf("Table tutorials_tbl created successfully.
");
}
if ($mysqli->errno) {
printf("Could not create table: %s
", $mysqli->error);
}
$mysqli->close();
输出
获得的输出如下 -
Connected successfully.
Table tutorials_tbl created successfully.
var mysql = require('mysql2');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "*****"
});
//连接到 MySQL
con.connect(function (err) {
if (err) throw err;
console.log("Connected!");
console.log("--------------------------");
//创建一个表
sql = "CREATE TABLE tutorials_tbl(tutorial_id INT NOT NULL AUTO_INCREMENT,tutorial_title VARCHAR(100) NOT NULL,tutorial_author VARCHAR(40) NOT NULL,submission_date DATE,PRIMARY KEY ( tutorial_id ));"
con.query(sql, function (err, result) {
if (err) throw err;
console.log("The table tutorials_tbl is created successfully!");
});
});
输出
生成的输出如下 -
Connected!
--------------------------
The table tutorials_tbl is created successfully!
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class CreateTable {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/TUTORIALS";
String username = "root";
String password = "password";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
System.out.println("Connected successfully...!");
//Create new table...!
String sql = "CREATE TABLE tutorials_tbl (ID Int Auto_Increment not null, tutorial_title Varchar(50) Not Null, tutorial_author Varchar(30) Not Null, Primary Key(ID))";
statement.executeUpdate(sql);
System.out.println("Table created successfully...!");
ResultSet resultSet = statement.executeQuery("DESCRIBE tutorials_tbl");
while (resultSet.next()) {
System.out.print(resultSet.getNString(1));
System.out.println();
}
connection.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
输出
获得的输出如下所示 -
Connected successfully...!
Table created successfully...!
ID
tutorial_title
tutorial_author
import mysql.connector
#建立连接
conn = mysql.connector.connect(
user='root', password='password', host='localhost', database='tut'
)
#创建游标对象
cursor = conn.cursor()
#创建表
sql ='''CREATE TABLE tutorials_tbl(
tutorial_id INT NOT NULL AUTO_INCREMENT,
tutorial_title VARCHAR(100) NOT NULL,
tutorial_author VARCHAR(40) NOT NULL,
submission_date DATE,
PRIMARY KEY ( tutorial_id )
)'''
cursor.execute(sql)
print ("The table tutorials_tbl is created successfully!")
#关闭连接
conn.close()
输出
以下是上述代码的输出 -
The table tutorials_tbl is created successfully!
❮ MySQL 解锁用户账户
MySQL Show Tables 显示表语句 ❯