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

テーブル指定なしのMySQLクエリで返せる行数と列数の制限とは?

MySQLでは、SELECT文にテーブルリスト(FROM句)を指定しない場合、クエリは結果として必ず1行だけを返します。ただし、その1行には複数の列(カラム)を含めることができます。これが、テーブルリストを持たないMySQLクエリにおける行数・列数に関する基本的な制限です。

実行例

mysql> Select 65/NULL,65+NULL,65*NULL,65-NULL,65%NULL;
+------------+--------------+-------------+-------------+---------+
| 65/NULL    | 65+NULL      | 65*NULL     | 65-NULL     | 65%NULL |
+------------+--------------+-------------+-------------+---------+
|       NULL |         NULL |        NULL |        NULL |    NULL |
+------------+--------------+-------------+-------------+---------+
1 row in set (0.00 sec)

上記の例では、ステートメント内にテーブルリストが存在しないため、MySQLは5つの式の計算結果を格納した5列×1行の結果セットを返しています。各行に対応する実際のデータを取得するわけではないため、式の評価結果をまとめて1行として表示する仕組みになっています。

なぜ1行になるのか?

FROM句を省略したSELECT文は、MySQL内部で仮想的な単一行テーブル(DUALテーブル)に対する問い合わせとして扱われます。そのため、結果セットの行数は常に1行に固定されます。

結果がすべてNULLになる理由

例の中の式(65/NULLや65+NULLなど)がすべてNULLを返しているのは、SQLにおいてNULLとの算術演算の結果は常にNULLになるというルールに従っているためです。これは通常の挙動であり、エラーではありません。


  1. JavaでMySQLテーブルのカラム数を取得・カウントする方法

    MySQLテーブルのカラム(列)数をJavaで取得するには、ResultSetMetaDataインターフェースを使用します。ResultSetMetaDataを活用すれば、カラムの総数だけでなく、各カラムの名前やデータ型といった詳細情報も簡単に取得できます。前提:サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。以下のSQLでは、3つのカラムを持つ「DemoTable」を作成しています。mysql> create table DemoTable     -> (     -> St

  2. MySQLの構文エラーとは?予約済みキーワードでテーブルを作成する方法

    MySQLの予約済みキーワードによる構文エラーとはMySQLでは、テーブル名に予約済みキーワード(reserved keyword)を使用すると、そのままではSQL構文エラーが発生します。ここでは例として、「groups」という名前のテーブルを作成しようとした場合を見てみましょう。「groups」はMySQLの予約済みキーワードであるため、通常の記述方法ではテーブルを作成できません。エラーが発生するケース以下のように、予約語「groups」を使ってテーブルを作成しようとすると、ERROR 1064という構文エラーが出力されます。mysql> create table groups->