SQL文の基本(自分用のメモ)
今回はどうしても忘れてしまう自分のために、空で書けるようSQL文についてまとめたいと思います(ほぼ自分用です)
データベースの確認
SHOW DATABASES;
データベースの作成
CREATE DATABASE データベース名;
データベースの接続(正確にはSQL文ではない)
CONNECT データベース名
USE データベース名
注)SQL文ではないので「;」はつけない。
テーブルの確認
SHOW TABLES;
テーブルの作成
CREATE TABLE テーブル名(
列名 データ型 [制約]
);
例
CREATE TABLE USER_INFO (
LOGIN_ID VARCHAR(100) NOT NULL PRIMARY KEY,
PASSWORD VARCHAR(100) NOT NULL,
NAME VARCHAR(100) NOT NULL
);
注)フィールドの定義を続けて書く場合は「,」で区切る。ただし最後のフィールド定義の後には必要ない。
([]で囲った部分は省略可能)
テーブルに新しいレコードを挿入する場合
・全てのフィールドを挿入する
INSERT INTO テーブル名 VALUES( 値 [, 値, ・・・] );
例)
INSERT INTO USER_INTO VALUES('123','abcd','aiu');
・一部のフィールドを挿入する
INSERT INTO テーブル名 ( 列名 [, 列名, ・・・] ) VALUES ( 値 [, 値, ・・・] );
テーブルのレコードを更新する
UPDATE テーブル名 SET 列名=値 [,列名=値] [WHERE 条件];
レコードの削除
DELETE FROM テーブル名 [WHERE 条件] ;
ファイルに記述されたSQLを実行する
SOURCE ファイル名
注)SQL文ではないので「;」はつけない。
<<レコードの検索>>
・一つのフィールド(列)に対するレコード
SELECT 列名 FROM テーブル名;
・二つのフィールドに対するレコード
SELECT 列名, 列名, FROM テーブル名;
・全てのフィールドのデータの取得
SELECT * FROM テーブル名;
・重複するレコードを除外する
SELECT DISTINCT 列名 FROM テーブル名;
・クエリによって抽出されるレコード件数を取得したい場合
SELECT COUNT(*) FROM テーブル名;
・クエリによって抽出するレコードのフィールドに対して別名をつける
SELECT 列名 AS 別名 FROM テーブル名;
・検索条件を指定してレコードを絞り込む
SELECT 列名 FROM テーブル名 [WHERE 条件]
例)EMPテーブルから給料(sal)が1250以上,2500以下であるレコードの抽出
SELECT * FROM EMP WHERE SAL <= 1250 AND SAL >= 2500;
SELECT * FROM EMP WHERE SAL BETWEEN 1250 AND 2500;
BETWEENの前にNOTをつけると否定になる。
その他
・列挙した値を含むレコードを抽出する→IN
例)SELECT * FROM EMP WHERE DEMPTNO IN (10, 30);
・文字のパターンマッチングに利用→LIKE
例)SELECT * FROM EMP WHERE ENAME LIKE 'A%';
・SELECT文の結果をソートして表示する→ORDER BY 列名 [DESC | ASC]
デフォルトはAscending(昇順)
・フィールドをグループ化する→GROUP BY 列名
↑グループ化した場合の条件→HAVING(WHEREではない)
ポイント
ほぼほぼテーブル名の記述が必要。
テーブル名書いてなかったら、「間違えたかも」と思った方あ良さそう。