Oracle

Oracle知识

一、Oracle体系结构

1. 数据库:是数据的物理存储,包括数据文件ORA或者DBF、控制文件、联机日志、参数文件,
2. 实例:一个实例由一系列的后台进程和内存结构组成
3. 用户:用户在是咧下建立。不同实例可以建相同名字的用户
4. 表空间:是Oracle对物理数据库上相关数据文件(ORA或者DBF文件)的逻辑映射。每个数据库至少有一个表空间(称之为system表空间)
5. 数据文件(dbf、ora):是数据库的物理存储单位

二、创建表空间

1. 创建表空间
	create tablespace corn
	datafile 'c:\corn.dbf'
	size 100m
	autoextend on
	next 10m
2. 含义
	corn为表空间名称
	datafile 指定表空间对应的数据文件 
	size 后定义的是表空间的初始大小
	autoextend on 自动增长 ,当表空间存储都占满时,自动增长
	next 后指定的是一次自动增长的大小。

三、用户

1. 创建用户
	create user cornuser
	identified by corn
	default tablespace corn
2. 含义
	create user:用户名
	identified by:密码 
	default tablespace:表空间名称
3. 用户赋权限
	Oracle 中已存在三个重要的角色:connect 角色,resource 角色,dba 角色。
		1. CONNECT 角色: --是授予最终用户的典型权利,最基本的
		2. RESOURCE 角色: --是授予开发人员的
		3. DBA 角色:拥有全部特权,是系统最高权限,只有 DBA 才可以创建数据库结构,
	sql语句为:grant dba to itcastuser

四、数据类型

数据类型描述
Varchar, varchar2表示一个字符串
NUMBERNUMBER(n)表示一个整数,长度是 n
NUMBER(m,n):表示一个小数,总长度是 m,小数是 n,整数是 m-n
DATA表示日期类型
CLOB大对象,表示大文本数据类型,可存 4G
BLOB大对象,表示二进制数据,可存 4G

五、表的管理

1、建表

Create table 表名(
字段 1 数据类型 [default 默认值],
字段 2 数据类型 [default 默认值],
...
字段 n 数据类型 [default 默认值]
);

2、表删除

DROP TABLE 表名

3、表的修改

1. 添加语法:ALTER TABLE 表名称 ADD(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]...)
2. 修改语法:ALTER TABLE 表名称 MODIFY(列名 1 类型 [DEFAULT 默认值],列名 1 类型 [DEFAULT 默认值]...)
3. 修改列名: ALTER TABLE 表名称 RENAME 列名 1 TO 列名 2

六、数据库表数据的管理

1、增加

1. 标准写法:INSERT INTO 表名[(列名 1,列名 2,...)]VALUES(值 1,值 2,...)
2. 简单写法(不建议):INSERT INTO 表名 VALUES(值 1,值 2,...)
3. 如果有为空的字段使用 null

2、修改

1. 全部修改:UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....
2. 局部修改:UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....WHERE 修改条件

3、删除

 DELETE FROM 表名 WHERE 删除条件;

4、注意

在进行了增删改操作后,必须进行提交事务才可以,并且提交后不可以回滚
1. 提交:commit
2. 回滚:rollback

5、序列

6、单行函数

select 函数  from 表名
1. 字符函数
	1. 把小写的字符转换成大小的字符:upper(列名)
	2. 把大写字符变成小写字符:lower(列名)
	3. 首字母大写函数:initcap(列名)
	4. 字符串拼接函数:concat('名字',username)
	5. 字符串截取函数:substr(列名,开始的位置,截取的长度)
	6. 字符串替换函数:replace(username,'替换前的字符串','替换后的字符串')
	7. 获取字符串长度函数:length(列名)
2. 数值函数
	1. 四舍五入函数:ROUND()
	2. 数值截取函数:trunc(x,小数截取长度)
	3. 取余函数:mod(num1,num2)
3. 日期函数
	1. 日期 – 数字 = 日期
	2. 日期 + 数字 = 日期
	3. 日期 – 日期 = 数字
	4. 查询雇员进入公司的天数(sysdate – 入职日期)/7就是周数
	5. 获得两个时间段中的月数:MONTHS_BETWEEN()
4. 转换函数
	1. TO_CHAR:字符串转换函数
	2. TO_DATE:日期转换函数
5. 通用函数
	1. 空值处理 nvl
	2. Decode 函数类似于if...else。语法:DECODE(col/expression, [search1,result1],[search2, result2]....[default])
		1. Col/expression:列名或表达式
		2. Search1,search2...:用于比较的条件
		3. Result1, result2...:返回值
		4. 如果 col/expression 和 Searchi 匹配就返回 resulti,否则返回 default 的默认值
	3. case when
		CASE expr WHEN comparison_expr1 THEN return_expr1
		 			[WHEN comparison_expr2 THEN return_expr2
		 			WHEN comparison_exprn THEN return_exprn 
		 			ELSE else_expr]
		END

