SQLデータ操作言語(DML)とデータ問合せ言語(DQL)の実践的解説

データテーブルに対するDML操作

INSERT文によるデータ追加

INSERT文はテーブルに新しいレコードを追加します。基本的な構文は以下の通りです:

INSERT INTO テーブル名 (カラム1, カラム2, ...) VALUES (値1, 値2, ...);

複数行を一度に挿入する場合:

INSERT INTO テーブル名 (カラム1, カラム2, ...) VALUES
(値1, 値2, ...),
(値3, 値4, ...),
(値5, 値6, ...);

REPLACE文によるデータ置換

REPLACE文は主キーまたは一意制約が重複する場合、既存レコードを削除して新規レコードを挿入します:

REPLACE INTO テーブル名 (カラムリスト) VALUES (値リスト);

DELETEとTRUNCATEによるデータ削除

DELETE文は条件に基づいてレコードを削除します:

DELETE FROM テーブル名 WHERE 条件;

TRUNCATEはテーブル内の全データを高速に削除します:

TRUNCATE TABLE テーブル名;

UPDATE文によるデータ更新

既存のレコードを変更します:

UPDATE テーブル名 SET カラム1 = 値1, カラム2 = 値2 WHERE 条件;

SELECT文(DQL)によるデータ検索

基本構文

SELECT カラムリスト FROM テーブル名 WHERE 条件;

算術式と演算子

SELECT文内で算術演算が可能です:

SELECT 価格 * 数量 AS 合計金額 FROM 注文明細;

NULL値の扱い

NULL値は未定義を表し、算術演算では注意が必要です:

SELECT カラム名 FROM テーブル名 WHERE カラム名 IS NULL;

重複除去(DISTINCT)

SELECT DISTINCT カラム名 FROM テーブル名;

条件指定(WHERE)

文字列と日付はシングルクォートで囲みます:

SELECT * FROM ユーザー WHERE 名前 = '山田太郎';

比較演算子と論理演算子

SELECT * FROM 商品 WHERE 単価 BETWEEN 1000 AND 5000;

LIKEによる部分一致検索

SELECT * FROM 顧客 WHERE 会社名 LIKE '%株式会社%';

GROUP BYによるグループ化

SELECT 部門コード, AVG(給与) AS 平均給与 
FROM 社員 
GROUP BY 部門コード 
HAVING AVG(給与) > 300000;

ORDER BYによる並び替え

SELECT * FROM 商品 ORDER BY 単価 DESC;

LIMITによる件数制限

SELECT * FROM 注文 ORDER BY 注文日時 DESC LIMIT 10;

GROUP_CONCATによるグループデータ結合

SELECT 部門名, GROUP_CONCAT(社員名) AS 社員一覧 
FROM 社員 
GROUP BY 部門名;

テーブル結合クエリ

内部結合(INNER JOIN)

SELECT 社員.氏名, 部門.部門名 
FROM 社員 
INNER JOIN 部門 ON 社員.部門コード = 部門.部門コード;

等価結合

SELECT 社員.氏名, 部門.部門名 
FROM 社員, 部門 
WHERE 社員.部門コード = 部門.部門コード;

クロス結合

SELECT * FROM テーブル1, テーブル2;

タグ: SQL DML DQL データベース クエリ

7月14日 00:32 投稿