MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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でも「--」によるコメントは利用可能ですが、「-- 」のようにハイフンの後にスペースを続ける必要がある点に注意してください。

  1. MySQLテーブルから一意キー(UNIQUE KEY)を削除する方法

    MySQLの一意キーを削除する基本構文MySQLのテーブルから一意キー(UNIQUE KEY)を削除したい場合は、DROP INDEX句を使用します。基本的な構文は以下の通りです。ALTER TABLE テーブル名 DROP INDEX キー名;ここで注意すべき点は、指定するのは「カラム名」ではなく「インデックス(キー)の名前」だということです。多くの場合キー名はカラム名と同じですが、必ずしも一致するとは限らないため、事前に確認しておくと安心です。サンプルテーブルの作成それでは、実際に一意キーを持つテーブルを作成して動作を確認してみましょう。以下のクエリでテーブルを作成します。mysql>

  2. ターミナル(コマンドプロンプト)からMySQLデータベースにSQLファイルを実行する方法

    MySQLデータベースでSQLファイルを実行したい場合、コマンドライン(ターミナルやコマンドプロンプト)から簡単に実行できます。この記事では、具体的な手順をスクリーンショット付きの手順解説に沿って紹介します。 SQLファイルを実行するための基本構文 データベースにSQLファイルをインポート・実行するには、以下の構文を使用します。 mysql -u ユーザー名 -p データベース名 < ファイル名.sql 各オプションの意味は以下のとおりです。 -u:MySQLに接続するユーザー名を指定します -p:パスワード入力を求めるプロンプトを表示します <:指定したSQLファイルの中身を