• SQL堂上作业九


    表的建立

    我们可以用CREATE TABLE xxx来建表

    CREATE TABLE dept
    (deptno NUMBER(2),
    dname VARCHAR2(14),
    loc VARCHAR2(13));
    

    然后,我们用DESCRIBE dept来查看该表的格式

    输出如下:

    名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     DEPTNO                                             NUMBER(2)
     DNAME                                              VARCHAR2(14)
     LOC                                                VARCHAR2(13)
    

    数据库中表名的查询

    我们可以用以下命令进行查询:

    SELECT table_name 
    FROM user_tables ;
    

    输出将会是若干个表的名字,节选如下:

    TABLE_NAME
    ------------------------------------------------------------
    AQ$_KUPC$DATAPUMP_QUETAB_G
    AQ$_AQ_PROP_TABLE_G
    AQ$_AQ$_MEM_MC_G
    AQ$_ALERT_QT_G
    AQ$_SCHEDULER_FILEWATCHER_QT_G
    AQ$_SCHEDULER$_REMDB_JOBQTAB_G
    AQ$_SCHEDULER$_EVENT_QTAB_G
    RECENT_RESOURCE_INCARNATIONS$
    CHNF$_GROUP_FILTER_IOT
    CHNF$_CLAUSES
    RULE_SET_ROP$
    
    TABLE_NAME
    ------------------------------------------------------------
    RULE_SET_IOT$
    RULE_SET_PR$
    UTL_RECOMP_COMPILED
    UTL_RECOMP_SORTED
    
    已选择950行。
    

    我们可以下列命令查询对象名

    SELECT DISTINCT object_type 
    FROM user_objects ;
    

    输出如下:

    OBJECT_TYPE
    --------------------------------------
    EDITION
    TABLE SUBPARTITION
    INDEX PARTITION
    CONSUMER GROUP
    SEQUENCE
    TABLE PARTITION
    SCHEDULE
    QUEUE
    RULE
    PROCEDURE
    OPERATOR
    
    OBJECT_TYPE
    --------------------------------------
    LOB PARTITION
    DESTINATION
    WINDOW
    SCHEDULER GROUP
    LOB
    PACKAGE
    PACKAGE BODY
    LIBRARY
    PROGRAM
    RULE SET
    CONTEXT
    
    OBJECT_TYPE
    --------------------------------------
    TYPE BODY
    TRIGGER
    JOB CLASS
    UNDEFINED
    DIRECTORY
    TABLE
    INDEX
    VIEW
    FUNCTION
    SYNONYM
    CLUSTER
    
    OBJECT_TYPE
    --------------------------------------
    TYPE
    RESOURCE PLAN
    JOB
    EVALUATION CONTEXT
    
    已选择37行。
    

    我们可以用下列命令,输出TABLES,VIEWS等内容

    SELECT * 
    FROM user_catalog ;
    

    输出足足有48xx行,就不列举了

    表中数据类型

    表中可以允许的数据类型如下图所示

    Data Type Description
    VARCHAR2(size) Variable-length character data
    CHAR(size) Fixed-length character data
    NUMBER(p,s) Variable-length numeric data
    DATE Date and time values
    LONG Variable-length character data up to 2 gigabytes
    CLOB Character data up to 4gigabytes
    RAW and LONG RAW Raw binary data
    BLOB Binary data up to 4 gigabytes
    BFILE Binary data stored in an external file; up to 4 gigabytes
    ROWID A 64 base number system representing the unique address of a row in its table.

    懒得翻译了qwq,大家直接看吧

    子查询建表

    我们可以用SELECT子句+CREATE TABLE,基于已有的数据进行建表

    CREATE TABLE dept80
    AS 
    SELECT employee_id, last_name, 
    salary*12 ANNSAL, 
    hire_date
    FROM employees
    WHERE department_id = 80;
    

    表的类型如下:

    名称                                                  是否为空? 类型
     ----------------------------------------------------- -------- ------------------------------------
     EMPLOYEE_ID                                                    NUMBER(6)
     LAST_NAME                                             NOT NULL VARCHAR2(25)
     ANNSAL                                                         NUMBER
     HIRE_DATE                                             NOT NULL DATE
    

    ALTER命令

    ALTER命令可以对表的一些默认参数进行修改

    比如说:ALTER TABLE xxx ADD可以添加一个新列,还可以用MODIFY修改,DROP去掉一列等

    ADD操作

    ADD可以给一个表新增一个列,并且指定这个列的名字

    我们准备给表DEPT80,新增一个叫做JOB_ID的列,命令如下:

    ALTER TABLE dept80
    ADD (job_id VARCHAR2(9));
    

    表的类型变更为下文:

    名称                                                  是否为空? 类型
     ----------------------------------------------------- -------- ------------------------------------
     EMPLOYEE_ID                                                    NUMBER(6)
     LAST_NAME                                             NOT NULL VARCHAR2(25)
     ANNSAL                                                         NUMBER
     HIRE_DATE                                             NOT NULL DATE
     JOB_ID                                                         VARCHAR2(9)
    

    MODIFY操作

    MODIFY可以用于对一个列的类别进行修改

    假设我们要将LAST_NAME这一列,修改为其他的数据类型,命令如下

    ALTER TABLE dept80
    MODIFY (last_name VARCHAR2(30));
    

    表的类型变更为了这样:

    名称                                                  是否为空? 类型
     ----------------------------------------------------- -------- ------------------------------------
     EMPLOYEE_ID                                                    NUMBER(6)
     LAST_NAME                                             NOT NULL VARCHAR2(30)
     ANNSAL                                                         NUMBER
     HIRE_DATE                                             NOT NULL DATE
     JOB_ID                                                         VARCHAR2(9)
    

    DROP操作

    我们可以用DROP命令删除掉某个表的一列

    ALTER TABLE dept80
    DROP COLUMN job_id; 
    

    表的类型变更为如下图所示:

    名称                                      是否为空? 类型
     ----------------------------------------- -------- ----------------------------
     EMPLOYEE_ID                                        NUMBER(6)
     LAST_NAME                                 NOT NULL VARCHAR2(30)
     ANNSAL                                             NUMBER
     HIRE_DATE                                 NOT NULL DATE
    

    UNUSED标签

    对于不使用的行,我们可以打上UNUSED标签,以便于DROP

    ALTER TABLE dept80
    SET UNUSED (hire_date);
    

    表的删除

    我们可以用DROP命令删表

    DROP TABLE dept80;
    

    表的重命名

    我们可以用RENAME命令给表重命名

    RENAME dept TO detail_dept;
    

    表的清空

    我们可以用TRUNCATE命令对表进行清空

    TRUNCATE TABLE student;
    

    这个命令将会把表student清空。

    警告:清空命令可以对抗rollback,被清空的表无法通过rollback恢复。

    表的注释

    我们可以通过COMMENT命令给表添加注释

    COMMENT ON TABLE employees
    IS 'Employee Information';
    
  • 相关阅读:
    奶牛编号(Cowids) [NOIP模拟]
    天天爱跑步 [NOIP2016]
    部落冲突
    狡猾的商人 [HNOI2005] [一题双解]
    最长公共子序列-LCS问题 (LCS与LIS在特殊条件下的转换) [洛谷1439]
    LeetCode 2. Add Two Numbers
    LeetCode 1. Two Sum
    LeetCode 91. Decode Ways
    LeetCode 516. Longest Palindromic Subsequence
    什么是马拉车算法(Manacher's Algorithm)?
  • 原文地址:https://www.cnblogs.com/alphainf/p/16861513.html
Copyright © 2020-2023  润新知