17 创建和操纵表

1.创建表

一般有两种方法:

多数DBMS都具有交互式创建和管理数据库表的工具;

也可以直接用SQL语句操纵。

(1)表创建基础

新表的名字,在关键字CREARE TABLE之后给出;

‚表列的名字和定义,用逗号分隔;

ƒ有的DBMS还要求指定表的位置。

输入:

CREATE TABLE Products

(

prod_id CHAR(10) NOT NULL,

vend_id CHAR(10) NOT NULL,

prod_name CHAR(254) NOT NULL,

prod_price TEXT(8,2) NOT NULL,

prod_desc VARCHAR(1000) NULL

);

SQL语句创建本书所用的Products

表名紧跟CREATE TABLE关键字,实际的表定义(所有列)在圆括号内,各列之间用逗号分隔。该表由5列组成,每列的定义以列名开始,后跟列的数据类型。整条语句以圆括号后的分号结束。对于MySQL,使用TEXT替换VARCHAR

(2)使用NULL

允许NULL值的列允许在插入行时补不给出该列的值,而不允许NULL值的列不接受没有列值的行。每个表列不是NULL列就是NOT NULL列,在创建时由表的定义规定。

输入:

CREATE TABLE Orders

(

order_num INTEGER NOT NULL,

order_date DATETIME NOT NULL,

cust_id CHAR(10) NOT NULL,

);

SQL语句创建本书所用的Orders表。

每一列的定义均包含关键字NOT NULL,阻止插入没有值的列。

下面的例子混合了NULLNOT NULL,输入:

CREATE TABLE Vendors

(

vend_id CHAR(10) NOT NULL,

vend_name CHAR(50) NOT NULL,

vend_address CHAR(50) ,

vend_city CHAR(50) ,

vend_state CHAR(5) ,

vend_zip CHAR(10) ,

vend_country CHAR(50)

);

SQL语句创建本书所用的Vendors表。

NULL为默认设置,如果不指定NOT NULL,就认为指定的是NULL

(3)指定默认值

SQL允许指定默认值,在插入行时如果不给出值,DBMS将自动采用默认值。默认值在CREATE TABLE语句的列定义中用关键词DEFAULT指定。

输入:

CREATE TABLE OrderItems

(

order_num INTEGER NOT NULL ,

order_item INTEGER NOT NULL ,

prod_id CHAR(10) NOT NULL ,

quantity INTEGER NOT NULL DEFAULT 1,

item_price DECIMAL(8,2) NOT NULL

);

MySQL中使用:

CREATE TABLE OrderItems

(

order_num int NOT NULL ,

order_item int NOT NULL ,

prod_id char(10) NOT NULL ,

quantity int NOT NULL ,

item_price decimal(8,2) NOT NULL

);

这条语句创建OrderItems表,包含构成定订单的各项,quantity列为订单中每个物品的数量,使用DEFAULT 1指示DBMS如果不输出数量则使用数量1

默认值经常用于日期或时间戳列。MySQL指定系统日期的函数或变量,如DEFAULT CURRENT_DATE(),将系统日期用作默认日期。

2.更新表

使用ALTER TABLE语句更新表定义。使用时应考虑:

  • 理想情况下,不要在表中包含数据是对其进行更新。在设计时应充分考虑表的可能需求,避免对其做大的改动;
  • 所有的DBMS都允许给现有的表增加列,但限制增加列的数据类型;
  • 许多DBMS不允许删除或更改表中的列;
  • 多数DBMS允许重新命名表中的新列;
  • 许多DBMS限制更改已经填有数据的列,而未填有数据的列几乎没有限制。

使用ALTER TABLE更改表结构,必须给出以下信息:

  • ALTER TABLE之后给出要更改的表名(该表必须存在);
  • 列出要做出哪些更改。

给已知表增加列,输入:

ALTER TABLE Vendors

ADD vend_phone CHAR(20);

Vendors表增加一个名为vend_phone的列,数据类型为CHAR

删除列,输入:

ALTER TABLE Vendors

DROP vend_phone;

复杂的表结构更改一般需要手动删除过程,涉及一下步骤:

(1)用新的列布局创建一个新表;

(2)使用INSERT SELECT语句从旧表复制数据到新表,有必要的话,可以使用转换和计算字段;

(3)检验包含所需数据的新表;

(4)重命名旧表,如果确定,可以删除它;

(5)用旧表原来的名字重命名新表;

(6)根据需要,重新创建触发器存储过程、索引和外键。

3.删除表

使用DROP TABLE语句即可。

输入:

DROP TABLE CustCopy;

删除了第15课创建的CustCopy表。删除表没有确认,也没有撤销,执行这条语句将永久删除表。

4.重命名表

基本语法要求指定旧表名和新表名。MySQL使用RENAME语句。

 

posted @ 2016-12-04 19:35  Sumomo  阅读(209)  评论(0编辑  收藏  举报