C#のテキストを見ながら勉強してるけど、
ここに書けるほど、噛み砕けなくなってきた…


今日は久しぶりにSQL Server Management Studioのおさらい。
さらっとね。


■データベースの作成

オブジェクトエクスプローラーの「データベースフォルダ」右クリック
→「新しいデータベース」

「新しいデータベース」ダイアログが開いたら名前を付ける。
例えば「sampleDB」みたいに。
あとはほとんど規定値のままで[OK]


■テーブルの作成

オブジェクトエクスプローラー内「sampleDB」のフォルダ
→「テーブル」を右クリック
→「新しいテーブル」

「テーブルデザイナ」ウィンドウが開くので
列名、データ型、NULLの許容 を設定

【データ型】一部
 整数   int
 文字列  char
 日付   date

【NULLを許可する?】
チェックを入れたところは、値を入れなくてもOK、てこと。



~クエリの使い方~

※選択&「実行(X)」…実行したい記述だけを選択し「びっくり!!実行(X)」をクリックすること。
※ 文字と日付は「'(シングルクォーテーション)」で囲むこと!
※ NULL値のところは、NULLでいいよ。

■データベースを使用する

USE sampleDB
+選択&「実行(X)」



■データの追加

INSERT INTO テーブル名
VALUES (値1,値2,…)

+選択&「実行(X)」



…でもいいんだけど、

INSERT INTO テーブル名 (列1,列2,…)
VALUES (値1,値2,…)

+選択&「実行(X)」

のほうが、後からコードを見た人に親切です。



ちなみに、一度にたくさんのデータを入力する時は、

INSERT INTO テーブル名 (列1,列2,…)
VALUES (値1,値2,…)
, (値1,値2,…)
, (値1,値2,…)

+選択&「実行(X)」



■データの確認

select * from テーブル名

*はワイルドカード。つまり、なんでもOK
上記だと、テーブルの全データが見れます。



「列名1と列名2だけ見たい!」てのがあったら、

select 列名1,列名2 from テーブル名

ってすれば、全データの内、「列名1」と「列名2」だけをピックアップできる。


また、「こんな条件で引っ掛けたいんだけどなー」という場合は、

select ( * もしくは列名指定 ) from テーブル名
where 行の条件

で見たい条件でピックアップできます。
たとえば~「社員番号 = 2」みたいに。
データが文字列の場合は、'で囲む!



■データの更新

update テーブル名
set 更新したい列名 = 更新後の値
where 更新したい行の条件

where句をつけなかった場合は、すべてのデータの該当の列が更新されちゃいます。



■データの削除

delete from テーブル名
where 削除したい行の条件



■データベースのバックアップ

UPDATEやDELETEする前に、バックアップしとくと安心♪

オブジェクトエクスプローラで該当のデータベースを右クリック
→タスク→バックアップ に進む。
→「データベースのバックアップ」ダイアログで[OK]をクリック。
 バックアップ先とか選べるけど、デフォルトでいいしね。



■データベースのリストア(復元)

テーブルを色々といじっちゃって、元に戻したいときに使用。

クエリエディタを閉じる。(.sqlで保存もできる)
→オブジェクトエクスプローラで該当のデータベースを右クリック
→タスク→復元→データベース に進む。
→「全般」の「データベースの復元」ダイアログで「復元するバックアップセットの選択」で
 バックアップを選択し、[OK]をクリック。
→データベース上書き防止の警告が表示される。
→「オプション」の「復元オプション」内、「既存データベースを上書きする」にチェックし[OK]クリック。

うまくいかないときは、データベースへアクセスしているエディタがないか
チェックしてください。



■クエリエディタに記述したステートメントの保存

どんな作業をしたのかを保存します。

ファイル→名前をつけてSQLQuery1.sqlを保存→保存先を選択→「保存」


ちなみに、開く場合は、

ファイル→開く→ファイル で開ける。
今日は、用語に惑わされることが多いので
よく使う(と思う)用語をまとめてみました。

