Oracle数据库入门笔记(上)

2.表的删除

语法:

DROP TABLE 表名

DROP TABLE Person

3.表的修改

添加语法:

ALTER TABLE 表名称

ADD(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]…)

修改语法:

ALTER TABLE 表名称

MODIFY(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]…)

删除语法:

alter table 表名称

drop column 列名

范例:

–添加一列

alter table person

add gender number(1);

–修改列类型

alter table person

modify gender char(1);

–修改列名称

alter table person

rename column gender to sex;

–删除一列

alter table person

drop column sex

5.数据库表的更新


1.insert(增)

–添加一条记录

insert into person(pid,pname) values(2,‘闲言’);

commit;

2.delete(删)

–删除pid为2的记录

delete from person where pid = 2

3.update(改)

–修改pid为1的记录

update person set pname = ‘闲言博客’ where pid = 1

4.补充:三个删除

–删除表中全部记录

delete from person

–删除表结构

drop table person

–删除表,再次创建表(效果等同于删除表中全部记录)

–在数据量大的情况下,尤其在表中带有索引的情况下,该操作效率高

truncate table person

6.序列


在很多数据库中都存在一个自动增长的列,如果现在要想在 oracle 中完成自动增长的功能, 则只能依靠序列完成,所有的自动增长操作,需要用户手工完成处理。

–序列:默认从1开始依次递增,主要用来给主键赋值使用。

–序列不真的属于任何一张表,但是可以逻辑和表做绑定。

–dual:虚表,只是为了补全语法,没有任何意义。

–currval:下一个值

–nextval: 当前值

create sequence s_person;–创建序列

select s_person.currval from dual;–查询当前序列

insert into person(pid,pname) values(s_person.nextval,‘闲言’);–插入一条记录,主键使用序列自增

commit;

7.单行函数


左右于一行,返回一个值

1.字符函数

select upper(‘yes’) from dual;–YES 小写变大写

select lower(‘YES’) from dual;–yes 大写变小写

2.数值函数

–数值函数

–四舍五入,后面的参数是保留的位数

–正数位往后保留多少位数,负数则往前保留

–select round(26.14,-1) from dual; 30

–select round(26.14,-2) from dual; 0

–select round(26.14,2) from dual; 26.14

–select round(26.14,1) from dual; 26.1

select round(26.14,1) from dual;

–直接截取,不在看后面的数字是否大于某个数

–select trunc(26.14,-2) from dual; 0

–select trunc(26.14,-1) from dual; 20

–select trunc(26.14,1) from dual; 26.1

–select trunc(26.14,2) from dual; 26.14

select trunc(26.14,2) from dual;

–求余数

–select mod(11,2) from dual; 1

–select mod(12,2) from dual; 0

select mod(12,2) from dual;

3.日期函数

–日期函数

–查询出emp表中所有员工入职距离现在几天。

select sysdate-emp.hiredate from emp;

–算出明天此刻

select sysdate+1 from dual;

–查询出emp表中所有员工入职距离现在几月。

select months_between(sysdate,emp.hiredate) from emp;

–查询出emp表中所有员工入职距离现在几年。

select months_between(sysdate,emp.hiredate) /12 from emp;

–查询出emp表中所有员工入职距离现在几周。

select (sysdate-emp.hiredate) / 7 from emp;

–结论:日期可以直接加减,得到的单位是天

4.转换函数

–日期转字符串

select to_char(sysdate,‘fm yyyy-mm-dd hh24:mi:ss’) from dual;–2021-2-4 18:48:33

–字符串转日期

select to_date(’ 2021-2-4 18:48:33’,‘fm yyyy-mm-dd hh24:mi:ss’) from dual;

5.通用函数

–算出emp表中所有员工的年薪

–奖金里面有null值,如果null值与任意数字做算术运算,结果都是null

