表的建立
我們可以用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';