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';
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章