> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloud.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SELECT ステートメント

> SELECT ステートメントは、以下の基本句で構成できます。

* SELECT
* INTO
* FROM
* JOIN
* WHERE
* GROUP BY
* HAVING
* UNION
* ORDER BY
* LIMIT

## SELECT 構文

以下の構文図は、プロバイダーの SQL エンジンがサポートする構文を示しています。

```bash expandable wrap theme={null}
SELECT {
  [ TOP <numeric_literal> | DISTINCT ]
  { 
    * 
    | { 
        <expression> [ [ AS ] <column_reference> ] 
        | { <table_name> | <correlation_name> } .* 
      } [ , ... ] 
  }
  { 
    FROM <table_reference> [ [ AS ] <identifier> ] 
  } [ , ... ]
  [ [  
      INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } 
    ] JOIN <table_reference> [ ON <search_condition> ] [ [ AS ] <identifier> ] 
  ] [ ... ] 
  [ WHERE <search_condition> ]
  [ GROUP BY <column_reference> [ , ... ] ]
  [ HAVING <search_condition> ]
  [ UNION [ ALL ] <select_statement> ]
  [ 
    ORDER BY 
    <column_reference> [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ]
  ]
  [ 
    LIMIT <expression>
    [ 
      { OFFSET | , }
      <expression> 
    ]
  ] 
} | SCOPE_IDENTITY()

<expression> ::=
  | <column_reference>
  | @ <parameter>
  | ?
  | COUNT( * | { [ DISTINCT ] <expression> } )
  | { AVG | MAX | MIN | SUM | COUNT } ( <expression> )
  | NULLIF ( <expression> , ... )
  | CASE <expression>
      WHEN { <expression> | <search_condition> } THEN { <expression> | NULL } [ ... ]
    [ ELSE { <expression> | NULL } ]
    END
  | <literal>
  | <sql_function>

<search_condition> ::=
  {
    <expression> { = | > | < | >= | <= | <> | != | LIKE | NOT LIKE | IN | NOT IN | IS NULL | IS NOT NULL | AND | OR |  
    CONTAINS | BETWEEN } [ <expression> ]
  } [ { AND | OR } ... ]
```

## 例

1. すべてのカラムを返す：

```bash theme={null}
SELECT * FROM [Connection Name].[Schema].[Table Name]
```

2. カラムの名前を変更する：

```bash theme={null}
SELECT [Name] AS MY_Name FROM Account
```

3. カラムのデータを別のデータ型にキャストする：

```bash theme={null}
SELECT CAST(AnnualRevenue AS VARCHAR) AS Str_AnnualRevenue FROM Account
```

4. データを検索する：

```bash theme={null}
SELECT * FROM Account WHERE Industry = \`\`'Floppy Disks'\`\`
```

5. クエリ条件に一致するアイテムの数を返す：

```bash theme={null}
SELECT COUNT(*) AS MyCount FROM Account
```

6. クエリ条件に一致する一意のアイテムの数を返す：

```bash theme={null}
SELECT COUNT(DISTINCT Name) FROM Account
```

7. クエリ条件に一致する一意のアイテムを返す：

```bash theme={null}
SELECT DISTINCT Name FROM Account
```

8. データを集計する：

```bash theme={null}
SELECT Name, MAX(AnnualRevenue) FROM Account GROUP BY Name
```

9. 複数のテーブルからデータを取得する：

```bash theme={null}
SELECT Customers.ContactName, Orders.OrderDate FROM Customers, Orders WHERE Customers.CustomerId=Orders.CustomerId
```

10. 結果セットを昇順で並べ替える：

```bash theme={null}
SELECT BillingState, Name FROM Account ORDER BY Name ASC
```

11. 結果セットを指定した行数に制限する：

```bash theme={null}
SELECT BillingState, Name FROM Account LIMIT 10
```

12. クエリをパラメータ化して実行時に入力を渡す。これにより、プリペアドステートメントを作成し、SQL インジェクション攻撃を防ぐことができます。

```bash theme={null}
SELECT * FROM Account WHERE Industry = @param
```
