第一週

ArcGIS安裝問題和Git知識

一、ArcGIS10.1安裝問題

安裝過程當中工具箱類打開爲空白,沒有任何工具。解決辦法:因爲IE8不支持工具顯示,安裝IE9後顯示正常。html

 

二、RSA非對稱加密算法

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經常使用操做命令

查看狀態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

ORACLE基礎知識

一、Oracle基礎概念

  1. 只有oracle實例才能訪問oracle數據庫管理系統,在安裝oracle的時候系統是安裝oracle實例,再安裝oracle數據庫。
  2. 配置監聽:經過Net Manager來進行配置。
  3. 企業管理器:oracle11g的企業管理器再也不提供C/S控制,而是經過B/S進行控制。https://localhost:1158/em   打開網址以前須要額外啓動OracleDBConsoleorcl服務。
  4. Oracle用戶、對象管理在企業管理器中進行。建立用戶時,有默認的表空間、概要文件、系統、對象、角色、限額這些經常使用功能。

1)        默認的表空間(USERS和TEMP),表空間其實是儲存的物理結構,能夠經過限額來分配表空間的儲存大小。不要選SYSTEM做爲表空間,由於那是系統儲存的表空間,像電腦的C盤同樣,別的用戶用儲存的東西過多,會致使系統的觸發器和查詢效率下降。數組

2)        概要文件default:主要用來設置用戶登陸時間,登陸限制,密碼錯誤限制等配置。服務器

3)        系統權限:主要是對錶結構、視圖、觸發器等高級操做以下圖:網絡

 

4)        對象權限:別的用戶所創建指定表格的增刪改查權限。以下圖

 

5)        角色:系統權限和對象權限的一個集合。能夠將角色授予用戶,被授予角色的用戶會自動擁有角色所具備的權限。若是修改了角色所擁有的權限,則被授予角色的用戶的權限也會隨之自動修改。

  1. PLSQL Developer打開命令窗口,輸入ed回車能夠打開文本編輯器,保存後能夠輸入/,回車運行。
  2. DML: Data Manipulation Language 數據操縱語言(增刪改查)。DDL:  Data Definition Language 數據定義語言(定義數據表結構、表建立、索引)。DCL:  Data Control Language 數據控制語言(數據訪問,提交回滾、授予權限等)。
  3. desc tableName;顯示錶的列信息。或describe tableName
  4. select *** from tableName; 中能夠進行加減乘除運算。若列中有空值,則運算結果也爲空值。空值不等於0!運算結果爲空不是0;
  5. 起別名,要麼加AS關鍵字,要麼用雙引號。只有在起別名的時候用雙引號!
  6. 鏈接符 ||,相似於java print字符串中的加號。
  7. 單引號表示字符串。
  8. 單行函數,一條記錄產生一個結果,好比日期轉換、大小寫轉換等。多行函數,聚合函數,好比求一個部門多個員工的平均工資,多條記錄產生一個結果。
  9. IF-THEN-ELSE:能夠在Select中進行case表達式判斷。或者用DECODE函數。
  10. 多表鏈接查詢:鏈接N個表至少須要N-1個鏈接條件。
  11. 等值鏈接和非等值鏈接。相等、在一個範圍之間。
  12. 外鏈接和內鏈接。內鏈接不包含不匹配的行,外鏈接返回不匹配的左邊的或者右邊的全部行。
  13. 分組函數。SELECT  col,  function(col) FROM tableName [WHERE condition group by col]. 在SELECT 列表中全部未包含在組函數中的列都應該包含在 GROUP BY 子句中。SELECT   department_id, AVG(salary) FROM  employees GROUP BY department_id  HAVING groupConditon;
  14. 表:基本數據存儲集合,由行和列組成。USER_TABLES
  15. 視圖:從表中抽取邏輯上相關的數據集合。USER_VIEWS
  16. 序列:提供有序的數值。USER_SEQUENCES
  17. 索引:提升查詢效率。 USER_INDEXES  USER_IND_COLUMNS
  18. 同義詞:給對象起別名。USER_CATALOG

二、SQL查詢命令注意點

三、常見數據庫對象

四、表對象操做

建立新表,刪除表,清空表,修改列,改變對象名稱

  1. CREATE TABLE tableName()
  2. DROP  TABLE tableName
  3. TRUNCATE TABLE tableName
  4. ALERT TABLE tableName ADD|MODIFY|(DROUP COLUMN)|(REAME COLUMN)
  5. RENAME objectName TO newName

五、數據庫事務

一組邏輯操做單元,是數據從一種狀態轉變到另一種狀態。

  1. 事務組成

1)        一個或多個DML 語句

2)        一個 DDL(Data Definition Language – 數據定義語言) 語句

3)        一個 DCL(Data Control Language – 數據控制語言) 語句

  1. 數據庫事務以第一個DML語句執行做爲開始,以commit、rollback、DDL語句(自動提交)、用戶回話正常結束、系統異常終止,做爲結束。
  2. SAVEPOINT保存點,能夠回滾至保存點。
  3. 提交或回滾前的數據狀態:

1)        其餘用戶不能看到當前用戶所作的改變,直到當前用戶結束事務。

