sql >> データベース >  >> RDS >> Mysql

選択したMySQLワイルドカード

    あまり。 *を使用できます 列ワイルドカード すべての列を選択します。複数のテーブルを結合している場合は、 * のプレフィックスを付けることで、特定のテーブルからすべての列を選択できます。 テーブル名またはエイリアス:

    SELECT a.id, a.title, b.*
      FROM articles AS a
        JOIN blurbs AS b ON a.id = b.article
    

    ただし、 *は使用しないでください DB管理プログラムを作成している場合を除きます。

    または、テーブルメタデータをフェッチして列名を取得することにより、SQLまたは別の言語でステートメントを作成することもできます。 MySQLだけを使用して、 COLUMNS<をクエリできます。 / code> INFORMATION_SCHEMAのテーブル データベースを使用して列名を取得し、 GROUP_CONCAT ステートメントの列リストを作成します。

    SELECT CONCAT(
          'SELECT ',
          GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
          ' FROM ', :db, '.', :table,
          ' WHERE ...'
          )
      FROM INFORMATION_SCHEMA.COLUMNS
      WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
    

    「:db」、「:table」、「...」を適切な値に置き換えます。プリペアドステートメントに変換して、任意のテーブルに使用することもできます。そこから、 PREPARE および EXECUTE 構築されたステートメント。

    プログラミング用のSQLに限定されていない場合は、それほど面倒ではないはずです。選択した言語のDBドライバーは、メタデータを取得するためのメソッドを提供する可能性があります。実際の実装は、純粋なSQLアプローチ(列名の取得、ステートメントのアセンブル、準備、実行)に似ていますが、宣言型言語ではなくアルゴリズム型言語を使用するため、それほど醜いものであってはなりません。

    >

    これが実際に必要な状況を見てみたいと思います。



    1. 2つの結果セット間の類似性を比較する

    2. MYSQLデータベースのすべての外部キーを削除します

    3. SQL Serverのデータベースですべてのチェックキーと外部キーの制約を有効にする方法(T-SQLの例)

    4. SQLデータの検出と分類