エンジニアとしてキャリアをスタートして1年目。
業界の全体像が見えてきて、自分のキャリアパスを考えたり、そのためにどのようなスキルや資格が必要か模索する時期かと思います。
さまざまな技術を学ぶ中でも、特にデータベース操作に不可欠な「SQL」は全てのエンジニアにとって必須のスキルです。
なぜならシステム開発において、データベースは切っても切り離せないため、エンジニアとしてどのようなキャリアを進むとしても必ずSQLに関わることになるためです。
本記事では、SQLの基本的な概念と種類、そして具体的な文法とその使い方について解説します。
エンジニア1年目に必須のスキル | SQLの基礎知識と使い方
1. SQLとは
SQL(Structured Query Language)とは、1974年にIBMの研究者によって開発されたリレーショナルデータベース管理システム(RDBMS)を操作するための標準的な言語です。
リレーショナルデータベースは、データをテーブルという形で保存し、テーブル間の関係性を用いて情報を管理するシステムです。
リレーショナルデータベースのテーブルを操作するためにはSQLが欠かせません。
これまでのデータベース言語は「手続き型」であり、データを取得するためには具体的な手順を指定する必要がありましたが、SQLでは「何を得たいのか」だけを指定すれば良いため、非技術者でもデータベースから情報を取得することが可能になりました。
市場のシェアについて見てみると、2022年のDB-Engines Rankingでは、最も人気のあるデータベース管理システム(DBMS)はOracleであり、次いで、MySQLとSQL Serverが続いており、これらのツールはSQLをベースにしたRDBMSです。
このように、世の中の多くのデータベース管理システムではSQLが重要な役割を果たしており、エンジニアにとって、SQLが必須と言われる理由がご理解いただけたかと思います。
1-1. SQLで出来る事
前述の通り、SQLはデータベースに対してクエリ(質問)を行い、必要な情報を取得するための言語です。
しかし、SQLの機能はそれだけには留まらず、データベースの構造を作成、変更、削除したり、データを追加、更新、削除したりすることが可能です。
また、SQLは複雑な検索にも対応しており、例えば、特定の基準を満たすデータを見つけ出すための検索条件を指定したり、複数のテーブルから関連するデータを結合して表示するなど、豊富な機能が用意されています。
さらには、SQLはデータの整合性を保つための手段としても活躍しており、例えば、トランザクションという概念を用いることで、一連の操作をまとめて一つの作業として扱い、全ての操作が成功するか、または全てが失敗する(ロールバックする)ことを保証します。
このように、SQLはさまざまな機能により、大量のデータから必要な情報を効率よく取り出したり、データベースの状態が不整合な状態になるのを防いでいます。
2. SQLの種類
SQLは主にDDL、DML、DCL、DQLの4つの種類に分けられており、それぞれが異なるタイプの操作を行うための命令を提供しています。
以下にそれぞれの文法と具体的な使い方を解説します。
2-1. DDL
これはデータベースの構造を作成、変更、削除するために使用されるSQLの一部です。
DDLの主な命令には、CREATE、ALTER、DROPなどがあります。
CREATE
データベースを作成します。次のコマンドでは、testDBという名前のデータベースが作成されます。
CREATE DATABASE testDB;
新しいテーブルも作成できます。
以下の例では、usersというテーブルが作成され、id(整数型)、name(文字列型)、email(文字列型)という3つの列が含まれています。
CREATE TABLE users (
id INT,
name VARCHAR(100),
email VARCHAR(100)
);
ALTER
既存のテーブルを変更します。以下の例では、usersテーブルにbirthdateという名前の列(日付型)を追加します。
ALTER TABLE users
ADD COLUMN birthdate DATE;
DROP
データベースやテーブルを削除します。次の例では、testDBデータベースを削除します。
DROP DATABASE testDB;
そして次のコマンドでは、usersテーブルを削除します。
DROP TABLE users;
これらのコマンドはデータベースの構造を定義するための基本的なものであり、データベースの設計や変更を行う上で重要な役割を果たします。
2-2. DML
DMLはデータベース内のデータを操作するためのSQLの一部で、レコードの追加、更新、削除などの操作を行うために使われます。
主にINSERT、UPDATE、DELETEの3つのコマンドがあります。
INSERT
データベースのテーブルに新しい行(レコード)を追加します。例えば、usersテーブルに新しいユーザーを追加したい場合、次のように記述します。
INSERT INTO users (id, name, email)
VALUES (1, 'Tanaka', 'tanaka@example.com');
このコマンドは、idが1、名前がTanaka、emailがtanaka@example.comの新しいレコードをusersテーブルに追加します。
UPDATE
データベースの既存のレコードを変更します。例えば、特定のユーザーのメールアドレスを変更したい場合は、次のように記述します。
UPDATE users
SET email = 'new-email@example.com'
WHERE id = 1;
このコマンドは、idが1のユーザーのメールアドレスをnew-email@example.comに変更します。
DELETE
テーブルからレコードを削除します。例えば、特定のユーザーを削除するには、次のように記述します。
DELETE FROM users
WHERE id = 1;
このコマンドは、idが1のユーザーをusersテーブルから削除します。
これらのDMLコマンドは、データベースのデータを操作するための基本的なツールです。
更新や削除は注意深く行い、必要に応じてデータのバックアップを取るようにしましょう。
2-3. DCL
DCLはデータベースのセキュリティやトランザクション制御に関する操作を行うためのSQLの一部で、主にGRANT、REVOKE、COMMIT、ROLLBACKなどのコマンドがあります。
GRANT
特定のユーザーに対してデータベースの特定の部分へのアクセス権を付与するために使用されます。例えば、以下のコマンドはユーザー’testUser’に対して’table1’へのSELECTとINSERTの権限を付与します。
GRANT SELECT, INSERT ON table1 TO 'testUser';
REVOKE
特定のユーザーからデータベースの特定の部分へのアクセス権を取り消すために使用されます。以下のコマンドはユーザー’testUser’から’table1’へのUPDATEの権限を取り消します。
REVOKE UPDATE ON table1 FROM 'testUser';
COMMIT
データベースへの全ての変更を確定するために使用されます。トランザクションをCOMMTした後では、その変更は元に戻すことができません。
COMMIT;
2-4. DQL
DQLには主にSELECT文が含まれ、データベースから特定の情報を問い合わせて取得します。
例えば、employeesテーブルから全てのデータを取得したい場合、次のようなSELECT文を使用します。
SELECT * FROM employees;
特定の列(ここでは、“first_name”と”last_name”)だけを取得したい場合は、次のようにします。
SELECT first_name, last_name FROM employees;
このコマンドは、情報をデータベースから取り出すための基本的な方法を示していますが、特定の条件を満たすレコードだけを取り出すためには、WHERE句を使用します。
給与が50000以上の従業員だけを取り出すには、次のようにします。
SELECT * FROM employees WHERE salary > 50000;
このように、DQLを使いこなすことで、必要な情報のみをピンポイントで取得することができます。
3. まとめ
そのため、オンライン上にはSQLの練習ができるサイトや、MySQLなどのオープンソースデータベースを自身のパソコンにインストールして、SQLを試してみることをオススメします。
実際のビジネスシーンでのデータ分析や管理のために、SQLを活用できるようになることは、エンジニアとして非常に重要であり、データから有用な情報を引き出す能力は、あらゆる業種で求められています。
SQLは、エンジニアの1年目でも十分に習得できる内容ですので、ぜひ実践を通して理解を深め、より高度なエンジニアを目指して下さい。