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