• Oracle 创建和操作表


    Oracle 创建和操作表

    本节主要介绍创建、修改和删除表的基本操作

    1、创建表

    创建数据库表一般有两种方式:

    • 使用一个数据库客户端。可用于交互的创建和管理数据库表;
    • 直接利用ORACLE PL/SQL语句操作表

    注意:当使用交互式工具时,实际上使用的是ORACLE SQL语句。不过,无需编写这些语句,界面将为你无缝的生成和执行SQL。

    1.1、创建表的基础知识

    要使用CREATE TABLE创建表,必须指定以下信息:

    • 在关键字CREATE TABLE后面指定的新表的名称
    • 用逗号隔开的表列的名称和定义

    创建表示例:

    CREATE TABLE customers
    (
      cust_id   int      NOT NULL ,
      cust_name char(50) NOT NULL ,
      cust_address char(50)  NULL ,
      cust_city    char(50)  NULL ,
      cust_state   char(5)   NULL ,
      cust_zip     char(10)  NULL ,
      cust_country char(50)  NULL ,
      cust_contact char(50)  NULL ,
      cust_email   char(255) NULL
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    际的表定义(所有的列)用圆括号括住。列本身用逗号隔开。这个特定的表由9列组成,每个列定义都以列名(它在表内必须是唯一的)开始,其后接着列的数据类型。

    1.2、处理NULL值

    NULL值代表没有值或者缺少值。每个表列要么是NULL列,要么是NOT NULL列,并且这个状态是在创建时在表定义中指定的。看看下面的示例:

    CREATE TABLE orders
    (
      order_num  int  NOT NULL ,
      order_date date NOT NULL ,
      cust_id    int  NOT NULL
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    列都是必需的,因此每一列都包含关键字NOT NULL,这将阻止插入没有值的列。如果某人尝试插入没有值的列,将返回一个错误,并且插入操作将会失败。

    示例:

    CREATE TABLE vendors
    (
      vend_id      int        NOT NULL,
      vend_name    char(50)   NOT NULL ,
      vend_address char(50)   NULL ,
      vend_city    char(50)   NULL ,
      vend_state   char(5)    NULL ,
      vend_zip     char(10)   NULL ,
      vend_country char(50)   NULL
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    警告:理解NULL

    不要把NULL值与空字符串混淆。NULL值意指缺少值,它不是空字符串。如果指定“’ '”(两个单引号之间没有任何内容),这在NOT NULL列中是允许的。空字符串是一个有效值,它不是没有值。

    1.3、指定默认值

    在插入行时,如果没有指定值,Oracle允许指定默认值。默认值是在CREATE TABLE语句中的列定义中使用DEFAULT关键字指定的。

    使用示例:

    CREATE TABLE orderitems
    (
      order_num  int          NOT NULL ,
      order_item int          NOT NULL ,
      prod_id    char(10)     NOT NULL ,
      quantity   int          DEFAULT 1 NOT NULL ,
      item_price decimal(8,2) NOT NULL
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    提示:使用DEFAULT 代替NULL值

    许多数据库开发人员都使用DEFAULT值代替NULL列,尤其是将在计算或数据分组中使用的列中。

    2、更新表

    要更新表定义,可以使用ALTER TABLE语句,但是理想情况下,在表包含数据之后永远也不应该改变它们。

    要使用ALTER TABLE更改表,必须指定以下信息:

    • 在关键字ALTER TABLE后面指定要改变的表的名称(表必须存在,否则将会生成一个错误);
    • 要执行的更改列表。

    使用示例:

    ALTER TABLE vendors
    ADD vend_phone CHAR(20);
    
    • 1
    • 2

    2.1 主键

    主键值必须是唯一的。也就是说,表中的每一行都必须具有唯一的主键值。如果把单独一列用于主键,那么它必须是唯一的。如果使用多个列,那么它们的组合必须是唯一的。

    可以在CREATE TABLE语句内定义主键。不过,许多开发人员更喜欢先创建表,然后添加所有的键。添加键就是在进行表更新,因此要使用ALTER TABLE命令。

    下面给出了一个示例:

    ALTER TABLE customers ADD CONSTRAINT pk_customers
                          PRIMARY KEY (cust_id);
    
    • 1
    • 2

    2.2 定义外键

    ALTER TABLE也可用于定义外键。

    LTER TABLE orderitems
          ADD CONSTRAINT fk_orderitems_orders FOREIGN KEY (order_num)
          REFERENCES orders (order_num);
    
    • 1
    • 2
    • 3

    警告:小心的使用ALTER TABLE

    要极其小心地使用ALTER TABLE,在执行该操作前确保具有一组完整的备份(包括模式和数据)。数据库表的改变不能被撤销——如果添加了不需要的列,也许不能移除它们。类似地,如果删除了需要的列,也许就会丢失该列中所有的数据。

    3、删除表

    删除表(实际上是指删除整个表,而不仅仅是内容)。

    DROP TABLE customers2;
    
    • 1

    4、重命名表

    要重命名表,可以使用ALTER TABLE语句,如下:

    ALTER TABLE customers2 RENAME TO customers;
    
    • 1
  • 相关阅读:
    【概率论与数理统计(研究生课程)】知识点总结3(二维随机变量及其分布)
    24/8/9算法笔记 决策树VS线性回归
    No suitable driver found for jdbc:mysql://localhost:3306/BookManagement
    two point(双指针)
    java“贪吃蛇”小游戏
    测试用例:在线音乐播放器
    Java定时任务技术分析
    腾讯云服务器安装宝塔面板图文教程?
    win7电脑怎么录屏?教你一键捕捉电脑屏幕
    大数据Flink(五十四):Flink用武之地
  • 原文地址:https://blog.csdn.net/weixin_45102678/article/details/126052977