Oracle基础知识大全.pdf
《Oracle基础知识大全.pdf》由会员分享,可在线阅读,更多相关《Oracle基础知识大全.pdf(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程目标:1.了解数据库系统在项目开发中的地位2.了解目前主流数据库系统3.熟练掌握查询命令4.熟练掌握数据操作方式5.熟练使用数据库内置函数6.掌握pl/sql程序设计语法结构7.掌握视图8.掌握存储过程9.掌握用户自定义函数10.掌握触发器了解:1.数据库组件:1.1 实施应用集群1.2 Oracle OLAP1.3 数据挖掘1.4 应用程序接口1.5 网络组件1.6 SQL Plus1.7 企业管理器OEM2.几个版本间的差异:2.1 增加了服务器参数文件SPFILE2.2 使用了 OMF免去了手工管理数据库文件的繁琐2.3 支持多种数据库块大小2.4 会话可以自动调整PGA的大小2.5
2、 引入了列表分区课程内容:1.操作数据之前的准备工作:1.1.要保证有一个数据库:1.2.要保证创建一个表空间create tablespace hbjrdatafile E:dbshbjr.dbf size 100M;1.3.要创建一个用户,用户默认的表空间就是你创建的表空间create user hbjridentified by orcldefault tablespace hbjr;授权限:grant dba to hbjr;1.4.用户/密码登录:2.表名/列字段名起名规范:2.1 使用常规字母和数字2.2 长度不要超过302.3 表名/列名不能重复2.4 不能使用oracle的保留
3、字3.数据类型3.1 char:定长,存储单位-字节(bite)3.2 varchar2:变长,存储单位-字节3.3 nchar:定长,存储单位-字符3.4 nvarchar2:变长,存储单位-字符3.5 date:日期类型,7 个字节,存储着-世纪,年,月,日,时,分,秒3.6 timestamp:日期类型,1 1 个字节,存储着-世纪,年,月,日,时,分,秒,毫秒3.7 number:数据类型(数值类型)3.8 clob:大字段类型,适合存储纯文本信息(例如:*.txt文件)3.9 blob:大字段类型,适合存储二进制文件(例如:图3.10 定义数据类型的意义:3.10.1 能够更有效,更
4、直观的描述外部数据信息3.10.2 从程序运行角度来考虑,定义了一种数据类型,实际就是定义了一种存储格式和在此格式上的运算方式,也就是数据结构+算法,通过这种预先定义的机制,计算机可以加快程序运行的速度。4.创建表/修改表珊(J除表(DDL)4.1 创建表:4.1.1 语句格式:create table tableName(colName dataT ype,colName dataT ype);4.1.2 规范:4.1.2.1 列字段至少要有一个4.1.2.2 列字段名称后必须跟着数据类型4.1.2.3 如果有两个及两个以上的字段,那么字段之间用逗号(,)分隔4.1.2.4 列名称不允许重复
5、(在表中不得重复)4.1.2.5 表名称不允许重复(在数据库中不得重复)4.1.3示例:create table test(tid char(10),tname varchar2(20);4.2 删除表:4 2 1语句格式:drop table tableName;4.2.2示例:drop table test;4.3 更改表4.3.1添 加一个列:格式:alter table tableName add columnNamedataT ype;示彳列:alter table student add addrvarchar2(100);4.3.2 删除一个列:格 式:alter table t
6、ableName drop columncolumnName;示例:alter table student drop column addr;4.3.3 添加多个列:格式:alter table tableName add(columnNamel dataT ype,columnName2 dataT ype,colunmName3 dataT ype);示例:alter table student add(addr varchar2(100),age int,dept varchar2(50);4.3.4 删除多个列:格式:alter table tableName drop(columnN
7、ame 1 ,columnName2);示例:alter table student drop(addr,age);4.3.5更 改一个列(更改列的定义-数据类型)格 式:alter table tableName modifycolumnName newDataT ype;示 例:alter table student modify deptvarchar2(100);4.3.6 更改多个列:格式:alter table tableName modify(columnName 1 newDataT ype,columnName2 newDataT ype,colunmName3 newDat
8、aT ype);示例:alter table student modify(stu_no char(20),stu_name varchar2(20),dept varchar2(60);4.3.7更改列名称:格式:alter table tableName rename columnoldColumnName to newColumnName;示例:alter table student rename column deptto sDepartment;注释:alter,drop,create 属于 DDL 语言5.增加/删除/修改:5.1 往表里插入一条数据:5.1.1 插入若干列的值:格
9、 式:insert intotableName(columnName l,columnName2)values(valuel,value2);5.1.2 插入全部列的值:格式:insert into tableNamevalues(有多少个列字段此处就赋值多少个);5.2 从表里删除数据格式:delete from tableName where 一 条件或者:tauncate table table_name 5.3 修改表记录:格式:update tableName set columnName=newValuewhere 一 条 件6.查询:6.1 查询全部数据格式:select*fro
10、m tableName-查询全部学生的信息-示例:select*from student;6.2 查找特定的列(若干列)格式:select columnName from tableName;-查询所有学生的姓名-示例:select stu_name from student;6.3 查找符合条件的部分数据用where表示过滤的条件格式:select*from tableName where 条件-查询所有机电系的学生信息-示例:select*from student where sdepartment=jdx;6.4 列别名格式 1 :columnName alias格式 2:columnN
11、ame as alias格式 3:columnName as alias示例:select stu_no 学号,stu_name 姓名,sde叩rtment系别from studnet;6.5 distinct:消除重复行格式:select distinct columnName from tableName;-查询院里都设置了那些系别-示例:select disctinct sdepartment from studnet;6.6 查询常量:格式:select finalData from tableName;示例:select stu_name,河套大学,from student;6.7
12、使用表达式(算术表达式/关系表达式/逻辑表达式/连接运算符/模糊查询/范围查询)6.7.1 关系表达式:=,=,=,!=-查询所有分数=60的学生的信息:-示例:select*from student where grade=60;6.7.2 范围运算符:between and,in-查询所有分数在60-80这个范围的学生的信息-select*from student where grade between 60 and 80;-查询所有机电系,师范系,艺体系的学生的信息-select*from student where sdepartmentin(jdx,sfx,ytx);6.7.3 模糊
13、查询:like一般和like搭配使用的符号:%,_-查询所有姓zhao的同学的信息-示例:select*from student where stu_name likezhao%;-查询所有姓zhao的并且名字只有一个字的同学的信息-示例:select*from studnet where stu_name likezhao;6.7.4 逻辑表达式:and,or,not-查询所有机电系或者医学院系的学生的信 息 一示 例:select*from student wheresdepartment=jdx or sdepartment=yxy;-查询所有机电系的并且成绩=60的学生的信息一示 例:
14、select*from student wheresdepartment=j dx and grade=60;-查询所有不是艺体系的学生的信息一示 例:select*from student where not(sdepartment=ytx);6.7.5连接运算符:II将若干个字段或者字符串拼接而成一个列-将学生的姓名和成绩拼接然后显示一示例:select stu_name II 的成绩是:II grade成绩信息from studentwhere stu_no=5555;67 6 null:是未分配的,或者未知的,或者不可用的6.7.6.1 如何插入null值:一一将学生的姓名和系别分别置
15、空示 例:insert into studentvalues(123,null,null,0);6.7.6.2 如何查询null值:-查询所有姓名为空的学生的信息示 例:select*from student wherestu_name is null;6.7.6.3 如何修改null值:-将所有姓名为空的学生重命名为 彳 寺 定 一示例:update student set stu_name=待定where stu_name is null;6.7.6.4 如何删除null值:-将所有姓名未知的学生记录删除 示 例:delete from student wherestu_name is n
16、ull;6.7.6.5 null参与运算的结果:a.参与数学运算:结果为nullb.参与关系运算:忽略c.参与逻辑运算:A N DT R U EF A L S EN U L LT R U ET R U EF A L S EN U L LF A L S EF A L S EF A L S EF A L S EN U L LN U L LF A L S EN U L LORT R U EF A L S ENULLT R U ET R U ET R U ET R U EF A L S ET R U EF A L S EN U L LN U L LT R U EN U L LN U L Ld.参与连接
17、运算:为null的字段其值处理为空的字符串e.参与排序,其值最大6.8 order:排序-asc:升序,默认的,desc-降序6.8.1 order b y总是在w here条件之后出现-将所有学生的信息按照分数降序排列-示例:select*from student order by grade desc;6.8.2当 order b y 中出现两个或者两个以上的字段排序是先是按照第一个出现的字段整体排序然后在第一个字段值相同的情况下再按照第二个字段进行排序然后在第一个和第二个字段都相同的情况下再按照第三个字段进行排序.依次类推-查询所有的学生信息,按照分数降序,编号升序的顺序进行排列-示例:
18、select*from student order by grade desc,stu_no asc;6.9 系统函数:6.9.1 系统函数无一例外都是提供某种功能的,例如:nvl6.9.2 几乎总是出现在字段名的前面6.9.3 分类:a.字符函数b.数值函数c.日期函数d.转换函 数 to_char,to_date,to_numbere.通用函数f.分组函数f.l max(),min(),avg(),count(),sum()f2.decode()6.9.4操作日期函数:1.插入系统当前时间:示例:insert into emp(empno,ename,hiredate)values(801
19、0,zhuaoshuai,sysdate);2.插入指定的时间(按oracle数据库默认格式插入)示例:insert into emp(empno,ename,hiredate)values(8O2O,panzhiming,01-2 月-H,);3.插入指定格式的日期:示例:insert into emp(empno,ename,hiredate)values(8030,tudou,to_date(2011/01/01,yyyy/mm/dd);i n s e rt i n t o testl(t2)v a l u e s(to_date(2013-10-1013:13:13 ,y y y y-
20、m m-d d h h 2 4:m i:s s );6.10 group 子句:6.10.1 功能:对数据进行分组-查询各个岗位的职员人数-示例:select job,count(job)from emp groupby(job);=4的所有部门-一示例:select deptno,count(deptno)from empgroup by(deptno)having count(deptno)=4;6.12连接查询:6.12.1 内连接-边表的数据得匹配上,任何一方如果和对方表没有匹配的数据,则会被过滤掉a.等值连接:-查询在 纽约 工作的员工信息:select e.*from emp e,
21、dept dwhere e.deptno=d.deptno and d.loc=NEWYORK-查看员工员工信息及其工作地selectempno,enamez job,sal,comm,e.deptno,dname,locfrom emp e,dept dwhere e.deptno=d.deptno;b.非等值连接:-查询工资级别是3 的员工的信息:select e.*from emp e,salgrade swhere e.sal=s.losal and e.sal sg.losal and e.sal=4 and m=6;6.16 层次查询:select level 层次,empno 编
22、号,ename 姓名,mgr 经理编号from empstart with mgr is nullconnect by mgr=prior empno;select(lpad(,4*(level-l),)II empno II II ename)员工管理层次from empstart with mgr is nullconnect by mgr=prior empno;6.17 top-n:rownum使用时注意select*from empwhere rownum 3order by sal;select*from(select*from emp order by sal)twhere ro
23、wnum=0)and(ggradestart with 10nomaxvaluenocyclenocache8.2.2 使用:和查询表的操作是一样的示例:select seq_stu_sid.nextval from dual;8.2.3 删除:drop sequence seq_stu_sid;8.3 自定义函数:创建,调用,删除8.3.1 用途:就是提供某种功能的8.3.2 创建:示例:create or replace function salaryFun(enoemp.empno%type)return varchar2asbegin代码;end;8.3.3 使用:和系统函数的用法类似
24、示例:select salaryFun(7369)from dual;8.3.4 删除:drop function salaryFun;8.3.5 示例:-创建一个函数create or replace function salaryFun(eno emp.empno%type)return varchar2-声明返回值类型asv_salary number;-声明变量beginselect(nvl(sal,0)+(nvl(comm,0)into v_salary fromemp where empno=eno;return(eno II 的总收入是:II v_salary);end sala
25、ry Fun;-使用自定义函数select salaryFun(7499)from dual;8.4 存储过程:创建,调用,删除8.4.1 用途:提供某种功能的,往往是一次性执行若干条DML语句的8.4.2 创建:create or replace procedure stuinsertasbegin代码段;end;8.4.3 使用:有两种方法可以调用存储过程8.4.4 删除:drop procedure stuinsert;8.4.5 示 例1:无参存储过程 创建一个存储过程,一次性插入100条数 据-1.创建表一create table student(sid char(10),sname
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 基础知识 大全
限制150内