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

2017年9月14日木曜日

MySQL JOIN コマンド

incident テーブル
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(11)       | NO   | PRI | NULL    |       |
| title | varchar(1000) | YES  |     | NULL    |       |
| owner | int(11)       | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+

owner テーブル
+-------+---------------+------+-----+---------+-------+
| Field | Type          | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id    | int(11)       | NO   | PRI | NULL    |       |
| name  | varchar(1000) | YES  |     | NULL    |       |
+-------+---------------+------+-----+---------+-------+

incident テーブルと owner テーブルを結合する。
SELECT i.id, i.title, o.name
FROM `incident` AS i
RIGHT JOIN (SELECT id, name FROM `owner`) AS o
ON i.owner = o.id

2017年2月5日日曜日

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月4日土曜日

SQLDataSource.InsertParameters メソッドでパラメータに数値を割り当てる


パラメータに数値を渡すには、InsertParameters.Add メソッドの第 2 引数で数値型(DbType.Int32)を指定し、実際の登録する数値は第 3 引数で文字列型として渡します。また、下記例では値に含まれる ¥ マークを取り除くため、String.Trim メソッドを利用しています。

SqlDataSource1.InsertParameters.Add
(
    // this.Cost.Text は "¥700" のような文字列の値を保持しています。
    "Cost", System.Data.DbType.Int32, this.Cost.Text.Trim('')
);

文字のトリムと削除
http://msdn.microsoft.com/ja-jp/library/kxbw3kwc%28v=vs.110%29.aspx