oracle数据库 学习总结

数据:数据是对现实生活事务描述的符号。
信息:信息是用来消除随机不确定性的东西。
数据库:用来存储数据的库
数据库管理系统:用户直观用来操作数据库的软件
数据库应用系统:在数据库管理之上,专门给普通用户进行使用的系统(如百度)

数据库系统: 用户+数据库管理系统+数据库+数据库应用系统+数据库管理员

java就干了两件事 :存储数据 操作数据
变量 对象 数组 集合 存储数据

数据源:声明赋值, IO流从硬盘中读取

基本类型:直接存储
引用类型:完整性

C增加
R查
U该
D删

数据库的发展
网状 层次 关系
oracle数据库基于c/s

sql分类
DQL
DML
DDL
DCL
TCL

where is null like in and or

连接字符 ||
select name || ‘学号是’||num from student
结果 lcz学号是2016

去重distinct
select distinct 字段名 from 表名

排序
select *from 表名 order by 字段名 desc(降序)asc(升序 默认)

is null 不为空
select * form stu where num is null

and
select * from stu where num is null and num >20

%任意字符
select * from stu where name like ‘刘%’

—表示任意一个字符
select * from stu where name like ‘_A%’
表示第二位是A

escape 可以把普通字符变成转义字符
转义字符可以把特殊字符转成普通字符
select * from stu where like '%/%’ escape’ / ’
寻找名字中含有

or
select * from stu where job = ‘t’ or job = ‘d’
相当于
select * from stu where job in (‘t’,‘d’)

and
select * from stu where cj > 20 and cj < 30
相当于
select * from stu cj between 20 and 30

and级别高于or
select sa from emp where num >20 or num<10 and sa >2000
本意是查找在编号大于20或者小于10 的员工中工资大于2000de
实际 查找编号小于10 并且工资大于2000 或者 编号大于20的

数据库的四大特性ACID
A原子性
C一致性
I隔离性
D持久性

别名as
select name as n from stu

单行函数
select 字段名,函数名(字段名)。。。from 表名
字符:
initcap(char) 首字母大写
lower(char)转为小写
upper(char) 转为大写
ltrim(char set)
ltrim(“xyz”,“x”) 输出 yz
rtrim(char set)
rtrim(“xyz” “z”) 输出xy
translate(char from to)
translate (‘jack’, ‘abcd’,‘1234’) 输出j13k
replace(char from to)
replace(‘jack and jue’,‘j’ ,‘bl’) 输出 black and blue
instr (‘word’ ,‘d’) 输出4
substr(‘abcdef’,3,2) 输出cd
concat(‘hello’,‘world’) 输出helloworld
trunk(5.66,1) 输出5.6

伪表dual
真实存在的表 是为了方便进行数据的验证而临时存在的表

select months_between (‘01-1月-2018’,‘24-6-2017’)from dual
返回两个日期之间的月份

多行函数
max min avg sum count

select max(字段)from 表名

错误示范
select lower(name), max(sql) from emp;
多行函数不能和单行函数,字段混用,除非分组

select count(*)from emp 查询有多少条记录
select count(字段名) from emp 查询某一字段的数量 null自动过滤

转换函数
在这里插入图片描述
char 到num
select to_number(‘123’) from dual;

to_data(‘要转换的字符’,格式) to_data(‘2019-09-09’,‘yyyy-mm-dd’)
要转换的字符必须符合日期格式
oracle默认为日-月-年

select to_char(‘date(要转换的日期)’,‘yyyy-mm-dd’) from emp

其他函数
nvl() nvl2,decode()

nvl(字段值,值)
如果字段值部位null,则返回该字段的值,为null则返回新的值)
select sal+nvl(com,0)from emp

nvl2(字段名 处理1,处理2)
如果字段值为null执行处理1 否则执行处理2
select nvl2(com,sal+com,sal) from emp

decode(字段名,值1 ,处理1,值2 ,处理2,公共处理)
select decode (job ‘manger’,'总经理’,‘president’,‘董事长’,‘员工’)from emp

分组
select 字段名 ,max(字段) from emp group by 字段名

select deptno ,max(sal)from emp group by deptno;
查找不同不同部门最高工资

分组完成后select 和from 只允许出现分组字段和多行函数

select deptno, job ,count(*) from emp group by deptno,job order by deptno;
查找不同部门,不同工作岗位的总人数
如果是多字段分组,则按第一字段分组,然后每个小组继续按照第二个字段分组

where中不允许出现多行函数,执行级别无法区分,where级别比多行函数高,where中可以都字段,单行函数
分组删选 having 针对分组进行分组后的筛选,允许用多行函数,having必须 和分组结合使用,不能单独使用

select deptno,job,count()from emp group by deptno job having count() > 1 order by deptno
查找不同部门,不同工作岗位,并且人数大于1的信息

查找部门号大于10 不同部门不同工作岗位的人数
having
select deptno,job from emp group by deptno ,job having deptno >10,order by deptno
where
select deptno ,job from emp where deptno >10 group by deptno,job order by deptno
where 的效率高于having 因为where在分组之前已经筛选出一部分不合格的
在分组语句中,使用where进行字段的筛选,使用having 进行多行函数的筛选

having允许使用多行函数
where不允许使用多行函数
where和having都可以使用字段,但where的效率高

where执行效率
from where groupby select order by
having的执行xiaol
from group by select having order by

数据的cdu执行完sql语句后不会立即进入数据库中操作,还需要手动对 事务进行提交

主键 非空唯一
作用 唯一标识一条数据

C增加
insert into 表名(字段名,字段名) values(值1,值2)

D删除
delete from 表名 删除表中的所有数据 (表还存在,数据删除)
delete from 表名 where 条件

truncate table 表名 删除表中所有的数据效率高

一删就是一条一条记录,只删其中一条叫做更改

U更改
update 表名 set 字段名 = 新的值 (将表中所有的字段值更改)
updata 表名 set 字段名 = 新的值 where 条件

数据库表备份 只会备份表结构和表数据,主键不份

表级别备份:
全部备份: create table 新的表名 as select * from 备份表名
部分备份: create table 新表名 as select 字段名 from 备份表名

整数据插入
insert into 插入表名 select* from表名
查询结果的字段必须和插入表名的字段数量一致,类型一致

多表查询
当需要的数据在多张表中的时候

SQL92 和SQL99

SQL92步骤
笛卡尔积
等值连接
不等值连接
自连接
外连接

笛卡尔积:将多个表的数据进行一一对应,所得到的结果为多表的笛卡尔积
等值连接:先做表的笛卡尔积,然后筛选,筛选条件为等值筛选,可以直接在select子句中使用字段直接获取数据,但效率比较低,建议加上表名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值