MySQL 创建表

MySQL 创建表

❮ 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 显示表语句 ❯

相关推荐

为什么喝纯牛奶会拉肚子
365bet亚洲网址

为什么喝纯牛奶会拉肚子

⌛ 10-13 👁️ 4101
加强儿童智能手表行业审核与监管 守护孩子健康成长
365bet提现多久到账

加强儿童智能手表行业审核与监管 守护孩子健康成长

⌛ 09-04 👁️ 1426
DNF解除安全模式方法
www365betcom手机版

DNF解除安全模式方法

⌛ 08-04 👁️ 4531