Oracle基本知识点总结

Oracle基本知识点总结

第一章

认识下相关数据库概念

1.数据库(DB):存放数据的仓库,按一定的格式存放在计算机中,可以共享
2.数据库管理系统(DBMS):位于用户和操作系统之间的一层数据管理软件,它为用户或用户程序提供了访问DB的方法。
3.数据系统(DBS):方便多用户访问计算机硬件,软件和数据资源组成的系统。
4.数据库管理员(DBA):数据库管理者的操作者
5.用户:数据库应用程序的使用者

常见数据库及数据库存储结构

1. 数据库管理系统

  • oracle 大型数据库
  • mysql 中小型
  • sql server 大型
  • DB2 中小型
  • Acess 小型

2. 数据库存储结构

  • 网状结构
  • 层次结构
  • 二维表结构:可以清晰的将数据与数据之间的关系表述清楚

注意:单纯的存储数据会比较简单,但是存储好数据又要将数据之间的关系描述清楚就会比较困难,所以采用二维表结构存储数据的方式比较合理

第二章

sql语言的学习

相关表

**所有例题的表我放这里,你们可以参考下**

员工表(emp)
员工表(emp)
部门表(dept)
部门表(dept)
部门地址表(city)
部门地址表(city)

工资等级表(salgrade)
工资等级表(salgrade)

单表查询

  1. 查询表的全部数据

select * from 表名 *代表所有
例:select * from emp

  1. 查询表中指定字段的值

select 字段名,字段名,… from 表名
例:select ename,job,from emp

  1. 给查询结果中的字段使用别名

select 字段名 as ”别名“ from 表名
例 select ename as “员工姓名” from emp

注意:as 可以省略不写,当别名中没有特殊字符也可以省略不写

  1. 去除重复(按照行进行去除)

例:select distinct 字段名,… from 表名
select distinct ename from emp

  1. 排序( 默认的是升序的)

select * from 表名 order by 需要排序的字段名 desc –降序 --asc升序
例:select * from emp order by desc
select empno,ename,job from emp order by ename asc

多字段排序:
例: select * from 表名 order by 字段名1,字段名2…(依次排序)
select * from emp order by empno,ename

where子句查询

1.使用where条件进行筛选
 语法:select * from 表名 where 筛选条件
 注意:条件中字段值区分大写,字段名不区分,字段值需要使用单引号括起来
 使用: 条件中常用的算术表达式 >,<, =,<=,>=,<>  
 		使用order by语句需要写在where的后面

下面那些属性名和结果你们先别看,主要注意他们的语法就行

例:查看公司等于1250员工的信息
select * from emp where sal=‘1250’–筛选条件是个数字也可以使用单引号

例: 查看工作等于CLERK的员工信息
select * from emp where job=‘CLERK’–在筛选条件中字段值如果是字符需要加上单引号

例:查看入职日期在81年后的员工信息
select * from emp where hiredate>‘1981年12月31号’

2.where子句使用关键字(常用的关键字有 and,or,in,like,is not null ,is noll)
	1、and 用于多条件的与筛选:select * from 表名 where 条件 and 条件 and 条件....
	2、or 用于多条件的或筛选: select * from 表名 where 条件 or 条件 or 条件....
	3、in 用于多条件的或筛选: select * from 表名 where 字段名 in(值,值,值....)
	4、like用于模糊查询:      select * from 表名 where 字段名 like '%值%' 包含
	5、is null 和is not null 用来判断字段是否为空  select * from 表名 where 字段名 is null 

注意: % _和它们的位置有关、
例如“%A”:表示查询以A结尾字符的信息,“A%”表示查询以A开头字符的信息, “%A%”表示查询包含A字符的信息

> 使用like关键字时 % 表示查询一个或多个字符
>  _表示查询一个字符

函数学习

单行函数
 特点:1.不改变真实的数据,只是在对数据进一步的修饰或者处理结果
	  2.可以个字段混合使用

1.字符函数:LOWER(把字符转小写)、UPPER(把字符转大写)、以及INITCAP(首字母大写)

查询所有的员工信息,员工姓名首字母大写,工作属性列的值转小写。
例:select initcap(ename),lower(job),from emp

2.数值函数:对数值类型的数据进行运算

  • abs:取绝对值
  • ceil:向上取整
  • floor:向下取整

例:select abs(-4),ceil(2.2),floor(3.3),power(2,3)as m的n次幂,mod(10,3)as 取余数,round(4.55),trunc(10/3,2) from dual

3.日期函数

select months_between(‘01-8月-2020’,‘01-3月-2020’) from dual–返回两个日期间的月份数
select add_months(‘01-8月-2020’,4) from dual–返回指定月数后的日期
select next_day(‘01-8月-2020’,‘星期二’)from dual–查询最近的星期的日期
select last_day(‘01-8月-2020’)from dual–返回当月的最后一天的日期
select round(to_date(‘01-8月-2020’),‘DAY’)from dual–按照星期进行四舍五入

