- MySQL 基础
- MySQL - 首页
- MySQL - 简介
- MySQL - 特性
- MySQL - 版本
- MySQL - 变量
- MySQL - 安装
- MySQL - 管理
- MySQL - PHP 语法
- MySQL - Node.js 语法
- MySQL - Java 语法
- MySQL - Python 语法
- MySQL - 连接
- MySQL - Workbench
- MySQL 数据库
- MySQL - 创建数据库
- MySQL - 删除数据库
- MySQL - 选择数据库
- MySQL - 显示数据库
- MySQL - 复制数据库
- MySQL - 数据库导出
- MySQL - 数据库导入
- MySQL - 数据库信息
- MySQL 用户
- MySQL - 创建用户
- MySQL - 删除用户
- MySQL - 显示用户
- MySQL - 修改密码
- MySQL - 授予权限
- MySQL - 显示权限
- MySQL - 收回权限
- MySQL - 锁定用户账户
- MySQL - 解锁用户账户
- MySQL 表
- MySQL - 创建表
- MySQL - 显示表
- MySQL - 修改表
- MySQL - 重命名表
- MySQL - 克隆表
- MySQL - 截断表
- MySQL - 临时表
- MySQL - 修复表
- MySQL - 描述表
- MySQL - 添加/删除列
- MySQL - 显示列
- MySQL - 重命名列
- MySQL - 表锁定
- MySQL - 删除表
- MySQL - 派生表
- MySQL 查询
- MySQL - 查询
- MySQL - 约束
- MySQL - 插入查询
- MySQL - 选择查询
- MySQL - 更新查询
- MySQL - 删除查询
- MySQL - 替换查询
- MySQL - 插入忽略
- MySQL - 插入重复键更新
- MySQL - 插入选择
- MySQL 运算符和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 运算符
- MySQL - OR 运算符
- MySQL - LIKE 运算符
- MySQL - IN 运算符
- MySQL - ANY 运算符
- MySQL - EXISTS 运算符
- MySQL - NOT 运算符
- MySQL - 不等于运算符
- MySQL - IS NULL 运算符
- MySQL - IS NOT NULL 运算符
- MySQL - BETWEEN 运算符
- MySQL - UNION 运算符
- MySQL - UNION 与 UNION ALL
- MySQL - MINUS 运算符
- MySQL - INTERSECT 运算符
- MySQL - INTERVAL 运算符
- MySQL 连接
- MySQL - 使用连接
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自连接
- MySQL - 删除连接
- MySQL - 更新连接
- MySQL - UNION 与 JOIN
- MySQL 触发器
- MySQL - 触发器
- MySQL - 创建触发器
- MySQL - 显示触发器
- MySQL - 删除触发器
- MySQL - 插入前触发器
- MySQL - 插入后触发器
- MySQL - 更新前触发器
- MySQL - 更新后触发器
- MySQL - 删除前触发器
- MySQL - 删除后触发器
- MySQL 数据类型
- MySQL - 数据类型
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正则表达式
- MySQL - 正则表达式
- MySQL - RLIKE 运算符
- MySQL - NOT LIKE 运算符
- MySQL - NOT REGEXP 运算符
- MySQL - regexp_instr() 函数
- MySQL - regexp_like() 函数
- MySQL - regexp_replace() 函数
- MySQL - regexp_substr() 函数
- MySQL 函数和运算符
- MySQL - 日期和时间函数
- MySQL - 算术运算符
- MySQL - 数值函数
- MySQL - 字符串函数
- MySQL - 聚合函数
- MySQL 杂项概念
- MySQL - NULL 值
- MySQL - 事务
- MySQL - 使用序列
- MySQL - 处理重复项
- MySQL - SQL 注入
- MySQL - 子查询
- MySQL - 注释
- MySQL - 检查约束
- MySQL - 存储引擎
- MySQL - 将表导出到 CSV 文件
- MySQL - 将 CSV 文件导入数据库
- MySQL - UUID
- MySQL - 通用表表达式
- MySQL - ON DELETE CASCADE
- MySQL - Upsert
- MySQL - 水平分区
- MySQL - 垂直分区
- MySQL - 游标
- MySQL - 存储函数
- MySQL - 信号
- MySQL - 重新发送信号
- MySQL - 字符集
- MySQL - 校对
- MySQL - 通配符
- MySQL - 别名
- MySQL - ROLLUP
- MySQL - 当天日期
- MySQL - 字面量
- MySQL - 存储过程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 标准差
- MySQL - 查找重复记录
- MySQL - 删除重复记录
- MySQL - 选择随机记录
- MySQL - 显示进程列表
- MySQL - 更改列类型
- MySQL - 重置自动递增
- MySQL - Coalesce() 函数
- MySQL 有用资源
- MySQL - 有用函数
- MySQL - 语句参考
- MySQL - 快速指南
- MySQL - 有用资源
- MySQL - 讨论
MySQL - 创建表
在 MySQL 关系数据库系统中,SQL 用于以结构化表的形式存储数据。这些表由字段和记录组成。字段表示定义要在表中存储的数据类型的列,记录是包含实际数据的行。MySQL 提供各种查询来与数据交互,允许您创建表、更新表、删除表等。
MySQL 创建表语句
要在提示符下在 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 列中的值递增 1,用于您添加的每个新记录。它从下一个可用数字开始。
使用字段属性 NOT NULL 是因为我们不希望该字段为 NULL。因此,如果用户尝试创建具有该字段中 NULL 值的记录,则 MySQL 将引发错误。
关键字 PRIMARY KEY 用于将列定义为主键。它确保该列中的每条记录都是唯一的。您还可以通过逗号分隔它们来将其用于多列。
输出
当我们执行上述查询时,将获得如下输出:
Query OK, 0 rows affected (0.03 sec)
验证
创建表完成后,我们可以使用以下查询检查它是否已成功创建:
DESC CUSTOMERS;
上述查询显示 CUSTOMERS 表的结构:列名、数据类型等。
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | auto_increment |
NAME | varchar(20) | 否 | NULL | ||
AGE | int | 否 | NULL | ||
ADDRESS | char(25) | 是 | NULL | ||
SALARY | decimal(18,2) | 是 | 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 表的结构和描述。
字段 | 类型 | 空 | 键 | 默认值 | 额外 |
---|---|---|---|---|---|
ID | int | 否 | PRI | NULL | auto_increment |
NAME | varchar(20) | 否 | NULL | ||
AGE | int | 否 | NULL | ||
ADDRESS | char(25) | 是 | NULL | ||
SALARY | decimal(18,2) | 是 | 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
如果您在 CREATE 语句中使用 IF NOT EXISTS 子句(如下所示),则会创建一个新表;如果具有给定名称的表已存在,则会忽略该查询。
CREATE TABLE Test(Name VARCHAR(255)); Query OK, 0 rows affected (0.69 sec)
使用客户端程序在 MySQL 数据库中创建表
除了使用 MySQL 查询在 MySQL 数据库中创建表之外,我们还可以使用客户端程序执行 CREATE TABLE 操作。
语法
以下是各种编程语言中创建表的语法:
要在 MySQL 数据库中通过 PHP 程序创建表,我们需要使用 mysqli 函数 query() 执行 CREATE TABLE 语句,如下所示:
$sql = "CREATE TABLE table_name (column_name column_type)"; $mysqli->query($sql);
要在 MySQL 数据库中通过 Node.js 程序创建表,我们需要使用 mysql2 库的 query() 函数执行 CREATE TABLE 语句,如下所示:
sql = "CREATE TABLE table_name (column_name column_type)"; con.query(sql);
要在 MySQL 数据库中通过 Java 程序创建表,我们需要使用 JDBC 函数 executeUpdate() 执行 CREATE TABLE 语句,如下所示:
String sql = "CREATE TABLE table_name (column_name column_type)"; statement.execute(sql);
要在 MySQL 数据库中通过 Python 程序创建表,我们需要使用 MySQL Connector/Python 的 execute() 函数执行 CREATE TABLE 语句,如下所示:
sql = "CREATE TABLE table_name (column_name column_type)"; cursorObj.execute(sql);
示例
以下是程序:
$dbhost = 'localhost'; $dbuser = 'root'; $dbpass = 'root@123'; $dbname = 'TUTORIALS'; $mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($mysqli->connect_errno ) { printf("Connect failed: %s<br />", $mysqli->connect_error); exit(); } printf('Connected successfully.<br />'); $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.<br />"); } if ($mysqli->errno) { printf("Could not create table: %s<br />", $mysqli->error); } $mysqli->close();
输出
获得的输出如下所示:
Connected successfully. Table tutorials_tbl created successfully.
var mysql = require('mysql2'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "*****" }); //Connecting to MySQL con.connect(function (err) { if (err) throw err; console.log("Connected!"); console.log("--------------------------"); //Creating a table 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://127.0.0.1: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 #establishing the connection conn = mysql.connector.connect( user='root', password='password', host='localhost', database='tut' ) #Creating a cursor object cursor = conn.cursor() #Creating a table 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!") #Closing the connection conn.close()
输出
以下是以上代码的输出:
The table tutorials_tbl is created successfully!