精华内容
下载资源
问答
  • -- 查看表主键 select a.constraint_name, a.column_name from user_cons_columns a, user_constraints b where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name = '表名'
    -- 查看表结构
    select * from user_tab_columns where table_name = '表名';
    
    -- 查看表主键
    select a.constraint_name, a.column_name 
    from user_cons_columns a, user_constraints b 
    where a.constraint_name = b.constraint_name and b.constraint_type = 'P' and a.table_name = '表名';
    

    查询表结构演示:
    在这里插入图片描述
    查询表主键演示:
    在这里插入图片描述
    喜欢的点个赞❤吧!

    展开全文
  • Oracle查询表主键、外键 项目中用到的一些Sql(oracle下的)总结: 1、查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_...

    Oracle查询表主键、外键 项目中用到的一些Sql(oracle下的)总结: 1、查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表 2、查找表的主键(包括名称,构成列) select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表 3、查找表的唯一性约束(包括名称,构成列) select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table_name = 要查询的表 4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询) a) select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表 查询外键约束的列名 b) select * from user_cons_columns cl where cl.constraint_name = 外键名称   查询引用表的键的列名 c) select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名 5、查询表的所有列及其属性 select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表

    展开全文
  • 在创建之前请必须了解一下两点1,oracle 没有identity,所以需要自己用squence 和 trigger 配合使用实现 自增长。2,oracle中如果使用关键字,需要用 双引号引起了。所以下面例子中出现的双引号可以理解成转义的。...

    在创建表之前请必须了解一下两点

    1,oracle 没有identity,所以需要自己用squence 和 trigger 配合使用 实现 自增长。

    2,oracle中如果使用关键字,需要用 双引号引起了。所以下面例子中出现的双引号可以理解成转义的。

    /    在执行多个sql是用 / 可以区分。

    现在就直接来sql语句。

    检查是否存在该表,并删除

    declare

    num number;

    begin

    select count(1) into num from all_tables where TABLE_NAME = 'TABLEINFO' and OWNER='SCOTT';

    if num=1 then

    execute immediate 'drop table TABLEINFO';

    end if;

    end;

    /

    declare

    num number;

    begin

    select count(1) into num from user_sequences where sequence_name='SEQ_TABLEINFOID';

    if num =1 then

    execute immediate 'drop sequence SEQ_TABLEINFOID';

    end if;

    end;

    /

    declare

    num number;

    begin

    select count(1) into num from user_triggers where trigger_name='TRI_TABLEINFOID';

    if num=1 then

    execute immediate 'drop trigger TRI_TABLEINFOID';

    end if;

    end;

    /

    CREATE TABLE tableinfo

    (

    "id" number(4) NOT null,

    tablename varchar2(40) NOT NULL,

    constraint PK_tableinfoID primary key ("id")

    );

    /

    create sequence SEQ_TABLEINFOID

    minvalue 1

    nomaxvalue

    start with 1

    increment by 1

    nocache;

    /

    create trigger TRI_TABLEINFOID

    before insert on TABLEINFO

    for each row

    declare

    begin

    if inserting and :new."id" is NULL or :new."id" =0 then

    :new."id" :=SEQ_TABLEINFOID.nextval;

    end if;

    end TRI_TABLEINFOID;

    展开全文
  • 代码说明:所有的表主键字段名都设置为ID,如果已存在ID字段,则判断是否是整形,如果不是就重命名字段为[表名ID],然后新增ID,如果不存在则直接添加自增一ID的主键操作说明:打开PQSQL连接数据库后直接执行下面的...

    应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快。本程序适合在导入Oracle数据库时删除不存在主键的情况下运行。

    代码说明:所有的表主键字段名都设置为ID,如果已存在ID字段,则判断是否是整形,如果不是就重命名字段为[表名ID],然后新增ID,如果不存在则直接添加自增一ID的主键

    操作说明:打开PQSQL连接数据库后直接执行下面的详细脚本代码运行即可,脚本有风险(会删除原来的索引跟主键约束),请不要轻易在正式运行的数据库上直接执行

    --Oracle使用游标为所有用户表创建主键语句

    --参考语句如下:

    --查询所有主键约束select * from user_constraints

    --查询所有序列select * from user_sequences;

    --查询所有触发器select * from user_triggers;

    --查询触发器的用户select distinct(table_owner) from user_triggers;

    declare

    addstring NVARCHAR2(2000):=' '; --定义添加字段变量

    renamestring NVARCHAR2(2000):=' '; --定义重命名字段变量

    tablestring NVARCHAR2(2000):=' '; --定义序列变量

    keyidname NVARCHAR2(255):='ID'; --定义主键字段名变量

    tableidname NVARCHAR2(255):=' '; --定义新的字段名变量

    trigerstring NVARCHAR2(2000):=' '; --定义创建触发器字符串变量

    trgname NVARCHAR2(255):=' '; --定义触发器名称变量

    seqstring NVARCHAR2(2000):=' '; --定义创建序列字符串变量

    seqname NVARCHAR2(255):=' '; --定义序列名称变量

    pkname NVARCHAR2(255):=' '; --定义主键索引名称变量

    constring NVARCHAR2(2000):=' '; --定义索引变量

    notnullstring NVARCHAR2(2000):=' '; --定义主键不为空变量

    cursor mycursor is select * from user_tables where TABLESPACE_NAME='SZGABL' ORDER BY TABLE_NAME; --定义游标获取所所有用户数据表名称

    myrecord mycursor%rowtype;  --定义游标记录类型

    CounterName int :=0;  --定义是否存在对应的列名变量

    CounterData int :=0;  --定义是否存在对应的数据类型

    begin

    dbms_output.put_line('declare counter int :=0;begin ');

    open mycursor;  --打开游标

    if mycursor%isopen  then  --判断打开成功

    loop --循环获取记录集

    fetch mycursor into myrecord; --获取游标中的记录

    if mycursor%found then  --游标的found属性判断是否有记录

    begin

    --获取有效的数据表名

    select replace(myrecord.TABLE_NAME,'TB_','') into tablestring from dual;

    select 'SEQ_'||tablestring into seqname from dual;

    select 'TRG_'||tablestring into trgname from dual;

    select 'PK_'||tablestring into pkname from dual;

    select tablestring||UPPER(keyidname) into tableidname from dual;

    --判断当前数据表是否包含字段名为ID的列

    SELECT COUNT(*) INTO CounterName FROM dual WHERE EXISTS(SELECT * FROM user_tab_cols WHERE LOWER(COLUMN_NAME)=LOWER(keyidname) and TABLE_NAME=myrecord.TABLE_NAME);

    if CounterName=0 then

    begin

    dbms_output.put_line('--当前数据表'||myrecord.TABLE_NAME||'不存在字段名为ID的列');

    --添加主键字段

    addstring:='execute immediate ''alter table '||myrecord.TABLE_NAME||' add '||keyidname||' NUMBER'';';

    dbms_output.put_line(addstring);

    --execute immediate addstring;

    --创建一个序列

    seqstring:='select count(*) into counter from dual  where exists(select * from user_sequences where sequence_name='''||seqname||''');if counter>0 then execute immediate ''drop sequence '||seqname||'''; end if; execute immediate '' create sequence SEQ_'||tablestring||'  INCREMENT BY 1 START WITH 1  NOMAXVALUE  NOCYCLE  NOCACHE'';';

    dbms_output.put_line(seqstring);

    --execute immediate seqstring;

    --创建一个触发器

    trigerstring:='select count(*) into counter from dual  where exists(select * from user_triggers where trigger_name='''||trgname||''');if counter>0 then execute immediate ''drop trigger '||trgname||'''; end if; execute immediate '' create trigger TRG_'||tablestring||' BEFORE INSERT ON '||myrecord.TABLE_NAME||' FOR EACH ROW WHEN (new.'||keyidname||' is null) begin  select '||seqname||'.nextval into: new.'||keyidname||' from dual; end'';';

    dbms_output.put_line(trigerstring);

    --execute immediate trigerstring;

    --添加主键约束

    constring:='select count(*) into counter from dual  where exists(select * from user_constraints where constraint_name='''||pkname||''');if counter>0 then execute immediate ''drop constraint '||pkname||'''; end if; execute immediate ''alter table '||myrecord.TABLE_NAME||' add constraint '||pkname||' primary key('||keyidname||')'';';

    dbms_output.put_line(constring);

    --execute immediate constring;

    --更新主键不为空

    notnullstring:='select count(*) into counter from dual  where exists(select * from user_tab_cols where table_name='''||myrecord.TABLE_NAME||'''  and column_name='''||keyidname||''' AND NULLABLE=''Y'' );if counter>0 then execute immediate ''alter table '||myrecord.TABLE_NAME||' modify '||keyidname||' not null''; end if;';

    dbms_output.put_line(notnullstring);

    --execute immediate notnullstring;

    end;

    else

    begin

    --判断当前数据表是否包含字段名为ID且数据类型为NUMBER

    SELECT COUNT(*) INTO CounterData FROM dual WHERE EXISTS(SELECT * FROM user_tab_cols WHERE LOWER(COLUMN_NAME)=LOWER(keyidname) AND DATA_TYPE='NUMBER' and TABLE_NAME=myrecord.TABLE_NAME);

    if CounterData=0 then

    begin

    dbms_output.put_line('--当前数据表'||myrecord.TABLE_NAME||'存在字段名为ID,但数据类型不为NUMBER的列');

    --先重命名字段,然后添加主键字段

    renamestring:='execute immediate ''alter table '||myrecord.TABLE_NAME||' rename column '||keyidname||' to '||tableidname||''';';

    dbms_output.put_line(renamestring);

    --execute immediate renamestring;

    --添加主键字段

    addstring:='execute immediate ''alter table '||myrecord.TABLE_NAME||' add '||keyidname||' NUMBER'';';

    dbms_output.put_line(addstring);

    --execute immediate addstring;

    --创建一个序列

    seqstring:='select count(*) into counter from dual  where exists(select * from user_sequences where sequence_name='''||seqname||''');if counter>0 then execute immediate ''drop sequence '||seqname||'''; end if; execute immediate '' create sequence SEQ_'||tablestring||'  INCREMENT BY 1 START WITH 1  NOMAXVALUE  NOCYCLE  NOCACHE'';';

    dbms_output.put_line(seqstring);

    --execute immediate seqstring;

    --创建一个触发器

    trigerstring:='select count(*) into counter from dual  where exists(select * from user_triggers where trigger_name='''||trgname||''');if counter>0 then execute immediate ''drop trigger '||trgname||'''; end if; execute immediate '' create trigger TRG_'||tablestring||' BEFORE INSERT ON '||myrecord.TABLE_NAME||' FOR EACH ROW WHEN (new.'||keyidname||' is null) begin  select '||seqname||'.nextval into: new.'||keyidname||' from dual; end'';';

    dbms_output.put_line(trigerstring);

    --execute immediate trigerstring;

    --添加主键约束

    constring:='select count(*) into counter from dual  where exists(select * from user_constraints where constraint_name='''||pkname||''');if counter>0 then execute immediate ''drop constraint '||pkname||'''; end if; execute immediate ''alter table '||myrecord.TABLE_NAME||' add constraint '||pkname||' primary key('||keyidname||')'';';

    dbms_output.put_line(constring);

    --execute immediate constring;

    --更新主键不为空

    notnullstring:='select count(*) into counter from dual  where exists(select * from user_tab_cols where table_name='''||myrecord.TABLE_NAME||'''  and column_name='''||keyidname||''' AND NULLABLE=''Y'' );if counter>0 then execute immediate ''alter table '||myrecord.TABLE_NAME||'  modify '||keyidname||' not null''; end if;';

    dbms_output.put_line(notnullstring);

    --execute immediate notnullstring;

    end;

    else

    begin

    dbms_output.put_line('--当前数据表'||myrecord.TABLE_NAME||'存在字段名为ID,且数据类型为NUMBER的列');

    --创建一个序列

    seqstring:='select count(*) into counter from dual  where exists(select * from user_sequences where sequence_name='''||seqname||''');if counter>0 then execute immediate ''drop sequence '||seqname||'''; end if; execute immediate '' create sequence SEQ_'||tablestring||'  INCREMENT BY 1 START WITH 1  NOMAXVALUE  NOCYCLE  NOCACHE'';';

    dbms_output.put_line(seqstring);

    --execute immediate seqstring;

    --创建一个触发器

    trigerstring:='select count(*) into counter from dual  where exists(select * from user_triggers where trigger_name='''||trgname||''');if counter>0 then execute immediate ''drop trigger '||trgname||'''; end if; execute immediate '' create trigger TRG_'||tablestring||' BEFORE INSERT ON '||myrecord.TABLE_NAME||' FOR EACH ROW WHEN (new.'||keyidname||' is null) begin  select '||seqname||'.nextval into: new.'||keyidname||' from dual; end'';';

    dbms_output.put_line(trigerstring);

    --execute immediate trigerstring;

    --添加主键约束

    constring:='select count(*) into counter from dual  where exists(select * from user_constraints where constraint_name='''||pkname||''');if counter>0 then execute immediate ''drop constraint '||pkname||'''; end if; execute immediate ''alter table '||myrecord.TABLE_NAME||' add constraint '||pkname||' primary key('||keyidname||')'';';

    dbms_output.put_line(constring);

    --execute immediate constring;

    --更新主键不为空

    notnullstring:='select count(*) into counter from dual  where exists(select * from user_tab_cols where table_name='''||myrecord.TABLE_NAME||'''  and column_name='''||keyidname||''' AND NULLABLE=''Y'' );if counter>0 then execute immediate ''alter table '||myrecord.TABLE_NAME||'  modify '||keyidname||' not null''; end if;';

    dbms_output.put_line(notnullstring);

    --execute immediate notnullstring;

    end;

    end if;

    end;

    end if;

    dbms_output.put_line('');

    end;

    else

    exit;

    end if;

    end loop;

    else

    dbms_output.put_line('--游标没有打开');

    end if;

    close mycursor;

    dbms_output.put_line('end;');

    end;

    0b1331709591d260c1c78e86d0c51c18.png

    展开全文
  • 背景因为项目某些模块的数据结构设计没有严格按照某规范设计,所以只能从数据库中查询数据结构,需要... 查询表基本信息selectutc.column_name,utc.data_type,utc.data_length,utc.data_precision,utc.data_Scale,u...
  • 主键在哪个字段上利用Oracle中系统自带的两个视图可以实现查看主键信息,语句如下:select a.constraint_name, a.column_name from user_cons_columns a ...Oracle中把一张表查询结果插入到另一张中1....
  • Oracle查询表主键、外键 1. 查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name ...
  • 作为拥有该的用户,您可以执行以下操作:select constraint_name, status, deferrable, deferred, validated, generatedfrom user_constraintswhere constraint_type = 'P' and table_name = 'Table Name'更新:我...
  • --查询某个是否有唯一主键select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = ‘P‘ and au.table_name =‘表名‘--查询某个...
  • 下面为您介绍的语句用于实现Oracle查询用户所有,如果您对oracle查询方面感兴趣的话,不妨一看。select * from all_tab_comments-- 查询所有用户的,视图等select * from user_tab_comments-- 查询本用户的,...
  • oracle重建索引语句

    2021-05-06 01:36:46
    Oracle 修改索引组织 与普通一个,索引组织也可以使用 ALTER TABLE 语句完成。但是,索引组织主键约束不能被删除、延期和禁止。 1.移动索引组织 索引组织是基于 B Oracle 修改索引组织 与普通一个,...
  • --授予权限grant insert,select,update,delete on table to user;grant dba,resource to ytpbl;...--撤销revoke--Oracle查询用户,相关信息...--用户SELECT * FROM DBA_USERS;SELECT * FROM ALL_USE...
  • --查询所有用户的、视图等select * from user_tab_comments; --查询当前用户的所有、视图等select * from all_col_comments; --查询所有用户的的列名和注释select * from user_col_comments; --查询当前用户...
  • oracle创建语句

    2021-05-03 06:39:38
    oracle建表语句create table usptotest ( pn varchar(10) not null, isd varchar(20) default '' not null , title varchar(150) default '' not null , abst varchar(2000) default '' not null , appno varchar(20...
  • 工作中要用到 Oracle 10g,经常要向其中的某张表插入事件发生的日期及时间。专门就 Oracle 的日期及时间显示方式和插入方式记一笔。像 Number,varchar2 等内置的数据类型一样,Oracle 用 Date 这个内置的数据类型来...
  • sql表结构怎幺查询,desc 表名查询表结构语句你用的什幺查询器?是pl/sql幺?一般查询器,用ctrl+鼠标左键 点击表名的话,都会弹出表的结构的。oracle怎幺通过sql查看表的结构分两种方法:1、在命令窗口通过如下语句...
  • --解锁select sess.sid,sess.serial#,lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_modefrom v$locked_object lo,dba_objects ao,v$session sesswhere ao.object_id = lo.object_id and lo....
  • Oracle 常用的查询语句

    2021-04-28 06:06:21
    日期/时间 相关查询 获取当前月份的第一天 运行这个命令能快速返回当前月份的第一天。... 获取当前月份的最后一天 这个查询语句日期/时间 相关查询获取当前月份的第一天运行这个命令能快速返回当前月份的第一天...
  • 规则---〉分区 索引组织 簇 修改列名 alter table 表明 rename column rename 老列名 to 新列名 添加 字段 alter table 表名 add(字段名 类型); 删除字段 alter table 表名 drop column 字段名 修改列属性 ...
  • 在编写程序时,数据库结构会经常变化,所以经常需要编写一些数据库脚本,编写完成后...判断Oracle表是否存在的方法sql;">declare tableExistedCount number; --声明变量存储要查询是否存在beginselect count(...
  • oracle查询表信息

    2020-12-19 00:18:57
    oracle查询表信息(索引,外键,列等)oracle中查询表的信息,包括表名,字段名,字段类型,主键,外键唯一性约束信息,索引信息查询SQL如下: 1、查询出所有的用户表 select * from user_tables 可以查询出所有的用户...
  • 背景 因为最近在搞代码生成器,所以需要...查询表信息 select a.table_name as tableName, a.comments from user_tab_comments a left join user_cons_columns b on a.table_name = b.table_name where a.Table_Name=
  • 1.联合主键,SQL语句怎么写建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。1.在数据库提供的GUI环境中建立(以SQL7为例)。输入信息后按Ctrl键同时选中多行,...
  • 通过搜索摸索,总结了一下 oracle查询表的信息,包括表名,字段名,字段类型,主键, 外键唯一性约束信息,索引信息查询 SQL 如下,希望对大家有所帮助:1、查询出所有的用户表select * from user_tables 可以查询出所有的...
  • oracle查询语句大全

    2021-05-03 07:53:20
    今天想查询一下Oracle数据库下所有的表名或某个用户下的所有,半天没想起来.还是在网上找到了答案.select table_name from all_tables;//所有的表明select table_name from user_all_tables;//用户的所有的一下是...
  • 表格1:tid(主键)//这里没有外键2:sid(主键)//这里也没有外键3:TidSidiid(primary key)foreign key(Tid,Sid) references table1(tid).table2(sid)In table3 i want to make a composite foreign key or ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 82,365
精华内容 32,946
关键字:

oracle查询表主键语句