天天看點

oracle資料庫

使用者(user)是定義在資料庫中的一個名稱,通路資料庫時,要提供合适的使用者名和密碼。

模式(Schema)是使用者所擁有對象的集合。使用者與模式是一一對應的關系,并且二者名稱相同。

在Oracle 資料庫中建立使用者是使用指令create user 由dba使用者來完成;如果要以其他使用者身份建立使用者,必須需要create user 系統權限。

一、建立使用者文法定義:

CREATE USER test IDENTIFIED BY test

DERAULT TABKESPACE users_ts

TEMPORARY TABLESPACE temp_ts

QUOTA 3m ON users_ts;

如上示例:

建立一個資料庫使用者;

賬戶:test

密碼:test

使用的預設表空間:users_ts

使用的臨時表空間:temp_ts

在表空間users_ts 的配額:3m

二、連結到資料庫

為了連結到資料庫必須給予授權(create session)

1,示例:給初始使用者授予會話權限

connect system/manager

grant create session to test

connect test/test

可通過使用test賬戶連接配接上Oracle資料庫

2 示例:給資料庫賬戶授予create table 的權限對資料庫進行初步操作

connect system/manager

grant creat table to test

create table ....

可通過使用test賬戶連接配接上Oracle資料庫,然後建立資料庫表。

3 示例:修改使用者密碼

alter user test(使用者名) identified by test(使用者密碼)

4 示例:解鎖使用者

alter user test(要解鎖的使用者名) account unlock ;

5 示例:修改使用者空間配額

alter user test QUOTA 10m on users_ts;

6 示例:删除資料庫使用者的文法

DROP USER username(使用者名)

注意:如果模式中包含有資料庫對象,則必須帶有CASCADE,否則會顯示錯誤資訊

drop user 使用者名 cascade;

授予系統權限

7 示例:授予系統權限文法

grant 系統權限清單(多個系統權限之間用“,”分隔)to 使用者

grant create session,create table to test;

即:授予建立會話和建立表的權限給test使用者。

回收系統權限

8 示例:回收系統權限文法

Revoke 系統權限清單(多個系統權限之間用“,”分隔)from 使用者

revoke create session,create table from test

即:從test 賬戶收回建立會話和建立表的權限。

9 顯示目前使用者所具有的系統權限

select * from user_sys_privs where grantee='test'

10 顯示目前角色所具有的權限

select * from session_privs;

授予對象權限

1 示例:

grant 權限清單(權限之間用逗号隔開) on 對象 to 賬戶

connect b/b 連結B賬戶

grant select ,insert on tx to A

把B.TX的查詢和添加的權限給A

2 示例:回收對象權限的基本文法

connect b/b 連結B賬戶

revoke select ,insert on TX from A

3 示例:顯示目前使用者所具有的對象權限

select * from user_tab_privs

通過USER_TAB_PRIVS 可以檢視目前使用者所具有的對象權限。

建立角色

示例:建立的角色

CREATE ROLE test_role

給角色授權

示例: 給角色授權

grant create session, create table to test_role;

使用角色給使用者授權

示例:使用角色給使用者授權

GRANT test_role(角色名) TO user_name(使用者名)

示例:删除角色

DROP ROLE test_role

使用user_role_privs 顯示目前使用者具有的角色

示例:

SELECT USERNAME, GRANTED_ROLE FROM USER_ROLE_PRIVS;

三 SQL語句

SQL語句不區分大小寫,即可大寫,也可小寫,或混寫

DEPT表:公司部門表,字段(deptno,dname,loc)

EMP表:公司員工表,字段(empno, ename, job ,mgr, hiredate, sal, comm ,deptno)

DEPT為主表,EMP為從表

1 示例:顯示表結構

desc emp;

2 示例:查詢所有列

selcet * from dept;

3 示例:查詢特定列

select deptno,dname from dept ;

使用算術表達式

示例:查詢年工資

select sal*12 from emp

取消重複的行,用關鍵字distinct

select distinct deptno ,job from emp

where 條件句

select ename, hiredate from emp where to_char(hiredate,'yyyymmdd')<'19810101';

注意:to_char(hiredate,'yyyymmdd')<'19810101'年月日的一種比較

select enma ,sal from emp where sal between 0 and 1000;

注意:在between 後頭指定較小的值,在and 後頭指定較大的值

select ename ,sal from emp where ename like '%s%'

select ename, sal from emp where ename like 'M%';

注意:通配符%和

%是指多個字元通配

_是單個字元比對

在where 字句中使用邏輯操作符(AND ,NOT, OR)

select ename ,sal from emp where comm is not null;

select ename, sal from emp where comm>100 and sal >1000;

ORDER BY 字句

ASC用于升序排序(預設),DESC用于降序,當有多個字句時ORDER BY 字句必須放在最後

select ename, sal from emp order by sal desc ;

insert 增加資料

insert into emp