CREATE TABLE 语句用于创建数据库中的表。表由行和列组成,每个表都必须有个表名。 CREATE DATABASE 语句用于创建数据库:CREATE DATABASE dbname; ALTER TABLE 语句用于在已有的表中添加、删除或修改列。 DROP TABLE 语句用于删除表:DROP TABLE table_name。 SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。


目录


创建表:CREATE TABLE 语句

CREATE TABLE 语句用于创建数据库中的表。表由行和列组成,每个表都必须有个表名。

CREATE DATABASE 语句用于创建数据库:CREATE DATABASE dbname;

语法

CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);

column_name 参数规定表中列的名称。
data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。
size 参数规定表中列的最大长度。

提示:如需了解 MS Access、MySQL 和 SQL Server 中可用的数据类型,请访问数据类型参考手册

实例

创建一个名为 "Persons" 的表,包含五列:PersonID、LastName、FirstName、Address 和 City,使用下面的 CREATE TABLE 语句:
CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

PersonID 列的数据类型是 int,包含整数。
LastName、FirstName、Address 和 City 列的数据类型是 varchar,包含字符,且这些字段的最大长度为 255 个字符。

提示:可使用 INSERT INTO 语句向空表写入数据。

更改表:ALTER TABLE 语句

ALTER TABLE 语句用于在已有的表中添加、删除或修改列。

  • 如需在表中添加列,请使用下面的语法:
    ALTER TABLE table_name
    ADD column_name datatype

  • 如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
    ALTER TABLE table_name
    DROP COLUMN column_name

  • 要改变表中列的数据类型,请使用下面的语法:

    • SQL Server / MS Access:
      ALTER TABLE table_name
      ALTER COLUMN column_name datatype

    • My SQL / Oracle:
      ALTER TABLE table_name
      MODIFY COLUMN column_name datatype

    • Oracle 10G 之后版本:
      ALTER TABLE table_name
      MODIFY column_name datatype;

删除表:DROP TABLE 语句

DROP TABLE 语句用于删除表:
DROP TABLE table_name

复制表:SELECT INTO 语句

SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT(只拷贝表的数据,不拷贝表的结构,前提是新表已经存在)) 。
当然你可以使用AS语句来拷贝表结构及数据:CREATE TABLE 新表 AS SELECT * FROM 旧表

  • 复制所有的列插入到新表中:
    SELECT *
    INTO newtable [IN externaldb]
    FROM table1;

  • 复制希望的列插入到新表中:
    SELECT column_name(s)
    INTO newtable [IN externaldb]
    FROM table1;

  • 只复制表结构到新表中(只需要添加促使查询没有数据返回的 WHERE 子句即可):
    SELECT column_name(s)
    INTO newtable [IN externaldb]
    FROM table1;

提示:新表将会使用 SELECT 语句中定义的列名称和类型进行创建。您可以使用 AS 子句来应用新名称。

临时表

局部临时表与全局临时表区别与示例:

  • 局部临时表(#开头)只对当前连接有效,当前连接断开时自动删除。
  • 全局临时表(##开头)对其它连接也有效,在当前连接和其他访问过它的连接都断开时自动删除。
  • 不管局部临时表还是全局临时表,只要连接有访问权限,都可以用drop table #Tmp(或者drop table ##Tmp)来显式删除临时表。
参考资料

SQL 教程 | 菜鸟教程