SQLの基本構造
SQLはリレーショナルデータベース(RDB)に対して要求を出す時に用いる言語です。
SQL文は、複数の「句」を組み合わせ1つの命令をDBMSに依頼しています。
それぞれの句は、あらかじめ決められているキーワードによって構成されています。
また文の最後を表すには「;(セミコロン)」を使います。
句は、必要に応じて付け加えることができます。
そのため、文の最後を示す記号としてセミコロンを受け取るまでは、DBMSはSQL文の入力を待ち続けます。
そして、最後にセミコロンを受け取った時点で、DBMSはSQL文に対応した処理を開始します。
SQL文は半角文字で入力します。
全角文字はエラーになりますので注意してください。
大文字、小文字は区別しないのでどちらでも構いません。
「Create Database」のように、大文字と小文字が混在してもエラーになりません。
ここの説明では、SQLのコマンドは、次に続く情報と区別するために、大文字で記述しています。
文の終わりには命令が終了した意味のセミコロンを半角で記述します。
SQLコマンドの次には、半角スペースを空けてデータベース名やテーブル名などを記述します。
データベース名やテーブル名は、WindowsとLinuxでは扱いが異なります。
Windowsでは大文字、小文字の区別はしませんが、Linuxでは区別をします。
Windowsでは「DB1」と「db1」は同じものとして扱われますが、Linuxでは別のものになります。
ここの説明では、データベース名、テーブル名、列名などは、SQLコマンドと区別するため、すべて小文字で指定をします。
また、データベース名、テーブル名、列名は日本語を使うことも可能ですが、日本語は扱っている文字コードによっては、文字化けなどの問題を引き起こす可能性もあるので、できるだけ半角英数を使うようにしましょう。
エラーが発生した場合には、最後のセミコロンを付け忘れていないか確認をしましょう。
文末のセミコロンを入力せずにEnterキーを押すと、「->」と表示されます。
これは、「コマンドが完結してない」というメッセージです。
このようなメッセージが出て来たら、セミコロンを入力してEnterキーを押しましょう。
また、「You have an error in your SQL syntax」(文法に誤りがあります)というメッセージが表示されたら、スペルが間違っていないか確認をしてください。
エラーが出たら落ち着いて、入力したSQL文に誤りがないかをじっくり確認しましょう。
SQLの種類
SQLは、機能ごとに大きく3種類に分けられます。
データ定義言語(DDL : Data Definition Language)
DDLは、データベースの定義を行うためのSQLです。
表(テーブル)や仮想表(ビュー)、索引(インデックス)といった、データベースオブジェクトの作成や変更、削除を行います。
データ操作言語(DML : Data Manipulation Language)
DMLは、データベースにおけるデータの操作を行うためのSQLです。
データの抽出(検索)や更新、追加、削除を行います。
データ制御言語(DCL : Data Control Language)
DCLは、データベース上の操作権限付与や削除、変更したデータの確定及び取り消しを行います。
主なSQLは以下のとおりです。
データベースの作成と削除
データベースの作成、削除と確認を行うSQLコマンドの書式は次のとおりです。
【書式】データベースを作成する
CREATE DATABASE データベース名;
【書式】データベースを削除する
DROP DATABASE データベース名;
【書式】データベースを確認する
SHOW DATABASES;
※存在するデータベースを表示します。
「DATABASES」と複数形であることに注意をしましょう。
【書式】データベースを指定する
USE データベース名 または ¥u データベース名
データベースの作成ができたら、その中にテーブルを作っていくのですが、MySQLを起動してすぐにデータベースが使えるというわけではありません。
「これから○○データベースを使います」と明示的に宣言しなければなりません。
RDBMSによっては、起動時に使用するデータベースを指定するものもあります。
MySQLはいつ宣言しても構いませんが、ここの説明では、MySQLモニタを起動した後に宣言するようにします。
USEコマンド(もしくは¥uコマンド)は、最後にセミコロンを付けません。
USEコマンドはSQL文ではないからです。
ヒント MySQL起動時に、使用するデータベースを指定する
データベース名を指定して、MySQLモニタを起動するには、
mysql データベース名 -u -p
のように指定をして、mysqlコマンドを実行します。
【書式】現在使用しているデータベースを表示する
SELECT DATABASE();
前述したように、MySQLは使用するデータベースの明示的宣言をいつ行っても良いため、現在使用しているデータベースがわからなくなってしまうことがあります。
そこで、現在使用しているデータベース名を、上記のコマンドで確認することができます。
テーブルの作成
【書式】テーブルの作成
CREATE TABLE テーブル名( 列名1 データ型, 列名2 データ型 ・・・);
テーブルを作成する時には、CREATE TABLEコマンドに続けて、()
内に列名とデータ型を指定します。
列名とデータ型は半角スペースで間をあけて記述します。
列の区切りはカンマを記述します。
最後に)
で閉じ、セミコロンの記述も忘れないようにしましょう。
【書式】すべてのテーブルを表示する
SHOW TABLES;
※データベース内に存在するテーブル名を表示します。
テーブルが作成されたかどうか確認する際に使用すると便利です。
「TABLES」と複数形になるので注意をしましょう。
ヒント 文字セットを指定してテーブルを作成する
MySQLでテーブルに文字を入力した時、何らかの原因で文字化けを起こすことがあります。
そのような時には、テーブルを作成する際に文字コードを指定します。
例えば、シフトJIS(cp932)を指定するには、
CREATE TABLE syohin_master(syohin_no CHAR(5), syohin_name VARCHAR(20), unit_price INT CHARSET=cp932;
と指定をします。
テーブルの構造の確認
テーブルの列の構造を表示するには「DESC」コマンドを使います。
【書式】テーブル構造の確認
DESC テーブル名;
上の図は、syohin_masterテーブルの構造を表示したものです。
「Field」は列名、「Type」はデータ型、「Null」はNull値を許可するかどうか、「Key」は主キーや外部キーを設定している時に表示され、「Default」は規定値を表してします。
また、「Extra」はフィールドに自動連番機能を付けた時などに表示されます。
今回はテーブル作成時に、列名とデータ型の指定のみをしてあるので、それ以外の指定を何もしない状態はNull値を許可し、データが入力されなかった時の規定値はNullであることが、この結果からわかります。
制約の設定方法等については別の回で解説します。
参考図書
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】