Oracle数据库基础介绍

Oracle数据库是存储数据的空间,以 单元来存储。
Oracle数据库中
DML:数据库操作,增删改查,更新数据。
DDL:对象的操作,创建、修改、删除数据库结构
DCL:角色、权限管理

关系型数据库的核心体现:主外键

数据库的数据模型是指:数据结构、数据操作、数据约束条件

数据库系统的核心是:数据库管理系统


一、Oracle数据库中的常用数据类型:

一、Oracle数据库中的常用数据类型:
number(4)  整数,默认位数为4位
number(5,2)  小数,共5位其中小数有2位
varchar2(20)  可变字符串
clob   大文本,最多存储4G
Blob   大对象,存储二进制数据(图片、视频、声音等)
Date   日期


二、数据库的几种约束
①主键约束:primary key 维护实体完整性,不能为空
②外键约束:foreign key 维护引用完整性
③检查约束:check       维护数据格式正确性
④唯一约束:unique      可为空
⑤非空约束:not null    
主键约束和唯一约束的区别:
主键约束不能重复也不能为null,唯一约束不能重复但可以为null。
主键上创建的索引是唯一索引,但唯一索引所在的列不一定是主键列。


三、联合主键:
一个表中有两列来做主键,两个主键相加不能重复,也就是单独的一列主键允许重复,但两个主键列不能同时重复。

四、数据库的基本语句:
①创建表:create table 表名
②复制表:create table 表名 as select * from 另外一个表名
③复制表(只复制表列名,不复制其数据):create table 表名 as select * from 表名 where 0=1 
④删除表:drop table  表名
闪回:发现删错表了要将表找回:flashback table 表名 to before drop 
清空回收站:purge recyclebin 
彻底删除表:drop table 表名 purge
⑤清除表数据:
delete from 表名
⑥回退 rollback
当delete删除表信息时想找回表中信息可以通过rollback回退找回表中信息。但使用截断truncate 删除的表中信息不能通过rollback回退。

五、Oracle的基本运算符:
算术运算符:+、-、*、/、mod(10,3)(取模);
逻辑运算符:与(and)、或(or)、非(not);
比较运算符:=、!=(<>)、<=、>=、between and (包括临界值)、in(33,38)(那就是满足33和38的)、like、is null(是否为空)(编写语句可以是:where comm(列名)is null;或 where not comm is null;或 where comm is not null;)

六、Oracle的基本函数:
单行函数包含:日期函数、数字函数、字符函数、转换函数、其他函数
常用的函数: to_date('2012-03-12','yyyy-MM-DD'):将日期字符串转换成制定格式日期;
abs(-23.6):取绝对值;power(4,3):返回4的3次方;mod(100,3):返回100/3的模(取余);
sqrt(16):返回测试数的平方根;initcap('world'):返回输入字符的首字母大写;lower
('Hello World'):返回输入字符的小写(全部小写);upper('hello world'):返回输入字符的大写(全部大写);substr('hello world ',3,4):返回从第二个数开始截取输入字符串,截取长短适合第三个数的大小;concat('hello','you'):返回两个字符串的拼接字符串;
to_date('2012-08-01','yyyy-MM-DD'):将日期字符串转换成指定格式日期;

