Oracle 数据库【未完成】

Oracle 数据库

安装和配置

用户

  • 默认三个用户
    • 用户名:sys 密码:安装时输入的密码。 此用户为超级管理员,登录时必须选择 sysdba 数据库
    • 用户名:system 密码:安装时输入的密码。 管理员用户。
    • 用户名:scott 密码:tiger 默认被锁定的用户,可以登录 system 用户进行解锁。
      • 解锁步骤:对象(object)-> user -> scott(然后进行右键,快捷菜单点击“编辑”,然后在对话框中进行相应的配置即可。

PL/SQL 的使用

PL/SQL 使用注意事项

  • 标题栏可以看到登录的是哪个用户
  • 小钥匙:灵活的切换用户
  • 将 all objects 改成 my objects
  • 在这里插入图片描述
    该图标为执行当前窗口内的 sql 语句。

Oracle 数据库查询语言

select ename,sal,nvl(comm,0),'年薪'||(sal+comm)*12 nx from emp;	# 查询所有员工的年薪
	# nvl(comm,0) 将comm 字段中数据为 null 的改为 0,在 mysql 中相加时自动转换为零。
	# '年薪'||(sal+comm)*12 nx  双竖杠:拼接字符(mysql 中没有) 字段名后“空格 + 名称”,为字段名起别名。

## 模糊查询包含s的员工, % 匹配 0-n 个字符。
select * from EMP where ENAME like '%s%';     # Oracle 中表名和列名不区分大小写,但是字段名的值区分;MySQL 正相反。

## 模糊查询名字第三个字母是 o 的员工。
select * from EMP where ENAME like '__o%'; 	# _ 下划线代表任意一个字符。

##查询员工编号为 7566或7369 或7499的员工信息。
select * from emp where empno in (7369,7499,7566)	# in 包含一个即可。
select * from emp where empno=7369 or empno=7499 or empno=7566

## 根据工资给员工分等级。
select ENAME,SAL, case when SAL >=0 AND SAL <=1500 THEN '初级' when SAL >1500 AND SAL <=3000 THEN '中级' else '高级' end  DGREE from EMP;   # 注意 case 的用法。

## not 的用法
select * from EMP where comm = 0 or comm is null;
select * from EMP where comm != 0 or comm is not null;  # 查询 comm 不是 0 和 空的员工信息。
select * from EMP where EMPNO not in (7369,7499,7566);	# 查询员工号不是...的信息。
select * from EMP where ENAME not like '%S%';	# 查询员工名称不带 s 的员工信息。

## order by 排序查询(最后一个)
select * from EMP order by SAL asc;  # 升序,从小到大,默认
select * from EMP order by SAL desc; # 降序,从大到小
select * from EMP order by DEPTNO asc,SAL desc;   # 先按照部门编号升序,在按照薪水降序。

## group by 分组查询
	1. # 分组函数(作用于一组数据,得到一个结果):max、min、avg、sum、count【一共有多少行,经常使用为 count(*)】

select job from emp group by job;	# 查询员工表中有多少个岗位。 当 group by 单独使用时相当于去重。
select deptno,count(*) from EMP group by deptno;  # 查询每个部门有多少人  注意:此时的 count 分别作用于所划定的组
select job,max(sal) from EMP group by job;   # 查询每个岗位的最高工资。
select mgr,count(*),max(sal),avg(sal) from EMP where mgr is not null group by mgr;  # 查询每个领导下面有多少个员工,并查询他们的最大工资和平均工资时多少。 注意: mgr 为上级领导编号。

	# 注意多个字段分组。
select DEPTNO,JOB,COUNT(*) from EMP group by DEPTNO,JOB;  # 查询每个部门下,每个岗位下有多少员工。
select DEPTNO,MGR,SUM(SAL) FROM EMP WHERE MGR IS NOT NULL  GROUP BY DEPTNO,MGR;  # 查询每个部门下,每个领导下员工的工资总和。

	# having 分组过滤
select DEPTNO,COUNT(*) FROM EMP GROUP BY DEPTNO HAVING COUNT(*)>=5;  # 查询每个部门下部门人数大于等于5的部门。
select DEPTNO FROM EMP GROUP BY DEPTNO HAVING AVG(SAL) >= 2000;  # 查询部门中平均工资大于等于两千的部门。
SELECT DEPTNO,COUNT(*) FROM EMP WHERE SAL > 1500 GROUP BY DEPTNO;  # 查询每个部门下薪水大于1500的员工人数。  首先要先查询薪水大于1500的员工,然后再根据部门进行分组。函数的调用最后执行,只要有 group by,函数的范围就有了限制。

## 去重查询 distinct
select distinct job from emp;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值