安裝過程當中工具箱類打開爲空白,沒有任何工具。解決辦法:因爲IE8不支持工具顯示,安裝IE9後顯示正常。html
Git的.ssh文件利用了RSA非對稱加密算法,是利用了數論裏的歐拉定理來完成公鑰和私鑰生成過程。兩個質數相乘容易,因式分解困難,因此很是難破解。java
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.htmlgit
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html算法
查看狀態git status,添加git add ***,提交git commit –m 「message」,檢出git checkout --***.sql
http://www.cnblogs.com/52fhy/p/3973887.html 快速上手數據庫
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 全面express
1) 默認的表空間(USERS和TEMP),表空間其實是儲存的物理結構,能夠經過限額來分配表空間的儲存大小。不要選SYSTEM做爲表空間,由於那是系統儲存的表空間,像電腦的C盤同樣,別的用戶用儲存的東西過多,會致使系統的觸發器和查詢效率下降。數組
2) 概要文件default:主要用來設置用戶登陸時間,登陸限制,密碼錯誤限制等配置。服務器
3) 系統權限:主要是對錶結構、視圖、觸發器等高級操做以下圖:網絡
4) 對象權限:別的用戶所創建指定表格的增刪改查權限。以下圖
5) 角色:系統權限和對象權限的一個集合。能夠將角色授予用戶,被授予角色的用戶會自動擁有角色所具備的權限。若是修改了角色所擁有的權限,則被授予角色的用戶的權限也會隨之自動修改。
建立新表,刪除表,清空表,修改列,改變對象名稱
一組邏輯操做單元,是數據從一種狀態轉變到另一種狀態。
1) 一個或多個DML 語句
2) 一個 DDL(Data Definition Language – 數據定義語言) 語句
3) 一個 DCL(Data Control Language – 數據控制語言) 語句
1) 其餘用戶不能看到當前用戶所作的改變,直到當前用戶結束事務。
2) DML語句所涉及到的行被鎖定, 其餘用戶不能操做。阻塞
3) 執行 DML 操做的用戶能夠經過 SELECT 語句查詢以前的修正
1) 數據的改變已經被保存到數據庫中。改變前的數據已經丟失。全部用戶能夠看到結果。
2) 鎖被釋放,其餘用戶能夠操做涉及到的數據。
3) 全部保存點被釋放
1) 數據改變被取消。修改前的數據狀態被恢復。鎖被釋放
約束CONSTRAINT:表的強制規定。能夠在表級(做用多或一列)、列級(做用一列)定義約束。
1) NOT NULL 非空
2) UNIQUE 惟一
3) PRIMARY KEY 主鍵 primary key (col)
4) FOREIGN KEY 外鍵 foreign key (col) references tableName (col2)
5) CHECK 檢查 check (col > ***)
存儲起來的 SELECT 語句
1) 控制數據訪問
2) 簡化查詢(不用去連表查詢,視圖已經連表完成)
3) 避免重複訪問相同的數據
select * from (
Select rownum rn , A.* from ( //rn從新編號
Select * from tableName //全部數據
) where rownum < 40 //最大範圍
) where rn > 10; //最小範圍
好比:
select * from(
select rownum rn, A.* from( select last_name, salary from employees order by salary desc ) A
where rownum < 5
) where rn > 2
序列SQUENCE:可供多個用戶用來產生惟一數值的數據庫對象。
1) 自動提供惟一的數值,共享對象
2) 主要用於提供主鍵值
3) 將序列值裝入內存能夠提升訪問效率
1) 回滾
2) 系統異常
3) 多個表同時使用同一序列
1) 一種獨立於表的模式對象,能夠存儲在與表不一樣的磁盤或表空間中
2) 索引被刪除或損壞, 不會對錶產生影響,其影響的只是查詢的速度
3) 索引一旦創建,Oracle 管理系統會對其進行自動維護,並且由 Oracle 管理系統決定什麼時候使用索引。用戶不用在查詢語句中指定使用哪一個索引
4) 在刪除一個表時,全部基於該表的索引會自動被刪除
5) 經過指針加速 Oracle 服務器的查詢速度
6) 經過快速定位數據的方法,減小磁盤 I/O
1) 列中數據值分佈範圍很廣
2) 列常常在 WHERE 子句或鏈接條件中出現
3) 表常常被訪問並且數據量很大 ,訪問的數據大概佔數據總量的2%到4%
1) 方便訪問其它用戶的對象
2) 縮短對象名字的長度
3) 建立同義詞CREATE SYNONYM e FOR employees;使用同義詞select * from e;
用system來登陸,具備DBA權限,能夠建立用戶。
1.建立用戶
CREATE USER user IDENTIFIED BY password;
2.用戶系統權限
GRANT privilege [, privilege...] TO user [, user| role, PUBLIC...];
1) 權限列表
CREATE SESSION(建立會話)登陸
CREATE TABLE(建立表)
CREATE SEQUENCE(建立序列)
CREATE VIEW(建立視圖)
CREATE PROCEDURE(建立過程)
3. 建立用戶表空間。
用戶擁有create table權限以外,還須要分配相應的表空間纔可開闢存儲空間用於建立的表
ALTER USER atguigu01 QUOTA UNLIMITED ON users
4.建立角色並賦予權限
建立角色:CREATE ROLE manager;
賦予系統權限:GRANT create table, create view TO manager;
將角色賦予用戶:GRANT manager TO DEHAAN, KOCHHAR;
5.修改密碼
ALTER USER scott IDENTIFIED BY lion;
6.對象權限
不一樣的對象具備不一樣的對象權限
對象的擁有者擁有全部權限
對象的擁有者能夠向外分配權限,經過對象擁有這才能夠進行分配。
GRANT object_priv [(columns)]
ON object
TO {user|role|PUBLIC}//public向數據庫中全部用戶分配權限
[WITH GRANT OPTION]; //使用戶一樣具備分配權限的權利
列子:
GRANT select
ON employees
TO sue, rich;
Grant succeeded.
收回對象權限:
REVOKE {privilege [, privilege...]|ALL}
ON object
FROM {user[, user...]|role|PUBLIC}
[CASCADE CONSTRAINTS];
將多個查詢用 SET 操做符鏈接組成一個新的查詢
UNION/UNION ALL 去重/不去重
INTERSECT 交集
MINUS 差集
好比:注意,列要一一對應。
SELECT employee_id, job_id
FROM employees
UNION
SELECT employee_id, job_id
FROM job_history;
待補充。週末學習。
PL/SQL是一種高級數據庫程序設計語言,該語言專門用於在各類環境下對ORACLE 數據庫進行訪問。因爲該語言 集成於數據庫服務器中, 因此PL/SQL 代碼能夠對數據進行快速高效的處理。
PL/SQL由三個塊組成:聲明、執行、異常。塊結構以下:
DECLARE
/* 聲明部分 : 在此聲明 PL/SQL 用到的變量 , 類型及遊標,以及局部的存儲過程和函數 */
BEGIN
/* 執行部分 : 過程及 SQL 語句 , 即程序的主要部分 */
EXCEPTION
/* 執行異常部分 : 錯誤處理 */
END;
其中 執行部分是必須的。
Plsql Dev中須要設置set serveroutput on;不然看不到程序輸出結果。
PLSQL塊主要有三類:
1)無名塊,動態構造,只執行一次。2)子程序,存儲在數據庫中的存儲過程、函數和包。當數據庫創建好後,能夠在其它程序中調用它們。3)觸發器,當數據庫發生一些操做時,會自動調用它們。
B/S架構中,瓶頸是網絡IO,進行大量的數據交換會下降傳輸效率。利用PLSQL將數據處理放在服務器中進行,會省去了數據在網絡中交換的時間。
PLSQL也能夠嵌套在客戶端工具中,方便使用。
1)%type獲取已定義的某個已經變量類型相同,或者與數據表中某個列的數據類型相同。至關於一個java類的某一個字段。
declare
type test_resc is record(
l_name employees.last_name%type,
d_id employees.department_id%type);
v_emp test_resc;
2)%rowtype獲取對應表的全部列的類型。至關於一個java類。
declare
v_emp employees%rowtype;
begin
select * into v_emp from employees where employee_id = 200;
dbms_output.put_line(v_emp.last_name);
end;
條件判斷(兩種)
1)if … then … elsif …. Then … Else …. End if; 注意是elsif不是else if
2)case selector when expression1 then result1 when expression2 then result2 else result end;
循環三種
1)Loop 要執行的語句; exit when 條件語句 //知足條件退出 end loop;
2)while 布爾表達式 loop 要執行的語句; end loop;
3)for 循環計數器 in [reverse] 下限… 上限 loop 要執行的語句; end loop;
Reverse 循環會自動減1,不然默認自動加1,所以循環變量必須是整數。
declare
type dep_table_type is table of employees%rowtype; //定義一個儲存employee表的數組類型。
my_dep_table dep_table_type := dep_table_type(); //初始化
begin
my_dep_table.extend(5); //容量爲5
for i in 1 .. 5 loop //開始循環
select * into my_dep_table(i) //每次記錄在第i箇中
from employees
where employee_id = 100;
end loop;
dbms_output.put_line(my_dep_table(1).employee_id); //輸出
end;
標號和goto
<<label>>標號 goto label
相似於java中的Iterator。迭代器。對於處理多行記錄的事務常用遊標來實現。
遊標是一個指向上下文的句柄(handle)或指針。
1)定義遊標:定義一個遊標名,以及對應的SELECT語句。
CURSOR cursor_name[(parameter[, parameter]…)] is select_statement;
定義的遊標中不能有INTO語句
2)打開遊標:就是執行對應的SELECT語句,而且把結果放入工做區,指針指向工做區的首部。
OPEN cursor_name[([parameter => ] value[, [parameter =>] value]…)]
不能重複打開一個遊標
3)提取遊標數據
檢索結果集合中的數據行,放入指定輸出變量中。
FETCH cursor_name INTO {variable_list | record_variable}
對該記錄進行處理;繼續處理直到活動集合中沒有記錄。
4)關閉遊標
釋放系統資源。關閉後能夠從新open打開。
CLOSE cursor_name;
declare
--定義遊標
cursor c_cursor is select last_name, salary
from employees
where rownum < 11
order by salary;
v_name employees.last_name%type;
v_sal employees.salary%type;
begin
--打開遊標
open c_cursor;
--提取遊標
fetch c_cursor into v_name, v_sal;
while c_cursor %found loop
dbms_output.put_line(v_name || '---' || v_sal);
fetch c_cursor into v_name, v_sal;
end loop;
--關閉遊標
close c_cursor;
end;
遊標屬性:
%found 布爾屬性,當最近一次讀取記錄成功是返回,值爲TRUE;
%notfound 與found相反
%isopen 布爾屬性,當遊標打開返回TRUE;
%rowcount 數字屬性,返回已從遊標中讀取的記錄數。
遊標for循環語句,能夠省略打開、提取、關閉功能。Where current of cursor_name
三種方式。Java中只有兩種,try … catch 和 throws。
三種類型的異常錯誤:1)預約義錯誤 2)非預約義錯誤3)用戶定義錯誤。
EXCEPTION
WHEN first_exception THEN handler
WHEN second_exception THEN handler
WHEN OTHERS THEN handler
1)預約義錯誤:
ORA-1403 No_data_found SELECT INTO 沒有找到數據
ORA-1422 Too_many_rows SELECT INTO 返回多行
2)非預約義異常處理
定義異常狀況 <異常狀況> EXCEPTION;
將定義好的異常狀況與標準ORACLE錯誤聯繫起來
PRAGMA EXCEPTION_INIT(<異常狀況>,<錯誤代碼>);
//錯誤代碼號oracle會報出來,就是沒有命名
在異常處理塊中對異常進行處理
3)用戶自定義異常
定義異常狀況 <異常狀況> EXCEPTION;
RAISE<異常狀況> //拋出異常
在異常處理塊中進行處理
SQLCODE返回錯誤代碼數字
SQLERRM返回錯誤信息
例如dbms_output.put_line(SQLCODE||’---‘||SQLERRM);
都是函數。存儲函數funciton有返回值,存儲過程procedure沒有返回值return,可是能夠有OUT返回參數。
1)建立函數
創建內嵌函數
CREAT [OR REPLACE] FUNCTION function_name
[(argment [{ IN | IN OUT}] Type,
Argment [{IN | OUT | IN OUT}] Type )] //參數列表
[ AUTHID DEFINER | CURRENT_USER] //定義者權限和調用者權限
RETURN retrun_type
{IS | AS}//聲明函數使用過程當中所須要的變量,相似於declare
<類型,變量的類型>
BEGIN
FUNCTION_body
EXCETPION
其它語句
END;
注意:IN參數標記表示傳遞給函數的值在函數執行中不改變;(默認)只有一個返回值
OUT表示一個值在函數進行計算並經過該參數傳遞給調用語句;//具備多個返回值
IN OUT表示函數的值能夠變化傳遞給調用語句
由於函數須要一個返回值,因此RETURN包含返回結果的數據類型。
--返回給定部門的工資總和、該部門員工總數(定義爲OUT類型的參數)
create or replace function get_salary(
dept_id number,
emp_count out number)
return number
is
--函數使用過程當中,須要聲明的變量和記錄類型、遊標
v_sum number(10) := 0;
cursor salary_cursor is select salary from employees
where department_id = dept_id;
begin
--函數執行體
emp_count := 0;
for c in salary_cursor loop
v_sum := v_sum + c.salary;
emp_count := emp_count + 1;
end loop;
return v_sum;
exception
--異常的處理
when no_data_found then
dbms_output.put_line('您須要的數據不存在');
when others then
dbms_output.put_line(sqlcode || ':' || sqlerrm);
end;
調用,一共有兩個返回值,一個是函數執行結果,一個是v_num OUT參數。
declare
v_num number(5) := 0;
begin
dbms_output.put_line(get_salary(80, v_num));//v_num返回值,返回員工總數
dbms_output.put_line(v_num);
end;
相似於JavaScript事件函數。觸發器在數據庫裏以獨立的對象存儲,不能接收參數。
1)觸發器分類
DML觸發器。能夠在DML操做先後觸發。
替代觸發器。因爲不能直接對兩個以上表所創建的視圖進行操做,因此有替代觸發器。
系統觸發器。系統事件,好比數據庫啓動與關閉。
2)觸發器組成
觸發器事件。任何狀況下觸發tigger
觸發器時間。是事件前仍是事件後。
觸發器自己。觸發器handler。
觸發頻率。執行次數。
3)建立觸發器
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER}
{INSERT | DELETE | UPDATE [OF column, [column …]]} //注意沒有查找!select
ON [schema.] table_name
[FOR EACH ROW] //說明爲 行觸發器。
[WHEN condition] //觸發條件
Tigger_body;
行觸發器是在DML進行多行操做時,會對每一行都進行觸發判斷。
語句觸發器是將整個語句操做做爲觸發事件。
4)觸發器執行次序
1.執行 BEFORE 語句級觸發器;
2. 對與受語句影響的每一行:
執行 BEFORE 行級觸發器
執行 DML 語句
執行 AFTER 行級觸發器
3. 執行 AFTER 語句級觸發器
觸發器不能有數據庫事務控制。
create or replace trigger del_emp_trigger
before delete on emp for each row
begin
insert into emp_history
values(:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,:old.comm,:old.deptno);
end;