SQLメモ

# SQL句メモ

## 共通

### 基本

```sql
SELECT 
    * 
FROM テーブル1 A 
WHERE A.カラム1 = :PARA1 
AND   A.カラム2 = :PARA2 
ORDER BY 
     A.カラム1 
    ,A.カラム2
```

### サブクエリ

```sql
from テーブル1 A 
--履歴・氏名
LEFT  OUTER JOIN テーブル2 B 
      ON A.カラム1 = B.カラム1 
     AND A.カラム2 = B.カラム2 

```


### 間の値を取得

```sql
from テーブル1 A 
where :IDO_DT BETWEEN A.カラム3  AND A.カラム4 

from テーブル1 A 
where A.カラム3 BETWEEN :VAL_FROM  AND :VAL_TO 

```

### LIKE記述

```sql
SELECT	ENAME
FROM	EMP
WHERE	ENAME LIKE '%A%'
```

%（パーセント）　：任意の文字列
_（アンダーバー）：任意の一文字

### ROW_NUMBER

```sql
select 
    ROW_NUMBER() over( order by A.INNOXXX ) as row_number
   ,A.* 
from TBL_XXXX  A 

```


### CASE文・式

#### CASE式

```sql
CASE 条件 
    WHEN 条件の値 THEN 設定値    
    WHEN 条件の値 THEN 設定値
    ELSE               設定値
END   
```

#### CASE文

```sql
CASE  
    WHEN 条件式 THEN 設定値 
    WHEN 条件式 THEN 設定値
    ELSE             設定値
END CASE
```

## ORACLE

#### 日付変換

```sql
	to_date('2011/12/15','YYYY/MM/DD')

```

### ダミー領域
```sql
	select 'dammytest' 
	from dual
```


### テーブル一覧抽出

テーブル一覧抽出

```sql
select 
	A.TABLE_NAME 
	,B.TABLE_TYPE
	,B.COMMENTS
from USER_TABLES A
LEFT OUTER JOIN USER_TAB_COMMENTS B
 ON A.TABLE_NAME = B.TABLE_NAME
order by A.TABLE_NAME
```

### テーブル一覧

```sql
select * 
from USER_TABLES
```

### テーブルのコメント一覧

```sql
select * 
from USER_TAB_COMMENTS
```

### テーブルカラムの内容抽出
カラム一覧(抽出)

```sql
select 
	A.COLUMN_ID
	,A.TABLE_NAME
	,A.COLUMN_NAME
	,A.DATA_TYPE
	,A.DATA_LENGTH
	,A.NULLABLE
	,B.COMMENTS
--	,A.*
from USER_TAB_COLUMNS A
left outer join USER_COL_COMMENTS B
  ON A.TABLE_NAME = B.TABLE_NAME
 AND A.COLUMN_NAME = B.COLUMN_NAME
where A.TABLE_NAME='TBL_XXXX'
order by A.COLUMN_ID
```

### カラム一覧

```sql
select A.* 
from USER_TAB_COLUMNS A
where A.TABLE_NAME='TBL_XXXX'
```

### カラムのコメント一覧

```sql
select A.* 
from USER_COL_COMMENTS A
where A.TABLE_NAME='TBL_XXXX'

```

### ロール一覧

```sql
select * from SYS.DBA_ROLES

```

### インデックス一覧

```sql
select * from USER_INDEXES

```

### インデックス一覧[対象カラム]

```sql
select * from USER_IND_COLUMNS

```

## SQL SERVER

### テーブル作成・削除

```sql
-- テーブル削除
drop table [dbo].NewTeble;

----------------------------------------
--*dataTitle 事業区分利用集計テーブル作成
----------------------------------------
create table [dbo].NewTeble (
    Col1 decimal(2, 0) not null
  , Col2 decimal(2, 0) not null
  , Col3 decimal(1, 0) not null
  , Col4 decimal(2, 0) not null
  , Col5 decimal(3, 0)
  , Col6 decimal(3, 0)

  , primary key (Col1,Col2,Col3,Col4)
);
```
### テーブルを利用してのINSERT文

```sql

-- 一括削除(TRUNCATE削除) 
TRUNCATE TABLE NewTeble;

-- INSERT
INSERT INTO NewTeble(
    Col1 ,Col2,ol3, Col4, Col5,Col6
)
select
     TCol1,TCol2,TCol3,TCol4,TCol5,Count(*) as Col6 
from
   T_Teble
group by 
     TCol1,TCol2,TCol3 ,TCol4,TCol5  
;
```

### ダミー領域

```sql

	select 'dammytest' 
	--from dual
```


### パラメータ設定(SQLServer)

```sql
DECLARE @TODAY date = Getdate() ;
DECLARE @GRP_CD varchar(7) = '0822100' ;
select @today,@GRP_CD
```


### 一覧表示

#### 全オブジェクトのテーブルの一覧

```sql
-- 全オブジェクトのテーブルの一覧を取得するSQL
SELECT * FROM sys.tables
;
```

####  全オブジェクトのカラム一覧

```sql
-- 全オブジェクトのカラム一覧を取得するSQL
SELECT * FROM sys.columns
;
```







## 参考サイト
[[SQL] データベース | TECHSCORE(テックスコア) ]
(http://www.techscore.com/tech/sql/index.html/)