SQL语句之表操作
创建表: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)来显式删除临时表。