とりあえず半歩

学んだことを1日1個、簡単なことでも良いから記録していきたい。

T-SQL

テーブル変数は小さなテーブル向きらしい

記録 テーブル値はあまり多行テーブルを扱うことに向いていないようだ。

OVER句はSS2012以上で使いたい

記録 SQL Server 2008 R2とSQL Server 2012ではOVER句で出来ることが大きく異なる。

ストアドプロシージャとビューとユーザー定義関数

課題 ストアドプロシージャとビューとユーザ定義関数について調べる。 一文で済ますには複雑で、定期的に繰り返すSELECT文を書くことになった。取り敢えずガリガリ書いてファイル保存して定期実行でも良いが、そのSELECT文の結果をほかの人も欲しがるとなる…

与えられたレコードと一致するレコードがあるか(力技で)確認する

課題 DBのあるテーブルと構成の同じレコードが与えられた時、そのレコードの要素全てが一致するレコードがテーブル内に存在するか確認するクエリを書く。

主キーのないテーブルから重複レコードを削除する

課題 主キーがないことが原因で同一レコードが複数登録されているテーブルから重複レコードを削除し、テーブル内のレコードが全て唯一な状態にする。

SQL Serverのデータインポートウィザードを使って日時データをインポートする

課題 SQL Serverインポートウィザードを使ってcsvのインポートを試みたところ、日時データでエラーが発生する。その理由を探った。(簡単だった)

GOとセミコロンってなんだろうか

課題 何となく使っていたGOと;(セミコロン)って一体なんだろうと思ったので調べることとした。

グループ毎に最大値や最小値を持つレコードを抽出する(その2)

課題 以前「グループ毎に最大値や最小値を持つレコードを抽出する」という記事をまとめた(下記リンク)。 2015-09-28 - とりあえず半歩 この時は自前のサンプルデータを用意して試していたが、コードが小奇麗になったくらいで実行時間などいまいち違いがわ…

サンプルデータベースを用意してアタッチする

課題 クエリのテストや学んだことを試したい時、サンプルデータベースがあるとすぐに試すことができて便利だと思う。 嬉しいことにMicrosoftはAdventureWorksというサンプルデータベースを用意してくれている。 これからの勉強のための準備として、今回はこ…

何度も使う中間テーブルに名前をつけてクエリを見やすくする

課題 クエリを書いていると、何度も同じ中間テーブルを書いている時がある。自分の場合、テーブル結合を幾つかしている時に多い。 同じ中間テーブルのクエリを何度も書いているとミスの元だし修正するにも手間だし見難いしで大変なので、共通テーブル式を使…

一時テーブルが存在していたら削除する

課題 SQL Server Management Studio上で一時テーブルを使ったクエリをテストしているとき、テスト前に毎回一時テーブルを手動で削除するのが面倒。テスト実行時に一時テーブルが存在していたら削除して作りなおすようにしたい。

複数レコードを一括挿入する

課題 INSERT文で複数レコードをテーブルに一括挿入する。 1レコード挿入するごとにINSERT文を1文書くのも大変なので、まとめて挿入したい。

グループ毎に最大値や最小値を持つレコードを抽出する

課題 グループ毎に最大値や最小値を持つレコードを抽出する。 少し前までJOINを使って実現してきたけれど、実行時間が長くて困っていた。データ抽出にかかる時間を短くしたい。 実行 実行環境はMicrosoft SQL Server 2008 R2 Express. 次に示すサンプルテー…

レコードの挿入・更新・削除とビューの作成・変更

課題 SELECT以外のレコード操作を覚える。 いつも「UPDATEの文法ってなんだっけか」とか「DELETEってこんな使い方で合ってるよね……?」と迷って調べて時間がかかる。文法を定着させて調べることに使っていた時間をほんのちょっと短縮しよう。 実行 []で囲ま…