這篇文章主要介紹了Oracle數據表如何管理,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
SQLDeveloper工具的安裝以及使用:
SQLDeveloper工具可以在oracle官網中進行下載:(我下載的是win64,根據情況自行下載,下載后解壓至硬盤中即可使用)
解壓后運行sqldeveloper.exe可執行文件,新建連接,添加scott用戶后連接即可:
需要注意,SID是指數據庫的唯一標識符,是建立一個數據庫時系統自動賦予的一個初始ID,SID主要用于在一些DBA操作以及與操作系統交互,從操作系統的角度訪問實例名,必須通過ORACLE_SID,且它在注冊表中也是存在的。(如何查看SID,在WINDOWS平臺中,可以到注冊表中,查看HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,有一個ORACLE_SID。)
SQL結構化查詢語言(Structured Query Language),簡稱為SQL。是一種特殊目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統的語言。
DDL語句 | 說明 |
---|---|
create table | 創建數據庫表 |
create index | 創建數據庫表的索引 |
drop table | 刪除數據庫表 |
drop | 刪除數據庫表的索引 |
truncate | 刪除表中的所有行 |
alter table | 更改表結構,增加,修改,刪除列 |
alter table add constraint | 在已有的表上增加約束 |
DML語句 | 說明 |
---|---|
INSERT | 添加數據到數據庫中 |
UPDATE | 修改數據庫中的數據 |
DELETE | 刪除數據庫中的數據 |
SELECT | 選擇(查詢)數據 |
DCL語句 | 說明 |
---|---|
grant | 將權限或者角色授予用戶或者其他角色(如授予訪問權限) |
revoke | 從用戶或數據庫角色中收回權限(如撤銷訪問權限) |
LOCK | 對數據庫的特定部分進行鎖定 |
TCL語句 | 說明 |
---|---|
COMMIT | 提交事務處理 |
ROLLBACK | 事務處理回退 |
SAVEPOINT | 設置保存點 |
通過CREATE TABLE語句,如:CREATE TABLE table_name(column_name datatype...);
在創建數據表時,涉及數據表的結構問題,也就是涉及確定數據表中各個列的數據類型,是數值,字符,日期還是圖像等其他類型。(因為只有設計好數據表結構,系統才會在磁盤中開辟相應的空間,用戶才能夠向表中填寫數據。)
字符類型 | 說明 |
---|---|
CHAR | 1、表示固定長度的字符串;2、列長度可以使1到2000個字節。 |
VARCHAR2 | 1、表示可變長度的字符串;2、最大長度為4000字節。 |
數值類型 | 說明 |
---|---|
NUMBER | 聲明語法為:NUMBER[(p[, s])](p表示精度,s表示小數點的位數,可以存儲整數、浮點數等數值類型,最高精度為38位)。例如:number(5,0)最多可存儲五位整數;number(5,2)最大可存儲999.99的浮點數。 |
日期類型 | 說明 |
---|---|
日期類型 | 日期時間類型存儲日期和時間值,包括年、月、日,小時、分鐘、秒。主要的日期時間類型有:DATE。 |
LOB類型 | 說明 |
---|---|
CLOB | CLOB即Character LOB(字符LOB):他能夠存儲大量的字符數據 |
BLOB | BLOB即Binary LOB(二進制LOB):可以存儲較大的二進制對象,如推片、視頻剪輯和聲音文件等 |
學生信息表 | |
---|---|
表名 | 學生信息表(student) |
字段名-學號(SID) | number(8,2) |
字段名-姓名(name) | varchar2(20) |
字段名-性別(sex) | char(2) |
字段名-出生日期(birthday) | date |
字段名-家庭住址(address) | varchar2(50) |
創建學生信息表的SQL語句:
SQL> conn scott/02000059 已連接。 SQL> create table student(sid number(8,2), name varchar2(20), sex char(2), birthday date, addresss varchar2(50)); 表已創建。 SQL>
約束是Oracle提供的自動保持數據庫完整性的一種方法,它通過限制字段中數據、記錄中數據和表之間的數據來保證數據的完整性。
Oracle中的約束:主鍵約束(primary key constraint)、唯一性約束(unique constraint)、默認約束(default constraint)、非空約束(not null constraint)、檢查約束(check constraint)、外部鍵約束(foreign key constraint)。
PRIMARY KEY約束用于定義基本表的主鍵,它是唯一確定表中每一條記錄的標識符,其值不能為NULL,與不能重復,以此來保證實體的完整性。表中主鍵只能有一個,但是可以由多個列構成。如:primary key(學號、科目編號)
創建表時添加主鍵約束:
SQL> conn scott/02000059 已連接。 SQL> create table student(sid number(8,2),name varchar2(20), sex char(2), birthday date, address varchar2(50), constraint sid_pk primary key(sid)); 表已創建。
修改表時添加主鍵約束:
SQL> create table student(sid number(8,2),name varchar2(20), sex char(2), birthday date, address varchar2(50)); 表已創建。 SQL> alter table student add constraint sid_pk primary key(sid); 表已更改。
非空約束(not null):用于確保列不能為NULL,如果在列上定義了NOT NULL約束,那么當插入數據時,必須為該列提供數據;當更新列數據時,不能將其值設置為NULL。(非空(not null)約束是列級約束)
附加說明:列級約束與表級約束定義上的區別?
列級約束語法格式:column [CONSTRAINT constraint_name] constraint_type,說明:列級約束必須跟著列的定義的后面。
創建表時添加非空(not null)約束:(自定義約束名稱便于后期維護)
SQL> conn scott/02000059 已連接。 SQL> create table student(sid number(8,0), name varchar2(20) not null, sex char(2) constraint 2 nn_sex not null,birthday date, address date, constraint sid_pk primary key(sid)); 表已創建。
刪除非空(not null)約束的語法格式:ALTER TABLE table_name MODIFY column_name datatpe NULL;
命令行中的示例:
SQL> alter table student modify (name varchar2(20) NULL); 表已更改。 SQL>
附加說明:刪除約束的方式有兩種:將約束激活或者無效化、將約束徹底刪除
將約束無效化或者激活:ALTER TABLE table_name DISABLE | ENABLE CONSTRAINT constraint_name;;將約束徹底刪除:ALTER TABLE table_name DROP CONSTRAINT constraint_name;。
刪除主鍵約束的格式:ALTER TABLE table_name DROP PRIMARY KEY;;
命令行中的示例:(使主鍵約束無效化和刪除主鍵約束)
SQL> alter table student enable constraint sid_pk; 表已更改。 SQL> alter table student drop constraint sid_pk; 表已更改。 SQL>
唯一性(unique)約束:唯一性約束用于指定一個或者多個列的組合值具有唯一性,以防止在列中輸入重復的值。
創建表時添加唯一約束的示例:
C:\Users\Administrator>sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 28 21:40:44 2017 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL> conn scott/02000059 已連接。 SQL> create table student(sid number(8,0), name varchar2(20), sex char(2), birthday date, address varchar2(50), email varchar2(50) unique, cardid varchar2(18), constraint uk_cardid unique(cardid)); 表已創建。 SQL>
修改表時添加唯一性約束:
SQL> create table student(sid number(8,0), name varchar2(20), sex char(2), birthday date, address varchar2(50), email varchar2(50) unique, cardid varc har2(18)); 表已創建。 SQL> alter table student add constraint uk_cardid unique(cardid); 表已更改。
刪除唯一性約束:有禁用約束或者是徹底刪除兩種方式
SQL> alter table student disable constraint uk_cardid; 表已更改。 SQL> alter table student drop constraint uk_cardid; 表已更改。 SQL>
創建表時添加檢查約束的示例:(可以使用表級約束,也可以使用列級約束)
SQL> conn scott/02000059 已連接。 SQL> create table student(sid number(8,0), name varchar2(20), sex char(2) check(sex='男' or sex = '女'), birthday date, address varchar2(50)); 表已創建。 SQL>
SQL> conn scott/02000059 已連接。 SQL> create table student(sid number(8,0), name varchar2(20), sex char(2), birthday date, address varchar2(50), constraint ck_sex check(sex='男' or se x='女')); 表已創建。 SQL>
修改表時添加檢查(check)約束:
SQL> alter table student add constraint ck_sex check(sex='男' or sex='女'); 表已更改。
刪除檢查約束:有禁用約束或者是徹底刪除兩種方式
SQL> alter table student disable constraint ck_sex; 表已更改。 SQL> alter table student drop constraint ck_sex; 表已更改。
外鍵(FOREIGN KEY)是用于建立和加強兩個表數據之間的鏈接的一列或者多列。外鍵約束是唯一涉及兩個表關系的約束。
設置外鍵約束的語法格式:
列級約束:CRAETE TABLE 從表 (column_name datatype REFERENCES 主表(column_name) [ON DELETE CASCADE],....);(ON DELETE CASCADE表示的是級聯刪除)
表級約束:CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES 主表(column_name) [ON DELETE CASCADE];
創建表時設置列級外鍵約束示例:
SQL> create table department(depid varchar2(10) primary key, depname varchar2(30)); 表已創建。 SQL> create table student(sid number(8,0), name varchar2(20), sex char(2), birthday date, address varchar2(50), depid varchar2(10) references department(depid)); 表已創建。
創建表時設置表級外鍵約束示例:
C:\Users\Administrator>sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 星期三 11月 29 16:53:36 2017 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL> conn scott/02000059 已連接。 SQL> create table department(depid varchar2(10) primary key, depname varchar2(30)); 表已創建。 SQL> create table student(sid number(8,0), name varchar2(20), sex char(2), birthday date, address varchar2(50), depid varchar2(10), constraint fk_depid foreign key(depid) references department(depid) on delete cascade); 表已創建。 SQL>
修改表時添加外鍵約束:alter table student add constraint fk_depid foreign key(depid) references department(depid) on delete cascade;
SQL> alter table student add constraint fk_depid foreign key(depid) references department(depid) on delete cascade; 表已更改。 SQL>
刪除外鍵約束:有禁用約束和徹底刪除兩種方式
SQL> alter table student disable constraint fk_dep 表已更改。 SQL> alter table student drop constraint fk_depid; 表已更改。 SQL>
添加列語法結構:ALTER TABLE 表名 ADD 新增列名 數據類型;
舉例:ALTER TABLE student ADD tel VARCHAR2(11);
SQL> ALTER TABLE student ADD tel VARCHAR2(11); 表已更改。 SQL>
修改列語法結構:ALTER TABLE 表名 MODIFY 列名 新數據類型;
舉例:ALTER TABLE student MODIFY tel NUMBER(11,0);
SQL> ALTER TABLE student MODIFY tel NUMBER(11,0); 表已更改。 SQL>
刪除列的語法結構:ALTER TABLE 表名 DROP COLUMN 列名;
舉例:ALTER TABLE student DROP COLUMN tel;
SQL> ALTER TABLE student DROP COLUMN tel; 表已更改。 SQL>
修改列名的語法結構:ALTER TABLE 表名 RENAME COLUMN 列名 TO 新列名
舉例:ALTER TABLE student RENAME COLUMN sex TO gender;
SQL> ALTER TABLE student RENAME COLUMN sex TO gender; 表已更改。 SQL>
修改表名的語法結構:RENAME 表名 TO 新表名;
舉例:RENAME student TO studnetifo;
SQL> RENAME student TO studnetifo; 表已重命名。 SQL>
刪除表有兩種方式:TRUNCATE TABLE 表名:用于刪除表中的全部數據,并不是把表刪除掉,這種刪除方式要比DELETE方式刪除數據的速度要快,也叫做截斷表;DROP TABLE 表名:刪除表結構。
示例:
SQL> truncate table emp_bak; 表被截斷。 SQL> drop table emp_bak; 表已刪除。 SQL>
添加信息的語法結構:INSERT INTO 表名[(列1,列2, ... ,)] VALUES(值1,值2, ...,值N);
查詢信息的語法格式:SELECT * | column[,...] from 表名;
修改信息的語法格式:UPDATE table SET column = value [, column = value, ...] [WHERE condition];
刪除信息的語法格式:DELETE FROM table [WHERE condition];
什么是事務:事務可以看做是由對數據庫的若干操作組成的一個單元,這些操作要么都完成,要么都取消,從而保證數據滿足一致性的要求。
事務的組成:一條或者多條DML、一條DLL或者一條DCL語句。(DML語句需要使用COMMIT提交事務或者使用ROLLBACK回滾事務,而DDL和DCL是自動提交事務的。)
事務的控制命令:
提交事務(COMMIT):通過COMMIT語句可以提交事務,當執行了COMMIT語句后,會確認事務的變化、結束事務、刪除保存點、釋放鎖。當使用COMMIT語句結束事務之后,其他會話可以查看到事務變化后的新數據。
回滾事務(ROLLBACK):ROLLBACK只能對未提交的數據撤銷,已經commit的數據時無法撤銷的,因為commit之后已經持久化到數據庫中。
保存點(SAVEPOINT):是事務中的一點,用于取消部分事務,當結束事務時,會自動的刪除該事務所定義的所有保存點。當執行ROLLBACK時,通過指定保存點可以回退到指定的點。(設置保存點:SAVEPOINT a;, 回滾部分事務:ROLLBACK TO a;,回滾全部事務:ROLLBACK;)
什么是數據字典:是Oracle存放有關數據庫信息的地方,其用途是用來描述數據的。數據庫數據字典是一組表和視圖結構。數據字典中的表時不能直接被訪問的,但是可以訪問數據字典中的視圖。
Oracle中常用的數據字典:Oracle中常用的數據字典分為三類,以三種前綴開頭:user*、all、dba_。
user_*:該視圖存儲了關于當前用戶所擁有的對象的信息。(即所有在該用戶模式下的對象)
all*:該視圖存儲了當前用戶能夠訪問的對象的信息。(與user相比,all_并不需要擁有該對象,只需要具有訪問該對象的權限即可。)
dba_*:該視圖存儲了數據庫中所有對象的信息。(前提是當前用戶具有訪問這些數據庫的權限,一般來說必須具有管理員權限。)
數據字典的名稱 | 說明 |
---|---|
user_users | 關于用戶的信息 |
user_tablespaces | 關于表空間的信息 |
user_tables | 關于數據庫表的信息 |
user_views | 關于視圖的信息 |
user_sequences | 關于用戶序列信息 |
user_constraints | 關于用戶表的約束信息 |
user_triggers | 關于用戶的觸發器信息 |
user_source | 關于用戶存儲過程信息 |
查看當前用戶下的用戶信息:SELECT * FROM user_users;
查看用戶有權訪問的所有用戶的基本信息:SELECT * FROM all_users;
查看數據庫所有用戶的用戶信息:SELECT *FROM dba_users;
使用scott用戶無法查看所有用戶的用戶信息:
SQL> SELECT *FROM dba_users; SELECT * FROM dba_users 第 1 行出現錯誤: ORA-00942: 表或視圖不存在 SQL>
使用sys用戶查看所有用戶的用戶信息:
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Oracle數據表如何管理”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。