ラベル SQLServer の投稿を表示しています。 すべての投稿を表示
ラベル SQLServer の投稿を表示しています。 すべての投稿を表示

2017年2月23日木曜日

SQL ループ文でインクリメント


ループして複数行を挿入する SQL 文を書いてみました。

テーブルはこんな構成です。







register 列は DateTime 型のデータです。ループの中では変数の @index を利用して
分(MINUTE)の部分をインクリメントして追加しています。

DECLARE @index int;
SET @index = 1;
WHILE @index < 10
BEGIN
DECLARE @toDate DATETIME = DATEADD(DAY, -1, GETDATE())
INSERT [Test1].[dbo].[TestTable] (id, name, register)
VALUES(
@index,
'user' + LTRIM(STR(@index)),
(SELECT DATEADD(MINUTE, @index, @toDate))
);
SET @index = @index + 1
END

実行すると行が複数挿入されており、分の部分が1ずつ増加しています。



2017年2月5日日曜日

SQL CASE 式の使い方

CASE 式を使って条件に応じた値を出力してみます。

select 
社員コード, 氏名, 在籍支社,/* テーブルに既存の列 */
case 在籍支社
 when '東京本社' then '関東'
 when '大阪支社' then '関西'
 else 'その他'
end as '在籍地域' /*CASE 式で取得した列の名前*/
 from 社員


実行結果

SQL Server 2014 に Northwind データベース(日本語版)をインストール

日本語版の Northwind データベースをインストールする方法をメモします。

SQLQuality さんという会社がデータベースのスクリプトファイルを公開して下さっているので、ありがたく利用させて頂きました。


1.SQL スクリプトの取得

SQL Server 2014 自習書シリーズ (HTML 版) 「No.5 Microsoft Azure SQL Database 入門」
http://www.sqlquality.com/Self2014/Self2014_AzureSQLDB/Text/Step04-02.html

→「サンプル スクリプト」というリンクに「NorthwindJ.sql」が含まれていますので、テキストエディタで開きます。NorthwindJ.sql に含まれる SQL 文を全部コピーします。

※ Northwind(英語版)のスクリプトはこちらで公開されています。


2.SQL Server Management Studio で SQL 文を実行

「新しいクエリ」をクリックし、クエリエディターを開きます。
1でコピーした SQL 文をクエリエディターに貼り付け、「実行」をクリックします。(もしくは NorthwindJ.sql を Management Studio で直接開いて実行しても OK です。)

→クエリを実行し、完了となれば終わりです。

2015年6月14日日曜日

SQL Server へ接続して Insert 文でテーブルにレコードを追加する(C#)


C# コードで SQL Server にあるテーブルに接続して、行を追加する例です。前回の記事同様、データベースへの接続には、SqlDataSource インスタンスを生成して接続文字列を予め設定しています。

ASPX:
<asp:TextBox ID="TextBox1" runat="server" Height="216px"
     TextMode="MultiLine" Width="334px"></asp:TextBox>
<asp:Button ID="Button1" runat="server"
     OnClick="Button1_Click" Text="Button" />
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
     SelectCommand="SELECT * FROM [Article]"></asp:SqlDataSource>

コードビハインド:
protected void Button1_Click(object sender, EventArgs e)
{
    // 接続文字列を指定してデータベースを指定
    SqlConnection conn =
     new SqlConnection(this.SqlDataSource1.ConnectionString);

    // 接続を開く
    conn.Open(); 

    string sqlQuery = "INSERT INTO Article (Content) VALUES (@Content)";
    // コマンドを作成する
    SqlCommand cmd = new SqlCommand(sqlQuery, conn);
    SqlParameter contentParam
     = new SqlParameter("@Content", this.TextBox1.Text);
    cmd.Parameters.Add(contentParam);

    // コマンドを実行
    cmd.ExecuteNonQuery();

    // 接続を閉じる
    conn.Close();
}

2015年6月13日土曜日

SQL Server へ接続して Select 文でテーブルを取得する(C#)

C# コードで SQL Server にあるテーブルに接続して、取得した結果(SqlDataReader)を DataTable に読み込む例です。データベースへの接続には、SqlDataSource インスタンスを生成して接続文字列を予め設定しています。

ASPX:
<asp:SqlDataSource
 ID="SqlDataSource1" runat="server"
 ConnectionString="<%$ ConnectionStrings:ConnectionString %>">
</asp:SqlDataSource>

コードビハインド:
// 接続文字列を指定してデータベースを指定
SqlConnection conn =
 new SqlConnection(this.SqlDataSource1.ConnectionString);

// 接続を開く
conn.Open();

// テーブルを取得する
string sqlQuery = "SELECT * FROM Article";

// コマンドを作成する
SqlCommand cmd = new SqlCommand(sqlQuery, conn);

// コマンドを実行
SqlDataReader reader = cmd.ExecuteReader();

// DataTable を作成する
DataTable dt = new DataTable();
// SqlDataReader からデータを DataTable に読み込む
dt.Load(reader);

//while (reader.Read()) // 1 行ずつ読み込む場合
//{
//    Debug.WriteLine("Id: {0} - Content: {1}",
//                             reader["Id"], reader["Content"]);
//}

// リーダーを閉じる
reader.Close();

// 接続を閉じる
conn.Close();

参考情報:
10 行でズバリ !! 接続型のデータ アクセス (ADO.NET) (C#)
https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-4d84bfef

2015年6月7日日曜日

Identity シードをリセットする

Identity シードをクリアするコマンドです。ここではシードを 0 に戻しています。
他の任意のシードにしたいときは適宜数値を割り当てます。

DBCC CHECKIDENT ('テーブル名', RESEED, 0)
GO

2014年10月11日土曜日

SQL Server 今日日付の数値を集計表示

SQL Server で数値列(Cost 列)から今日日付のレコードを集計して取得するクエリです。

SELECT           Date, SUM(Cost) AS TodaySum
FROM             BuyList
WHERE            (Date = DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())))
GROUP BY         Date


Comparing results with today's date?
http://stackoverflow.com/a/10395698

2014年10月10日金曜日

SQL Server 列の定義を変更

SQL Server のテーブルの列定義を変更するクエリです。

ALTER TABLE BuyList ALTER COLUMN Category nvarchar(50)

SQL Server からデータを取得した際に日本語部分が文字化けしてしまい、調べたところ Unicode に対応する
列タイプ(nvarchar)を設定すると日本語も文字化けせずに表示できるそうです。

SQL ALTER TABLE Statement
http://www.w3schools.com/sql/sql_alter.asp
→ Change Data Type Example

9.4.7 SQL Serverと接続する場合の前提条件と注意事項
http://itdoc.hitachi.co.jp/manuals/3020/30203M0360/EM030327.HTM
→ (2) SQL Serverと接続する場合の注意事項