zoukankan      html  css  js  c++  java
  • 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语句。

  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6131567.html
Copyright © 2011-2022 走看看