数据库函数总结

1、将字段的值转换为汉字的函数:

F_get_value(‘字段’,’’)

Decode(‘’,’’,’’,’’,…)

eg:

f_get_value_name(a.business_place_code,'business_place_code') 营业区域 decode(app_status,'1','运行','2','归档','3','撤销')

2、substr() 函数返回字符串的一部分。

语法:substr(string,start,length)

string - 指定的要截取的字符串。

start - 必需,规定在字符串的何处开始。

正数 - 在字符串的指定位置开始

负数 - 在从字符串结尾的指定位置开始

0 - 在字符串中的第一个字符处开始

length - 可选,指定要截取的字符串长度,缺省时返回字符表达式的值结束前的全部字符。

3、--存储过程说明:根据传入的下拉属性名,以及参数值,返回对应的显示值。只处理字符类型,出错就返回null

--参数说明:1)in_dddw_name:下拉属性名;

-- 2)in_param_code:代码值;

--返回值:对应的显示值;

f_get_display_value

(in_dddw_name in varchar2,

in_param_code in varchar2)

4、日期转换函数:

to_date('20xx-12-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')

5、 NVL( string1, replace_with)

功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。

注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数进行类型转换。

6、instr :截取到特定字符

select substr(a.address,1,INSTR(a.address,'【',1)-1),a.*,rowid from cim_customer a where lengthb(a.address)>64 and

a.business_place_code='150111';

---抄表机上装报-65 可能是发送的时候有两条记录,删除掉一个就行了

select t.user_no, count(distinct t.id_no) from df_write_middle_meter t where t.mon=20xx07 group by t.user_no

having count(distinct t.id_no)>1;

Delete from df_write_middle_meter t WHERE t.id_no='CBXZ45606';

SELECT * FROM df_write_middle_meter t WHERE t.user_no='0105000487';

SELECT * FROM df_write_middle_meter t WHERE t.id_no='CBXZ42521';

游标的定义:

每一个游标必须有四个组成部分这四个关键部分必须符合下面的顺序;

1.DECLARE 游标

2.OPEN 游标

3.从一个游标中FETCH 信息

4.CLOSE 或DEALLOCATE 游标

通常我们使用DECLARE 来声明一个游标声明一个游标主要包括以下主要内容:

游标名字

数据来源(表和列)

选取条件

属性(仅读或可修改)

其语法格式如下:

DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR

FOR select_statement

[FOR {READ ONLY | UPDATE [OF column_name [,...n]]}]

其中:

cursor_name

指游标的名字。

INSENSITIVE

表明MS SQL SERVER 会将游标定义所选取出来的数据记录存放在一临时表内(建立在tempdb 数据库下)。对该游标的读取操作皆由临时表来应答。因此,对基本表的修改并不影响游标提取的数据,即游标不会随着基本表内容的改变而改变,同时也无法通过

游标来更新基本表。如果不使用该保留字,那么对基本表的更新、删除都会反映到游标中。

另外应该指出,当遇到以下情况发生时,游标将自动设定INSENSITIVE 选项。 在SELECT 语句中使用DISTINCT、 GROUP BY、 HAVING UNION 语句; 使用OUTER JOIN;

所选取的任意表没有索引;

将实数值当作选取的列。

SCROLL

表明所有的提取操作(如FIRST、 LAST、 PRIOR、 NEXT、 RELATIVE、 ABSOLUTE)都可用。如果不使用该保留字,那么只能进行NEXT 提取操作。由此可见,SCROLL 极大地增加了提取数据的灵活性,可以随意读取结果集中的任一行数据记录,而不必关闭再 重开游标。

select_statement

是定义结果集的SELECT 语句。应该注意的是,在游标中不能使用COMPUTE、COMPU- TE BY、 FOR BROWSE、 INTO 语句。

READ ONLY

表明不允许游标内的数据被更新尽管在缺省状态下游标是允许更新的。而且在UPDATE或DELETE 语句的WHERE CURRENT OF 子句中,不允许对该游标进行引用。 UPDATE [OF column_name[,…n]]

定义在游标中可被修改的列,如果不指出要更新的列,那么所有的列都将被更新。当游标被成功创。

建立同义词:

我们在做程序的时候,特别是做Web开发的时候,往往需要将两个或者多个不同IP的数据库进行连接,来获取数据,这时,如果专门写一个程序或者WebService来连接,时间太长,事情太多,麻烦。所以,在知道对方数据库IP地址、用户名和密码的情况下,可以创建一个同义词进行数据库同步。

在创建同义词前,必须先创建一个数据库连接,这个是当你在本地查询其他位置的表时,数据库之间的一个连接,具体方法是在PL/SQL中执行:

