MySQLと標準SQLの違いとは?権限・外部キー制約・コメント構文を徹底比較
MySQLと標準SQLの主な違い
MySQLは標準SQLと比較して、多くの操作において独自の仕様や動作を持っています。本記事では、権限・外部キー制約・コメントという3つの観点から、両者の違いをわかりやすく解説します。
権限(Privileges)
ユーザー権限の扱いについては、MySQLと標準SQLの間に重要な違いがあります。標準SQLではテーブルを削除すると関連する権限も自動的に失われますが、MySQLではテーブルを削除しても、そのテーブルに対して付与されていた権限は自動的には取り消されません。権限を明示的に取り消すには、REVOKEステートメントを別途実行する必要があります。
外部キー制約(Foreign Key Constraints)
MySQLにおける外部キー制約の実装は、SQL標準とは一部異なる動作をします。以下に主なポイントを整理します。
同じキー値を持つ複数の親行の扱い
親テーブルに同じ参照キー値を持つ行が複数存在する場合、InnoDBストレージエンジンは、あたかも他の同じキー値を持つ親行が存在しないかのように外部キーチェックを実行します。
たとえば、RESTRICTタイプの制約が定義されている状況で、1つの子行に対して複数の親行が対応している場合、InnoDBはこれらの親行の削除を許可しません。
複数行操作時のチェック方式
INSERT・DELETE・UPDATEなどで複数行を操作するSQLステートメントでは、外部キー制約(一意制約などの他の制約も同様)は行単位で順次チェックされます。また、外部キーチェックの実行時には、InnoDBがチェック対象となる子レコードまたは親レコードに対して共有行ロックを設定します。
参照列のインデックス要件
MySQLではパフォーマンス上の理由から、参照先のカラムにはインデックスを作成することが求められます。ただし、標準SQLと異なり、参照カラムがUNIQUEであることやNOT NULLとして宣言されていることは必須要件ではありません。
コメント(Comments)
標準SQLでは、C言語風の構文 /* これはコメントです */ を使ってコメントを記述します。MySQL Serverもこの構文をサポートしており、互換性があります。
一方、コメント開始シーケンスには違いがあります。標準SQLでは「--」(ダブルハイフン)をコメント開始シーケンスとして使用しますが、MySQL Serverでは「#」をコメント開始文字として採用しています。なお、MySQLでも「--」によるコメントは利用可能ですが、「-- 」のようにハイフンの後にスペースを続ける必要がある点に注意してください。
-
MySQLテーブルから一意キー(UNIQUE KEY)を削除する方法
MySQLの一意キーを削除する基本構文MySQLのテーブルから一意キー(UNIQUE KEY)を削除したい場合は、DROP INDEX句を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 DROP INDEX キー名;ここで注意すべき点は、指定するのは「カラム名」ではなく「インデックス(キー)の名前」だということです。多くの場合キー名はカラム名と同じですが、必ずしも一致するとは限らないため、事前に確認しておくと安心です。サンプルテーブルの作成それでは、実際に一意キーを持つテーブルを作成して動作を確認してみましょう。以下のクエリでテーブルを作成します。mysql>
-
ターミナル(コマンドプロンプト)からMySQLデータベースにSQLファイルを実行する方法
MySQLデータベースでSQLファイルを実行したい場合、コマンドライン(ターミナルやコマンドプロンプト)から簡単に実行できます。この記事では、具体的な手順をスクリーンショット付きの手順解説に沿って紹介します。 SQLファイルを実行するための基本構文 データベースにSQLファイルをインポート・実行するには、以下の構文を使用します。 mysql -u ユーザー名 -p データベース名 < ファイル名.sql 各オプションの意味は以下のとおりです。 -u:MySQLに接続するユーザー名を指定します -p:パスワード入力を求めるプロンプトを表示します <:指定したSQLファイルの中身を