2)        DML語句所涉及到的行被鎖定, 其餘用戶不能操做。阻塞

3)        執行 DML 操做的用戶能夠經過 SELECT 語句查詢以前的修正

  1. 提交後的數據狀態

1)        數據的改變已經被保存到數據庫中。改變前的數據已經丟失。全部用戶能夠看到結果。

2)        鎖被釋放,其餘用戶能夠操做涉及到的數據。

3)        全部保存點被釋放

  1. 回滾後的數據狀態

1)        數據改變被取消。修改前的數據狀態被恢復。鎖被釋放

六、數據庫約束

約束CONSTRAINT:表的強制規定。能夠在表級(做用多或一列)、列級(做用一列)定義約束。

  1. 約束分爲constraint_type

1)        NOT NULL 非空

2)        UNIQUE  惟一

3)        PRIMARY KEY 主鍵 primary key (col)

4)        FOREIGN KEY 外鍵 foreign key (col) references tableName (col2)

5)        CHECK 檢查 check (col > ***)

  1. 定義方式:列約束必須跟在列的定義後面,表約束不與列一塊兒,而是單獨定義。
  2. 查詢表格的約束。SELECT constraint_name, constraint_type,  search_condition FROM      user_constraints WHERE table_name = 'EMPLOYEES';

七、數據庫視圖

存儲起來的 SELECT 語句

  1. 使用視圖的緣由

1)        控制數據訪問

2)        簡化查詢(不用去連表查詢,視圖已經連表完成)

3)        避免重複訪問相同的數據

  1. 建立或修改視圖:CREATE OR REPLACE VIEW viewName as subquery
  2. ROWNUM僞列,只能使用 < 或 <=,而用 =, >, >= 都將不能返回任何數據。僞列,就至關於Excel中最左邊的行編號。分頁操做:

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. 序列的做用:

1)        自動提供惟一的數值,共享對象

2)        主要用於提供主鍵值

3)        將序列值裝入內存能夠提升訪問效率

  1. 序列在下列狀況下出現裂縫:

1)        回滾

2)        系統異常

3)        多個表同時使用同一序列

九、數據庫索引

  1. 索引的做用:

1)        一種獨立於表的模式對象,能夠存儲在與表不一樣的磁盤或表空間中

2)        索引被刪除或損壞, 不會對錶產生影響,其影響的只是查詢的速度

3)        索引一旦創建,Oracle 管理系統會對其進行自動維護,並且由 Oracle 管理系統決定什麼時候使用索引。用戶不用在查詢語句中指定使用哪一個索引

4)        在刪除一個表時,全部基於該表的索引會自動被刪除

5)        經過指針加速 Oracle 服務器的查詢速度

6)        經過快速定位數據的方法,減小磁盤 I/O

  1. 何時建立索引,表若是常常更新就不要建立索引了

1)        列中數據值分佈範圍很廣

2)        列常常在 WHERE 子句或鏈接條件中出現

3)        表常常被訪問並且數據量很大 ,訪問的數據大概佔數據總量的2%到4%

  1. 注意:索引不須要用,只是說咱們在用name進行查詢的時候,速度會更快。固然查的速度快了,插入的速度就會慢。由於插入數據的同時,還須要維護一個索引。
  2. 同義詞synonom,爲數據對象定義同義詞

十、同義詞

1)        方便訪問其它用戶的對象

2)        縮短對象名字的長度

3)        建立同義詞CREATE SYNONYM e FOR employees;使用同義詞select * from e;

 

ORACLE高級操做

一、Oracle控制用戶權限

用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運算符

將多個查詢用 SET 操做符鏈接組成一個新的查詢

UNION/UNION ALL  去重/不去重

INTERSECT  交集

MINUS  差集

好比:注意,列要一一對應。

SELECT employee_id, job_id

FROM   employees

UNION

SELECT employee_id, job_id

FROM   job_history;

三、高級子查詢

待補充。週末學習。

 

PLSQL知識

一、基本語法

PL/SQL是一種高級數據庫程序設計語言,該語言專門用於在各類環境下對ORACLE 數據庫進行訪問。因爲該語言 集成於數據庫服務器中, 因此PL/SQL 代碼能夠對數據進行快速高效的處理。

PL/SQL由三個塊組成:聲明、執行、異常。塊結構以下:

DECLARE

/*  聲明部分 :  在此聲明 PL/SQL 用到的變量 , 類型及遊標,以及局部的存儲過程和函數 */

BEGIN

/* 執行部分 : 過程及 SQL  語句 ,  即程序的主要部分 */

EXCEPTION

/*  執行異常部分 :  錯誤處理 */

END;

其中 執行部分是必須的。

Plsql Dev中須要設置set serveroutput on;不然看不到程序輸出結果。

PLSQL塊主要有三類:

1)無名塊,動態構造,只執行一次。2)子程序,存儲在數據庫中的存儲過程、函數和包。當數據庫創建好後,能夠在其它程序中調用它們。3)觸發器,當數據庫發生一些操做時,會自動調用它們。

二、PLSQL的好處

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;

相關文章
相關標籤/搜索