CREATE DATABASE LINK link

CONNECT TO username IDENTIFIED BY password

USING ‘connectstring’

解释:link 这个是你的连接名称,可以随便起个名字。

username是对方数据库的用户名

password是对方数据库的密码

connectstring是对方数据库的IP地址

然后才能建立同义词,语句如下:

create SYNONYM synooym for object@oracle9i;

其中synooym表示要创建的同义词的名称,也就是到时候你在本地程序直接查询(要select * from )的

表名

object表示远程数据库表,视图,序列等我们要创建同义词的对象的名称。 oracle9i是远程数据库名称

然后再本地数据库中或者PL/SQL中 select * from 试试

 

第二篇:数据库知识总结

第一章

1.

2.

3.

4. 数据库管理的目标:在适当的时候以适当的形式向适当的人提供适当的数据。 数据管理的内容:组织业务的管理(学生的信息);技术的管理(数据库的建立等) 数据库管理的发展阶段:人工,文件,数据库系统 数据库系统特点(5):数据一体化,结构化;数据共享(不同应用用一个,不同应用同时,未来应用也可以,多种语言接口);较少冗余;数据独立(独立于应用程序);数据统一控制

新型数据库:分布式,专家,多媒体,工程,面向对象,并行,空间

数据库DB:按照数据结构来组织、存储和管理数据的仓库(仅仅是放数据的地方,不管理)

数据库管理系统(DBMS):操纵和管理数据库的大型软件(oracle,mysql,vf,access) 数据应用系统(DBAS):基于dbms的软件(有界面),包括(数据库系统,应用程序,用户)

数据库系统(DBS):包括上述所有

DBS组成:数据库系统软件,数据库系统用户,数据库系统硬件

DBMS功能:数据定义,数据管理,数据库建立维护,数据通讯

数据库分层(三层):模式(概念层,所有字段,create table,DDL),外模式(外部层,模式的子集,DML),内模式(内部层,描述物理存储方式,唯一的);

外模式—模式映射(逻辑独立性),模式—内模式映射(物理独立性)

数据模型:数据库系统中用于提供信息表示和操作手段的形式构架。

数据模型组成(3):数据定义,数据操作,数据约束

数据模型分为:概念(ER),逻辑/基本(层次,网状,关系),物理

层次模型:优点(存储快,结构清楚,易拓展);缺点(不灵活,冗余大)

网状模型:优点(表现复杂,冗余小);缺陷(难查询,难修改)

关系模型:优点(灵活,删查方便);缺点(查找费时,不能满足空间关系) 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.

第二章

1.

2.

3.

4.

5.

6.

7.

8.

9. 关系模型:数据库中每个关系的框架集合 关系模型包括(3):数据结构,操作集合,完整性约束 关系模式:关系的属性名序列 关系模式(4):关系命,属性名,属性向域的映像(private string),属性间数据依赖关系 关系操作:关系代数,关系演算(元组,域) 关系操作特点:一次多个元组,语言非过程化,数据操作,定义,控制集成到一种语言 完整性约束(3):实体完整性(主属性不为NULL),参照完整性,用户定义完整性(自定义0-100) 视图:反映局部逻辑结构,系统中仅存放其定义,实际数据并不依赖于视图而是依赖于数据模式来存放在数据库中。是一个虚关系集。 关系模型的特点

10.

11.

12.

13.

14.

15.

1、对用户提供统一的单一数据结构形式。 2、关系模型的逻辑数据库结构和相应的操作完全独立于数据的存储方式,确保了高度的数据独立性。 3、数据库的操作都可归结为关系的运算,使数据库的理论建立在坚实的数学基础上。 4、关系数据语言与一阶谓词逻辑的内在联系,为以关系数据库为基础的推理系统和知识库的研究提供了方便。 5、简化数据管理人员的工作,易于对数据库进行重组和控制。 6、便于向分布式方向发展。 7、运行效率不够高。 8、建模能力较弱,不适于管理复杂对象。 关系数据语言特点(4):灵活,非过程化,可单独使用也可嵌入诸语言,面向集合 关系数据语言(4):ISBL(纯代数),QUEL(元组演算),SQL(类似元组演算),QBE(域演算) 无限关系:关系{ t | ?R ( t ) }表示所有不在R 中的元组的集合,在这种情况下为了判定一个命题的真假可能需要无穷次验证,这种关系为无限关系。 安全运算:不产生无限关系和无穷次验证的运算 安全表达式:安全运算的表达式 安全限制:为了保证运算为安全运算所加的限制。

第三章

1.

