SQL文でよく使われる・知っておくべき基本構文

データベース

はじめに

SQL(Structured Query Language)は、リレーショナルデータベース管理システム(RDBMS)との対話を行うための言語です。

SQLを使用することで、データの検索、挿入、更新、削除が容易に行えます。

今回はSQLでよく使用される基本的な構文について説明します。

これらを覚えておけば、一通りデータベースを操れるはずなので一緒に見ていきましょう。
 

SELECT

データベースからデータを取得するために使用される最も基本的な構文です。

SELECT カラム1, カラム2, ...
FROM テーブル名
WHERE 条件;

<例>ユーザテーブルから年齢が18歳より大きいユーザの名前と年齢を表示
SELECT name, age
FROM users
WHERE age > 18;

 

INSERT

テーブルに新しいレコードを挿入するために使用されます。

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

<例>ユーザテーブルに"Taro","25"歳のユーザを挿入
INSERT INTO users (name, age)
VALUES ('Taro', 25);

 

UPDATE

既存のレコードを更新するために使用されます。

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

<例>ユーザテーブルの"Taro"を"26"歳に更新
UPDATE users
SET age = 26
WHERE name = 'Taro';

 

DELETE

テーブルからレコードを削除するために使用されます。

DELETE FROM テーブル名
WHERE 条件;

<例>ユーザテーブルからnameが"Taro"のレコードを削除
DELETE FROM users
WHERE name = 'Taro';

 

CREATE TABLE

新しいテーブルを作成するために使用されます。

CREATE TABLE テーブル名 (
    カラム1 データ型,
    カラム2 データ型,
    ...
);

<例>id, name, ageという要素(カラム)を持ったユーザテーブルを新規作成
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);

 

ALTER TABLE

テーブル定義を変更する際に使われます。

ALTER TABLE テーブル名
ADD カラム名 データ型;

ALTER TABLE テーブル名
DROP COLUMN カラム名;

ALTER TABLE テーブル名
MODIFY カラム名 新データ型;

<例>ユーザテーブルにemailという要素(カラム)を追加
ALTER TABLE users
ADD email VARCHAR(100);

<例>ユーザテーブルからemailという要素(カラム)を削除
ALTER TABLE users
DROP COLUMN email;

<例>ユーザテーブルのデータ型をSMALLINT型に変更
ALTER TABLE users
MODIFY COLUMN age SMALLINT;

 

DROP TABLE

作成したテーブルを削除するために使用されます。

DROP TABLE テーブル名;

<例>ユーザテーブルの削除
DROP TABLE users;

 

JOIN

複数のテーブルから関連するデータを結合して取得するために使用されます。

よく使われるのは、内部結合のINNER JOIN、外部結合のLEFT JOIN, RIGHTJOINです。

<SELECT テーブル1.カラム1, テーブル2.カラム2, ...
FROM テーブル1
JOIN テーブル2
ON テーブル1.共通カラム = テーブル2.共通カラム;

<例>ユーザテーブルのnameとオーダーテーブルのorder_dateという要素を表示
SELECT users.name, orders.order_date
FROM users
INNER JOIN orders
ON users.id = orders.user_id;

 

WHERE句

特定の条件を満たすレコードをフィルタリングするために使用されます。

SELECT カラム1, カラム2, ...
FROM テーブル名
WHERE 条件;

<例>年齢が18より大きくて、名前の最初が"T"から始まるレコードのnameとageを表示
SELECT name, age
FROM users
WHERE age > 18 AND name LIKE 'T%';

 

GROUP BY句

特定のカラムの値に基づいてレコードをグループ化するために使用されます。

集計関数(SUM, COUNT, AVGなど)と一緒に使われることが多いです。

SELECT カラム1, 集計関数(カラム2)
FROM テーブル名
GROUP BY カラム1;

<例>ユーザテーブルを年齢ごとにグループ分けし、その年齢と人数を表示
SELECT age, COUNT(*)
FROM users
GROUP BY age;

 

HAVING句

GROUP BY句でグループ化された結果に対して条件を適用するために使用されます。

SELECT カラム1, 集計関数(カラム2)
FROM テーブル名
GROUP BY カラム1
HAVING 条件;

<例>ユーザテーブルを年齢ごとにグループ分けし、その人数が1よりも大きいグループの年齢と人数を表示
SELECT age, COUNT(*)
FROM users
GROUP BY age
HAVING COUNT(*) > 1;

 

ORDER BY句

結果セットを特定のカラムに基づいてソート(並び替え)するために使用されます。

デフォルトは昇順(ASC)ですが、降順(DESC)も指定できます。

SELECT カラム1, カラム2, ...
FROM テーブル名
ORDER BY カラム1 ASC|DESC;

<例>ユーザテーブルのname,ageをageの降順で表示
SELECT name, age
FROM users
ORDER BY age DESC;

 

サブクエリ

他のクエリ内に含まれるクエリです。

結果をフィルタリグ、計算、集計するために使用されます。

SELECT カラム1
FROM テーブル名
WHERE カラム2 = (SELECT カラム2 FROM テーブル名2 WHERE 条件);

<例>後半のselec文はユーザテーブルで最大年齢が結果として返される
 →ユーザテーブルで最大年齢のレコードの年齢を表示
SELECT name
FROM users
WHERE age = (SELECT MAX(age) FROM users);

 

インデックス

検索の速度を向上させるためにテーブルのカラムに作成されるデータ構造です。

インデックスの作成と削除にはCREATE INDEXDROP INDEXを使用します。

CREATE INDEX インデックス名
ON テーブル名 (カラム名);

DROP INDEX インデックス名;

<例>
CREATE INDEX idx_age
ON users (age);

DROP INDEX idx_age;

 

まとめ

SQLの基本的な構文を理解することで、複雑なSQL文も書けるようになり、データベースを効率的に操作することができます。

今回紹介した構文は、データ操作の基礎のみで他にも構文や応用点はたくさんあります。

まずは基本的なデータ操作から始め自信をつけていき、ゆくゆくは複数のテーブルを用いたり複雑なSQL文を書けるようになっていくと良いでしょう。

SQLについての概要を知りたい方はこちら

コメント

  1. […] SQL文でよく使われる・知っておくべき構文 […]

  2. […] SQL文でよく使われる・知っておくべき構文 […]

  3. […] データベース […]

  4. […] データベース […]

タイトルとURLをコピーしました