データベース

【MySQL】SQLステートメント(クエリ)やSQLの種類などの基礎知識

SQLステートメントとは、SQLで書いたデータベースへの命令1つ分のことで、クエリとも呼ばれます。SQLとは何か、DDLとDMLの違い、セミコロン・大文字小文字・コメントの記法、SQLクライアントまでMySQLを例に基礎知識をまとめます。

この記事の目次
  1. SQLとは
  2. SQLステートメント = クエリ
  3. SQLの種類:DDLとDML
  4. SQLの記法
  5. SQLクライアント

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ステートメントを実行できます。

スポンサーリンク