SQLでテーブルのレコード数を取得する方法をご紹介します。
サンプルテーブル
以下の商品テーブル「goods」を元に説明します。
| 商品テーブル「goods」 | | |
| //write-remember.com/wordpress/wp-content/uploads/2016/01/26cb158d92485675df251b7cf17ff9e4.png\"> | //write-remember.com/wordpress/wp-content/uploads/2016/01/26cb158d92485675df251b7cf17ff9e4.png\" alt=\"\" width=\"289\" height=\"116\" class=\"aligncenter size-full wp-image-4813\" />" |
単純なレコード件数の取得
SQL
SQLは
「SELECT COUNT(*) FROM [テーブル名];」形式で記述します。
|
|
SELECT COUNT(*) FROM goods; |
実行結果
重複データを除いたレコード件数の取得
SQL
重複データを除いて取得する場合、SQLは
「SELECT COUNT(DISTINCT [列名]) FROM [テーブル名];」形式で記述します。
|
|
SELECT COUNT(DISTINCT type_code) FROM goods; |
実行結果
業務でSQLを使用する場合、必ず使用する事になると言って良いのがテーブルの結合処理です。WEB系システムの場合、そのほとんどはRDBMSを使用してますのでテーブルが一つだけなどという事はまずありえません。複数のテーブルからその時々に応じて必要なデータを取得し使用するのが常です。その際に重要になるポイントの一つが内部結合と外部結合です。
サンプルテーブル
以下の商品テーブル「goods」と属性コードテーブル「type_code」を元に説明します。
| 商品テーブル「goods」 | 属性コードテーブル「type_code」 |
| " | " |
内部結合とは
- 2つのテーブルで一致したデータ行のみ取得します。
- SQLは「SELECT * FROM [テーブル名1] INNER JOIN [テーブル名2] ON [結合条件]」形式で記載します。
- サンプルSQL
|
|
SELECT goods.type_code, goods.name, type_code.code_name FROM goods INNER JOIN type_code ON goods.type_code = type_code.code; |
サンプルSQLの実行結果
外部結合とは
- 2つのテーブルで一致しないデータも含めてどちらか一方のテーブルのデータを全て取得します。
- SQLは左外部結合の場合、「SELECT * FROM [テーブル名1] LEFT OUTER JOIN [テーブル名2] ON [結合条件]」形式で記載します。
- SQLは右外部結合の場合、「SELECT * FROM [テーブル名1] RIGHT OUTER JOIN [テーブル名2] ON [結合条件]」形式で記載します。
- サンプルSQL(左外部結合の場合)
|
|
SELECT goods.type_code, goods.name, type_code.code_name FROM goods LEFT OUTER JOIN type_code ON goods.type_code = type_code.code; |
サンプルSQLの実行結果
SQLを理解する上で記載する各句の実行順序を理解している事はとても重要な事です。この辺の知識がおろそかになっていると複雑なSQLを書く場合や作成したSQLのパファーマンスに問題が発生した場合、他人か作成したSQLの修正などの対応に苦慮する事になるからです(はい私の事です)。逆に各句の実行順序を正しく理解していれば複雑なSQLもスラスラ書けるようになっていきます。
では今回は「SELECT文の各句の実行順番について」まとめておきます。
SELECT文で指定可能な句
SELECT文での指定順序で記載すると以下の様になります。
- SELECT句
- FROM句
- WHERE句
- GROUP BY句
- HAVING句
- ORDER BY句
SELECT文で指定可能な句の実行順序
上記の句を実際に実行される順序に並び替えると以下の様になります。
- FROM句
- WHERE句
- GROUP BY句
- HAVING句
- SELECT句
- ORDER BY句
テーブルのデータを削除する方法として「DELETE」コマンドと「TRUNCATE TABLE」コマンドの2つがあります。
両者を使用する場合、どのような用途で使用するべきか違いについてまとめておきます。
DELETE文
TRUNCATE文
「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。