尚学堂oracle学习笔记
- 格式:doc
- 大小:706.50 KB
- 文档页数:9
Oracle学习笔记Java相关课程系列笔记之二目录一、数据库介绍 (1)1.1表是数据库中存储数据的基本单位 (1)1.2数据库标准语言 (1)1.3数据库(DB) (1)1.4数据库种类 (1)1.5数据库中如何定义表 (1)1.6 create database dbname的含义 (1)1.7安装DBMS (1)1.8宏观上是数据-->database (1)1.9远程登录:telnet IP地址 (1)1.10 TCP/IP通信协议 (2)1.11数据库建连接必须提供以下信息 (2)1.12一台机器可跑几个数据库,主要受内存大小影响 (2)1.13源表和结果集 (2)1.14几个简单命令 (2)1.15 tarena给jsd1304授权 (2)1.16课程中使用的5个表 (3)二、select from语句 (5)2.1 select语句功能 (5)2.2 select语句基本语法 (5)2.3列别名 (5)2.4算术表达式 (5)2.5空值null的处理 (5)2.6 nvl(p1,p2)函数 (5)2.7拼接运算符|| (6)2.8文字字符串 (6)2.9消除重复行 (6)2.10其他注意事项 (6)三、SQL语句的处理过程 (7)3.1 SQL语句处理过程 (7)3.2处理一条select语句 (7)四、where子句 (8)4.1 where子句后面可以跟什么 (8)4.2语法和执行顺序 (8)4.3字符串是大小写敏感的,在比较时严格区分大小写 (8)4.4 where子句后面可以跟多个条件表达式 (8)4.5 between and运算符 (8)4.6 in运算符(多值运算符) (8)4.7 like运算符 (9)4.8 is null运算符 (9)4.9比较和逻辑运算符(单值运算符) (9)4.10多值运算符all、any (9)14.11运算符的否定形式 (9)五、order by子句 (10)5.1语法和执行顺序 (10)5.2升降序 (10)5.3 null值在排序中显示 (10)5.4 order by后面可以跟什么 (10)5.5多列排序 (10)六、单行函数的使用 (11)6.1数值类型 (11)6.2日期类型 (11)6.3字符类型 (13)6.4转换函数 (14)6.5其他注意事项 (14)七、SQL语句中的分支 (15)7.1分支表达式 (15)7.2分支函数 (15)八、组函数 (16)8.1报表统计常用 (16)8.2缺省情况组函数处理什么值 (16)8.3当组函数要处理的所有值都为null时 (16)8.4行级信息和组级信息 (16)九、group by子句 (17)9.1语法和执行顺序 (17)9.2分组过程 (17)9.3常见错误 (17)9.4多列分组 (17)十、having子句 (18)10.1语法和执行顺序 (18)10.2执行过程 (18)10.3 where和having区别 (18)十一、非关联子查询 (19)11.1语法 (19)11.2子查询的执行过程 (19)11.3常见错误 (19)11.4子查询与空值 (19)11.5多列子查询 (20)十二、关联子查询 (21)12.1语法 (21)12.2执行过程 (21)12.3 exists (21)12.4 exists执行过程 (21)12.5 not exists (22)12.6 not exists执行过程 (22)12.7 in和exists比较 (22)2十三、多表查询 (23)13.1按范式要求设计表结构 (23)13.2多表连接的种类 (23)13.3交叉连接 (23)13.4内连接 (23)13.5外连接 (25)13.6非等值连接 (27)13.7表连接总结 (27)十四、集合 (28)14.1表连接主要解决的问题 (28)14.2集合运算 (28)14.3集合运算符 (28)14.4子查询、连接、集合总结 (29)十五、排名分页问题 (30)15.1什么是rownum (30)15.2 where rownum<=5的执行过程 (30)15.3 where rownum=5的执行过程 (30)十六、约束constraint (31)16.1约束的类型 (31)16.2 primary key:主键约束 (31)16.3 not null:非空约束 (31)16.4 unique key:唯一建约束 (31)16.5 references foreign key:外键约束 (32)16.6 check:检查约束 (34)十七、事务 (35)17.1 transaction (35)17.2定义 (35)17.3事务的特性:ACID (35)17.4事务的隔离级别 (35)17.5数据库开发的关键挑战 (35)17.6锁的概念 (36)17.7 Oracle的锁机制 (36)17.8事务不提交的后果 (36)17.9回滚事务rollback (36)17.10保留点savepoint (36)十八、数据库对象:视图view (37)18.1带子查询的create table (37)18.2带子查询的insert (37)18.3定义缺省值:default (37)18.4 视图view (38)18.5视图的应用场景 (38)18.6视图的分类 (39)18.7视图的维护 (39)十九、数据库对象:索引index (41)319.1创建index (41)19.2扫描表的方式 (41)19.3索引的结构 (41)19.4为什么要使用索引 (42)19.5哪些列适合建索引 (42)19.6索引的类型 (42)19.7哪些写法会导致索引用不了 (43)二十、数据库对象:序列号sequence (44)20.1什么是sequence (44)20.2创建sequence (44)20.3缺省是nocycle(不循环) (44)20.4缺省cache 20 (44)二十一、其他注意事项 (46)21.1删除表,删除列,删除列中的值 (46)21.2多对多关系的实现 (46)21.3一对多(两张表) (46)21.4一对一 (46)21.5数据库对象 (46)12.6缺省(默认)总结: (46)4一、数据库介绍1.1表是数据库中存储数据的基本单位1.2数据库标准语言结构化查询语言SQL:Structureed Query Language1)数据定义语言DDL:Data Definition Languagecreate table列表结构、alter table修改列、drop table删除列2)数据操作语言DML:Data Manipulation Languageinsert增加一行,某些列插入值、update修改一行,这一行的某些列、delete删除一行,跟列无关3)事务控制语言TCL:Transaction Conrtol Languagecommit确认,提交(入库)、rollback取消,回滚,撤销4)数据查询语言DQL:Data Query Languageselect语句5)数据控制语言DCL:Data Control Language系统为多用户系统因此有隐私权限问题:grant 授权、revoke回收权限1.3数据库(DB)DA TABASE 关系数据库使用关系或二维表存储信息。
oracle 笔记摘要:一、Oracle 简介1.Oracle 的发展历程2.Oracle 的产品和服务二、Oracle 数据库的基本概念1.数据库管理系统2.关系型数据库3.Oracle 数据库的结构三、Oracle 数据库的安装与配置1.安装Oracle 数据库的前提条件2.安装过程及注意事项3.配置Oracle 数据库四、Oracle 数据库的管理1.数据库的启动与关闭2.数据库的备份与恢复3.用户与权限管理五、SQL 语言基础1.SQL 简介2.SELECT 查询语句3.INSERT、UPDATE 和DELETE 操作语句六、PL/SQL 编程1.PL/SQL简介2.存储过程与函数3.触发器与异常处理七、Oracle 数据库的应用1.Oracle 数据库在企业级应用中的优势2.Oracle 数据库在典型行业的应用案例正文:一、Oracle 简介Oracle(甲骨文)公司成立于1977 年,总部位于美国加州,是全球著名的数据库软件及解决方案供应商。
Oracle 的产品和服务涵盖了数据库、应用软件、中间件、云计算等领域,广泛应用于企业、政府、金融、医疗等各个行业。
二、Oracle 数据库的基本概念1.数据库管理系统:数据库管理系统(DBMS)是一种用于存储、检索和管理数据的计算机软件。
它提供了对数据的高效组织、存储、检索、更新和维护功能。
2.关系型数据库:关系型数据库是基于关系模型的数据库,采用表格形式存储数据,并通过SQL(结构化查询语言)进行操作。
Oracle 数据库是一种关系型数据库,具有强大的数据管理功能和高度的数据安全性。
3.Oracle 数据库的结构:Oracle 数据库由物理结构和逻辑结构组成。
物理结构包括数据库文件、数据块、表空间等;逻辑结构包括表、视图、索引等。
三、Oracle 数据库的安装与配置1.安装Oracle 数据库的前提条件:首先,需要确保计算机硬件满足Oracle 数据库的最低要求;其次,需要获取Oracle 数据库的安装文件,这些文件通常可以从Oracle 官网下载。
目录Oracle学习路线 (1)在windows XP之后的版本中安装Oracle10g的注意事项 (2)创建和删除临时表空间 (3)创建数据表空间 (4)3、创建用户并指定表空间 (4)4、给用户授予权限 (4)Oracle学习路线1、sql、pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验)作为oracle的基本功,需要大家对sql和plsql非常的熟悉。
特别是sql 里面的多表连接、子查询、各种新版本的函数,以及plsql里面的所有语法。
建议大家拿出足够的时间来研究这两块。
不要认为这是开发人员的工作,他也是DBA的重要工作,而且对DBA的要求更高,你不但能看懂,还要能够找出问题。
学些这方面知识的要点就是:多练、多思考。
2、Oracle管理(体系结构)(这一块一定要听课,而且是要听“大师”的课、多讨论)这是Oracle的难点,Orcle技术博大精深,主要的难点就集中在这里面。
包括Oracle的存储管理、对象管理、内存和进程、undo管理、初始化参数、数据字典视图、安全、latch和lock、权限和角色、资源调度、闪回、日志原理等。
学习这一块知识的时候,一个重点是:要知道原理和“根”,知道表面的东西没有任何意义。
知道原理以后,通过实验去证明,将原理总结出来。
这一块学习的好还是不好,直接决定了以后的一个备份恢复、优化、排错。
这一块虽然是研究管理,但是更加注重原理和体系结构的分析和解剖。
应该叫做“深入剖析Oracle体系结构”,多深都需要。
在这一部分的学习中,已经学习了很多优化的内容,在学习任何一个知识点的时候,我们都离不开对性能的分析。
3、备份恢复(听听课、看几本书,多做做实验、多讨论)有了第二部分的铺垫,这一章的学习相对有意思,前提是我们对Oracle的日志原理研究得较深,对oracle的内存和进程研究得较深。
策划一个完美和正确的备份计划和实施方案(具体要分析出原理),实施备份;对各种损坏进行恢复(还是要能够够分析出原理);另外可以做一些高难度的恢复实验(还是老话、要能够分析出原理)。
Oracle的学习方法—看书—思考—做笔记—做实验—再思考—做笔记思考和做实验是为了深入的了解这个知识点。
而做笔记的过程,也是理清自己思路的过程。
学习的过程也是从点到线,从线到网,从网到面的过程。
当点变成线的时候,你会有总豁然开朗的感觉。
当网到面的时候,你就是高手了一、Oracle数据库、表空间、用户、数据文件?一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。
用户和表空间没有隶属关系,表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
用户属于数据库实例的,在一个实例下不能同名用户。
但在一oracle服务器,可以创建多个实例,SELECT from DBA_SEGMENTS WHERE TABLESPACE_NAME=?二、语句a)select * from dba_users;--查看系统中的所用户b)alter table test_table move tablespace test_tablespace;--把表空间GSMCC中的表test_table移动到表空间test_tablespace中c)select * from dba_tablespaces;--查看系统中的所有表空间d)alter tablespace test_tablespace rename to GSMCC;-- 把test表_tablespace空间名字改为GSMCCe)create tablespace PDENEW--创建名为PDENEW的表空间datafile'd:/tablespace/pde/PDENEW.dbf'--指定表空间存放位置size300M; --输入表空间的大小f) create user test_user --创建test_user用户indentified by testuser --创建密码default tabalespace PDENEW --在PDENEW表空间下创建test_user用户temporary tablespace temp;--用户test_user的临时表空间为temp g)grant connect to test_user --给test_user用户设置连接数据库权限grant dba to test_user --给test_user用户设置dba数据权限h)drop user PDE02 cascade--删除用户,同时删除其建立的实体i)数据导入imp test_user/testuser@PDE file=d:/file/data.dmp owner=test_user buffer=6000 full=ytest_user/testuser@PDE --用户名/密码@数据库file=d:/file/data.dmp --导入数据库文件的位置j)数据到出exp test_user/testuser@PDE file=d:/file/data.dmp owner=test_user buffer=6000 full=y下一步下一步下一步下一步:Oracle数据库的IP地址下一步下一步点击“更改登录”换成数据库的登录用户和密码,然后点击“确定”下一步并输入本地自己识别的任意名字,如:“GSYD”下一步下一步下一步完成。
关于Oracle的学习笔记,可能包括以下几个重要部分:数据库创建和管理:创建用户和表空间。
以超级管理员的身份登录,创建表空间,创建用户,给用户授权,使用新用户进行查询测试。
数据定义语言(DDL)用于建立、修改、删除数据库对象,包括创建语句(CREATE)、修改语句(ALTER)、删除语句(DROP)。
例如,使用CREATE TABLE创建表,使用ALTER TABLE修改表,使用DROP TABLE删除表等。
数据库查询:数据查询语言(DQL)用于查询所需要的数据。
排序查询结果。
例如,使用SELECT语句查询员工信息,并按升序排序。
排序可使用NULLS FIRST和NULLS LAST来选择空的信息的位置。
字符串拼接。
通过“||”实现字符串的拼接。
例如,查询所有员工姓名并在后面加一个“a”。
当字符串拼接遇到空的时候,空会自动变成一个空字符串。
数据库数据操作:数据操作语言(DML)用于改变数据库数据,包括INSERT、UPDATE、DELETE三条语句。
使用DISTINCT去重。
例如,SELECT DISTINCT name, id FROM A,作用于多列。
数据库高级特性:使用PARTITION BY在保留全部数据的基础上,只对其中某些字段做分组排序。
虚拟表DUAL是一个虚表,虚拟表,是用来构成SELECT的语法规则,Oracle保证DUAL里面永远只有一条记录。
数据库控制和管理:数据控制语言(DCL)用于数据库的控制和管理。
事务控制语言(TCL)用于数据库事务的控制。
以上内容只是Oracle学习笔记的一部分,实际上Oracle数据库系统的学习还包括很多其他的内容,如索引管理、视图、存储过程、触发器等高级数据库对象的管理和使用,以及数据库性能优化、安全性管理等内容。
Oracle经典自学笔记(doc 34页)一.验证Oracle已经安装完成了,首先得确认程序里有这些个选项,有四个选项:Oracle Installation Products、集成管理工具、配置和移植工具(管理员用得比较多)、应用程序开发。
Oracle也可以形成一种层次性的链接(Directory Manager),对于我们来说用得最多是sqlplus,而OLE 是一种面向对象的技术,利用这种技术可开发可重复使用的软件组件(COM),他是微软提出的,在用VB开发时可能要用,对于我们来说不须管。
当启动sqlplus时会提示输入用户名和口令,所谓的sqlplus是Oracle的一个客户端。
Oracle大多数命令都用命令来实现,所以比较难使,就如同unix比windows难使。
口令你输入tiger,建议就用它,因为以后去企业里Oracle 9i就是用的这个口令。
当你看到SQL>命令符时说明已经进入到了Oracle的命令行了。
图形版的sqlplus,命令行的sqlplus,还有一个就是通过网页访问Oracle的服务,启动sqlplus,端口号是5560,URL是它干什么且怎么干。
第四大只用告诉它我要干什么,不用去控制它怎么干,这样的语言学起来当然十分easy。
我们共有四类语句要学:数据操作语言语句[Data manipulation language,DML],会话控制语句[session control statement],数据定义语言语句[Data definition language,DDL]以及事务控制语句[transaction control statement]。
查询语句只有一句话就是select语句,这是最重要的一条语句。
以后只要遇到相应的select 语句一律背过,企业再面试时其他语句一般不会怎么考但这条语句是必考的。
如果考你SQL语句肯定会考这条select语句不是别的。
1、http://127.0.0.1:5560/isqlplus/ 访问自己的或者别人的oracle。
2、isqlplus不用装客户端也行。
3、sqlplus sys/bjsxt as sysdba4、desc emp/dept/salgrade;//显示表结构5、select sysdate from dual;//显示日期6、select a*12 "nihao Y" from dual;//别名中有空格用双引号7、select emname||'aa' from emp;//连接字符8、select 'wo'||'a''a' from emp;两个单引号代表一个一个点印单引号,返回结果为woa'a9、select distict a from dual;10、select name from dual where name is null//空值查找。
11、select name from dual where name like '%a%'//包含a的所有name,like ‘%\%%’包含%的name。
/为转义字符12、自己定义转义字符select name from dual where name like '%$%%' escape'$'//name里包含%的纪录,并定义了$为转义字符。
13、select name from dual order by id desc/asc ;--按降序/升序排列14、select name from dual order by id desc,age asc;--先按id降序排列再按age 升序排列。
15、select lower(name) from dual;--name 都小写16、select substr(name,2,3)from dual;--把name从第二个字母开始截取3个字符。
1. 解开用户----------------------------------------------------------------------------------------- 22. 取得系统当前时间------------------------------------------------------------------------------ 23. 任何含有空值的表达式计算结果都是空值和字符串拼接--------------------------------- 24. distinct:select distinct deptno,job from emp; distinct是指deptno与job组合的唯一 -- 25. 指定转义字符 ----------------------------------------------------------------------------------- 26. order by------------------------------------------------------------------------------------------- 27. lower函数 --------------------------------------------------------------------------------------- 28. subsr函数---------------------------------------------------------------------------------------- 29. chr、ascii函数将编码转换为字符或将字符转换为ASCII码----------------------------- 210. round四舍五入函数 ---------------------------------------------------------------------------- 211. to_char函数将日期或数字串转换为固定的格式 ------------------------------------------- 212. to_date函数将字符串转换为指定的日期格式 ---------------------------------------------- 213. to_number函数---------------------------------------------------------------------------------- 214. group by ------------------------------------------------------------------------------------------ 315. 建表create --------------------------------------------------------------------------------------- 316. 修改表结构alter -------------------------------------------------------------------------------- 317. 查看相关表、视图、字典、约束、索引等-------------------------------------------------- 318. 事务概念----------------------------------------------------------------------------------------- 419. 范式 ---------------------------------------------------------------------------------------------- 420. pl_sql --------------------------------------------------------------------------------------------- 41)需要在控制台打印数据的时候必须先执行:set serveroutput on; -------------------- 4 2)简单例子:---------------------------------------------------------------------------------- 4 3)打印乘法表---------------------------------------------------------------------------------- 5 4)打印星号三角形 ---------------------------------------------------------------------------- 5 5)根据雇员工资分级显示税金。
----------------------------------------------------------- 5 6)使用CASE结构实现职务转换。
---------------------------------------------------------- 5 7)求:12+32+52+...+152的值--------------------------------------------------------- 6 8)输出一个空心三角形。
-------------------------------------------------------------------- 6 9)使用二重循环求1!+2!+...+10!的值。
---------------------------------------------- 7 21. 连表查询操作(员工-部门-薪水) ----------------------------------------------------------- 71)表结构 ----------------------------------------------------------------------------------- 7 2)求部门中那些人的薪水最高 ---------------------------------------------------------- 7 3)求部门平均薪水的等级---------------------------------------------------------------- 7 4)求部门平均的薪水等级---------------------------------------------------------------- 8 5)雇员中有哪些人是经理---------------------------------------------------------------- 8 6)不准用组函数,求薪水最高值 ------------------------------------------------------- 8 7)求平均薪水最高的部门的部门编号-------------------------------------------------- 8 8)求平均薪水最高的部门的部门名称-------------------------------------------------- 8①不建视图 -------------------------------------------------------------------------------- 8②使用视图 -------------------------------------------------------------------------------- 89)求部门经理人中平均薪水最低的部门名称 ----------------------------------------- 9 10)求比普通员工最高薪水还要高的经理人名称 ----------------------------------------- 9 11)求薪水最高的前5名雇员---------------------------------------------------------------- 9 13)比较两个语句的执行效率---------------------------------------------------------------- 91.解开用户alert user username account unlock;2.取得系统当前时间Select sysdate from dual;3.任何含有空值的表达式计算结果都是空值和字符串拼接select enam || ‘abcd’’efg’ from emp;如果字符串中有单引号,中间用两个单引号来表示一个单引号判断一个字段是不是空值,可以用is和is not null 判断4.distinct:select distinct deptno,job from emp; distinct是指deptno与job组合的唯一5.指定转义字符Select ename from emp where ename like ‘%$%%’ escape ‘$’;查找出含有%的name。
\为默认的转义字符6.order byselect ename,sal,deptno from emp order by deptno asc,ename desc;先按deptno升序排序,之后用enam进行排序7.lower函数select lower(eman) from emp; select ename from emp where lower(ename) like ‘_a%’;8.subsr函数select substr(ename,1,3) from emp;从第一个字符开始截取三个字符9.chr、ascii函数将编码转换为字符或将字符转换为ASCII码select chr(65) from dual;select ascii(‘A’)from dual;10.round四舍五入函数select (23.652) from dual; 结果为24;select (23.652,2) from dual;结果为23.65;select (23.652,-1) from dual;结果为20;11.to_char函数将日期或数字串转换为固定的格式select to_char(sal,’$99,999.99999’) from emp;输出格式与传入的格式相同,9的含义是一位数字,如果小数点前面没有到得位不显示,如果9改为0,位数不到得位补0.L为本地货币。