Oracle期末总结

 

/**闲言少叙,直接进入主题**/

一、

Oracle的内部结构描述了内部存储结构,内部结构包括表空间、表、列、分区、用户、索引、视图、权限、角色、段、盘区、块等。

(1)表空间是数据库的逻辑划分,一个表空间只属于一个数据库。每个表空间由一个或多个数据文件组成,表空间其他逻辑结构的数据存储在这些数据文件。系统默认的由:system,sysaux,undo,users,temp表空间。

(2)约束 可以维护数据库数据的完整性类型:主键约束(primary kry),默认约束(default),检查约束(check),唯一性约束(unique),外键约束(foreign).

(3)数据库创建示例

以sysdba链接到oracle

conn system/Ming12 as sysdba

##创建数据库

create database mydb

            user sys identified by Ming12

            user system identified by Ming12

            logfile 'E:\app\Administrator\ordata\mydb\name.log' size 100M

            datafile 'E:\app\Administrator\ordata\mydb\sysem.dbf' size 200M

修改数据库 alter database [databese_name];

删除数据库:   drop database [databese_name];

(4)oracle的数据类型:字符类型,数值类型,日期时间类型,LOB类型(blog,clog,bfile),rowid类型(伪列类型)

(5)表

创建表就是定义表结构以及设置表和列的属性。

###在oracle中创建表建表,必须得有表空间。表空间由数据文件组成。

##创建表空间示例

---本地化管理方式

create tablespace mytbs data file 'D:\OracleFiles\OracleData\mytbs.dbf'
szie 10m
extent management local uniform 256K;

--段空间管理方式

create tablespace mytbs data file 'D:\OracleFiles\OracleData\mytbs.dbf'
szie 10m
extent management local autoallocate
segment space management manual;

---创建表示例

create table xsb(
XH char(6) not null primary key,
XM char(8) not null,
XB cahr(2) default '1' not null,
CSSJ date not null,
ZY char(12) null,
zxf number(2) null,
BZ varchar2(200) null
);

 --表中插入数据

insert into xsb(xh,xm,xb,cssj,zy,zxf,bz)
values(001,'tom','man',to_date('02-10-1999','dd-mm--yyyy'),'computer',50,null)

---修改表

alter table xsb add(tel number(11));

--查询表结构

desc xsb

--查询xsb表数据

select * from xsb

--删除字段

alter table xsb drop column addr;

--删除表

drop talbe;

--插入数据

//单条插入
insert into dept(deptno,dname,loc)
values(88,'design','chinese');
//批量插入
/*将jobs表中最高工资大于10000的记录人擦汗如新表jobs_temp中*/
insert into jobs_temp
select * from jobs
wheree jobs.max_salary >10000;

--更新数据

/*更新单列数据,
把emp表中雇员名为scott的工资调整为2460元*/
update  emp
set sal=2460
where ename='scott'
/*更新多列数据
把emp表中职务为销售员的工资上调20%*/
update emp
set sal
where job='salesman'

--删除

/*删除职务编号为pro的记录*/
delete from jobs where job_id='pro'
/*删除表中全部数据*/
delete from emp;
/*truncate 删除数据更快,因为不会产生回滚数据*/
truncate table jobs_temp;

select distinct job from emp;//distinct雄安出结果集的重复行

---用like匹配以字母S开头的任意长度的员工名称

select  empno,ename,job from where ename liake 'S%';

--范围比较

---在emp表中,使用in擦汗寻职务为'president' 'manager'和'analyst'中任意一种的员工信息
select empno,ename,job from emp where jon in('president','manager','analyst');
---在emp表中,使用not in 查询职务不在指定目标列表('president' 'manager''analyst')范围内的员工---信息
select empno,ename,job from emp where jon not in('president','manager','analyst');
--在emp表中,用between ..and查询工资在2000到3000的员工信息
select empno,ename,job from emp where sal between 2000 and 3000;

--子查询

/**单行子查询,返回一行数据的子查询语句**/
/*查询工资既不是最高的也不是最低工资的员工信息*/
select empno,ename,sal from emp
where sal>(select min(sal) form emp) and sal<(select max(sal) from emp);
/*多行子查询,返回多行数据的子查询语句*/
--查询不是销售部门的员工信息
select empno,ename,job from emp where deptno in(select deptno from dept where dname<>'sales');
select empno,ename,sal from emp where sal>any(select sal from emp where deptno=30)

select deptno,ename,sal from emp where sal>all(select sal from emp where deptno=30)
/*关联子查询*/
在emp表中,使用‘关联子查询’检索工资大于同职位的平均工资的员工信息
select empno,ename,sal from emp f
where sal>(select avg(sal) from emp where job=f.job)
oder by job;

--表别名,多表关联查询时,如果表之间存在同名的列,则必须使用表名来限定列的引用。

通过deptno 关联emp和dept,并检索信息
select e.empno sa 编号,d.dname as 部门
from emp e,dept d
where e.deptno=d.deptno
and e.job='MANAGER';

--内连接,通常使用inner join,其中inner可省略,当只用join时, 必须在from后接 on子句

select e.empno as 编号,e.ename as name,d.dname as 部门
from emp e inner join dept d
on e.deptno=d.deptno;

---外连接

左外连接:查询结果包含了满足条件的数据行和左表中不满足连接条件的数据行
右外连接:查询结果包含了满足条件的数据行和右表中不满足连接条件的数据行
完全外连接:执行完整的左外连接和右外连接,将查询结果合并

--自然连接:指检索多表时,将第一个表中的列和第二个表具有相同名称的列进行自动连接

--自连接,用在自参考表上显示上下级关系或者层次关系

 

创建视图

create or replace view

--索引

按照索引数据的存储方式可以分为B树索引,位图索引,反向键值索引和基于函数的索引

--计算两数之和与差的商

declare 

a int:=100;

b int:=200;

c number;

begin

c:=(a+b)/(a-b)

dbms_out.put_line(c);

exception

when zero_divide then

dbms_output.put_line(‘除数不为0’);

end;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值