SELECT * FROM table t
SELECT t.* FROM table t
私はそれを試してみましたが、同じ結果が得られましたが、2 番目のバージョンを使用するコードをリファクタリングしているので確認したいのですが、書くのに時間がかかり、単純ではないことに驚きました。
ここに隠されたものはありますか?
MySQL バージョン: 5.5.29-0ubuntu0.12.04.2 (Ubuntu)
あなたの場合、両方のステートメントは同じです。
1 つのクエリで複数のテーブルを結合する場合はそうではありません。
select *
すべての列を選択します。
select t.*
テーブル t (またはエイリアス t が割り当てられたテーブル)のすべての列を選択する
両方のステートメントは、このテーブルから列 (より具体的にはあいまいな列) を一意に識別する必要がある場合に、Join、Apply などのテーブル演算子を使用して別のテーブルと結合されるまで、同じ結果を返します。
ベスト プラクティスとして、select * を使用する代わりに列名を使用する必要があります。これにより、コードが読みやすくなり、任意の時点でテーブル構造が変更された場合にフロント エンド コードが壊れることがなくなります。
SELECT * FROM table t and SELECT t.* FROM table t
テーブル全体を返す
SELECT t.* FROM table as t inner join table2 as t2
「テーブル」テーブルのフィールドのみ
SELECT * FROM table as t inner join table2 as t2
を返しますが、テーブルとテーブル2のフィールドを返します
ステートメントは同じです。あなたが持っているのは、「t」と呼ばれるテーブル「table」のエイリアスだけです。
SELECT *
クエリ内のすべてのテーブルからすべての列を返します。SELECT t.*
は、 という名前またはエイリアスが付けられたテーブルからすべての列を返しますt
。関係するテーブルが1つしかないため、例でも同じです。