MariaDB 关键字

MariaDB CREATE TABLE 关键字用于创建新表。创建表涉及为表提供名称并定义每列的名称和数据类型(例如 varchar、整数、日期等)。

语法

使用的语法MariaDB 中的 CREATE TABLE 关键字如下:

CREATE TABLE table_name (
  column1 datatype,
  column2 datatype,
  column3 datatype,
  .....
  .....
); 

示例:创建表

下面提到的语句创建一个名为 Employee 的表,其中包含五列:EmpID、Name、City、Age 和 Salary。

CREATE TABLE Employee (
  EmpID INT NOT NULL PRIMARY KEY,
  Name VARCHAR(255) NOT NULL,
  City VARCHAR(100),
  Age INT,
  Salary DECIMAL(18,2)
); 

在上面的语句中,数据类型指定了该列可以保存的数据类型。在数据类型之后,可以为每列提供可选属性,例如 NOT NULL 用于确保列不能有 NULL 值。有关详细信息,请参阅 MariaDB 约束

上述语句将创建一个名为 Employee 的空表包含五列。成功创建表后,会显示一条消息。除此之外,还可以使用 DESC 命令进行检查,如下所示:

DESC Employee; 

这将产生如下所示的结果:

FieldTypeNullKeyDefaultExtra
EmpIDint(11)NoPRI
Namevarchar(255)No
Cityvarchar(100)YesNULL
Ageint(11)YesNULL
Salarydecimal(18,2)YesNULL

这表明Employee 现在在数据库中可用,可用于存储与员工相关的信息。

使用另一个表创建表

MariaDB CREATE TABLE AS 关键字用于通过复制现有表的列来从现有表创建表。以这种方式创建表时,新表将填充现有表中的记录(基于 SELECT 语句)。

语法

使用 CREATE TABLE 的语法MariaDB 中的 AS 关键字如下:

/* 复制所有列 */
CREATE TABLE new_table
  AS (SELECT * FROM old_table);

/* 复制多个列 */
CREATE TABLE new_table
  AS (SELECT column_1, column2, ...
      FROM old_table);

/* 复制多个表的多个列 */
CREATE TABLE new_table
  AS (SELECT column_1, column2, ...
      FROM old_table_1, old_table_2, ...); 

示例:

考虑一个名为 Employee 的数据库表,其中包含以下记录:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

复制表的所有列:以下语句用于创建一个名为Employee_PT的新表 通过复制 Employee 表的所有列。新表将包含 Employee 表中员工年龄小于 28 岁的记录。

CREATE TABLE Employee_PT
  AS (SELECT * FROM Employee
    WHERE Age < 28);

-- 查看结果
SELECT * FROM Employee_PT; 

这将产生如下所示的结果:

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800

复制表的选定列:使用 CREATE TABLE AS 语句时也可以复制选定的列。在下面的示例中,复制的列为:EmpID、Name 和 City。

CREATE TABLE Employee_PT
  AS (SELECT EmpID, Name, City FROM Employee
    WHERE Age < 28);

-- 查看结果
SELECT * FROM Employee_PT; 

这将产生如下所示的结果:

EmpIDNameCity
1JohnLondon
2MarryNew York
3JoParis

使用AS子句:AS子句可用于重命名列名。请参阅下面的示例:

CREATE TABLE Employee_PT
  AS (SELECT EmpID, Name AS EmployeeName, City FROM Employee
    WHERE Age < 28);

-- 查看结果
SELECT * FROM Employee_PT; 

这将产生如下所示的结果:

EmpIDEmployeeNameCity
1JohnLondon
2MarryNew York
3JoParis

从多个表复制列:考虑另一个名为 Contact_Info 的表,其中包含以下记录:

Phone_NumberEmpIDAddressGender
+1-80540980002Brooklyn, New York, USAF
+33-1479961013Grenelle, Paris, FranceM
+31-2011503194Geuzenveld, Amsterdam, NetherlandsF
+86-10997324586Yizhuangzhen, Beijing, ChinaM
+65-672348247Yishun, SingaporeM
+81-3577990728Koto City, Tokyo, JapanM

以下语句用于创建一个名为 Employee_PT 的新表,其中将包含 Employee 和 Contact_Info 表的选定列。新表将包含基于 INNER JOIN 的记录。

CREATE TABLE Employee_PT
  AS (SELECT A.EmpID, A.Name, A.City, B.Address 
    FROM Employee A
    INNER JOIN Contact_Info B
    ON A.EmpID = B.EmpID);

-- 查看结果
SELECT * FROM Employee_PT; 

这将产生如下所示的结果:

EmpIDNameCityAddress
2MarryNew YorkBrooklyn, New York, USA
3JoParisGrenelle, Paris, France
4KimAmsterdamGeuzenveld, Amsterdam, Netherlands
6HuangBeijingYizhuangzhen, Beijing, China