多行函数(avg,count,max,min,sum)很重要

作用:对查询的数据进行统计
使用:select 多行函数(字段名),多行函数(字段名) from 表名
注意:多行函数不能和普通字段以及单行函数混用,除非分组

–max(字段名) 返回该字段的最大值
–min(字段名) 返回该字段的最小值
–sum(字段名) 返回该字段的和
–avg(字段名) 返回该字段的平均值
–count
–count(*) 返回表的记录数
–count(字段名) 返回非空值的数量
–count(distinct 字段名) 去除重复后的字段值的数量

例:查看员工的最高工资
select max(sal) from emp --多行函数不能和字段直接混用,除非分组。
查询公司有多少员工
select count(*) from emp–查询表的记录数
查看员工的平均工资
select avg(sal) from emp

转换函数
  • to_number(数值类型的字符)
  • to_number(数值类型的字符):将字符转换为数值
  • to_char(数值或者是日期):将数值或者日期转换为字符
  • to_date(日期格式的字符):将字符转换为日期
  • LAST_DAY()返回指定日期对应月份的最后一天

1.数值和字符的互转

  • 字符转换为数字char---->number

select to_number(‘123’)+2 from dual

  • 数字转换字符number—>char
指定显示格式:
       9表示位置占位,例如999,999,999会将数字按照三个一组使用逗号隔开。
       L表示人民币符号,$表示美元符号
       0可以进行占位分组,但是如果真实数据位数不足,会使用0进行补位

select to_char(12345,’$999,999,999’) from dual
select to_char(12345,‘L999,999,999’) from dual
select to_char(12345678,‘000,000,000,000.000’) from dual

2.日期和字符的互转
一般使用方式:新增数据使用to_date(),查询数据使用to_char()

  • 字符转化为日期:char–>date

使用to_date(‘要转换的字符’,‘日期格式’)函数将字符转化为日期
注意1:字符必须符合日期格式
注意2: oralce默认的转换格式为日月年,例如’01-1月-2018’ oracle认为是一个日期
常用日期格式:
yyyy-mm-dd
yyyy/mm/dd

查询员工入职日期在82年后的信息
select * from emp where hiredate>to_date(‘1982-01-01’,‘yyyy-mm-dd’)
select * from emp where hiredate>to_date(‘1982/01/01’,‘yyyy/mm/dd’)

  • 日期转换为字符 date—>char

使用to_char(‘要转换的日期’,转换格式) 注意1:如果不指名转换格式,则使用默认格式,日月年例如:‘01-1月-81’
常用转换格式:
yyyy-mm-dd
yyyy/mm/dd
‘yyyy"年"mm"月"dd"日"’

select to_char(hiredate)from emp–使用默认格式将日期转换为字符
select to_char(hiredate,‘yyyy-mm-dd’)from emp
select to_char(hiredate,‘yyyy/mm/dd’) from emp
select to_char(hiredate,‘yyyy"年"mm"月"dd"日"’) from emp

其他函数
 nvl()(字段名,新的值)
    如果字段不为null,则返回该字段的值,如果null则返回新的值
 nvl2():nvl(字段名,处理一,处理二)
    如果字段不为null,则执行处理1,为null执行结果2 
 decode():decode(字段名,值1,处理1,值2,处理2,值3,处理三,...,公共处理)       

查询员工的工资信息
select ename,job,sal from emp
查询员工的薪水信息
select ename,job,sal+nvl(comm,0) from emp
select ename,job,sal+nvl2(comm,sal+comm,sal) from emp
显示员工的职称
select ename,job,decode(job,‘SALESMAN’,‘经理’,‘PRESIDENT’,‘董事长’,‘普通员工’) from
emp

group by分组

1.SQL查询语句的结构

     select 子句        要查询的数据(oracle函数,别名,连接符,去除重复,逻辑运算)
     from语句           决定要查询的表(表名)             
     where子句         筛选数据(筛选条件,关键字)
     group by子句      分组     (分组字段)
     having子句        分组筛选   (多行函数筛选条件)
     order by子句      排序       (排序)
    运行循序:from-->where--->group by-->select--->having--->order by

2.group by分组后使用having关键字

使用关键字:having

作用:针对分组进行分组后的数据筛选,允许使用多行函数。
注意:having关键必须和分组结合使用。不允许单独使用,并且having关键字必须得在group by关键字的后面

注意:
1.使用了分组后,在select语句中只允许出现分组字段和多行函数
2.如果是多字段分组,则先按照第一字段分组,然后每个小组继续按照第二个字段继续分组,以此类推。
3.在where子句中不允许出现多行函数。

3.where和having关键字不同

  • where子句中不允许出现多行函数,having允许出现多行函数
  • where子句和having都可以使用普通字段进行筛选,但where效率高于having
  • where执行顺序:from–>where–>
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挤出半山腰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值