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';
posted @ 2022-11-05 22:15  AlphaInf  阅读(46)  评论(0编辑  收藏  举报