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语句。

  • 相关阅读:
    NHibernate初学二之简单执行SQL及HQL、Linq
    Socket通信常用方法
    Android中自定义属性的使用
    四种常见的 POST 提交数据方式
    关于 Content-Type:application/x-www-form-urlencoded 和 Content-Type:multipart/related
    1、memcache的守护进程启动方式(2017-8-10)
    c++封装简单日志操作
    关于vector的内存释放
    Linux进程通信-共享内存
    Linux进程通信总结
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6131567.html
Copyright © 2011-2022 走看看