oracle中的数据库怎样设置主键?

oracle中的数据库怎样设置主键?,第1张

建表要点:


1 Gengeral 中定义表名,表空间。


2 Columns 对字段进行定义。


3 在Key选择主键字段,定义主键名称,一般用表名。


不能“Apply” 一般是定义不完全。

oracle:

甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。

2017年6月7日发布的2017年美国《财富》500强,甲骨文公司排名第81位。2017年6月,《2017年BrandZ最具价值全球品牌100强》公布,甲骨文公司排名第46位。

20世纪约70年代 一间名为Ampex的软件公司,正为中央情报局设计一套名叫Oracle的数据库,埃里森是程序员之一。

1977年埃里森与同事Robert Miner创立“软件开发实验室”(Software Development Labs),当时IBM发表“关系数据库”的论文,埃里森以此造出新数据库,名为甲骨文。

1978年 公司迁往硅谷,更名为“关系式软件公司”(RSI)。RSI在1979年的夏季发布了可用于DEC公司的PDP-11计算机上的商用ORACLE产品,这个数据库产品整合了比较完整的SQL实现,其中包括子查询、连接及其他特性。美国中央情报局想买一套这样的软件来满足他们的需求,但在咨询了IBM公司之后发现IBM没有可用的商用产品,他们联系了RSI。于是RSI有了第一个客户。

最先提出“关系数据库”的IBM采用RSI的数据库。1982年再更名为甲骨文(Oracle)。

在Oracle中查看所有的表: select from tab/dba_tables/dba_objects/cat; 看用户建立的表 : select table_name from user_tables;//当前用户的表 select table_name from all_tables;//所有用户的表 select table_name from dba_tables;//包括系统表 select from user_indexes//可以查询出所有的用户表索引查所有用户的表在all_tables 主键名称、外键在all_constraints 索引在all_indexes 但主键也会成为索引,所以主键也会在all_indexes里面。具体需要的字段可以DESC下这几个view,dba登陆的话可以把all换成dba 1、查找表的所有索引(包括索引名,类型,构成列):select t,iindex_type from user_ind_columns t,user_indexes i where tindex_name = iindex_name and ttable_name = itable_name and ttable_name = 要查询的表 A查看索引跟哪个表,表里的哪个字段 select from user_ind_columns B查看用户下的所有索引 select from user_indexes 2、查找表的主键(包括名称,构成列):select cu from user_cons_columns cu, user_constraints au where cuconstraint_name = auconstraint_name and auconstraint_type = 'P' and autable_name = 要查询的表 3、查找表的唯一性约束(包括名称,构成列):select column_name from user_cons_columns cu, user_constraints au where cuconstraint_name = auconstraint_name and auconstraint_type = 'U' and autable_name = 要查询的表 4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):select from user_constraints c where cconstraint_type = 'R' and ctable_name = 要查询的表查询外键约束的列名:select from user_cons_columns cl where clconstraint_name = 外键名称查询引用表的键的列名:select from user_cons_columns cl where clconstraint_name = 外键引用表的键名 5、查询表的所有列及其属性select t,cCOMMENTS from user_tab_columns t,user_col_comments c where ttable_name = ctable_name and tcolumn_name = ccolumn_name and ttable_name = 要查询的表

一般的情况下,表的主键是必要的,没有主键的表可以说是不符合设计规范的。
SELECT table_name FROM User_tables t WHERE NOT EXISTS
(SELECT table_name FROM User_constraints c WHERE constraint_type = 'P' AND ttable_name=ctable_name)
其它相关数据字典解释
user_tables 表
user_tab_columns 表的列
user_constraints 约束
user_cons_columns 约束与列的关系
user_indexes 索引
醒找一个表中的主键
select distinct aowner,aconstraint_type,atable_name,bcolumn_name from all_constraints a,all_cons_columns b where aOWNER='TMLHSYS2' and aTABLE_NAME='TB_BUSINFO' and aconstraint_type='P' and aCONSTRAINT_NAME=bCONSTRAINT_NAME;
TB_BUSINFO 替换为自己的表名,TMLHSYS2替换为自己的登录名

1、查找表的所有索引(包括索引名,类型,构成列):select t,iindex_type from user_ind_columns t,user_indexes i where tindex_name = iindex_name and ttable_name = itable_name and ttable_name = 要查询的表2、查找表的主键(包括名称,构成列):select cu from user_cons_columns cu, user_constraints au where cuconstraint_name = auconstraint_name and auconstraint_type = 'P' and autable_name = 要查询的表3、查找表的唯一性约束(包括名称,构成列):select column_name from user_cons_columns cu, user_constraints au where cuconstraint_name = auconstraint_name and auconstraint_type = 'U' and autable_name = 要查询的表4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):select from user_constraints c where cconstraint_type = 'R' and ctable_name = 要查询的表查询外键约束的列名:select from user_cons_columns cl where clconstraint_name = 外键名称查询引用表的键的列名:select from user_cons_columns cl where clconstraint_name = 外键引用表的键名5、查询表的所有列及其属性

举个例子(但不是最优的),看是否有用,如查找scottemp表的primary key字段
1以SCOTT用户登录。
2执行以下代码。
SET PAGESIZE 0
SET LONG 90000
SELECT dbms_metadataget_ddl('TABLE', table_name) FROM user_tables where table_name='EMP';
3查找类似CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")的内容,后面部分就是表的主键字段。
如不知表所属的owner,可以用:select owner,table_name from dba_tables where table_name='表名';
希望以上对你有所启示。

USER_CONSTRAINT视图有相关记录的
SELECT owner,constraint_name,constraint_type,table_name FROM USER_CONSTRAINTS where constraint_type like '%P%';


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

原文地址: http://outofmemory.cn/yw/10497641.html

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

发表评论

登录后才能评论

评论列表(0条)

保存