--__________________________________Function(函数)_______________________________
/*dual 表 是Oracle 中一个虚拟的表,有一行一列,所有者是sys,可以被数据库中所有的用户使用
用户不得插入数据, 是使用此表选择系统变量或计算一个表达式的值*/
--_________________________________转换函数(5)__________________
--1.to_char(d|n [.fmt]): 用于将日期和数字按指定的格式转化为varchar2()类型的数据. d:日期 n:数字 fmt:日期或数字的格式
select to_char(sysdate,'yyyy-mm-dd') 格式日期 from dual;
select to_char(sysdate,'yyyy年mm月dd天') 格式日期 from dual;
select to_char(12.34567,'9999.99') 格式化数字 from dual; 12.35
select to_char(12.34567.'L9999.99') 格式化数字 from dual; ¥12.35
--2.to_date(char [,fmt]):将字符串转化为日期数据类型
select to_date('2011-4-8','yyyy-mm-dd') - to_date('2011-4-10','yyyy-mm-dd') 日期差距 from dual; --->2
--3.to_number(char);将包含数字的字符串转化为Number类型,从而实现运算
select to_numner('123')+2 求和 from dual;--->125
select '123'+2 求和 from dual; --->125 {Oracle 可以对数字字符串自动进行隐式转换}
--4.NVL: 将null值 替换为指定的值
nvl(expr1,expr2): ===> expr1!=null ? expr1:expr2;
NVL2(expr1,expr2,expr3):===> expr1!=null ? expr2:expr3; --->记得是NVL2
--5.Decode:相当于 if; 将输入值与函数中的参数列表进行比较,根据输入值返回一个对应值。
--语法: decode(input_value,value,result [,value,result,value,result] [,default_result]);
update employees set salary=salary+ decode(deparment_id,20,100,30,80,40,120,20); --->20 表示默认值 (找不到匹配的后)
--表示 department_id==20 ? 100:(department_id==30? 80 : (department_id==40 ? 120 :20));
--____________________________基本函数(6)_______________________
--1 获取系统的时间
select sysdate 当前系统的时间 from dual;
--2 add_months(d,n):在制定日期上添加月数后的值 d:表示 要操作的日期 n:表示月数
select add_months(sysdate,1) 新的日期 Form dual; --返回 当前日期上月数+1后的日期
--3 months_between(d1,d2):返回两个日期之间的月份数
select sysdate from dual; ---返回 8-4月-11
select months_between('6-7月-11',sysdate) 相差的月份 from dual; --- 返回 2.62636789
select floor(months_between('6-7月-11',sysdate)) 相差的月份 from dual; --返回 2
--4 last_Day(d):返回制定日期月份后的最有一天
select sysdate 当前日期,last_day(sysdate) 当月最后一天 form dual;
--5 next_day(d,day):返回指定下星期几的日期 d:制定的日期 day:一周内的第几天
select sysdate 当前日期,next_day(sysdate,'星期五') 下个星期五是 from dual --返回系统日期本周星期五的日期
--6 extract(fmt,from d):获取日期中指定特定部分
--1 获取当前时间中的 年 月 日
select sysdate, extract(year from sysdate) 年,extract(month from sysdate) 月,extract(day from sysdate)日 from dual;--> 12-4月-11 --- 2010 --- 4 ----12
--2 在oracle 中日期是一个特殊的数字, 以天为单位;所以 可以进行 日期 + || - 数字=日期 日期-日期=数字
select sysdate 当前日期,sysdate+1 日期加数字,sysdate-1 日期减数字,sysdate-to_date('2011-7-6','yyyy-mm-dd') 日期减日期, floor(sysdate-to_date('2011-7-6','yyyy-mm-dd')) 日期差距取整 from dual;
--返回 8-4月-2011 9-4月-2011 7-4月-2011 2.62636789 2
--______________________________数学函数(7)_________________________________
--1.Abs:取绝对值
select abs(-1) form dual; --->1
--2.Ceil: 向上取整
select ceil (1.33) from dual;--->2
--3.Floor:向下取整
select floor(1.33) from dual;--->1
--4.Power:求幂
select power(2,3) from dual;--->8;
--5.Mod:取余
select mod(10,3) from dual;--->1
--6.Round:四舍五入
select round(12.126,2) from dual;--->12.13
--7.Trunc:截断
select trunc(12.126,2) from dual;--->12.12
三角函数 ....
--_______________________字符函数(9)_____________________
--1.Lower(c):小写转换
select lower('SccE') from dual; ---> scce
--2.Upper(c):大写转换
select upper('scce') from dual; ---> SCCE
--3.Ltrim(c1[,c2]): 删除c1 左侧所包含的c2 任何字符,遇到不属于c2中的字符时 返回剩下的字符(c2 省略 默认表示空格)left trim;
select ltrim(' adminscce') from dual;--> adminscce 如果 c2 不写 表示 去除空格(' ')
select ltrim('adminscce','ad') from dual;--->minscce
--4.Rtrim(c1[,c2]):删除c1 右侧所包含的c2 任何字符,遇到不属于c2中的字符时 返回剩下的字符(c2 省略 默认表示空格) right trim;
select rtrim('adminscce ') from dual;--> adminscce 如果 c2 不写 表示 去除空格(' ')
select rtrim('adminscce','scce') from dual;--->admin
--5.Replace(c1,c2[,c3]):将c1中岀现c2都替换成c3;c3默认为空,如果c3为null,所有出现c2的地方都被删除,如果c2为null,则返回c1,如果c1为null,返回null
select replace('a*b*','*','/') from dual;--->a/b/
select replace('a*b*','*') from dual; --->ab
select replace('a*b*') from dual; ---> a*b*
select replace() from dual; ---->null
--6.Instr(c1,c2): 在c1中搜索c2首次出现的位置, 找不到 返回 "0"
select instr('abcdbc','bc') from dual;--->2
--7.Substr(c,m[,n]):返回c的子串,m是子串的开始位置,n是子串的长度,省略n则截取从m开始的所有子字符串
select substr('scce',2,2) from dual; -->cc
--8.Concat(c1,c2):连接字符串
select concat('scc','e') from dual; --->scce
--9.Length(c):返回字符串的长度
select length('scce') form dual; --->4;
----------------------------------同义词 ---------------------------------------
--1.方案同义词 :要权限 create synonym 或者 create any synonym
grant create syonoym to scott;
grant create any synonym to scott;
--获得权限
create [or replace] synonym syn_dept for dept; --为dept 表创建同义词 syn_dept
--2.公用同义词 :要权限 create pulic syonoym
grant create public synonym to scott;
create [or replace] public synonym pubsyn_dept for dept; -- pubsyn_dept 为名字
--3.方案同义词的使用
--1.scott使用自己的
select * from syn_dept;
--2.hr 使用 scott用户 创建的同义词
conn scott/tiger@scce;
grant select on dept to hr; -- 要scott给hr 赋权限
conn hr/tiger@scce; --自己登录后 拿着 scott的钥匙(方案) 开门后 查看资源
select * from scott.syn_dept;
--3 hr 为scoot用户中的资源创建 同义词 但是 必须要scott 给hr 权限 否则 创建了 使用 不了
conn hr/tiger@scce;
create or replace synonym syn_scott_dept for scott.dept; --为scoot用户的dept资源创建 同义词
-- select * from syn_scott_dept; -->此时写会报错 没有权限反问 要下面 的操作
conn scott/tiger@scce;
grant select on dept to hr; --scott 给 hr 权限
conn hr/tiger@scce;
select * from syn_scott_dept; --此时才有用
--4.公用同义词的使用 重要是要有权限 就 有了
conn hr/tiger@scce;
select * from pubsyn_dept;
conn scott/tiger@scce;
revoke select on dept from hr; --移除了 hr 的select 权限
conn hr/tiger@scce;
select * from pubsyn_dept; --报错没有 权限
--5.删除方案同义词
--1.scott 可以删除 自己的任何同义词
drop synonym syn_dept;
--2.scoot 要删除 别人中的方案同义词 必须要有 drop any synonym 权限
conn sys/admin@scce;
grant drop any synonym to scott;
conn scott/tiger@scce;
drop synonym syn_scott_dept; --syn_scott_dept 是 hr 创建的同义词
--6.删除公用同义词 用户要有 drop public synonym 权限
conn sys/admin@scce;
grant drop public synonym to scott;
conn scott/tiger@scce;
drop public synonym pubsyn_dept; --- 删除 名为 pubsyn_dept 公用同义词
分享到:
相关推荐
数据库安全性是Oracle10g中的重要话题,包括用户权限管理、角色、同义词、审计等。通过设置合适的权限,可以确保数据的安全性和访问控制。同时,理解Oracle的网络架构和安全配置,如Listener和SQL*Net,有助于预防...
- 如果同义词的所有者为`PUBLIC`,则它是公共同义词。 - 如果同义词的所有者为某一用户,则它是私有同义词。 #### 十二、数据库链管理 1. **数据库链信息查询**: - `SELECT * FROM dba_db_links;`:列出所有...
oracle 1 基本对象 表(Table)和 视图(View) 索引(Index)和 约束(Constraint) 函数(Function) 过程(Procedure) 其他(同义词,序列,簇,job,等)
6. **删除视图和同义词**: ```sql DROP VIEW view_name; DROP SYNONYM synonym_name; ``` 7. **删除存储过程、函数和包**: ```sql DROP PROCEDURE procedure_name; DROP FUNCTION function_name; DROP ...
1. **理解同义词的作用**:学习如何使用同义词简化复杂的对象引用。 2. **掌握序列的使用**:学习如何利用序列自动增长特性实现自增主键。 3. **掌握视图的创建和使用**:学习如何创建视图以简化复杂查询,并了解...
在高级概念部分,文档进一步介绍了视图、外键、ROWNUM伪列、同义词和层次查询等更为复杂的SQL概念。这些高级功能在数据操作和管理中起到了重要的作用,通过这些概念的学习,开发者能够构建更为复杂和高效的数据访问...
17. 序列、同义词:解释序列的创建和使用,以及如何通过同义词简化对象的引用。 18. PL SQL:详细介绍Oracle的过程化语言PL/SQL,用于编写复杂的存储过程、函数、触发器和包等。 19. 游标、函数:阐述如何在PL SQL...
- `CREATE`:用于创建表、视图、索引、序列、同义词、存储过程、函数等。 - `ALTER`:用于修改已存在的数据库对象,如增加或删除表字段、修改列属性、调整索引等。 - `DROP`:用于删除不再需要的数据库对象,如表...
本章主要介绍了6种关键的数据库对象:序列、同义词、存储过程、触发器、函数以及包。 **8.1 序列** 序列(Sequences)在Oracle中扮演着生成唯一、连续序号的角色,常用于自增主键。序列可以设置为升序或降序,通过`...
3. **创建公有同义词**:创建公有同义词`cdxpack`指向`cdx.cdxpack`。 4. **调整表空间设置**:修改`cdx`用户的默认表空间为`users`,临时表空间为`temp`,并给予无限配额:`alter user cdx default tablespace ...
除了表,Oracle还支持其他多种数据库对象,如视图(View)、索引(Index)、序列(Sequence)、同义词(Synonym)、存储过程(Procedure)和函数(Function)。这些对象丰富了数据库的功能,提高了数据的查询效率和...
提供对常用数据字典(如 表、视图、索引、同义词、约束、过程、触发器等)的常用操作。例如,输入 “%NAME” 或 “NAME%” 或 “%NAME%”,能查找包含子串 “NAME” 的所有对象名,通过弹出菜单可以对每一个对象...
├─08 序列同义词 │ sequence.sql │ ├─09 用户管理 │ user.jpg │ user.sql │ ├─10 嵌套表 可变数组 │ createType.sql │ ├─11 PLSQLl语法 │ plsql.sql │ ├─12 索引 │ index.sql │ ├─13 ...
本文将深入探讨Oracle数据库的一些基本语法,包括表、视图、同义词、存储过程、函数、触发器、游标以及序列的创建与使用,旨在为初学者提供一个全面的入门指南。 ### 表(Table) 表是数据库中最基本的数据存储单元...
- **区分私有和公共同义词**: - 如果`OWNER`为`PUBLIC`,则同义词为公共同义词。 - 如果`OWNER`为某一用户,则同义词为私有同义词。 ### 11. 数据库链接管理 - **`DBA_DB_LINKS`**: 列出了数据库中的所有数据库...
综上所述,这份文档涵盖了 Oracle8i 数据库的基础知识,包括 SQL*PLUS 的使用、PL/SQL 的基础、表结构的管理、高级特性如视图、存储过程等,以及一些更深入的主题如序列和同义词的使用。这对于想要学习或加深对 ...
dictionary 全部数据字典表的名称和解释,它有一个同义词dict dict_column 全部数据字典表里字段名称和解释 如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句: SQL>select * from dictionary ...
- **公共同义词与私有同义词的区别**:如果同义词的所有者为 `PUBLIC`,则该同义词为公共同义词;如果所有者为某个具体用户,则为私有同义词。 ##### 11. 数据库链管理 - **`dba_db_links`**:展示所有数据库链的...
本文将基于给定的“Oracle基本语法集锦”文件中的部分内容,深入解析Oracle数据库的基础语法,包括表、视图、同义词、存储过程、函数、触发器、游标以及序列的创建与使用。 ### 表的创建 表格是数据库中最基础的...