7、多行函数(聚合函数)

1. 统计记录数 count()
2. 最小值查询 min()
3. 最大值查询 max()
4. 查询平均值 avg()
5. 求和函数 sum()

8、分组

1. 分组统计需要使用 GROUP BY 来分组
2. 语法:SELECT * FROM 表名 {WEHRE 查询条件} {GROUP BY 分组字段} ORDER BY 列1 ASC|DESC,列2...ASC|DESC
3. 给Count加条件不能使用 where,可以使用 HAVING

9、多表查询

1. 基本查询:SELECT * FROM 表1 别名,表2 别名{WHERE 限制条件 ORDER BY 排序字段 ASC|DESC...}
2. 外连接:使用(+)表示左连接或者右连接,
	1. 当(+)在左边表的关联条件字段上时是左连接,
	2. 如果是在右边表的关联条件字段上就是右连接
	3. 左右连接和mysql语法一样
3.内连接 :和mysql语法一样

10、分页查询

1. rownum:行号
	1. 排序操作会影响到rownum的顺序,
	2. 排序使用,必须使用子查询,

七、视图

1. 概念:视图是提供一个查询的窗口,所有数据源来自原表
2. 查询语句创建表,
	创建表语句 as 查询语句;
3. 创建视图必须有dba权限
	create view 视图名称 as 查询语句;
4. 修改视图【不推荐】
5. 创建只读视图 
	创建视图语句 with read only;
6. 作用
	1. 视图可以屏蔽敏感字段
	2. 保证总部和分部的数据统一

八、索引

1. 概念:在表的列上构建一个二叉树,
2. 作用:达到大幅度提高查询效率的目的,但是会影响增删改的效率
3. 创建单列索引
	create index 索引名称 on 表名(字段名);
4. 单列索引触发规则,条件必须是索引列中的原始值,单行函数、模糊查询、都会影响索引的触发
5. 符合索引
	create index 索引名称 on 表名(字段名,字段名...);
6. 复合索引中第一列优先检索列,如果要触发复合索引,必须包含有优先检索引种的原始值。

九、pl/sql编程语言

1. 概念:对sql语言的扩展,使sql语言具有过程化编程的特性,比一般的过程化编程语言,更加灵活高效,主要是用来编写存储过程和存储函数等
2. 声明方法  
	1. 赋值操作:‘:=’、into
	2. 引用型变量:列名%type
	3. 记录型变量:表名%rowtype
3. 语法
	declare
		变量的定义
	begin
		sql语句和逻辑代码
	end;
4. 语句

1. 打印语句

dbms_output.put_line();

2. if语句

1. 格式一:
	if 条件 then
	end if;
2. 格式二:
	if 条件 then
	else
	end if;
3. 格式三:
	if 条件 then
	elsif 条件 then
	else
	end if;
4. 注意:变量 类型 := &ii 表示,从控制台输入一个数据赋值给变量
5. 如果不定义变量 declare可以省略

3. 循环

1. while循环
	while 条件 loop
		循环语句
	end loop;
2. exit循环
	loop
		exit when 条件
		循环语句
	end loop;
3. for循环
	for 变量 in 条件(如:1..10) loop
		循环语句
	end loop;

4. 游标

1. 定义:cursor 游标名称 is 查询语句;
2. 格式:
	open 变量名;-->开启游标
		loop
			fetch 游标名称 into 变量名称 -->提取游标中的数据值给变量名称
			end with 游标名称%notfound -->游标的最后的推荐循环
		end loop;
	close 变量名;-->关闭游标

十、存储过程

1. 语法:
	create procedure 名称(变量名 类型)
	is
		变量的声明;
	begin;
		PL/SQL;
	end;
2. 使用存储过程
	declear
	begin
		存储过程的名称(参数)
	end;

十一、存储函数

语法:
	create procedure 名称(变量名 类型) return 类型
	is
		变量的声明;
	begin;
		PL/SQL;
		return 值;
	end;

1.存储过程和存储函数的区别

1. 存储函数有返回值,存储过程没有
2. 存储函数可以写在select后面
3. 使用场景
	1. 存储过程:用于实现业务逻辑
	2. 存储函数:实现类似于orcale提供的函数(基本上很少人用)

十二、触发器

1. 语法:
	create trigger 触发器名称
	before|after
	update|delete|insert
	on 表名
	[for each row]
	declare
		变量的声明;
	begin
		PL/SQL;
	end;
2. 说明:
	1. before:操作语句执行之前
	2. after:操作语句执行之后
	3. [for each row]:加上表示行级触发器,不加表示语句级触发器
		1. 行级触发器:语句操作影响的数据行数次触发器
		2. 语句级触发器:一个语句触发一次触发器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值