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

SQLServerのSHOWTABLESと同等

    時々、SHOW TABLESと入力していることに気づきます。 SQL Serverでは、テーブルのリストを取得することを期待しています。

    MySQLまたはMariaDBを使用している場合、これは完全に理にかなっています。ただし、SQL Server/T-SQLにはSHOW TABLESがありません MySQLやMariaDBのようなステートメントなので、機能しません。そして、私は忘れ続けます。しかし幸いなことに、SQLServerには代替手段があります。

    SQLServerでテーブルのリストを取得するための5つのオプションを次に示します。これらは、とらえどころのないSHOW TABLESを見つけようとしているときにいつでも使用できます。 SQLServerのステートメント。

    オプション1-sys.tables

    sys.tables システムカタログビューは、ユーザーテーブル情報を返すために特別に設計されています:

    SELECT name
    FROM sys.tables;

    これにより、現在のデータベース内のすべてのユーザーテーブルの名前が返されます。ステートメントの前にUSE <database name>を付けると、正しいデータベースに切り替えることができます。 ここで、<database name> は、リストするテーブルのデータベースの名前です。

    たとえば、次のステートメントは、KrankyKranesからすべてのユーザーテーブルを返します。 データベース:

    USE KrankyKranes;
    SELECT name
    FROM sys.tables;

    必要に応じてスキーマを返すこともできます:

    SELECT 
        SCHEMA_NAME(schema_id) AS schema_name,
        name AS table_name
    FROM sys.tables;

    ここでは、SCHEMA_NAME()を使用しました schema_idの値を変換する関数 スキーマの実際の名前に列を追加します。

    オプション2– sys.objects

    sys.objectsを使用することもできます システムカタログビュー。このオプションを選択すると、タイプでフィルタリングして、ユーザーテーブルのみが返されるようにすることができます。

    SELECT name 
    FROM sys.objects 
    WHERE type = 'U';

    これにより、現在のデータベースからユーザーテーブルが返されます。このビューには、schema_idも含まれています 列なので、SCHEMA_NAME()を使用できます 必要に応じて、それをスキーマ名に変換する関数。

    オプション3– information_schema.tables

    INFORMATION_SCHEMA.TABLES viewは、現在のユーザーがアクセス許可を持っている現在のデータベースのテーブルまたはビューごとに1行を返します。

    このビューをタイプでフィルタリングして、ベーステーブルのみが返されるようにすることができます:

    SELECT 
        TABLE_SCHEMA,
        TABLE_NAME 
    FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_TYPE = 'Base Table';

    TABLE_SCHEMA 列にはテーブルスキーマ名が含まれているため、SCHEMA_NAME()を使用する必要はありません。 スキーマIDをその名前に変換する関数。

    オプション4– sp_tables

    sp_tables ストアドプロシージャは、現在の環境でクエリできるオブジェクトのリストを返します。これは、シノニムオブジェクトを除くすべてのテーブルまたはビューを意味します。

    このプロシージャを呼び出す最も速くて簡単な方法は次のとおりです。

    sp_tables;

    ただし、オブジェクトの長いリストが返される可能性があります。

    通常は、より具体的にする方がよいでしょう。例:

    EXEC sp_tables
        @table_owner = 'dbo', 
        @table_qualifier = 'KrankyKranes', 
        @table_type = "'TABLE'";

    ここでは、KrankyKranesにユーザーテーブルを表示する手順を説明しています。 dboが所有するデータベース 。

    @table_type 引数は、コンマで区切られた値のリストを受け入れます。したがって、ビューを含める場合は、次のようにすることができます。

    EXEC sp_tables
        @table_owner = 'dbo', 
        @table_qualifier = 'Music', 
        @table_type = "'TABLE', 'VIEW'";
    オプション5– dbo.sysobjects

    SQL Server 2005より前は、dbo.sysobjects ビューは、テーブルやその他のオブジェクトを表示するためのビューでした。

    したがって、古いエディションのSQL Serverを使用している場合は、次のことができます。

    SELECT name 
    FROM dbo.sysobjects
    WHERE xtype = 'U';

    1. 文字セットと照合は正確にはどういう意味ですか?

    2. PostgreSQLのマルチテナンシーオプション

    3. SQL ServerのLEN()とDATALENGTH()

    4. ウォークスルー:SQLServerの高可用性のセットアップ