1、创建表
一般有两种创建表的方法:
(1)多数DBMS都具有交互式创建和管理数据库表的工具。
(2)表也可以直接用SQL语句操纵。
1.1、表创建基础
CREATE TABLE products
(prod_id,CHAR(10),NOT NULL,vend_id,CHAR(10),NOT NULL,prod_name,CHAR(10),NOT NULL,prod_price,DECIMAL(8,2),NOT NULL,prod_desc,VARCHAR(1000),NULL
);
1.2、使用NULL值
允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受没有列值的行,换句话说,在插入或更新行时,该列必须有值。
每个表列要么是NULL列,要么是NOT NULL列,这种状态在创建表由表的定义规定。
1.3、指定默认值
SQL允许指定默认值,在插入行时如果不给出值,DBMS将自动采用默认值。
CREATE TABLE products
(prod_id,CHAR(10),NOT NULL,vend_id,CHAR(10),NOT NULL,prod_name,CHAR(10),NOT NULL,prod_price,DECIMAL(8,2),NOT NULL DEFAULT 1,prod_desc,VARCHAR(1000),NULL
);
#在这个例子中,这一列的描述增加了DEFAULT 1,指示DBMS,如果不给出数量则使用数量1
2、更新表
更新表定义,可以使用ALTER TABLE语句。虽然所有的 DBMS都支持ALTER TABLE,但他们所允许更新的内容差别很大。以下是使用ALTER TABLE时需要考虑的事情:
(1)理想情况下,不要在表中包含数据时对其进行更新。应该在表的设计过程中充分考虑未来可能的需求,避免今后对表的结构做大改动。
(2)所有的DBMS都允许给现有的表增加列,不过对所增加的数据类型有所限制。
(3)许多DBMS不允许删除或更改表中的列。
(4)多数DBMS允许重新命名表中的列。
(5)许多DBMS限制对已经填有数据的列进行更改,对未填有数据的列几乎没有限制。
ALTER TABLE Vendors
ADD vend_phone CHAR(20);
#给Vendors表增加一个名为vend_phone的列,其数据类型为CHAR
3、删除表
DROP TABLE CustCopy;
#删除整个表而不是内容
4、重命名表
每个DBMS对表重命名的支持有所不同。对应这个操作,不存在严格的标准。DB2,MariaDB,MySQL,Oracle和PostgreSQL用户使用RENAME语句;SQL Server用户使用sp_rename存储过程,SQLite用户使用ALTER TABLE语句。