目次
この記事が解決できること
- 初心者に覚えてほしいSQLの基礎構文がわかる
- SQLを書くときによく見られるエラーがわかる
はじめに
SQL(Structured Query Language)は、データベースを扱う方に覚えてほしい言語のひとつです。「情報処理技術者試験」や「データサイエンティスト検定」などの試験範囲にも含まれています。
「SQLという単語は聞いたことがあるけどよく分からない。」
という方も少なくはないでしょう。本記事では、SQLの概要をはじめ、初心者に覚えてほしい基礎構文を紹介します。
データベースについて詳しくない方にも分かりやすいように説明しているので、データベースの利用を検討している方は参考にしてください。
SQLとは
データベースを構築・管理するために利用するコンピューター言語のことを「データベース言語」と言います。
SQL(Structured Query Language)は、データベース言語のひとつです。複数の「行(レコード)」と「列(カラム)」によって構成されている「テーブル」と呼ばれる表を用いてデータを管理する「RDB(リレーショナルデータベース)」を管理・操作するために利用されます。
RDBについて理解を深めたい方は、こちらの記事をご覧ください。
SQLは、以下の4種類に分類されます。
SQLの種類
- DDL(データ定義言語:Data Definition Language):データベースの構成を定義する言語
- DML(データ操作言語:Data Manipulation Language):データベースを管理する言語
- DCL(データ制御言語:Data Control Language):データベースにおける権限を制御する言語
- DQL(データクエリ言語:Data Query Language):データベースからデータを取得するための言語
SQLの活用事例を知りたい方は、こちらの記事をご覧ください。
DDLの代表的な基礎構文
ここからは、DDLの代表的な基礎構文を3つ紹介します。
CREATE
CREATEとは、オブジェクトをデータベースに作成する構文です。
CREATEのサンプルコードは、以下のとおりです。
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
birth_date DATE,
hire_date DATE,
position VARCHAR(100),
salary DECIMAL(10, 2)
);
上記のコードでは、「従業員ID(employee_id)」や「生年月日( birth_date)」などの7項目が含まれている「employees」というテーブルを作成します。
DROP
DROPとは、オブジェクトをデータベースから削除する構文です。
DROPのサンプルコードは、以下のとおりです。
DROP TABLE employees;
上記のコードでは、「employees」というテーブルを削除します。
ALTER
ALTERは、オブジェクトの構成や定義を変更する構文です。
ALTERのサンプルコードは、以下のとおりです。
ALTER TABLE employees
ADD COLUMN address VARCHAR(50);
上記のコードでは、「employees」というテーブルに「住所(adress)」という列を追加します。
DMLの代表的な基礎構文
ここからは、DMLの代表的な基礎構文を3つ紹介します。
INSERT
INSERTは、行を追加する構文です。
INSERTのサンプルコードは、以下のとおりです。
INSERT INTO employees (employee_id, first_name, last_name, birth_date, hire_date, salary)
VALUES (1, 'Yamada', 'Hanako', '1980-05-15', '2023-01-20', 55000);
上記のコードでは、「employees」というテーブルに(employee_id=1, first_name=’Yamada’, last_name=’Hanako’, birth_date=’1980-05-15′, hire_date=’2023-01-20′, salary=55000)という行を追加します。
UPDATE
UPDATEは、データベースに格納されているデータを更新する構文です。
UPDATEのサンプルコードは、以下のとおりです。
UPDATE employees
SET salary = 60000
WHERE employee_id = 1;
上記のコードでは、「employees」というテーブルにおいて「employee_id」が1の場合に「給料(salary)」を60000にします。
DELETE
DELETEは、行を削除する構文です。
DELETEのサンプルコードは、以下のとおりです。
DELETE FROM employees
WHERE employee_id = 1;
上記のコードでは、「employees」というテーブルにおいて「employee_id」が1の行を削除します。
DCLの代表的な基礎構文
ここからは、DCLの代表的な基礎構文を3つ紹介します。
GRANT
GRANTとは、データベース利用者に権限を付与する構文です。
GRANTのサンプルコードは、以下のとおりです。
GRANT SELECT ON employees TO 'Yamada_Hanako';
上記のコードでは、「employees」というテーブルの権限を「’Yamada_Hanako’」というユーザーへ付与しています。
REVOKE
REVOKEとは、ユーザーに与えた権限を削除する構文です。
REVOKEのサンプルコードは、以下のとおりです。
REVOKE SELECT ON employees FROM 'Yamada_Hanako';
上記のコードでは、「employees」というテーブルにおいて「’Yamada_Hanako’」というユーザーが持つ権限を削除しています。
COMMIT
COMMITとは、現行のトランザクションを終了し、トランザクションで実行したすべてのデータベース操作による変更を確定させる構文です。
COMMITのサンプルコードは、以下のとおりです。
BEGIN;
INSERT INTO employees (employee_id, first_name, last_name, birth_date, hire_date, salary)
VALUES (1, 'Yamada', 'Hanako', '1980-05-15', '2023-01-20', 55000);
UPDATE employees
SET department = 'Finance'
WHERE employee_id = 1;
COMMIT;
上記のコードでは、「employees」というテーブルにおいて行を挿入・更新し、COMMITにて確定させています。
DQLの代表的な基礎構文
ここからは、DQLの代表的な基礎構文である「SELECT」を紹介します。
DQLの基本構文:SELECT
SELECTは、行を検索・抽出する構文です。DMLに分類されることもあります。
SELECTのサンプルコードは、以下のとおりです。
SELECT *
FROM employees;
上記のコードでは、「employees」というテーブルのデータを全て抽出しています。
SQLでよく見られるエラー
コーディングしていると、上手く実行されなかったり、エラー表示が出たりすることがよくあります。SQLも例外ではありません。
ここからは、SQLでよく見られるエラーを5つ紹介します。エラーの内容を把握し、落ち着いて対処できるようになりましょう。
SQLでよく見られるエラー
- Syntax error
- Invalid syntax near …
- Duplicate entry
- Out of memory
- Timeout expired
Syntax error
Syntax errorとは、以下のような原因でSQLが正しい形式で書かれていない場合に発生するエラーです。
Syntax errorの主な発生原因
- スペルが間違っている
- カンマやセミコロンなどがついていない
- 全角になっている
- 不要なスペースがある
Syntax errorが表示されたら既に書かれたSQLが間違っていないか確認しましょう。
Invalid syntax near …
Invalid syntax near …もSyntax error同様、構文エラーのひとつです。
「…」の前後にミスがある時に発生します。Invalid syntax near …が表示された際は、対象のフレーズ近辺をチェックしてください。
Duplicate entry
Duplicate entryとは、行を識別できるように指定する列である「主キー」または行ごとに一意で重複しない列である「ユニークキー」に対して制約が設けられているテーブルで重複した値を挿入した場合に発生するエラーです。
Duplicate entryが表示された際は、重複をなくしたり、不要なレコードをスキップするように設定してください。
Out of memory
Out of memoryは、データベースのメモリが不足している時に発生するエラーです。処理するデータが大きい場合にも見られます。
Out of memoryが表示された際は、データベースのメモリを確認し、メモリが不足している場合は、ブログラムを再起動したり、不要なレコードを削除したりしましょう。
Timeout expired
Timeout expiredは、クエリが長時間実行された時に発生するエラーです。データベースへの接続が切れた場合にも見られます。
Timeout expiredが表示された際は、ネットワーク環境を確認したり、再接続を試みてください。ネットワークやデバイスに異常が見られなかった場合は、接続タイムアウトのパラメーター値の変更を検討しましょう。
おわりに
今回は、SQLの基本構文を紹介しました。
近年は、独自のデータベースを導入する企業が増えていることなどが要因でSQLを扱える人材の需要が高まっています。SQLが扱える人材が不足している企業には、アウトソーシングがおすすめです。
データ人材常駐型支援サービス「DX-Accelerator」では、SQLをはじめとしたデータ分析の知識が豊富なアナリティクスエンジニアがクライアントの課題にそった支援を提供しています。DX-Acceleratorについて知りたい方は、こちらの記事をご覧ください。
データを有効活用し、事業の更なる発展を目指しましょう。