Oracle 学习记录

– 创建表空间
create tablespace oracledemo – 表名字
datafile ‘e:\oracledemo.dbf’ – 文件位置
size 100m – 文件初始大小
autoextend on – 是否自动拓展
next 10m; – 下次拓展的文件大小

– 删除表空间

drop tablespace oracledemo;

–创建用户

create user oracledemo1 – 创建用户名
identified by oracledemo1 – 密码
default tablespace oracledemo; – 该用户依赖的表空间

– 给用户授权
– Oracle 数据库中常用角色
connect --连接角色,基本角色
resource --开发者角色
dba – 超级管理员角色

– 给oracledemo 用户授予dba角色
grant dba to oracledemo1;

– 切换到oracledemo1用户下
– Session - 》 log off 退出当前用户
– Session -》 log on 登录oracledemo1

– 创建一个person表
create table person(
pid number(20),
pname varchar2(10)
);

– 修改表结构
– 添加一列
alter table person add (gender number(1));
– 如果是只添加一列,不需要加gender前面的括号,
– 如果是多列就需要括号,中间逗号隔开

– 修改列类型
alter table person modify gender char(1);
– 修改列名称
alter table person rename column gender to sex;
– 删除一列
alter table person drop column sex;

– 查询记录
select * from person;
– 添加一条记录
insert into person
(pid,pname)
values
(1,‘小明’);
commit;

– 修改一条记录
update person set pname = ‘小马’ where pid = 1;
commit;

– 三个删除
– 删除表中全部数据
delete from person;
– 删除表结构
drop table person;
–先删除表,再次创建表。效果等同于删除表中的全部记录
–在数据量大的情况下,尤其是表中带有索引的情况下,该操作效率高。
–索引可以提供查询效率,但是会影响增删改效率。
truncate table person;

– 序列:默认从1开始,依次递增,主要用来给主键赋值使用
– dual:虚表,只是为了补全语法,没有任何意义
create sequence s_person;
– 查询下一个
select s_person.nextval from dual;

– 添加一条记录
insert into person
(pid,pname)
values
(s_person.nextval,‘小红’);
commit;

– 算出emp表中的所有员工的年薪
– 奖金里面有null值,如果null值和任意数字做算术运算,结果都是null
select e.sal12+nvl(e.comm,0) from emp e;
select e.sal
12 from emp e;

–条件表达式
–给emp表中员工起中文名
select e.ename,
case e.ename
when ‘SMITH’ then ‘曹贼’
when ‘ALLEN’ then ‘大耳贼’
when ‘WARD’ then ‘诸葛小二’
else ‘无名’
end
from emp e;

Oracle起别名,要么什么都不加,要么加双引号

–判断emp表中员工工资,如果高于3000显示高收入
–如果高于1500低于3000显示中等收入
–其余显示低收入
select e.sal,
case
when e.sal>3000 then ‘高收入’
when e.sal>1500 then ‘中等收入’
else ‘低收入’
end
from emp e;

– 多行函数【聚合函数】,作用于多行,返回一个值
select count(1) from emp; – 查询总数量
select sum(sal) from emp; --工资总和
select min(sal) from emp; – 最低工资
select max(sal) from emp; – 最高工资
select avg(sal) from emp; – 平均工资

–分组查询
–查询出每个部门的平均工资
–分组查询中,出现在group by后面的原始列,
–才能出现在select后面
–没有出现在group by后面的列,想在select后面
–必须加上聚合函数。
–聚合函数有一个特性,可以把多行记录变成一个值
select e.deptno , avg(e.sal)
from emp e
group by e.deptno;
– 查询出平均工资多于2000的部门。
select e.deptno , avg(e.sal)
from emp e
group by e.deptno
having avg(e.sal)>2000;
–所有条件都不能使用别名来判断
–查询出每个部门工资高于800的员工的平均工资
select e.deptno , avg(e.sal)
from emp e
where e.sal>800
group by e.deptno;
–where是过滤分组前的数据,having是过滤分组后的数据
–表现形式:where必须在group by之前,having是在group by之后
----查询出每个部门工资高于800的员工的平均工资
–然后再查询出平均工资多于2000的部门。
select e.deptno , avg(e.sal)
from emp e
where e.sal>800
group by e.deptno
having avg(e.sal)>2000;

– Scott 用户 密码 tiger
– 解锁Scott用户
alter user scott account unlock;
–解锁Scott用户的密码【重置密码】
alter user scott identified by tiger;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值