第一周

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;

相关文章
相关标签/搜索