SQLとは?
SQLステートメントとは?
クエリとは?
SQLの種類は?
といった基礎知識を紹介します。
SQLとは
SQL(Structured Query Language)は、データベースを操作するために使用する言語です。
基本的にどのデータベースでも同じようなSQL文を書くことになるので、汎用的な知識となります。
以下ではMySQLの書き方を紹介しますが、Oracle Database、PostgreSQLでも同じように書けます。
ただし、日付関数や文字列関数、LIMITの書き方などはデータベース製品ごとに細かな違いがあるので、別の製品に移るときはその部分だけ確認します。
SQLステートメント = クエリ
SQLステートメントとは、SQLで書いたデータベースへの命令1つ分のことです。SELECT * FROM users;のように、セミコロンで終わる1文が1ステートメントです。
それをクエリとも言います。
厳密には、クエリ(query=問い合わせ)はSELECTのようにデータを取り出す命令を指す言葉で、INSERTやCREATE TABLEは「ステートメント」と呼ぶ方が正確です。ただし、実際の現場やツールでは、データベースに送る命令全般を「クエリ」と呼ぶことがほとんどなので、同じ意味で使われていると考えて問題ありません。
-- どれも1つのSQLステートメント
SELECT name, age FROM users WHERE age >= 20;
INSERT INTO users (name, age) VALUES ('yamada', 25);
UPDATE users SET age = 26 WHERE name = 'yamada';
CREATE TABLE logs (id INT PRIMARY KEY, body TEXT);
複数のステートメントを続けて送ることもでき、その場合はセミコロンで区切ります。
SQLの種類:DDLとDML
次の2種類に大別できます。
- DDL:データ定義言語
- DML:データ操作言語
DDL(Data Definition Language)は、データ定義言語です。
DDLは、データベースオブジェクトの定義に使用します。
テーブル定義に関しては、SQLのデータ定義(DDL)の書き方まとめを参考にしてみてください。
DML(Data Manipulation Language)は、データ操作言語です。
DMLは、テーブルデータの操作に使用します。データの取得、更新、削除、挿入などです。
データ操作に関しては、SQLのデータ操作(DML)の書き方まとめを参考にしてみてください。
他にもDCL(アクセス権限)、TCL(トランザクション制御)などもありますが、
まずはDDLとDMLを扱えるようになることが大事です。
MySQLではSELECTをDMLに含めますが、資料によってはSELECTをDQL(データ問い合わせ言語)として分けることもあります。分類名が違うだけで、書き方は同じです。
SQLの記法
主に以下のような記法のポイントがあります。
- セミコロンで文を区切る
- 大文字小文字は区別しない
- コメントの書き方は3種類
コメントは、以下のようにして記述できます。
/* 区間コメント */
-- 文末までのコメント
# 文末までのコメント
--の後には半角スペースが必要です。また#のコメントはMySQL独自で、PostgreSQLなどでは使えません。
大文字小文字を区別しないのはSELECTやFROMなどのキーワードの話で、テーブル名や列名はOSやデータベースの設定によって区別される場合があります。キーワードを大文字、テーブル名や列名を小文字で書くと読みやすく、この区別も目で追えます。
SQLクライアント
データベースを操作するときに使うものが、SQLクライアントです。
DBeaverやMySQL Workbench、VSCodeの拡張機能などがあります。
MAMPなどはローカルのPCでMySQLサーバーを起動しますが、
そのデータベースを操作するときに、SQLクライアントを使ってデータの挿入や削除を行います。
ターミナルからmysql -u root -pで接続すれば、クライアントを入れなくても同じSQLステートメントを実行できます。