当前位置: 代码迷 >> SQL >> SQL必知必会 札记 第十七章 创建和操纵表
  详细解决方案

SQL必知必会 札记 第十七章 创建和操纵表

热度:13   发布时间:2016-05-05 10:35:05.0
SQL必知必会 笔记 第十七章 创建和操纵表

17.1创建表

一般有两种创建表的方法
(1)多数DBMS都具有交互式创建和管理表工具
(2)表也可以直接用SQL语句操纵
语法差别:在不同的SQL实现中,CREATE TABLE语句的语法可能会有所不同。

17.1.1表创建基础

为利用CREATE TABLE创建表,必须给出下列信息:
(1)新表的名字,在关键字CREATE TABLE之后给出。
(2)表列的名字和定义,用逗号分隔。
(3)有的DBMS还要求指定表的位置。
创建Products表

CREATE TABLE Products{     prod_id          CHAR(10)     NOT NULL,     vend_id          CHAR(10)     NOT NULL,     prod_name     CHAR(254)     NOT NULL,     prod_price      DECIMAL(8,2)     NOT NULL,     prod_desc      VARCHAR(1000)    NULL};

替换现有的表
在创建新表时,指定的表名必须不存在,否则将出错。如果要防止以外覆盖已有的表,SQL要求首先手工删除该表,然后再重建它,而不是简单地用创建表语句覆盖它。

17.1.2使用NULL值

允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行,换句话说,在插入或更新行时,该列必须没有值。
指定NULL:多数DBMS在不指定NOT NULL时认为指定的是NULL,但并不是所有的DBMS都这样。
主键和NULL值:主键是其值唯一标识表中每一行的列,只有不允许NULL值的列可用于主键。允许NULL值的列不能用于唯一标识。
理解NULL:不要把NULL值与空串相混淆,NULL值是没有值,它不是空串,如果指定‘’,这在NOT NULL列种是允许的。空串是一个有效的值,它不是无值。NULL值用关键字NULL而不是空串指定。

17.1.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};

获得系统日期
这里写图片描述

17.2更新表

为更新表定义,可使用ALTER TABLE语句。
使用ALTER TABLE所考虑的内容。
(1)一般来说,在表中包含数据时不要对其进行更新。
(2)所有DBMS都允许给校友的表增加列,不过对所增加列的数据类型(以及NULL和DEFAULT的使用)有所限制。
(3)许多DBSM不允许删除或更改表中的列。
(4)多数DBMS允许重新命名表中的列。
(5)许多DBMS对已经填有数据的列的更改有限制,对未填有数据的列几乎没有限制。
为了使用ALTER TABLE更改表结构,必须给出下面信息:
(1)在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错)
(2)所做更改的列表
添加列

ALTER TABLE VendorsADD vend_phone CHAR(20);

删除列

ALTER TABLE VendorsDROP COLUMN vend_phone;

小心使用ALTER TABLE:使用ALTER TABLE要极为小心,应该在进行改动前做一个完整的备份。数据库表的更改不能撤销,如果增加了不需要的列,可能不能删除它们。类似地,如果删除了不应该删除的列,可能会丢失该列中的所有数据。

17.3删除表

删除表(删除整个表而不是其内容),使用DROP TABLE语句。

DROP TABLE CustCopy;

17.4重命名表

不同DBMS所支持的表的重命名有所不同。
Oracle用RENAME

  相关解决方案