Oracle 12cでテーブルの主キー (primary key)を取得する

2021年11月11日

環境

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Oracle 12c
Windows Server 2012 R2
A5:SQL Mk-2
Oracle 12c Windows Server 2012 R2 A5:SQL Mk-2
Oracle 12c
Windows Server 2012 R2
A5:SQL Mk-2

書式

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT
別名1.TABLE_NAME,
別名1.COLUMN_NAME
FROM
USER_CONS_COLUMNS 別名1
INNER JOIN USER_CONSTRAINTS 別名2
ON 別名1.CONSTRAINT_NAME = 別名2.CONSTRAINT_NAME
WHERE
別名2.TABLE_NAME = 'テーブル名'
AND 別名2.CONSTRAINT_TYPE = 'P'
ORDER BY
別名1.POSITION;
SELECT 別名1.TABLE_NAME, 別名1.COLUMN_NAME FROM USER_CONS_COLUMNS 別名1 INNER JOIN USER_CONSTRAINTS 別名2 ON 別名1.CONSTRAINT_NAME = 別名2.CONSTRAINT_NAME WHERE 別名2.TABLE_NAME = 'テーブル名' AND 別名2.CONSTRAINT_TYPE = 'P' ORDER BY 別名1.POSITION;
SELECT
  別名1.TABLE_NAME,
  別名1.COLUMN_NAME
FROM
  USER_CONS_COLUMNS 別名1
    INNER JOIN USER_CONSTRAINTS 別名2
    ON 別名1.CONSTRAINT_NAME = 別名2.CONSTRAINT_NAME
WHERE
    別名2.TABLE_NAME = 'テーブル名'
AND 別名2.CONSTRAINT_TYPE = 'P'
ORDER BY
  別名1.POSITION;

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
SELECT
KD.TABLE_NAME,
KD.COLUMN_NAME
FROM
USER_CONS_COLUMNS KD
INNER JOIN USER_CONSTRAINTS CFT
ON KD.CONSTRAINT_NAME = CFT.CONSTRAINT_NAME
WHERE
CFT.TABLE_NAME = 'NEWS_TBL'
AND CFT.CONSTRAINT_TYPE = 'P'
ORDER BY
KD.POSITION;
SELECT KD.TABLE_NAME, KD.COLUMN_NAME FROM USER_CONS_COLUMNS KD INNER JOIN USER_CONSTRAINTS CFT ON KD.CONSTRAINT_NAME = CFT.CONSTRAINT_NAME WHERE CFT.TABLE_NAME = 'NEWS_TBL' AND CFT.CONSTRAINT_TYPE = 'P' ORDER BY KD.POSITION;
SELECT
  KD.TABLE_NAME,
  KD.COLUMN_NAME
FROM
  USER_CONS_COLUMNS KD
    INNER JOIN USER_CONSTRAINTS CFT
    ON KD.CONSTRAINT_NAME = CFT.CONSTRAINT_NAME
WHERE
    CFT.TABLE_NAME = 'NEWS_TBL'
AND CFT.CONSTRAINT_TYPE = 'P'
ORDER BY
  KD.POSITION;

実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
TABLE_NAME COLUMN_NAME
NEWS_TBL ID
NEWS_TBL TYPE
TABLE_NAME COLUMN_NAME NEWS_TBL ID NEWS_TBL TYPE
TABLE_NAME	COLUMN_NAME
NEWS_TBL	ID
NEWS_TBL	TYPE

 

Oracle 12c

Posted by arkgame