SQL
www.pon-x.jp 前回の続き 前回からINSERT文に入りました。 今回は、それの応用です。 SELECT文を使った、INSERT文 例えば特定のレコードの内容の一部のカラムを変えてレコードを追加したい。なんてことがたまにある。 今回の目的は、そんなときにSELECT文を…
www.pon-x.jp 前回の続き 今回からテーブル関数について紹介していきます。 テーブル関数とは 前回は単一の値を返す、スカラ関数について説明しましたが、今回紹介するテーブル関数はその名の通りテーブルを返す関数です。 なんかイメージしにくいですよね。…
www.pon-x.jp 前回の続き 今回は、一時テーブルの扱い方について説明します。 一時テーブル その処理の中において、仮想にデータを保持したいときに扱うのが、一時テーブルです。 一時テーブルは実際にはテーブルを作成せず(実際は tempdbに作成される)に…
www.pon-x.jp 前回の続き 読者から、ソートの話が出てきているけど、ORDER BYの説明ってやってませんよね!?というご指摘を頂いた。 そのとおり、やっておりませんでした。 誠に失礼しました・・・。ということで、今回はソートの話です。 ORDER BY ORDER B…
www.pon-x.jp 前回の続き 前回からビューをやっておりますが、今回はその続きです。 今回はビューの変更と削除を行います。 ビューの確認 まず、ビューってどこにしまわれているの!?という疑問があろうと思うので、格納場所を確認しておきます。 SSMSの左…
www.pon-x.jp 前回の続き 今回は、動的にSQLを生成してみようと思います。 SQLを文字列として変数に格納 これ自体はそんなに難しいものではありません。 DECLARE @SQL NVARCHAR(500) SET @SQL = 'SELECT * FROM Person.Person' EXEC (@SQL) 上記は「SELECT *…
www.pon-x.jp 前回の続き 今回はIF ELSE文をやります。 PRINTコマンド IF文とは直接関係ありませんが、PRINTコマンドというのを使いながらIF文の動きを見ていこうと思います。 SELECTはテーブルのデータを出力していたのに対して、PRINTはコメントが表示され…
www.pon-x.jp 前回の続き 前回は、サブクエリを勉強しました。 今回は、サブクエリを使って、他のテーブルにデータが存在するかという確認をもって、抽出条件を決める方法を紹介します。 EXISTS EXISTSは、データが存在するかを確認するものです。 ちなみに…
www.pon-x.jp 今回は、日付型の扱い方を紹介していきます。 CONVERT関数 CONVERT関数は、データ型の変更を行ってくれます。 例えばこんな感じ。 SELECT GETDATE(), CONVERT(NVARCHAR, GETDATE()) GETDATE()は、現時点の日時を取得してくれるもので、CONVERT(…
www.pon-x.jp 前回の続き 今回は、データの挿入INSERTをやりたいと思います。 INSERT INSERT文はレコードを挿入するために使います。 文法はこんな感じ INSERT INTO [テーブル名] VALUES([データ1], [データ2]…) 例えば、Sales.SalesReasonテーブルにデータ…
www.pon-x.jp 前回の続き 今回は、外部ファイルを読み込む方法を紹介します。 BULK INSERT SQLSeverで外部ファイルを取り込む方法としての王道はBULKINSERTです。 では、さっそくやってみます。 BULK INSERT [テーブル名] FROM 'C:\Users\***\TEST.CSV' WITH…
www.pon-x.jp 前回の続き 今回は、変数の扱いについて説明していきます。 変数宣言 これまで、変数というのは使わずにきましたが、SQLでも変数を使う場面というのは多分にあります。 例えば、システムに組み込むときに、WHERE句の抽出条件を可変にしたいとき…
www.pon-x.jp 前回の続き 前回からUPDATE文に入り、WHERE句を活用までやりました。 今回は、他のテーブルと結合してデータを更新する方法を紹介します。 JOINを活用する。 あるカラムのデータについて、そのテーブルと別のテーブルを結合させて、別のテーブ…
www.pon-x.jp 前回の続き 前回はスカラ―関数をつくりました。 今回はこれの応用です。 スカラ―関数の定義変更 まず、定義したスカラ―関数をどこで確認すればよいかということですが、 オブジェクトエクスプローラーから、 [プログラミング]→[関数]→[スカラー…
www.pon-x.jp 前回のつづき 今回からいよいよSQLを書いていきます。 まずはSQLを書く準備 SSMSを立ち上げましょう。 立ち上がったら、「新しいクエリ」をクリックしてください。 そのあと、以下の図のようにプルダウンから「AdventureWorks2019」を選択して…
www.pon-x.jp 前回の続き 前回、CASE式をやりましたが、今回は応用的な事例を紹介します。 並び替えに使う。 ORDER BY で並び替えができるのですが、CASE式をもっておもしろい使い方ができます。 例えば、以下のようにPerson.PersonテーブルをPersonTypeでソ…
www.pon-x.jp 前回の続き 今回は繰り返し処理を行うためのWHILE文を紹介します。 WHILE文 繰り返し処理はWHILEの後に条件式をかいて、条件式がTRUEな限り繰り返し処理を行います。 こんな感じです。 WHILE [条件式] BEGIN -- ################## -- 何かしら…
www.pon-x.jp 前回の続き 今回からSQLの練習と行きたかったのですが、SQLはデータがないとなにもできないので、今回はデータベースを貯ちょっと作っていきたいと思います。 ありものを拾ってくる。 データベースを一から作る練習は今後やるとして、まずは簡…
www.pon-x.jp 前回の続き 今回は、条件分岐を目的とするCASE式を紹介します。 CASE式 CASE式は、もしデータが、〇〇だったら××、△△だったら□□みたいなかんじに読み替えてあげることを目的とします。 便利なのは、SELECT文をはじめ、UPDATE、DELETE、INSERTな…
www.pon-x.jp 前回の続き 今回は、前回お伝え出来なかった日付型の内容の続きを紹介します。 DATEDIFF 2つの日付間の間隔をとることができます。 以外に結構使うんですよね。 年、月、日、時、分、秒ごとに計測してみます。 DECLARE @DATE01 DATETIME = '20…
www.pon-x.jp 前回の続き 今回は、WHERE句において、部分一致検索の方法を紹介したいと思います。 部分一致検索 WHERE句を使って、必要なレコードを抽出する方法はすでに紹介しました。 www.pon-x.jp しかし、これはイコールをつかって、完全一致する条件で…
www.pon-x.jp 前回の続き 今回からデータの更新、UPDATEに入っていきます。 UPDATE UPDATE文は、データを変更するために行います。 こんなかんじにかきます。 UPDATE [テーブル名] SET [カラム名] = [更新したいデータの内容] では、前回作成したPerson.Pers…
www.pon-x.jp 前回の続き 今回は、関数を自作する際の説明をしていきます。 スカラー関数 スカラ―関数とは、単一の値を返してくれる関数であり、例えば同様の処理をたくさんやるときなどに関数定義をしておくと、簡単な構文で実装できることになります。 使…
www.pon-x.jp 前回の続き 今回はカーソルについて説明をしていきます。 カーソル カーソルとは1行ずつデータを取り出してループ処理のなかでデータをハンドリングしていくことを目的とします。 では、さっそくサンプルを示してみたいと思います。 以下は、Pe…
www.pon-x.jp 前回はトランザクションの意義について説明しました。 今回は実装してみたいと思います。 コミット では、トランザクションで処理を行いコミットしてみたいと思います。 以下例文です。 IF OBJECT_ID(N'tempdb..#TEMP', N'U') IS NOT NULL DROP…
今回からSQL Serverの連載を始まます。 環境を構築して、SQLをハンドリングすることが目的!! リレーショナルデータベースがいかに便利であるかということが、技術力をつけたうえで実感できることを目的としていきます。 SQL Serverには5つのエディションが…
www.pon-x.jp 前回の続き 今回は、サブクエリを勉強します。 サブクエリとは入れ子ともいわれ、例えば、親のSELECT文の中に子のSELECT文をいれるなどあります。 今回は、このSELECT文を使ったサブクエリを紹介します。 FROM句をサブクエリにする。 前回、HAV…
www.pon-x.jp 前回の続き 今回から、レコードの削除を行う、DELETE文を紹介します。 DELETE ここまで、SELECT文やUPDATE文をやってきましたが、これらの内容が抑えられていればそんなに難しいものではありません。 DELETE文はこんな感じに書きます。 DELETE …
www.pon-x.jp 前回の続き 今回はテーブルの削除です。 削除は、定義も何もわずらわしいことはないので、とっても簡単です!! DROP TABLE 前回作ったテーブルを削除してみましょう。 DROP TABLE Telephone_List 結果はこんな感じ。 ないものは消せない 上記…
www.pon-x.jp 前回の続き 複雑なSQLを作成していた場合に、簡単に呼び出す方法のひとつにビューがあります。 今回は、ビューの登録方法を紹介したいと思います。 CREATE VIEW 例えば、以下のようなSQLがあったとします。 SELECT PersonType, COUNT(PPP.Busin…