这一个星期我们跟着吴老师学习了Orcale数据库的基本知识。
第一天我们学习了怎么样安装并登陆Orcale数据库,学习了关于数据库的基本知识。数据库就是用户存放数据、访问数据、操作数据的存储仓库。 用户的各种数据被存放在数据库中。在需要的时候可以被有权限的用户查询、统计,新的数据可以被添加进去,不需要的数据可以被删除,一些旧的数据可以被修改。所以:数据库就是组织在一起的数据集合。了解数据库的发展,分为手工管理阶段、文件管理阶段、数据管理阶段。数据库一般被分外网状型数据库、层次型数据库和关系型数据库。关系型数据库意思是多个表数据之间存在关系,在这些表上的数据操作依赖于关系,关系用来描述多个表之间的数据依存,包括了一对一、一对多、多对多的关系。
第二天我们将的是简单的SQL语句。
SQL语句分为:1.SELECT查询语句
2.DML语句(数据操作语言)
Insert / Update / Delete / Merge
3.DDL语句(数据定义语言)
Create / Alter / Drop / Truncate
Create / Alter / Drop / Truncate
4.DCL语句(数据控制语言)
Grant / Revoke
Grant / Revoke
5.事务控制语句
Commit / Rollback / Savepoint
Commit / Rollback / Savepoint
在Oracle数据库中SQL语句大小写不敏感,可以单行或多行书写,但是关键字不能跨多行或缩写。常用数据类型为char(n) 定长字符串,varchar2(n) 变长字符串,varchar(20) 定长字符串,number(m,p) 数字类型,number(m) 数字类型,date 日期类型。还有算术表达式,空值的使用,字段别名,去除重复行,WHERE后的运算符。
还有SQL种的函数。函数是用于执行数据处理和复杂运算的。通过对一组数据进行一系列的运算,得到一个最终的需要输出的结果。函数通常都会有一个或多个输入,被称作函数的参数。在函数的内部对输入的参数进行逻辑计算,最终会得到一个或多个值,但是只有一个值作为函数的计算结果返回给客户。
根据函数对多行输入数据的处理方式,函数分为单行函数和多行函数。
1.单行函数:每行作为一个输入参数,经过函数的计算得到每行的计算结果。单行函数执行的操作影响表中每一行的显示效果。
2.多行函数多多行输入值进行计算,得到多行对应的一个结果。
单行函数可以分为字符函数、数字函数、日期函数、转换函数和其它函数。
常用的多行函数(分组函数)有AVG,COUNT,MAX,MIN,SUM。利用GROUP BY 对数据进行分组。
第三天我们学习的多表连接和子查询。
多表连接就是使用单个SELECT语句从多个表中取出相关的数据。通过多表之间的关系,构建相关数据的查询。多表查询也叫做多表联合查询,数据来源于多个表,通过多个表之间的关系确定取出的行数据。多表连接通常是将来在存在相互关系的父子表上。
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column1 = table2.column2;
等值连接是连接操作中最常见的一种。通常是在存在主外键约束条件的多表上建立的。连接条件中的两个字段是通过等号建立的等值关系。
非等值连接与等值连接相反,使用非等号(=)进行连接。连接的关系可能是大于,小于,不等于或其他非等于的关系。非等值连接的操作符可以是:>,<,<>,>=,<=,也可以是BETWEEN…AND,或者IN,LIKE。
使用非等值连接查询可以查询两个表中有非等值的相关关系的数据。
外连接类似于等值连接,使用等号作为连接操作符。使用外连接不但可以看到等值的记录,而且也可以看到不满足等值连接条件的记录。
左外连接:WHERE table1.column(+) = table2.column;
右外连接: WHERE table1.column = table2.column(+);
为了给主查询(外部查询)提供数据而首先执行的查询(内部查询)称为子查询。
子查询分为单行单列子查询、多行单列子查询和多列子查询。
插入新数据INSERT。修改已有数据UPDATE。删除不需要的数据DELETE。
INSERT:INSERT INTO TABLE () VALUES ();
UPDATE:UPDATE TABLE SET COLUMN=VALUE WHERE CONDITION;
DELETE:DELETE[FROM] TABLE WHERE CONDITION;
第四天我们讲数据库的主要对象。
数据库的主要对象有:表、约束、视图、索引和同义词。
命名规范:1.必须以字母开头
2.可包括数字(0-9),字母(a~z)和三个特殊字符(# _ $)
3.不要使用oracle的保留字
4.同一用户下的对象不能同名,即使是不同的对象类型
CREATE TABLE创建表格,ALTER TABLE修改表格内字段(在不影响表内数据的情况下)。
约束:
PL/SQL块的语法规则:
IF THEN语句
数据库异常分为:预定义异常(Oracle中已经预先定义好名称的异常)、非预定义异常(在数据库中没有定义异常名称的异常)和用户自定义异常(人为定义的异常)。
匿名块:只使用一次的PL/SQL程序块。
函数和存储过程:
约束是在表上强制执行的数据校验规则,被插入,修改或删除的数据必须符合相关字段上设置的这些检验条件,也就是约束条件.
约束分为:非空约束、唯一性约束、主键约束、外键约束和CHECK约束。
索引:在 Oracle数据库中用来加速对表的查询。
视图:视图也就是虚表,实际上是一个命名的查询,用于改变数据的显示形式,简化查询.访问视图与表的访问方式一样。
第五天我们讲的PL/SQL。
PL/SQL的基本结构为:
声明部分:DECLARE – 可选部分
–变量、常量、游标、用户定义异常声明
执行体开始部分:BEGIN – 必要部分
–SQL语句
–PL/SQL语句
异常处理部分:EXCEPTION – 可选部分
–程序出现异常时,捕捉异常并处理异常
执行体结束:END; – 必要部分
1.语句可以写在多行,就象SQL语句一样
2.各个关键字,字段名称等,通过空格分隔
3.每条语句必须通过分号结束,包括PL/SQL结束部分的END关键字后面也需要加分号
4.标识符的规定:
(1)最多可以包含30个字符
(2)不能包含保留字,若有使用双引号括起来
(3)必须以字母字符开始
(4)不能与数据库的表或者列名称相同
PL/SQL中可以使用数字函数、字符函数、类型转换函数和日期函数,但是不能使用组函数。
第六天我们学习了游标、存储过程、异常处理和函数。
IF condition1 THEN
语句1;
[ELSIF condition2 THEN
语句2; ]
[ELSE
语句3;]
END IF;
游标包括4种
1.%ROWCOUNT 受SQL影响的行数
2.%FOUND Boolean 值,是否还有数据
3.%NOTFOUND Boolean 值,是否已无数据
4.%ISOPEN 游标是否打开
异常处理:
1.异常就是在Oracle数据库中运行时出现的错误,可能是用户设置的一些数据规则的违反(如约束),异常处理就是对这些异常的捕捉和处理。
2.异常在PL/SQL执行过程中很可能出现.在遇到异常时如果不处理,异常就会被传递到调用环境中,并且会中断程序的运行。
捕获异常:EXCEPTION 关键词开始异常处理部分,在异常处理部分包含了一个或多个WHEN子句,在子句中就是被捕获的异常的名称,如果发生异常的名称与WHEN子句中定义的异常相同时,标识异常被捕获到,将进入这个WHEN子句对应的异常处理过程。
存储结构:用于在数据库中完成特定的操作或者任务。
基本规则:
函数:1.在Sql*Plus 中使用CREATE OR REPLACE子句创建存储程序单元。
2.在头部定义所有参数。
3.IS表示PL/SQL块的开始,在IS之后,不需要再使用DECLARE开始声明部分,IS就表示了声明部分的开始。
4.在IS之后,声明在过程中使用的本地变量(包括变量和常量)。
5.在声明完成后,以BEGIN开始程序的执行主体。
1.函数是一种数据库对象,同样也是一个命名的PL/SQL程序块,被存储在数据库中,可以被反复的使用.在调用的时候,可以被作为表达式的一部分。必须要有返回值。
2.函数用来执行复杂的计算,并返回计算的结果。
•函数的好处
–可以实现用简单的SQL语句不能实现的计算
–提高查询的效率
•函数和存储过程使用规则
–1.在SQL语句中只能使用函数,而不是过程
–2.函数中不允许DML语句,在过程中可以使用DML语句
–3.函数的形参可以为为IN,(out,in out)
–4.在函数中必须返回Oracle支持的数据类型,而不是PL/SQL支持的数据类型