Oracle数据库 知识点总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“oracle知识点总结”。
1.constraint约束:
alter table [table_name] add constraint [pk_name] primary key(pkname);//添加主键
alter table [table_name] drop constraint [pk_name];//删除主键
alter table [table_name] add constraint [fk_name] foreign key(fkname)references [tablename](fkname);//添加外
键
alter table [table_name] drop constraint [fk_name];//删除外键
2.union 关键字:
A username, B username
rod
bruce
rose
marina
select username from A
union
select username from B
2、几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当
ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来 自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随
EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随
INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
3.复合主键一般不设外键
4.组函数也称为聚合函数。
例如:我们把学生可以分为男生和女生两个组,如果想求每组的人数,平均身高,平均年龄等,就需要用到分组函数了。
在SQL中常用的组函数有以下几个:
COUNT():求出全部的记录数
MAX():求出一组中的最大值
MIN():求出一组中的最小值
AVG():求出一组中的平均值
SUM():求和
范例:COUNT()函数
SELECT COUNT(empno)FROM emp;
我们常用COUNT(*),最好能够用字段代替*
范例:MAX()、MIN()函数,求最大最小值,一般是针对于数值的字段的,求出所有员工的的最高工资,和最底工资和平均工
资。
SELECT MAX(sal)最高工资,MIN(sal)最底工资,AVG(sal)平均工资 FROM emp;
范例:求出部门10的所有员工工资的总合SELECT SUM(sal)工资综合 FROM emp WHERE deptno=10;
如果如下查询输出部门编号和其部门所有员工的工资总和,会产生错误。
SELECT deptno ,SUM(sal)工资综合 FROM emp WHERE deptno=10;
错误: “不是单组分组函数”
发生以上的错误信息,是因为这样的查询需要进行分组统计。
分组统计有其固定的语法格式:
SELECT {DISTINCT} *| 查询列 列别名1,查询列2 列别名2,……
FROM 表名称1 表别名1,表名称2 表别名2,……
{WHERE 条件(s)}
{ORDER BY 排序的字段1,排序的字段2 ASC|DESC}
{GROUP BY 分组字段}
所以老师写的是错的!
5.//从t_student表中删除名字重复的记录的信息
delete from t_student where sid not in(select sid from(select min(sid)sid,sname from t_student group by sname));
// delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)
6.sequence
在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。
(1)
CREATE SEQUENCE seqTest
INCREMENT BY 1--每次加几个
START WITH 1--从1开始计数
NOMAXvalue--不设置最大值
NOCYCLE--一直累加,不循环
CACHE 10;--设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为----NOCACHE(2)
定义好sequence后,你就可以用currVal,nextVal取得值。
CurrVal:返回 sequence的当前值
NextVal:增加sequence的值,然后返回 增加后sequence值
eg:
SELECT Sequence名称.CurrVal FROM DUAL;
select seqtest.currval from dual(3)
在Sql语句中可以使用sequence的地方:
-不包含子查询、snapshot、VIEW的 SELECT 语句
-INSERT语句的子查询中
-INSERT语句的values中
-UPDATE 的 SET中
如在插入语句中
insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入测试');
7.范式:
所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一
列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分
为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式
就是无重复的域。
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作
为实体的唯一标识。第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一
部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一
对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何
一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号
进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被
添加的编号或ID选作主键。
第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门
有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简
介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有
大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传
递依赖于主属性。
创建表及命名规则?表名和列名:必须以字母开头 必须在1–30个字符之间必须只能包含A–Z, a–z, 0–9, _, $, 和# 必须不能和用户定义的其他对象重名 必须不能是Oracle 的保留......
Oracle数据库遇到问题与使用心得总结一、快速得到存储过程运行的结果。 步骤方法:1、在c://temp目录中得到存储过程调用的参数语句,然后复制。2、在PL/SQL中打开Test Window窗......
ORACLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路...今年我们学习了 oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老......
学习Oracle数据库的心得体会对于学习Oracle数据库,应该先要了解Oracle的框架。它有物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成),逻辑结构......
2014-2015学年度第一学期ORACLE教学工作总结班级:13高软班数据库技术是计算机科学技术中发展最快的领域之一,也是应用最为广泛的技术之一,它已经成为计算机信息系统与应用的核......