Java相关课程系列笔记之二Oracle学习笔记.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Java相关课程系列笔记之二Oracle学习笔记.pdf》由会员分享,可在线阅读,更多相关《Java相关课程系列笔记之二Oracle学习笔记.pdf(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 /Oracle 学习笔记 Java 相关课程系列笔记之二 笔记内容说明 Oracle 数据库、SQL(薛海璐老师主讲,占笔记内容 100%);目 录 一、数据库介绍.1 表是数据库中存储数据的基本单位.1 数据库标准语言.1 数据库(DB).1 数据库种类.1 数据库中如何定义表.1 create database dbname 的含义.1 安装 DBMS.1 宏观上是数据-database.1 远程登录:telnet IP 地址.1 TCP/IP 通信协议.2 数据库建连接必须提供以下信息.2 一台机器可跑几个数据库,主要受内存大小影响.2 源表和结果集.2 几个简单命令.2 tarena
2、 给 jsd1304 授权.2 课程中使用的 5 个表.3 二、select from 语句.5 select 语句功能.5 select 语句基本语法.5 列别名.5 算术表达式.5 空值 null 的处理.5 nvl(p1,p2)函数.5 拼接运算符|.6 文字字符串.6 消除重复行.6 其他注意事项.6 三、SQL 语句的处理过程.7 SQL 语句处理过程.7 处理一条 select 语句.7 四、where 子句.8 where 子句后面可以跟什么.8 语法和执行顺序.8 字符串是大小写敏感的,在比较时严格区分大小写.8 where 子句后面可以跟多个条件表达式.8 between a
3、nd 运算符.8 in 运算符(多值运算符).8 like 运算符.9 is null 运算符.9 比较和逻辑运算符(单值运算符).9 多值运算符 all、any.9 运算符的否定形式.9 五、order by 子句.10 语法和执行顺序.10 升降序.10 null 值在排序中显示.10 order by 后面可以跟什么.10 多列排序.10 六、单行函数的使用.11 数值类型.11 日期类型.11 字符类型.13 转换函数.14 其他注意事项.14 七、SQL 语句中的分支.16 分支表达式.16 分支函数.16 八、组函数.17 报表统计常用.17 缺省情况组函数处理什么值.17 当组函
4、数要处理的所有值都为 null 时.17 行级信息和组级信息.17 九、group by 子句.17 语法和执行顺序.17 分组过程.17 常见错误.17 多列分组.17 十、having 子句.17 语法和执行顺序.17 执行过程.17 where 和 having 区别.17 十一、非关联子查询.17 语法.17 子查询的执行过程.17 常见错误.17 子查询与空值.17 多列子查询.17 十二、关联子查询.17 语法.17 执行过程.17 exists.17 exists 执行过程.17 not exists.17 not exists 执行过程.17 in 和 exists 比较.17
5、 十三、多表查询.17 按范式要求设计表结构.17 多表连接的种类.17 交叉连接.17 内连接.17 外连接.17 非等值连接.17 表连接总结.17 十四、集合.17 表连接主要解决的问题.17 集合运算.17 集合运算符.17 子查询、连接、集合总结.17 十五、排名分页问题.17 什么是 rownum.17 where rownumdatabase 开发流程:create tabale DML TCL-DQL select 远程登录:telnet IP 地址 sql developer 在 linux 系统-连接-database 在 solaris 系统 TCP/IP 通信协议 两台
6、机器上的两个应用程序要通信,必须依赖网络,依赖 TCP/IP 通信协议。IP:IP 协议包中提供要连接机器的 IP 地址,用于标识机器。TCP:TCP 协议包中提供与机器上的哪个具体应用程序通信,通过端口号实现,oracle数据库服务缺省端口为 1521,用于标识 Oracle 此数据库应用。数据库建连接必须提供以下信息 ip地址(确认机器)、port 号(确认进程(程序)确认 Oracle)SID:一个端口可以为多个 oracle 数据库提供监听,因此还需要提供具体的数据库名。(确认数据库里的哪个数据库)username、password:要想访问数据库,必须是该数据库上一个有效的用户。(确
7、认身份)一台机器可跑几个数据库,主要受内存大小影响 源表和结果集 源表:被查询的表 结果集:select 语句的查询结果 几个简单命令 show user:查看当前用户 desc 表名:查看表结构 drop table 表名 purge;删除表,Oracle 中删除表不是真正的删除,而是占空间的移动到别的地方,因为为了不占空间,真正的删除需要用 purge。delete from 表名:删除表中所有值;若加上 where 列名=value 则删除某列中的值 tarena 给 jsd1304 授权 connect tarena/tarena grant select on account to
8、jsd1304;grant select on service to jsd1304;grant select on cost to jsd1304;jsd1304 select tarena 的表 connect jsd1304/jsd1304 create synonym 创建同义词 create synonym account for;create synonym service for;create synonym cost for;课程中使用的 5 个表 二、select from 语句 select 语句功能 1)投影操作:结果集是源表中的部分“列”2)选择操作:结果集是源表中的部
9、分“行”3)选择操作+投影操作:结果集是源表中的部分“行”部分“列”4)连接操作 join:多表查询,结果集来自多张表,把多张的记录按一定条件组合起来 select 语句基本语法 1)select colname(列名)from tabname(表名)2)select 中指定多个列名,则用“逗号”分隔:select colname1,colname2 from tabname 3)*号表示所有列:select*from tabname 4)select 语句:可有多个子句 5)select 子句:投影操作(列名)、列表达式、函数、from 子句等 列别名 1)给列起一个别名,能够改变一个列、表
10、达式的标识。2)不写的话默认都是转成大写。3)适合计算字段。4)在原名和别名之间可以使用 as 关键字。5)别名中包含空格、特数字符或希望大小写敏感的,用“”双引号将其括起来。算术表达式 在 number 类型上使用算术表达式(加减乘除)。eg:一个月使用了 250 小时,每种资费标准下应缴纳的费用(首次实现)select base_cost+(250-base_duration)*unit_cost fee from cost;空值 null 的处理 未知的,没写数 1)空值不等于 0 2)空值不等于空格 3)在算术表达式中包含空值导致结果为空 4)在算术表达式中包含空值需要用空值转换函数
11、nvl 处理 nvl(p1,p2)函数 空值转换函数 1)两个参数类型要一致!2)参数的数据类型可以是数值 number、字符 character、日期 date 3)但 null 转成字符串,null 也要用 to_char()转化。4)实现过程:if p1 is null then return p2 elase return p1 end if 5)实现空值转换:null非 null 值 0 eg:一个月使用了 250 小时,每种资费标准下应缴纳的费用(再次实现)select nvl(base_cost,0)+(250-nvl(base_duration,0)*nvl(unit_cost
12、,0)fee from cost;拼接运算符|表达字符(串)的拼接,可以将某几列或某列与字符串拼接在一起。select colname1|colname2 from tabname 文字字符串 select 语句后面可以包含的文字值:字符、表达式、数字。1)字符常量(或字符串)必须用单引号括起来,作为“定界符”使用。2)表达单引号本身,需要两个单引号 1,4 定界 2,3 表单引号。3)对于文字值每行输出一次。eg:显示客户姓名的身份证号是 select real_name|s IDCARD NO is|idcard_no|.cilent from account;4)函数转换大小写,尽量在进
13、入数据时操作。消除重复行 distinct 去重复行(对整条记录返回的结果去重,不是对后面的某个列去重),若后面有多列,则所有列联合起来唯一,即每列的值都可以重复,但组合不能重复。eg1:哪些 unix 服务器提供远程登录业务 select distinct unix_host from service;eg2:每一台 unix 服务器在哪些天开通了远程登录业务 select distinct unix_host,create_date from service;其他注意事项 1)调常量时用单行单列的 dual 表,系统提供的表。2)invalid identifier 无效标识名,列名不。3
14、)table or view does not exist 表名不对。三、SQL 语句的处理过程 SQL 语句处理过程 用户进程 sqlplus建立连接服务进程 Server process oracleSID-创建会话-Oracle server 处理一条 select 语句 1)分析语句:搜索是否有相同语句 用 hash value 计算 select 语句是否长得一样:大小写,关键字,空格要都一样,不一样则为两条语句,则服务进程会重新分析。若为统一语句,则直接从内存拿执行计划,计算结果 检查语法、表名、权限 在分析过程中给对象加锁 生成执行计划 2)绑定变量:给变量赋值 3)执行语句:4
15、)获取数据:将数据返回给用会进程 四、where 子句 用 where 子句对表里的记录进行过滤,where 子句跟在 from 子句后面。where 子句后面可以跟什么 跟条件表达式:列名、常量、比较运算符(单、多值运算符)、文字值;不能跟组函数!不能跟列别名!注意事项:对列不经过运算的条件表达式效率会更高,建议在写 where 子句时尽量不要对列进行运算。eg:一年的固定费用为元,计算年包在线时长 select base_duration*12 ann_duration from cost where base_cost*12=;没下面效率高 select base_duration*12
16、 ann_duration from cost where base_cost=12;语法和执行顺序 语法顺序:select from where 执行顺序:from where select 字符串是大小写敏感的,在比较时严格区分大小写 1)upper():函数将字符串转换成大写。2)lower():函数将字符串转换成小写。3)initcap():函数将字符串转换成首字符大写(是将列中的值大小写转换然后去和等号后的字符串比,而不是把转字符串转换去和列比)。eg:哪些 unix 服务器上开通了 os 帐号 huangr select unix_host,os_username from ser
17、vice where os_username=huangr;(有结果)where lower(os_username)=HUANGR;(无结果)where lower(os_username)=huangr;(有结果)where upper(os_username)=HUANGR;(有结果)where 子句后面可以跟多个条件表达式 条件表达式之间用 and、or 连接,也可用()改变顺序。between and 运算符 表示一个范围,是闭区间,含义为大于等于并且小于等于。eg:哪些资费的月固定费用在 5 元到 10 元之间 select base_duration,base_cost,unit
18、_cost from cost where base_cost=5 and base_cost=10;where base_cost between 5 and 10;in 运算符(多值运算符)表示一个集合,是离散值,含义为等于其中任意一个值,等价于 any。eg:哪些资费的月固定费用是元,元,元 select base_duration,base_cost,unit_cost from cost where base_cost=or base_cost=or base_cost=;where base_cost in,;where base_cost=any,;like 运算符 在字符串比较
19、中,可用 like 和通配符进行模糊查找。1)通配符:%表示 0 或多个字符;_表示任意“一个”字符(要占位的)。注意事项:若要查找%和_本身,则需要 escape 进行转移。eg:哪些 unix 服务器上的 os 帐号名是以 h 开头的 select os_username from service where os_username like h%eg:哪些 unix 服务器上的 os 帐号名是以 h_开头的 select os_username from service where os_username like h_%escape;is null 运算符 测试null 值需要用 is
20、 null。1)null 不能用等于号“”和不等于号“”跟任何值比较,包括它自身。所以不能用“”和“”来测试是否有空值。2)即:null=null 是不成立的;null 不等于 null 也不成立;null 和任何值比较都不成立。eg:列出月固定费用是元,元,元或者没有月固定费。select base_duration,base_cost,unit_cost from cost where base_cost in,null);(错误)where base_cost in,or base_cost is null;(正确)比较和逻辑运算符(单值运算符)1)比较运算符:=all:大于所有的,等价
21、于(select max()。2)any:大于任意的,等价于(select min()。运算符的否定形式 1)比较运算符:!=2)SQL 比较运算符:not between and not in not like is not null 注意事项:in 相当于=or=or=or 等价于 any not in 等价于 and and and 等价于all not between and 小于下界 or 大于上界 集合中有 null,对 in 无影响;但对 not in 有影响,有一个就没有返回值!eg:哪些资费信息的月固定费用不是元,元,元 select base_duration,base_c
22、ost,unit_cost from cost where nvl(base_cost,0)and nvl(base_cost,0)and nvl(base_cost,0);where nvl(base_cost,0)not in,;五、order by 子句 select 语句输出的结果安记录在表中的存储顺序显示,order by 子句能够改变记录的输出顺序。order by 子句对查询出来的结果集进行排序,即对 select 子句的计算结果排序。语法和执行顺序 语法顺序:select from where order by 执行顺序:from where select order by 升
23、降序 ASC升序,可以省略,默认值 DESC降序 order by nvl(base_cost,0);order by unix_host,create_date desc;注意事项:order by 是 select 语句中最后一个子句 null 值在排序中显示 1)被排序的列如果包含 null 值,用 ASC 方式 null 值的在最后;2)用 DESC 方式 null 在最前面;order by 后面可以跟什么 可以跟列名、列别名、列位置(数字)、表达式、函数。order by 1:表示列位置为 1 的列 select 1 from:表示常量 1 eg:按年固定费用从大到小的顺序显示资费
24、信息 方式一:select id,base_cost*12 ann_cost,base_duration ann_duration from cost order by base_cost desc;方式二:select id,base_cost ann_cost,base_duration ann_duration from cost order by base_cost*12 desc;排序的效果和上面是一样的,但前一个效率高。多列排序 order by 子句后面可以跟多列,而 order by 后面的列可以不出现在 select 后面。结果集先按第一列升序排列,若列值一样,再按第二列降序
25、排列。eg:按 unix 服务器 ip 地址升序,开通时间降序显示业务帐号信息 select id,unix_host,os_username,create_date from service order by unix_host,create_date desc;六、单行函数的使用 SQL函数的两种类型:单行函数、多行函数(组函数)。单行函数:数值类型、日期类型、字符类型、转换函数。处理一列数据,返回一个结果。数值类型 1)定义:create table tabname(c1 number,c2 number(6),c3 number(4,3),c4 number(3,-3),c5 numb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 相关 课程 系列 笔记 Oracle 学习
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内