• 第17课 创建和操纵表


    第17课 创建和操纵表

    17.1 创建表

    17.1.1 表创建基础

    利用CREATE TABLE创建表,必须给出下列信息:

    • 新表的名字,在关键字CREATE TABLE之后给出;
    • 表列的名字和定义,用逗号分隔;
    • 有的DBMS还要求指定表的位置。

    下面的SQL语句创建本书中所用的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
    );
    

    实际的表定义(所有列)括在圆括号之中,各列之间用逗号分隔。整条语句以圆括号后的分号结束。

    17.1.2 使用NULL值

    每个表列要么是NULL列,要么是NOT NULL列,这种状态在创建时由表的定义规定。

    CREATE TABLE Orders
    (
        order_num      INTEGER      NOT NULL,
        order_date     DATETIME     NOT NULL,
        cust_id        CHAR(10)     NOT 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)
    );
    

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

    警告:理解NULL
    不要把NULL值与空字符串相混淆。NULL值是没有值,不是空字符串。如果指定''(两个单引号,其间没有字符),这在NOT NULL列中是允许的。空字符串是一个有效的值,它不是无值。NULL值用关键字NULL而不是空字符串指定。

    17.1.3 指定默认值

    默认值在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用户指定DEFAULT CURRENT_DATE(),Oracle用户指定DEFAULT SYSDATE,而SQL Server用户指定DEFAULT GETDATE()。

    17.2 更新表

    以下是使用ALTER TABLE时需要考虑的事情。

    • 理想情况下,不要在表中包含数据时对其进行更新。应该在表的设计过程中充分考虑未来可能的需求,避免今后对表的结构做大改动。
    • 所有的DBMS都允许给现有的表增加列,不过对所增加列的数据类型(以及NULL和DEFAULT的使用)有所限制。
    • 许多DBMS不允许删除或更改表中的列。
    • 多数DBMS允许重新命名表中的列。
    • 许多DBMS限制对已经填有数据的列进行更改,对未填有数据的列几乎没有限制。

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

    • 在ALTER TABLE之后给出要更改的表名(该表必须存在,否则将出错);
    • 列出要做哪些更改。
    ALTER TABLE Vendors
    ADD vend_phone CHAR(20);
    

    这条语句给Vendors表增加一个名为vend_phone的列,其数据类型为CHAR。

    ALTER TABLE Vendors
    DROP COLUMN vend_phone;
    

    警告:小心使用ALTER TABLE
    使用ALTER TABLE要极为小心,应该在进行改动前做完整的备份(模式和数据的备份)。

    17.3 删除表

    DROP TABLE CustCopy;
    

    17.4 重命名表

    每个DBMS对表重命名的支持有所不同。对于这个操作,不存在严格的标准。

    17.5 小结

    CREATE TABLE用来创建新表,ALTER TABLE用来更改表列(或其他诸如约束或索引等对象),而DROP TABLE用来完整地删除一个表。这些语句必须小心使用,并且应该在备份后使用。

  • 相关阅读:
    Java IO流学习总结
    wpf 右键ListBox可编辑
    silverlight 独立存储之路径、保存图片、扩展空间注意事项
    自定义wpf的MessageBox(可重定义button键文字)
    细数各大顶级网站的垃圾设置!!!
    无法为 SSL/TLS 安全通道与颁发机构“*****”建立信任关系。
    JS完美运动框架
    修改thinkphp缩略图源码 生成固定的缩略图
    20120609 随笔
    php 图片处理函数
  • 原文地址:https://www.cnblogs.com/zhangsonghui/p/13302283.html
Copyright © 2020-2023  润新知