【参考資料】
作って覚える Visual C# 2008
荻原裕之/宮崎昭世
(株)秀和システム 2008年



プロパティ     オブジェクトの中の「データ」 性質
メソッド      オブジェクトの中の「処理」
イベント      オブジェクトの処理を行うきっかけ
イベントハンドラ  イベントが発生したときに、実際に呼ばれるメソッド


クラス       集まり、ひながた。共通の目的を持ったデータと処理を集めたもの
          public class クラス名
インスタンス    クラスを元にして、実際の処理やデータを扱う


抽象クラス     元のクラスを実体化させない
          public abstract class クラス名:クラスのメソッドに記述
          インスタンスを持たない。必ず継承し、継承元のクラスになる


インターフェイス  プロパティ、メソッドの名前だけを決めて、細かい値や動作は継承したクラスで行う
          public interface Iインターフェイス名
以下のサイトを参照しました。
C# によるプログラミング入門
http://ufcpp.net/study/csharp/index.html


■ 変数

整数 n といったように、「型」を明示する。

bool b; // 論理値型の変数 b
int n; // 整数型の変数 n
double x; // 実数型の変数 x
char c; // 文字型の変数 c
string s; // 文字列型の変数 s


■ リテラル

直接ソースファイル中に値が書かれた定数のこと

bool b = true; // 論理値リテラル
int n = 26983; // 整数リテラル
double x = 10.362; // 実数リテラル
char c = 'a'; // 文字リテラル
string s = "文字列"; // 文字列リテラル

ここで使われている = は代入を意味し、左辺の変数に右辺の値を代入するもの。


■ 式と演算子

int a = 3, b = 5, c, d; // 整数型の変数を4つ用意
c = (a + b) / 2; // c に a と b の平均値を代入
d = a * b; // d に a と b の積を代入

int a = 5 * 2 + 3 * 4; // 掛け算が先。a の値は (5×2) + (3×4) で 22 になる。


■ 文

int c, d; // 宣言文: 変数を用意。
int a = 3, b = 5; // 宣言文: 変数の宣言と同時に初期化もできる。
c = (a + b) / 2; // 代入文: c に a と b の平均値を代入
d = a * b; // 代入文: d に a と b の積を代入

4つの文を;で区切っている。


複数の文を {} で括ることで一塊の文とみなすことができる。

{
c = (a + b) / 2;
d = a * b;
} // 2つの文を1つのグループに

グループ化された文を複文またはブロック(block)という。

----------

ためしに、こーいうのを作ってみた。


using System;

class StatementSample
{
static void Main()
{
double x, y, z; // 変数を宣言。

// xにユーザーの入力した値を代入。
Console.Write("1つ目の数値を入力 : ");
x = double.Parse(Console.ReadLine());

// yにユーザーの入力した値を代入。
Console.Write("2つ目の数値を入力 : ");
y = double.Parse(Console.ReadLine());

// 入力された値を元に計算
x = x * x;
z = x - y;

// 計算結果を出力
Console.WriteLine("あなたが1つ目に入力した数値の階乗は {0} で、2番目との差は {1} です。", x, z);
Console.WriteLine();
}
}



結果は

1つ目の数値を入力 : 10
2つ目の数値を入力 : 10
あなたが1つ目に入力した数値の階乗は 100 で、2番目との差は 90 です。


って、そっか、xは値が変わっちゃうのか。

----------
2つの整数を入力させて、四則演算させるもの。
超簡潔!一応記録♪
改行は\nでいいんだね。


using System;

class Exercise
{
static void Main()
{
Console.Write("input a: ");
int a = int.Parse(Console.ReadLine());
Console.Write("input b: ");
int b = int.Parse(Console.ReadLine());

Console.Write("{0} + {1} = {2}\n", a, b, a + b);
Console.Write("{0} - {1} = {2}\n", a, b, a - b);
Console.Write("{0} * {1} = {2}\n", a, b, a * b);
Console.Write("{0} / {1} = {2}\n", a, b, a / b);
}
}