DBの勉強/検証がてらにSQL Serverの導入を行いました。なお、コマンドベースでの作業の為にSSMSは使用していません。
※個人的には、SSMSの方が操作しやすいです。
以下リンクから、「SQL2019-SSEI-Eval.exe」を取得し、インストールを行っています。
SQL Server のダウンロード
インストール後に、Powershellからsqlcmdコマンドを実施します。
-S でサーバ名を指定、-E で認証方式をWindows認証で接続出来るようです。
Windows認証/SQL Server認証 と二つの認証方法があるようで、Windows認証だとWindowsにログインした際の認証情報を使うようでID/PASSの入力は必要ない。
SQL Server認証では、SQL Server側で管理しているID/PASSでログインを行う必要があるようです。
今回は、インストール後にID/PASSなどの設定を行っていないので、、
とりえあず、Windows認証でログインする事にします。
コマンド実行後に、1>と返ってきました。
PS C:\> sqlcmd -S localhost -E
1>
では、好きなアニメのキャラ情報などが入ったDBを作成したいと思います。
CREATE DATABASEで作成出来ます。ちなみに、GO打たないと実行されません。
当方はこの仕様を知らずに、何か間違えたか?と5分位無駄にしました。
1>CREATE DATABASE YUGIOH;
2>GO
作成したDBに移動します。
移動する前に現在地の確認を行い、移動します。
※DB_NAMEという関数を使用すれば、現在地が分かります。AS演算子で、列名をつけてます。
useを使って、master → YUGIOH にDBを切り替えます。
※下記URL参照
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/db-name-transact-sql?view=sql-server-ver16
>1SELECT DB_NAME() AS [Current Database];
>2GO
Current Database
--------------------------------------------------------------------------------------------------------------------------------
master
1> use YUGIOH;
2> go
データベース コンテキストが 'YUGIOH' に変更されました。
1> SELECT DB_NAME() AS [Current Database];
2> go
Current Database
--------------------------------------------------------------------------------------------------------------------------------
YUGIOH
テーブルの作成を行います。CREATE TABLEで作成出来ます。
作成後に、テーブルが出来ているかSelectで探してみます。
1>CREATE TABLE VANILLA(
2>code INT UNIQUE,
3>name VARCHAR(20),
4>attack INT,
5>defense INT);
6>GO
1> select * from VANILLA;
2> go
code name attack defense
----------- -------------------- ----------- -----------
(0 行処理されました)
テーブル作成後に、INSERTOでデータ挿入を行います。
selectで反映されているかを確認します。
1> INSERT INTO VANILLA (code,name,attack,defense) values (1,'ブルーアイズホワイトドラゴン',3000,2500)
2> INSERT INTO VANILLA (code,name,attack,defense) values (2,'ブルーアイズホワイトドラゴン',3000,2500)
3> INSERT INTO VANILLA (code,name,attack,defense) values (3,'ブルーアイズホワイトドラゴン',3000,2500)
4> INSERT INTO VANILLA (code,name,attack,defense) values (4,'ブラックマジシャン',2500,2100)
5> INSERT INTO VANILLA (code,name,attack,defense) values (5,'エルフの剣士',1400,1200)
6> INSERT INTO VANILLA (code,name,attack,defense) values (6,'ワイト',300,200);
7> GO
(1 行処理されました)
(1 行処理されました)
(1 行処理されました)
(1 行処理されました)
(1 行処理されました)
(1 行処理されました)
1> SELECT * FROM VANILLA;
2> go
code name attack defense
----------- ------------------------------ ----------- -----------
1 ブルーアイズホワイトドラゴン 3000 2500
2 ブルーアイズホワイトドラゴン 3000 2500
3 ブルーアイズホワイトドラゴン 3000 2500
4 ブラックマジシャン 2500 2100
5 エルフの剣士 1400 1200
6 ワイト 300 200
(6 行処理されました)
見慣れてる単語だと単調な作業でも楽しく感じます。インデントが気になりますが、今は無視します。
(sqlplusとかだと、formatすぐ弄りたくなるのですが、、)
簡単に、selectを叩いていこうと思います。ブルーアイズホワイトドラゴンの攻撃力と守備力を足して、totalカラムとして出力します。
1> select name,(attack + defense) as total from VANILLA where name = 'ブルーアイズホワイトドラゴン'
2> go
name total
------------------------------ -----------
ブルーアイズホワイトドラゴン 5500
ブルーアイズホワイトドラゴン 5500
ブルーアイズホワイトドラゴン 5500
地味に楽しいな、、土日にもう少し遊んでみようかなと思います。