–nvl(#,#) 空值处理:如果第一位不是null,则用第一位,如果第一位为null,则用第二位(也就是0)

select emp.sal * 12+nvl(emp.comm,0) from emp;

6.条件表达式

–给emp 表中员工起中文名称

select emp.ename,

case emp.ename

when ‘SMITH’ then ‘曹贼’

when ‘ALLEN’ then ‘大耳贼’

when ‘WARD’ then ‘诸葛小儿’

–else ‘无名’

end

from emp

在这里插入图片描述

–判断emp 表中员工工资,如果高于3000显示高收入

–如果高于1500,低于3000,显示中等收入

–其余显示中等收入

–条件表达式的通用写法(MySql和Oracle通用)

select empno,ename,job,mgr,hiredate,comm,sal,

case

when sal>=3000 then ‘高收入’

when sal>=1500 then ‘中等收入’

else ‘中等收入’

end

from emp

在这里插入图片描述

–Oracle 专用条件表达式。

–Oracle 除了起别名,都用单引号。

select ename,

decode (ename,

‘SMITH’, ‘曹贼’,

‘ALLEN’, ‘大耳贼’,

‘WARD’, ‘诸葛小儿’,

‘无名’) “中文名”

from emp

在这里插入图片描述

8.多行函数(聚合函数)


作用于多行,返回一个值。

1.统计函数count(*)

–查询总数量

–count(*)底层走还是count(1),

select count(1) from emp;

在这里插入图片描述

2.求最大值max()

select max(sal) from emp;

在这里插入图片描述

3.求最小值min()

select min(sal) from emp;

在这里插入图片描述

4.求和sum()

select sum(sal) from emp;

在这里插入图片描述

5.求平均值avg()

select avg(sal) from emp;

在这里插入图片描述

9.分组查询


分组查询中,出现在group by 后面的原始列,才能出现在select 后面。

没有出现在group by后面的列,想在select 后面,必须加上聚合函数。

聚合函数有一个特性,可以把多行记录变成一个值。

–查询每个部门的平均工资

select deptno,avg(sal)

from emp

group by deptno

在这里插入图片描述

–出现出平均工资高于2000的部门信息

select deptno,avg(sal)

from emp

group by deptno having avg(sal) > 2000

在这里插入图片描述

–查询出每个部门工资高于800的员工的平均工资

select deptno,avg(sal)

from emp

where sal > 800

group by deptno

在这里插入图片描述

–查询出每个部门工资高于800的员工的平均工资,然后再查询出平均工资高于2000部门

select deptno,avg(sal)

from emp

where sal > 800

group by deptno

having avg(sal) > 2000

在这里插入图片描述

–因为where 的优先级高于select,先看条件,条件不满足根本不让你查询。

–比如下面的条件语句

select ename,sal s from emp where s > 15000; --执行失败

在这里插入图片描述

总结:

1.因为where 的优先级高于select,先看条件,条件不满足根本不让查询。

2.所有条件都不能使用别名来判断

3.where是过滤分组前的数据。where 必须在group by 之前。

4.having是过滤分组后的数据。having 是在group by 之后。

10.多表查询


1.基本连接查询

–笛卡尔积

select *

from emp,dept

–等值连接

select *

from emp,dept

where emp.deptno = dept.deptno

在这里插入图片描述

–内连接

select *

from emp inner join dept

on emp.deptno = dept.deptno

在这里插入图片描述

2.外连接(左右连接)

–查询出所有部门,以及部门下的员工信息

–【外连接】右

select *

from emp right join dept

on emp.deptno = dept.deptno

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
NzZG4ubmV0L3FxXzQyMDI1Nzk4,size_16,color_FFFFFF,t_70)

2.外连接(左右连接)

–查询出所有部门,以及部门下的员工信息

–【外连接】右

select *

from emp right join dept

on emp.deptno = dept.deptno

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-R2ebvGL4-1714939365498)]

[外链图片转存中…(img-3k091IpH-1714939365498)]

[外链图片转存中…(img-2DezKrdx-1714939365498)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值