oracle 概念复习,复习Oracle数据库知识(一)——基本概念和sql简单语句

1.oracle的安装和卸载

百度上有很多资料

2.基本概念(以下都只是简单提纲,并不是具体内容)

Oracle服务器(Oracle Database)的基本概念:

定义:是一个数据管理系统(RDBMS),它提供开放的,全面的,近乎完整的信息管理

由Oracle实例和数据库组成

数据库是一个物理概念,当我们安装好oracle后,在我们的安装目录下会有oracle下会有

oradata,里面就存在着我们的创建的数据库文件

实例是逻辑概念,是把我们的数据库文件中的文件读到内存中

引出 集群 的概念,先了解概念

oracle体系结构,引出二次提交

从大到小:实例》表空间》段》区》数据块

集群:

定义:

优点:

失败迁移

负载均衡

3.sql语句

sql语句的注意点:

sql语言大小写不敏感

关键字不能缩写也不能分行

各个子句一般要分开写

要使用缩进,分行 提高语句的可读性(一般的sql都非常非常长)

sqlplus语句:sqlplus是用来执行sql语句的地方(比如dos命令窗口下的sqlplus)

基本查询语句:

当前用户下的表 select * from tab;

tab数据字典(管理员提供的表) desc emp

查询系统参数 select * from v$nls_parameters;

查询所有员工的所有信息 select * from emp;

DISTINCT 去掉重复的记录 select deptno from emp;

concat 连接字符串 select concat('Hello',' World') from dual;

连接符 select 'Hello'||' World' from dual;

注意点:

dual是伪表,由管理员创建,用来操作一些没有和表没有关系的操作

查询的时候尽量使用列名代替* (Oracle 9i之后,可以认为是一样)

过滤和筛选:

查询10号部门员工 select * from emp where deptno=10;

between ..and 在。。。之间

语句: select * from emp where sal between 1000 and 2000;

包含边界,小值在前,大值在后

in: 在集合中

语句: select * from emp where deptno in (10,20);

包含的集合中不能有null值

like 模糊查询 % select * from emp where ename like '%_%';

逻辑运算符 and 和 or

解析顺序从左到右

where condition1 and condition2

where condition1 and condition2 是不一样的,有利于sql优化

where condition1 or condition2 也是同理,尽量把为真的放左边

排序 select * from emp order by sal;

默认为升序,desc为降序

order by后面可以跟多列:作用于后面所有的列

查询中的条件是字符串,为大小写敏感

日期格式敏感

Oracle 9i之前,日期格式为 DD-MON-YY

Oracle 9i之前,日期格式为 DD-MON-RR

可以用select * from v$nls_parameters 查看日期格式

因为v$nls_parameters是一张数据字典表,所以可以修改日期的格式

alter session set NLS_DATE_FORMAT='yyyy-mm-dd';

单行函数:(列举了一些我认为比较常用或者重要或者不熟悉的)

lower()字符串转为小写,upper()字符串转为大些,initcap()字符串首字母大写

ROUND(a,b) ,使a保留小数,如果a为负数,保留到使a四舍五入到倒数-b位

例子:select ROUND(45.926,2) 一,ROUND(45.926,1) 二,0) 三,-1) 四,-2) 五 from dual;

一 二 三 四 五

---------- ---------- ---------- ---------- ----------

45.93 45.9 46 50 0

TRUNC(a,b) 与ROUND类似,但是TRUNC不是四舍五入,是直接取

一 二 三 四 五

---------- ---------- ---------- ---------- ----------

45.92 45.9 45 40 0

to_char() 转换成字符串,to_number() 转换成数字,to_date() 转换成日期

nvl(a,b) 获取某个值,若nvl为null,返回b

nvl2(a,b,c) 获取某个值,若nvl为null,返回c,否者返回b

decode(a,c

d,e,

......

f)

和java中的if-else相似,如果a的值为b,返回c,为d,返回e,否者返回f

组函数:作用于一组数据,并对一组数据返回一个值

avg():求平均值

count():求数量

max():求最大值

min():求最小值

sum():求和

熟练使用group by函数

group by多列:先按照第一列分;如果第一列相同,再按照第二列分

having 过滤分组 与where有点相似

先执行where在实行分组,所以尽量使用where 例外:如果条件中含义组函数,只能使用having

null的注意点:

查询的时候判断null,要用is或者is not: where id is null

表达式中包含null值的返回值都为null select sal*12+nvl(comm,0) 年收入 from emp;

如果集合中含义null值,不能使用not in操作符;但可以使用in

组函数会自动过滤为空,可以在组函数中嵌套滤空函数,来select count(*),count(comm) from emp; 的结果不同

select count(*),count(nvl(comm,0)) from emp; 的结果相同

多表查询

以笛卡儿积为基础,尽量避免出现笛卡尔全集(即没有连接条件)

以连接条件的不同,可以分为 等值连接,不等值连接,外连接,自连接

外连接解决的问题:当条件不成立时,任然希望在结果中包含不成立记录

左外连接 where d.deptno=e.deptno(+)

右外连接 where d.deptno(+)=e.deptno

自连接:利用表的别名,将同一张表视为多张表

自连接不太适合操作大表

层次查询: 对同一张表的前后两次操作,进行连接 connect by prior empno=mgr start with

基础部分已经大致结束,当然上述的所有内容都是伪逻辑,有些代码还需要大家修改一下才能使用,当然新手可以把上面的知识看作条目,逐一了解。若是有数据库经验的可以看看那些知识自己还没有掌握,弥补一下漏洞。

下一节,主要复习sql的简单查询的

触发器和视图方面的知识

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值