SQLど忘れメモ
メモです。
SELECT 列1,列2,列3 FROM 表1 WHERE 列1='VAL1' ORDER BY 2 DESC; UPDATE 表1 SET 列1='VAL1',列2='VAL2',列3=式3 WHERE 列1=式4; INSERT INTO 表1 ( 列1,列2,列3 ) VALUES ( 'VAL1','VAL2',式3 ); DELETE FROM 表1 WHERE 列1=式1 AND ( 列2='VAL2' OR 列3=式3 );灰色の部分はDBによっては省略可能だが、省略不能なDBもあるので注意。
CREATE TABLE 表1 ( 列1 nvchar(256) PRIMARY KEY,列2 number ,列3 nchar(8) NOT NULL ); DROP TABLE 表1;
最後のセミコロンは必須のものと逆にエラーになるものがある。本質的にはセミコロンは SQLの一部ではなくUI部に与えるトリガー。
DELETEは行の削除でDROPはテーブルそのものの定義も含む削除。
テーブル一覧を出す一般的SQLというものは無いが、幾つかのDBでは次の命令が使える。
SHOW TABLES;postgreSQLのシェルではでは\dという特殊コマンドでテーブル一覧が出る。
全選択 補足
WHEREでワイルドカード指定を行うには=でなくLIKEを使いワイルドカード部を%で示す。%が0個以上の任意の文字に対応する。
SELECT 列1,列2 FROM 表1 WHERE 列3 LIKE 'AB%';
全列を取得するには*を使う。
SELECT * FROM 表1 WHERE 列1='値';
WHEREを省略すれば全行が得られる
SELECT * FROM 表1;
WHEREを省略したDELETEで全行削除が行われる。
DELETE FROM 表1;苦労して入力したものをちょっとした間違いで一瞬にして消滅させることができるのがSQLの特徴。DELETEだけはSQLの手打ちは避けた方が良い。
CREATE TABLE 型 補足 メモ 怪しい その内まとめる
CREATEテーブルで指定可能な型には次のものがある。こんな基本のことがSQLでは 実装毎に違っている。とんでもないことだ。
文字列型 | nchar(#) | UNICODEの固定長の文字列:後の空白問題などバグの元 charもあるがコード系が不定であるため、使わない方が無難。 |
nvarchar(#) | UNICODEの可変長の文字列 oracleではnvarchar2と意味不明の2が付くことに注意が必要 nvcharとなる系もある。 varcharあるがコード系が不定であるため、使わない方が無難。 |
|
ntext | UNICODEの可変長の文字列(postgreSQLのみ) textあるがコード系が不定であるため、使わない方が無難。 |
|
数値 | int | 64bit整数型 |
decimal(#) | 固定精度の整数型 | |
number(#,#) | 固定精度の整数型 | |
float | 64bitまたは128bitの浮動小数型 | |
money | 通貨型 | |
日付時刻型 | datetime | 日付時刻 |
プライマリーキーとする場合PRIMARY KEYを付加する。
NULLを許さない場合NOT NULLを付加する。
| 固定リンク