Teradata-SELECTステートメント
SELECTステートメントは、テーブルからレコードを取得するために使用されます。
構文
SELECTステートメントの基本的な構文は次のとおりです。
SELECT
column 1, column 2, .....
FROM
tablename;
例
次の従業員テーブルについて考えてみます。
従業員番号 | ファーストネーム | 苗字 | JoinedDate | 部門番号 | 誕生日 |
---|---|---|---|---|---|
101 | マイク | ジェームズ | 2005年3月27日 | 1 | 1980年1月5日 |
102 | ロバート | ウィリアムズ | 2007年4月25日 | 2 | 1983年3月5日 |
103 | ピーター | ポール | 2007年3月21日 | 2 | 1983年4月1日 |
104 | アレックス | スチュアート | 2008年2月1日 | 2 | 1984年11月6日 |
105 | ロバート | ジェームズ | 2008年1月4日 | 3 | 1984年12月1日 |
以下は、SELECTステートメントの例です。
SELECT EmployeeNo,FirstName,LastName
FROM Employee;
このクエリが実行されると、employeeテーブルからEmployeeNo、FirstName、およびLastName列がフェッチされます。
EmployeeNo FirstName LastName
----------- ------------------------------ ---------------------------
101 Mike James
104 Alex Stuart
102 Robert Williams
105 Robert James
103 Peter Paul
テーブルからすべての列をフェッチする場合は、すべての列を一覧表示する代わりに、次のコマンドを使用できます。
SELECT * FROM Employee;
上記のクエリは、employeeテーブルからすべてのレコードをフェッチします。
WHERE句
WHERE句は、SELECTステートメントによって返されるレコードをフィルタリングするために使用されます。条件はWHERE句に関連付けられています。WHERE句の条件を満たすレコードのみが返されます。
構文
以下は、WHERE句を使用したSELECTステートメントの構文です。
SELECT * FROM tablename
WHERE[condition];
例
次のクエリは、EmployeeNoが101のレコードをフェッチします。
SELECT * FROM Employee
WHERE EmployeeNo = 101;
このクエリを実行すると、次のレコードが返されます。
EmployeeNo FirstName LastName
----------- ------------------------------ -----------------------------
101 Mike James
ORDER BY
SELECTステートメントが実行されると、返される行は特定の順序ではありません。ORDER BY句は、任意の列でレコードを昇順/降順で配置するために使用されます。
構文
以下は、ORDERBY句を使用したSELECTステートメントの構文です。
SELECT * FROM tablename
ORDER BY column 1, column 2..;
例
次のクエリは、employeeテーブルからレコードをフェッチし、FirstNameで結果を並べ替えます。
SELECT * FROM Employee
ORDER BY FirstName;
上記のクエリを実行すると、次の出力が生成されます。
EmployeeNo FirstName LastName
----------- ------------------------------ -----------------------------
104 Alex Stuart
101 Mike James
103 Peter Paul
102 Robert Williams
105 Robert James
GROUP BY
GROUP BY句はSELECTステートメントで使用され、同様のレコードをグループに配置します。
構文
以下は、GROUPBY句を使用したSELECTステートメントの構文です。
SELECT column 1, column2 …. FROM tablename
GROUP BY column 1, column 2..;
例
次の例では、DepartmentNo列でレコードをグループ化し、各部門からの合計数を識別します。
SELECT DepartmentNo,Count(*) FROM
Employee
GROUP BY DepartmentNo;
上記のクエリを実行すると、次の出力が生成されます。
DepartmentNo Count(*)
------------ -----------
3 1
1 1
2 3