Oracle数据库关键字用法,MERGE、START WITH 、OVER(PARTITION BY) 、MINUS

Oracle数据库关键字用法,MERGE、START WITH 、OVER(PARTITION BY) 、MINUS,第1张

1.MERGE 判断table1和table2是否满足ON中条件,如果满足则用table2表去更新table1表,如果不满足,则将table2表数据插入table1表但是有很多可选项,表关联更新

MERGE  INTO table1 a

    USING(

                 select b.id bid,b.name bname from table2 b left join table1 c on c.id = b.id

)bb on(a.id = bb.bid)

WHEN MATCHED THEN

UPDATE SET

        a.name = bb.bname

WHEN NOT MATCHED THEN

INSERT(

a.id,a.name

)VALUES(

bb.bid,bb.bname

)

2.START WITH... CONNECT BY PRIOR...的作用,简单来说,就是将一个树状结构存储在一张表里,比如菜单表

select * from table_menu start with menu_id='210' connect by prior menu_id=menu_parent_id

查询菜单id为210下所有子菜单包括id为210的菜单。

3.OVER(PARTITION BY)根据表中字段分割后在排序取第一条

select * from (select r.*, row_number() over(PARTITION BY 字段1,字段2 order by 字段3 desc) rn

from table1 r

) where rn = 1

4.MINUS 表之间比较

select  id,name from table1

minus

select id,name from table2

table1中有table2中无或者table1中id,name与table2中不同

关键字是惟一能标识一个记录的数据项。

在数据库中一个表或一个文件中可能存储着很多记录,为了能惟一地标识一个记录,必须在一个记录的各个数据项中,确定出一个或几个数据项,把它们的集合称为关键字。通常,只需用一个数据项作为关键字。但是为了将数据之间的关系连续起来,记录可以有多个关键字。

扩展资料:

通过关键字可以知道哪些文件和表是有联系的,可以为有关数据库 *** 作和数据分析提供方便,例如常见表的合并;还通过关键字来测试系统存取效率。关键字的速度与数据库文件的逻辑结构和物理结构有关。

关键字的多少与文件是单关键字文件还是多关键字文件有关。若文件中的一个记录只有一个惟一标识记录的主关键字,则称单关键字文件;若文件中的记录除了含有一个主关键字外,还含有若干个次关键字,则称为多关键字文件。

你好:

主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。

作用

1)保证实体的完整性

2)加快数据库的 *** 作速度

3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

建立主键应该遵循的原则

1. 主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2. 主键应该是单列的,以便提高连接和筛选 *** 作的效率。

注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。

3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

5. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

特点

1) 一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。

2)主键的值不可重复,也不可为空(NULL)。

定义主键的方法

在表的设计视图中,选择要定义为主键的一个或多个字段(如果是单字段,可以单击该字段左侧的选定器;如果是多个字段,可以先按住CTRL键,再次单击这些字段的选定器),然后单击工具栏上的"主键"按钮,或者单击右键,从快捷菜单中选择“主键”命令。

定义主键后,在主键的左侧会显示一个钥匙状的图标,表示该字段已被设为主键,如果没有定义主键,则在保存表时,ACCESS会d出一个消息对话框,询问用户是否创建主键。如果选择“否”,则不创建主键;选择“是”,则ACCESS会自动创建一个自动编号类型的字段并添加到表的第一列,作为该表的主键。

若要取消主键,可以先选定该主键字段,在单击工具栏上的“主键”按钮。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6632382.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存