1. 程式人生 > >數據庫-1

數據庫-1

oracle

技術分享圖片



數據庫的選擇:

根據項目規模(負載)安全性和成本來決定使用什麽樣的數據庫。

現在的小型數據庫(微軟的access)在20年前都是大型的;

(瑞典AB公司)mysql sql server(微軟的)是中型的;

(美國oracle公司的)oracle是大型的數據庫;

技術分享圖片

oracle對於權限的管理很好。用戶的管理

啟動oracle就是啟動一個oracle實例; 默認的有syustem用戶和sys用戶




ORACLE介紹


兩個主要的用戶,三個重要的角色


oracle的管理包括備份數據,備份計劃,簡庫,視圖,


sys擁有三個人角色的權利

sys:擁有dbasysdbasysoper(系統操作員 角色或權限,是Oracle權限最高的用戶,只能以

sysdbasysoper登錄,不能以normal形式登錄。

System:擁有dbasysdba權限或角色,可以以普通用戶的身份登錄。

?sysdbasysoperDBA區別】


Sysdba用戶: 可以改變字符集、創建刪除數據庫、登錄之後用戶是SYSshutdownstartup

Sysoper:用戶不可改變字符集、不能創、刪數據庫、登陸之後用戶是PUBLIC shutdownstartup

DBA用戶:只有在啟動數據庫後才能執行各種管理工作。




“SYSOPER”權限,即數據庫操作員權限,sysoper主要用來啟動、關閉數據庫,sysoper 登陸後用戶是 public。權限包括:打開數據庫

(STARTUP, ALTER DATABASE OPEN/MOUNT/OPEN),服務器(CREATE SPFILE,etc)






ORACLE的常用命令


查看用戶下所有的表

SQL>select * from user_tables;

技術分享圖片

查看幫助 Help show 或者? show

技術分享圖片


運行命令文件


SQL>START 文件路徑.sql
SQL>@文件路徑

技術分享圖片





oracle中用戶的權限:

創建User時沒有給賦上create session權限,導致使用conn的時候報錯。

或在pl/sql developer裏,創建user時選擇system privileges->create session


conn連接命令 disc[onnect]斷開連接:

技術分享圖片


授權Zyx用戶可以增刪改差t1

SQL> grant all on t1 to zyx;

Grant succeeded

收回zyx用戶對於t1表的修改權限(update)。

SQL> revoke update on t1 from zyx;

Revoke succeeded




技術分享圖片


技術分享圖片



不寫日誌的刪除速度更快:

技術分享圖片


技術分享圖片


技術分享圖片

技術分享圖片


技術分享圖片

技術分享圖片


可以使用all()函數也可以使用max()函數實現


技術分享圖片




















PL/sql的使用:


plsql編程:

PL/SQL也是一種程序語言,叫做過程化SQL語言(Procedural Language/SQL)。PL/SQLOracle數據庫SQL語句的擴展。


結構化查詢語言(Structured Query Language,簡稱SQL)




在windows的終端輸入 sqlplus就可以登錄自帶的oracle管理工具

技術分享圖片

Sql*pls的工具用於存儲過程,觸發器,sql編程

在pl/sql中 選擇my_object

找到table文件夾,裏邊就是當前賬戶的所有表格





PL SQL可以導入導出dmp文件



new ——打開命令窗口

pl/sql中圖形化建表的方式

技術分享圖片

技術分享圖片

查看pl/sql的幫助手冊。

技術分享圖片






oracle的分頁查詢不好理解


一個清晰的查詢語句才能夠明白他的意思;


查詢的時候是分組函數都得需要是分組函數


  • 加兩個rownum之後只有第一個有用。如果想再用一就需要再select一次。


所有的改動就只需改裏面的一個就好了

這可以按照一個公式來查詢,只要套著會用就行。

--分頁查詢一 (這個號理解一些)

  • select * from (select a1.*,rownum rn from (select * from student) a1 where rownum <=5) where rn>=2;

--分頁查詢二 (起別名,查詢結果做新表)

  • select a1.* from (select student.*,rownum rn from student where rownum <=5) a1 where rn >=3;

--分頁查詢三(between實現)

  • select a1.* from (select student.*,rownum rn from student) a1 where rn between 3 and 5;



子表也叫做內嵌視圖。必須對字表起一個別名而且最好不要使用as。

給列取別名的時候可以使用as


dba就要求邏輯清楚



數據庫-1