使用者(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