Java相关课程系列笔记之二Oracle学习笔记(共52页).doc
《Java相关课程系列笔记之二Oracle学习笔记(共52页).doc》由会员分享,可在线阅读,更多相关《Java相关课程系列笔记之二Oracle学习笔记(共52页).doc(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上Oracle学习笔记Java相关课程系列笔记之二专心-专注-专业笔记内容说明Oracle数据库、SQL(薛海璐老师主讲,占笔记内容100%); 目 录一、 数据库介绍1.1表是数据库中存储数据的基本单位1.2数据库标准语言结构化查询语言SQL:Structureed Query Language1)数据定义语言DDL:Data Definition Languagecreate table列表结构、alter table修改列、drop table删除列2)数据操作语言DML:Data Manipulation Languageinsert增加一行,某些列插入值、up
2、date修改一行,这一行的某些列、delete删除一行,跟列无关3)事务控制语言TCL:Transaction Conrtol Languagecommit确认,提交(入库)、rollback取消,回滚,撤销4)数据查询语言DQL:Data Query Languageselect语句5)数据控制语言DCL:Data Control Language系统为多用户系统因此有隐私权限问题:grant 授权、revoke回收权限1.3数据库(DB)DATABASE 关系数据库使用关系或二维表存储信息。关系型数据库管理系统(EDBMS):Relationship Database Management
3、 System是一套软件,用于在数据库中存储数据、维护数据、查询数据等。1.4数据库种类Oracle 10g(Oracle)、DB2(IBM)、SQL SERVER(MS)1.5数据库中如何定义表先画列即表头(列名,数据类型及长度,约束);数据类型有字符、数值number、日期date。1.6 create database dbname的含义创建数据库即创建可用空间,创建出一堆数据文件data file1.7安装DBMS职位:DBA 数据库管理员(DataBase Administrator)1.8宏观上是数据-database开发流程:create tabale DML TCL - DQL
4、 select1.9远程登录:telnet IP地址sql developer在linux系统-连接-database在solaris系统1.10 TCP/IP通信协议两台机器上的两个应用程序要通信,必须依赖网络,依赖TCP/IP通信协议。IP:IP协议包中提供要连接机器的IP地址,用于标识机器。TCP:TCP协议包中提供与机器上的哪个具体应用程序通信,通过端口号实现,oracle数据库服务缺省端口为1521,用于标识Oracle此数据库应用。1.11数据库建连接必须提供以下信息ip地址(确认机器)、port号(确认进程(程序)确认Oracle)SID:一个端口可以为多个oracle数据库提供
5、监听,因此还需要提供具体的数据库名。(确认数据库里的哪个数据库)username、password:要想访问数据库,必须是该数据库上一个有效的用户。(确认身份)1.12一台机器可跑几个数据库,主要受内存大小影响1.13源表和结果集源表:被查询的表结果集:select语句的查询结果1.14几个简单命令show user:查看当前用户desc 表名:查看表结构drop table 表名 purge;删除表,Oracle中删除表不是真正的删除,而是占空间的移动到别的地方,因为为了不占空间,真正的删除需要用purge。delete from 表名:删除表中所有值;若加上where 列名=value则删
6、除某列中的值1.15 tarena给jsd1304授权connect tarena/tarenagrant select on account to jsd1304;grant select on service to jsd1304;grant select on cost to jsd1304;jsd1304 select tarena的表connect jsd1304/jsd1304create synonym 创建同义词create synonym account for tarena.account;create synonym service for tarena.service;
7、create synonym cost for tarena.cost;1.16课程中使用的5个表二、 select from语句2.1 select语句功能1)投影操作:结果集是源表中的部分“列”2)选择操作:结果集是源表中的部分“行”3)选择操作+投影操作:结果集是源表中的部分“行”部分“列”4)连接操作join:多表查询,结果集来自多张表,把多张的记录按一定条件组合起来2.2 select语句基本语法1)select colname(列名)from tabname(表名)2)select中指定多个列名,则用“逗号”分隔:select colname1,colname2 from tabn
8、ame3)* 号表示所有列:select *from tabname4)select语句:可有多个子句5)select子句:投影操作(列名)、列表达式、函数 、from子句等2.3列别名1)给列起一个别名,能够改变一个列、表达式的标识。2)不写的话默认都是转成大写。3)适合计算字段。4)在原名和别名之间可以使用as关键字。5)别名中包含空格、特数字符或希望大小写敏感的,用“”双引号将其括起来。2.4算术表达式在number类型上使用算术表达式(加减乘除)。eg:一个月使用了250小时,每种资费标准下应缴纳的费用(首次实现)select base_cost + (250 - base_durat
9、ion)*unit_cost fee from cost;2.5空值null的处理未知的,没写数1)空值不等于02)空值不等于空格3)在算术表达式中包含空值导致结果为空4)在算术表达式中包含空值需要用空值转换函数nvl处理2.6 nvl(p1,p2)函数空值转换函数1)两个参数类型要一致!2)参数的数据类型可以是数值number、字符character、日期date3)但null转成字符串,null也要用to_char()转化。4)实现过程: if p1 is null then return p2 elase return p1 end if5)实现空值转换:null非null值 0eg:一
10、个月使用了250小时,每种资费标准下应缴纳的费用(再次实现)select nvl(base_cost,0) + (250 - nvl(base_duration,0) * nvl(unit_cost,0) fee from cost;2.7拼接运算符 |表达字符(串)的拼接,可以将某几列或某列与字符串拼接在一起。select colname1|colname2 from tabname2.8文字字符串select语句后面可以包含的文字值:字符、表达式、数字。1)字符常量(或字符串)必须用单引号括起来,作为“定界符”使用。2)表达单引号本身,需要两个单引号 1,4定界2,3表单引号。3)对于文字
11、值每行输出一次。eg:显示客户姓名的身份证号是select real_name | | s IDCARD NO is | | idcard_no | | . cilent from account;4)函数转换大小写,尽量在进入数据时操作。2.9消除重复行distinct去重复行(对整条记录返回的结果去重,不是对后面的某个列去重),若后面有多列,则所有列联合起来唯一,即每列的值都可以重复,但组合不能重复。eg1:哪些unix服务器提供远程登录业务select distinct unix_host from service;eg2:每一台unix服务器在哪些天开通了远程登录业务select di
12、stinct unix_host,create_date from service;2.10其他注意事项1)调常量时用单行单列的dual表,系统提供的表。2)invalid identifier 无效标识名,列名不。3)table or view does not exist 表名不对。三、 SQL语句的处理过程3.1 SQL语句处理过程用户进程sqlplus建立连接服务进程Server process oracleSID-创建会话-Oracle server3.2处理一条select语句1)分析语句:搜索是否有相同语句用hash value计算select语句是否长得一样:大小写,关键字,空
13、格要都一样,不一样则为两条语句,则服务进程会重新分析。若为统一语句,则直接从内存拿执行计划,计算结果检查语法、表名、权限在分析过程中给对象加锁生成执行计划2)绑定变量:给变量赋值3)执行语句:4)获取数据:将数据返回给用会进程四、 where子句用where子句对表里的记录进行过滤,where子句跟在from子句后面。4.1 where子句后面可以跟什么跟条件表达式:列名、常量、比较运算符(单、多值运算符)、文字值;不能跟组函数!不能跟列别名!u 注意事项:对列不经过运算的条件表达式效率会更高,建议在写where子句时尽量不要对列进行运算。eg:一年的固定费用为70.8元,计算年包在线时长se
14、lect base_duration*12 ann_duration from cost where base_cost*12=70.8; 没下面效率高select base_duration*12 ann_duration from cost where base_cost=70.8/12; 4.2语法和执行顺序语法顺序:select from where执行顺序:from where select4.3字符串是大小写敏感的,在比较时严格区分大小写1)upper():函数将字符串转换成大写。2)lower():函数将字符串转换成小写。3)initcap():函数将字符串转换成首字符大写(是将
15、列中的值大小写转换然后去和等号后的字符串比,而不是把转字符串转换去和列比)。eg:哪些unix服务器上开通了os帐号huangrselect unix_host,os_username from service where os_username = huangr;(有结果)where lower(os_username)=HUANGR;(无结果)where lower(os_username)=huangr;(有结果)where upper(os_username)=HUANGR;(有结果)4.4 where子句后面可以跟多个条件表达式条件表达式之间用and、or连接,也可用()改变顺序。4
16、.5 between and运算符表示一个范围,是闭区间,含义为大于等于并且小于等于。eg:哪些资费的月固定费用在5元到10元之间select base_duration,base_cost,unit_cost from costwhere base_cost = 5 and base_cost = 10;where base_cost between 5 and 10;4.6 in运算符(多值运算符)表示一个集合,是离散值,含义为等于其中任意一个值,等价于any。eg:哪些资费的月固定费用是5.9元,8.5元,10.5元select base_duration,base_cost,unit_
17、cost from costwhere base_cost = 5.9 or base_cost = 8.5 or base_cost = 10.5;where base_cost in(5.9,8.5,10.5); where base_cost =any(5.9,8.5,10.5);4.7 like运算符在字符串比较中,可用like和通配符进行模糊查找。1)通配符:%表示0或多个字符; _表示任意“一个”字符(要占位的)。u 注意事项:若要查找%和_本身,则需要escape进行转移。eg:哪些unix服务器上的os帐号名是以h开头的select os_username from servi
18、ce where os_username like h%eg:哪些unix服务器上的os帐号名是以h_开头的select os_username from service where os_username like h_% escape ;4.8 is null运算符测试null值需要用is null。1) null不能用等于号“”和不等于号“”跟任何值比较,包括它自身。所以不能用“”和“”来测试是否有空值。2) 即:null=null是不成立的;null不等于 null也不成立;null和任何值比较都不成立。eg:列出月固定费用是5.9元,8.5元,10.5元或者没有月固定费。select
19、 base_duration,base_cost,unit_cost from costwhere base_cost in (5.9,8.5,10.5,null);(错误)where base_cost in (5.9,8.5,10.5) or base_cost is null;(正确)4.9比较和逻辑运算符(单值运算符)1)比较运算符:= = all:大于所有的,等价于 (select max()。2)any:大于任意的,等价于 (select min()。4.11运算符的否定形式1)比较运算符:!= =2)SQL比较运算符:not between andnot innot like i
20、s not nullu 注意事项:v in相当于=or =or =or等价于anyv not in等价于 and and and等价于allv not between and 小于下界 or 大于上界v 集合中有null,对in无影响;但对not in有影响,有一个就没有返回值! eg:哪些资费信息的月固定费用不是5.9元,8.5元,10.5元 select base_duration,base_cost,unit_cost from cost where nvl(base_cost,0) 5.9 and nvl(base_cost,0) 8.5 and nvl(base_cost,0) 10
21、.5; where nvl(base_cost,0) not in (5.9,8.5,10.5);五、 order by子句select语句输出的结果安记录在表中的存储顺序显示,order by子句能够改变记录的输出顺序。order by子句对查询出来的结果集进行排序,即对select子句的计算结果排序。5.1语法和执行顺序语法顺序:select from where order by执行顺序:from where select order by5.2升降序ASC升序,可以省略,默认值DESC降序order by nvl(base_cost,0);order by unix_host,crea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 相关 课程 系列 笔记 Oracle 学习 52
限制150内