七、Oracle数据库查询的基本用法:
①select * from tab;查询当前登录用户下的所有表
②在查询的时候加上假名(显示列名):select empno 编号("编号"/as 编号)from emp;
③order by 列名,排序,默认为升序排列,升序:asc;降序:desc
④消除重复行:select distinct sal from emp; 消除sal列中重复的数据,显示消除重复值之后的数据
⑤分组(聚合)函数:
count(*) 数据统计;  avg(sal)计算工资数的平均值;  sum(sal)求和;  max(sal)求最大值;  min(sal)求最小值;
⑥group by 函数:按照…分组;默认排序方式由小到大
select clid from sa.studentinfo group by clid;按照clid进行分组;要想在查询的内容显示出来,就要在group by后加上要显示的列名。
那些分组函数可以和group by一起使用(分组函数中是列名可以不用写在group by 后边):
select deptno,floor(avg(sal)) from scott.emp group by deptno;
⑦having 子句:在group by的前提下进一步筛选
select deptno,floor(avg(sal+NVL(comm,0))) from scott.emp group by deptno having avg(sal)>2000 order by deptno;此句查询语句的意思就是按照deptno分完组后查询平均工作大于2000的数据信息。
⑧简介内外连接,掌握简单的内外连接的语句(select 表名 left join 表名 on 条件)
连接:内连接,全连接,左外连接,右外连接
内连接:加上where条件,或使用join …on…
全连接:不加任何where条件 full (outer) join
左外连接:left join…on 左边表全部显示,右边表不足的用空格补齐,相当于在右边表后加上(+)
右外连接:right join…on 右边表全部显示,左边表不足的用空格补齐,相当于在左边表后边加上(+)
⑨伪列:
rowId:是存储的内存地址,比表中的id检索的更快
rownum:可作为条件,可进行分页等。
⑩锁:
锁是数据库用来控制共享资源并发访问的机制,用于保护正在被修改的数据
解锁:直到提交commit或回滚rollback后或异常后才解锁,其他用户才能使用
行级锁:对进行修改的行进行锁定,其他用户可访问此行以外的范围低,安全性差
表级锁:lock table 表名 in exclusive(最严谨的锁) mode 
死锁:两个事务相互等待对方释放资源时,就会形成死锁,oracle会自动检测死锁并解决死锁

八、游标(cursor):
游标是操作结果集,和循环一起使用(遍历结果集)
游标类型:
①隐式游标:自动声明打开和关闭
隐式游标:自动声明打开和关闭
隐式游标的属性:%found SQL语句影响了一行或多行时为true
%notfound SQL语句没有影响任何行时为true
%rowcount SQL语句影响的行数
%isopen  游标是否打开,始终为false
②显示游标:游标自定义
cursor cs(游标名) is select tid,tname,tage from sa.teacher where tid=1
打开游标:open cs;关闭游标:close cs;
fetch cs into 使用declare 定义的变量,用来提取行,并进行下移  跳出直到:exit when cs%notfound;
③REF游标:用于处理运行时才能确定的动态SQL查询的结果

九、PL/SQL
PL/SQL是过程语言,可进行逻辑判断,包含声明部分,可执行部分,异常处理部分
属性类型有两种:
%type:引用变量和数据库列的数据类型
%rowtype:提供表示表中一行的记录类型
declare i sa.teacher.tid%type:i对应的是sa.teacher.tid的类型
i_row sa.teacher%rowtype:i_row对应的是sa.teacher这个表的类型


十、存储过程、函数、触发器

子程序包含存储过程(执行某些操作)、函数(执行某些操作并返回值)
子程序的各部分:声明部分、可执行部分、异常处理部分 
子程序的优点:模块化、可重用性、可维护性、安全性
①存储过程: 执行某些操作,用于完成特定任务的子程序
存储过程的参数只加参数类型,不加参数长度,调用时候直接调用不用加exec
存储过程语法:
 create or replace procedure p1
  e_in in varchar2,e_out out varchar2  参数定义:名 in/out/inout(不写为in) 类型
   is
  begin  end;
②将存储过程放在程序包中:
包:create or replace package myP1 is
     procedure p1(tid in number,tname varchar2,tage number);
    end myP1;
包体:
   create or replace package body myP1 is
     procedure p1(tid in number,tname varchar2,tage number);
   is
   begin
    要进行的操作
   end;
  end myP1;
③执行存储过程:
declare 
 要是有输出参数可以在此定义
begin 
 myP1.p1(33,'sss',34);
end;
④定义函数:
 create or replace function getsum
  参数
 return 类型(不能加分号)
 is
begin
 return ……
end;
⑤执行函数:
在SQL中select getsum(30,12) from dual;
在PL/SQL块访问函数:
declare
参数  s number ;
begin
 s=getsum(23,12);
 dbms_output.put_line(s);
end;
⑥触发器:
触发器是当指定事件出现时自动执行的存储过程
语法:create or replace trigger 触发器名字
启动触发器:alter trigger 名字 disable;
禁用触发器:alter trigger 名字 enable;
删除触发器:drop trigger 名字;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值