2.

3. 4.

5.

6.

7.

8.

9.

10. SQL有3种语言: DDL,DML,DCL 数据定义(3):关系定义(table),视图定义(view),索引定义(index) Indentity列:标识列,由系统自动生成能够标识表中每一行数据的唯一序列值 视图:一个虚拟表,其内容由查询定义(可以被查询和更新) 表和视图的区别:表是以物理形式存在的,而视图不以物理形式存在 视图更新:仅仅能更新“可更新视图”,并且对视图的更新最终会作用在基本表上面 如果删除了基本表,那么由表的查询所定义的视图也会被删除 索引:数据库表中一列或多列的值进行排序的一种结构(建立在属性上) 存储过程:在大型数据库系统中,一组为了完成特定功能的SQL 语句集 存储过程的目的:可以完成既定的功能,而不需要写一长串的代码,安全性高、减少网

络流量、提高代码的重用性,减少预编译时间、执行速度快。

11. 触发器规则和防止非法修改

(1)只有数据表的属主可以创建或者删除数据表上的触发器。

(2)不同于视图和存储过程,在触发器内部许可权限应用的方式是一样的,就同通常情况下的SELECT语句行为类似。这样,如果某位用户无权更新table_b而他又更新了table_a并触发了trigger_a去试图更新table_b,那么触发器将失败而且修改也不可进行。

(3)在一个触发器里你可以引用最多192个其他数据库对象,比如表、视图等等。

(4)不允许任何形式的Create和Drop命令。然而,临时表可以被触发器所调用的存储过程调用。

(5)不允许修改表/数据库。

12. 触发器作用(4):安全;审计;实现复杂完整性规则;实现复杂非完整性规则

13. 通信:主语言给sql提供参数,sql把结果通过主变量(主语言的变量)和游标(数据缓

存区)给主语言

14. ODBC(应用程序,ODBC管理器,驱动程序管理器,API,驱动程序,数据源)

15. 可定义的数据源(3):用户,系统,文件

16.

17.

18. 一种用于执行SQL语句的Java API

第四章

1. 一个关系可能存在的问题:数据冗余;插入异常;删除异常

2. 键:任意一个属性(字段)

3. 候选键:表中的一个或多个属性(字段),用于惟一地标识表中的某一条记录(需要最

小化)

4. 主键:候选键里的其中一个

5. 超键:包含候选键的属性集(不需要最小化)

6. 全键:整个属性组都是键

7. 主属性:候选键中任意一个属性

8. 非主属性:候选键外的属性

9. 平凡函数依赖:(姓名,学号)?学号;即学号是其中的一个

10. 完全函数依赖:(学号,课程号)?成绩,但是学号-\→ 成绩,课程号-\→ 成绩,必

须要学号课程号才能决定成绩,所以是完全的

11. 部分函数依赖:(姓名,学号)?班级,并且有姓名?班级

12. 传递函数依赖:A,B?C,C?D,并且C !?A/B,且C !? A,B,则有A,B?D

13. 范式:符合某一种级别关系模式的集合

14. 范式的关系:1NF?2NF ? 3NF? BCNF? 4NF ?5NF

15. 关系规范化:一个低一级范式的关系模式,通过投影运算可以转换为若干个高一级范式

的关系模式的集合

16. 第一范式:关系模式中的每个属性值都是不可再分的基本元素(拆分就可以转为第一范

式)

17. 第一范式存在的问题:冗余、修改不易、插入异常、删除异常

18. 第二范式:关系模式R是第一范式,且每个非主属性都完全函数依赖于R的主键(即

需要R的主键中的所有属性才能确定非主属性)

19. 例:选课关系 SCI(,GRADE,CREDIT)

在应用中使用以上关系模式有以下问题:

a. 数据冗余,假设同一门课由40个学生选修,学分就重复40次。

b. 更新异常,若调整了某课程的学分,相应的元组CREDIT值都要更新,有可能会出

现同一门课学分不同。

c. 插入异常,如计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能

把课程和学分存入。

d. 删除异常,若学生已经结业,从当前数据库删除选修记录。某些门课程新生尚未选

修,则此门课程及学分记录无法保存。

原因:非关键字属性CREDIT仅函数依赖于CNO,也就是CREDIT部分依赖组合关键字(SNO,CNO)而不是完全依赖。

解决方法:分成两个关系模式 SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。新关系包括两个关系模式,它们之间通过SC1中的外关键字CNO相联系,需要时再进行自然联接,恢复了原来的关系。

20. 第二范式仍然存在的问题:冗余、修改不易、插入异常、删除异常

