概説
SQL種類
DDL データ定義
CREATE DROP ALTER
表、テーブルの作成、削除など
表の作成(CREATE)
CREATEステートメントは会話式ツールや言語(C,JAVA etc.)で定義可能
```
CREATE TABLE table_name(列名 列data_type,
列名 列data_type,
列名 列data_type,
列名 列data_type)
```
表crate後、insertやload,importなどでデータを格納する
表の変更(ALTER)
表の定義変更はALTERを使用
作成済みテーブルに列を追加例:
```ALTER TABLE table_name ADD 列名 data_type```
表の削除(DROP)
テーブル内のデータも削除されるので、操作は要注意
```DROP TABLE table_name```
DML データ操作
select insert update delete
データの操作
DCL データ制御
権限付与 `GRANT` 権限削除 `REVOKE`
権限管理
行、列、フィールド
- 行は横 レコードとも呼ばれる
- 列は縦 列は特定のデータタイプ属性を持っている
- string (char_固定長 varcha_可変長 longvarchar_可変長 graphic_漢字固定長 vargrapchic_漢字可変長 graphic系は2byte文字しか含まれないので1byte文字混在の場合はchar系を使用)
- date (date_4byte time_3byte timestamp_10byte)
- num (samllint interger_2進数 decimal_10進数 float_浮動小数点数)など
- null notnull (e.g. レコードinsertする際指定のない列にはnullのデータに入る)
- nullを存在したくない場合は列定義時notnullを指定
- nullの場合はcount関数がskipされる
- not null with default(nullの場合自動入力,数値の場合は0,string-ブランク,data-現在日付,time-現在時刻..)
- フィールドは 行と列交差するところ
- いくつかの関連した表を データベースを呼ぶ
VIEW
表の一部を取り出したものやあるいは複数表の結合したもの(selectと違う使い方)
SELECT
構文
SELECT -列名、式、列関数、スカラー関数(必須)
FROM -表名かVIEW名 (必須)
WHERE -列の選択条件文 OPTION
GROUP BY -列名
HAVING -グルーピングの条件文
ORDER BY -列名か列番号
SELECT
-
すべての列を表示する場合は
SELECT * FROM table_name
その場合列はCRATE TABLE時の順番だが、行の順番はデータの本当の物理記録順 -
特定列の表示は
SELECT 列名1,列名2,列名3 FROM table_name
特定列の順序で表示するにはSELECT 列名1,列名2,列名3 FROM table_name ORDER BY 列名1 ASC/DESC ,列名2 ASC/DESC
(順番:先に列1 の順番並びしてから 列2を順番並び)
省略する際のデフォルト値はASC 列名は SELECTする際の番号に省略可能(e.g. 列名1 → 1 列名2 → 2)
ただし、プラットフォームの文字コードによって順番が違う場合がある -
DISTINCT
重複出力行を削除
SELECTの後ろに付ける 1 SELECT文は一回だけ指定できる
SELECTに複数の行を指定している場合は複数のレコードが完全に一致する場合のみ表示しない
WHERE
-
文字列条件文
char,varchar,date,time
'
で囲む必要があり
2バイト文字列 graphic,vargraphic,long graphic
の場合はG'xxxxx'
(xxxxxは値) で値を入れる必要がある -
and,or,not 条件文の優先順位
NOT > AND > OR
例:WHERE 列1 = 'A' AND 列2 ='B' OR 列2 = 'C'
の場合
出力は 列1 = 'A' 且つ 列2 = 'B'
および 列2 = 'C'
になる例:
WHERE 列1 = 'A' AND (列2 ='B' OR 列2 = 'C')
の場合
出力は 列1 = 'A' 且つ 列2 = 'B'
および 列1 = 'A' 且つ 列2 = 'C'
になる -
IN
IN (X,Y,Z)を使うと ORは不要
GROUP BY
GROUPごと出力
合計や平均値やCOUNTの計算
ORDER BY
順番
HAVING
(GROUP BY)の条件が多い、 COUNT(*) > 1 や SUM > X や avrage > 123 とかとか
合併 UNION (上下合併)
- 両select重複の分が1つに除去する
- 各selectは同じ列数にあする必要がある
- 連結同士は互換性あるデータタイプであることが必要
- 全ての列のよる順昇に並べ替え
union all
- 重複行は除去しない
- 並び替えもしない
副照会
- where に select文を入れる
-
< = の時 副照会は1 record 1列の結果にならないといけない
- 副照会の結果は null ではできない
- all (副照会の複数結果の全部より > or < ..)
- any (副照会の複数結果のどれか より > or < ..)
insert
insert into table_name
values('a','b','c',111,NULL)
insert into table_name
select a列,b列,c列,d列
form table_namen
where .....
update
update table_name
set c列 = 500
where a列 = 'ssss'
delete
- 1行全部消される
delete from table_name
where a列 = 'ssss'
drop
- drop table table_name
- viewも削除される