21. 第三范式:关系R是2NF,且其非主属性之间不存在函数依赖,即没有任一个非主属性

函数依赖于另一个非主属性(非主属性相互独立)

22. 3NF的关系既不存在非主属性对码的部分函数依赖(只有完全函数依赖),也不存在非

主属性对码的传递函数依赖

23. 解决办法:切断传递的关系,分成多个关系,如:SD(,DNAME,DADDR),

DNAME?DADDR,分解成S(,DNAME),D(,DADDR)

24. BCNF范式(修正的第三范式):每一个决定因素都包含码的3NF

25. 多值依赖:对一个关系模式的任意一个可能关系,如果其中两个元组在X属性上的值相

等,且交换这两个元组在Y属性上的值而得到的两个新元组仍在这个关系中,则称Y多值依赖于X,记为X?->Y。

SCB(CNAME, TEACHER, BOOK)

CNAME?->TEACHER

26. 非平凡多值依赖:若X?->Y,且X U Y<>U, 则称X?->Y为非平凡的多值依赖,否则为

平凡的多值依赖。

27. 第四范式:若关系R中只要有多值依赖,其决定因素必包含码,则R为4NF

28. 解决办法:若非4NF的关系模式R存在着多值依赖X?->Y, 可将非4NF的关系模式分解

为两个模式:

(1)X和Y

(2)X和R中除了Y 的所有属性

第五章

1.

2.

3.

4.

5.

6.

7.

8.

9. 数据库安全性:保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏 数据库安全性的目标:企图破坏安全的人所花费的代价应远远超出它们所得到的利益。 安全控制方法(3):用户识别(指纹),密码转换(加密),存取控制(U盾) 角色:拥有同样存取权限的某一类用户。 授权:将某些权限授予或传递给某一角色或用户。 授权语法:grant on to [with grant option] 创建删除角色:create/drop role 数据库完整性:数据的正确性,有效性 完整性约束条件(3):值约束(小于100)和结构约束;静态约束(某一个状态时的约

束)和动态(数据库改变时候的约束)约束;立即执行约束和延迟执行约束(由于没有参照先不插入该属性值,加入参照之后再插入)

实体完整性(2):元组检查,断言

参照完整性(3):隐含规则(缺省规则),级联规则(删了这个也要删那个,用于更新),置空规则(删除一个指导老师的时候,学生的指导老师外码要设为null,用于删除) 用户自定义完整性(3):非空限制,属性检查(基于属性;基于元组),域约束(整个列都要满足约束)

基于元组的检查,当不属于被检查属性的属性修改的时候,也会被执行

非空限制不适用的情况:不允许插入values(’la vista’ , ’New York’);置空规则无效 完整性实现:系统提供定义完整性约束条件的功能;提供检查完整性约束条件的方法 事务:一个不可分割的操作序列。一个程序或一段程序的一次单独执行。

事务状态

事务必须处于以下状态之一: 10. 11. 12. 13. 14. 15. 16. 17. 18.

(1)活动状态:初始状态,事务执行时处于这个状态。

(2)部分提交状态:最后一条语句被执行之后。

(3)失败状态:发现正常的执行不能继续后。

(4)中止状态:事务回滚并且数据库已被恢复到事务开始执行前的状态后。

(5)提交状态:成功完成后。

成功完成执行的事务称为已提交事务。

提交的或中止的事务称为已结束事务。

19.

20. 事务的ACID:原子性(要不做要不不做);一致性;隔离性(可以并发执行,但不被干

扰,);持久性(接下来的不能对其有影响)

21. 并发操作后果(3):丢失修改;污读;不能重复读

22. 封锁(并发控制):事务可向系统发出请求,对某个数据对象加锁,取得对这个数据对

象的一定的控制权。

23. 锁种类(2):共享锁(加了S,其他也能加S,不能加X);排他锁(加了X,其他什么

都不能加)

24. 封锁对象(2):逻辑单元(属性,元组,索引);物理单元(磁盘记录)

25. 可串行化:当且仅当某组事务的一定交叉调度产生的结果和这些事务的某一串行调度的

结果相同,则称这个交叉调度是可串行化的。

26. 隔离层次:读未提交(read uncommitted),读提交(read committed),可重复读(read

repeatable),可串行化(serializable)

27. 解决活锁:先来先服务

(1)每一事务一次申请所需的所有锁。

(2)给所有的数据对象规定一个线性顺序,要求每一个事务按这个次序申请它所需的锁。

(3)事先根本不预防死锁的产生,而是周期性地检查。如果有死锁存在,至少让其中一个事务重新启动,而且它对数据库产生的影响必须被撤销。

相关推荐