写真 探しものの旅に出るSQL Server女子。何のこっちゃ?
当記事では、Windows Server系のレンタルサーバーで有名なWinserver(ウインサーバー)社の共用サーバーで、Microsoft SQL Serverを使う実験をしてみたので、その過程を紹介したい。
第一回目の当記事では、
- データベースの作成方法
- 自宅パソコンからそのデータベースに接続する方法
- そのデータベースにテーブルなど作成してSQL文を実行する方法
などを解説したい。
結論としては、とっても簡単だ。
なお、このWinserverのWindows共用サーバーにおいてMicrosoft SQL Serverを使う実験は、今後も行う予定なので、何回かのシリーズ記事にしたいと思っている。
今回が第一回目の記事だ。
第二回目は、Visual StudioのC#を使ってプログラムでデータベースを操作する手法など解説したいと思っている。その次は、ASP.NET MVCのウェブサイトにおいてデータベースを使う手法を紹介したいと考えている。
では、本題に入ろう。
Winserver社の共用サーバーにMicrosoft SQL Serverデータベースを追加する
ウィンサーバー さんはWindows Server OSに特化した各種のレンタルサーバーサービスを提供している会社だ。
今回はその中のWindows 共用サーバーを使ってSQL Serverデータベースを操作する実験を行う。
Windows VPSの場合ならオペレーティングシステムやSQL Server(あるいはSQL Server Expressなど)のデータベースのインストールは自分で行う必要があるが、Windows共用サーバーの場合なら、運営元(ウインサーバーさん)が全てやってくれているので、とっても楽ちんに利用できるのだ。
WinserverのWindows共用サーバープラン紹介
WinserverのWindows共用サーバープランは下図のように、本日の時点で三種類ある。
今回の実験に使うのは下図左のWindows Server 2019プランだ。
図 WinserverさんのWindows共用サーバープラン一覧
上図に示すように、WinserverさんのWindows共用サーバープランでは最新版Windows Serverオペレーティングシステムはもちろん、必要なら古いバージョンのWindows Server OSを選択する事も可能だ。
なので、実行したいアプリケーションに応じて最適なオペレーティングシステム環境(OSバージョン、PHPバージョンなど)を選択する事が出来る。
世間一般ではLinux系共用サーバーのほうが数が多いが、Windows 共用サーバーならLinux系の知識は全く必要ない。
そう言う点ではこれから新規にレンタルサーバーを借りる人は、Windows共用サーバーと言う選択肢もお勧めだと思う。
かつ、WordPressやEC Cubeの簡単インストール機能もあるので、ブログサイトやショッピングサイトがお手軽に構築出来るのだ。
WinserverのWindows共用サーバーにMicrosoft SQL Serverを追加する
WinserverのWindows共用サーバー管理画面に入ると、「Microsoft SQL Server追加」と言うサブメニューがある(下図)。
今回使っているWindows Server 2019 Standardプランの場合、本日の時点では、追加できるデータベースは下図のように「Microsoft SQL Server 2017」が用意されている。
図 WinserverのWindows共用サーバー管理画面でMicrosoft SQL Serverを追加する例
あとは、データベース名、ユーザー名、パスワードの入力欄があるので、自分の好きな値を入れて「データベースを作成」ボタンをクリックするだけで良い。
なお、注意事項としては、これらの入力欄は英数字(パスワードなら英数記号)を入力するのが無難だろう。日本語データベース名、日本語ユーザー名なども可能かとは思うが試していない。
また、パスワードは安全の為には長い方が良い。
WinserverのWindows共用サーバー管理画面には以下の注意書きがある。
※パスワードの要件は、半角英大文字/半角英小文字、半角数字を組み合わせた、ユーザ名とは異なる12文字以上の文字列となります。
パスワードは12文字以上との事だが、最長何文字まで可能なのかは未確認だ。
ワテの場合には、例えば以下のような感じで入力した(例)。
データベース名:wareko_mssql_2017 ユーザー名:wareko パスワード:WVaKdAk")aJ()Bi!E,F~36d')Viai14i8A5>""&)'&)-}vuRY,MW%: (例)
パスワードは英数記号を組み合わせて64文字にしてみたが、無事にデータベースの作成が成功した。
なお、データベースの作成が成功しても、上で入力したデータベース名、ユーザー名などはこの管理画面には表示されないので、あとから確認する手段がない。なので、忘れないようにメモ帳などに書き込んでパソコンに保管しておく必要がある。
ちなみにパスワードの生成はワテ自作の便利サイトを利用した。
https://www.wareko.net/WebPasswordGenCoreMVC/
このウェブサイトを使うと一瞬にして4文字~255文字までのパスワードを生成出来るので、皆さんにお勧めしたい。
Winserverの共用サーバーでは標準ではSQL Serverデータベースは一つ
なお、Winserverの共用サーバー管理画面では以下の注意書きがある。
※Microsoft SQL Serverのデータベースは1つしか作ることができません。
2つ以上ご利用いただく場合は、お手数ですが、
データベース追加オプションをお申込みください。
まあ、物凄く大規模なシステムでも開発するなら複数個のデータベースを組み合わせて利用するなども行われるが、殆どの利用者にはデータベースは一つあれば足りると思う。
ウインサーバーさんのサイトから三種類の共用サーバープランの基本情報表を一部引用させて頂く(下表)。
基本情報 | |||
STARTER2019 | EXPERT2019 | PRO2019 | |
OS | Windows Server 2019 | ||
Webサーバー (Trust Level) |
IIS 10.0/Full | ||
Web領域 | 10GB | 20GB | 200GB |
SQL Server 2017 | 10GB | 20GB | 30GB |
MariaDB 10.3.14 | 〇 | 〇 | 〇 |
表 ウインサーバー社の三種類の共用サーバープランの基本情報表(一部)
この表を見ると、標準装備されているSQL Server 2017データベースが一つあれば10GBまでのデータを扱える。データベースの中には自分で自由にテーブルを幾つも作成出来るので、それら複数のテーブルに保管するデータの合計が10GBを超えなければ良いのだ。
もしそれ以上の大きさのデータを扱いたい場合には、10GBの容量を増やす事が可能なのかどうかは未確認だ。
SQL Server 2017自体は最大データベースサイズ524PBまでのデータを扱える(参考サイト)のでストレージを10GB以上に増やす事は技術的には可能だが、ウインサーバーさんで10GBの制限を解除して例えば100GBまでの利用契約に変更出来るのかなどは未確認なので、もし大きなデータを扱いたい人は事前に確認すると良いだろう。
でもまあ、10GBあれば十分足りると思う。もし画像データなどのファイルサイズの大きなデータを扱いたい場合には、データベースに画像を保存せずに、画像そのものは別のサーバーに保存して、画像のURLをデータベースに保持するなど、色んな手法があるからだ。
SQL Serverを自宅から操作してみる
さて、早速データベースを操作してみよう。
データベースを操作する手法は沢山ある。プログラムで操作しても良いし、専用の管理ツールを使っても良い。
ここではMicrosoft SQL Server Management Studioと言うマイクロソフト社純正の無料管理ツールを使ってみる。
本日の時点で最新版のSQL Server Management Studio (SSMS)のバージョン18を使う。一つ前のバージョン17でも良い。
下図はワテの自宅のWindows 10 Pro 64bitパソコンの画面だ。
これらのツールはマイクロソフト社のサイトから無料でダウンロード出来る。インストールも簡単だ。
なお、
SQL Server Management StudioはSSMSと略される。
Microsoft SQL ServerはMSSQLと略される。
SQL Server Management Studio (SSMS)を使う
では、早速、SQL Server Management Studio (SSMS)を使ってみる。
図 SQL Server Management Studio (SSMS)を起動する
起動すると下図に示す「サーバーへの接続画面」が出る。
図 SQL Server Management Studio (SSMS)の「サーバーへの接続画面」
上図において、入力欄には以下のように入力した。
サーバーの種類:データベースエンジン サーバー名:mssql9.winserver.ne.jp,1433\SQLEXPRESS 認証:SQL Server認証 ログイン:上で設定したユーザー名 パスワード:上で設定したパスワード
ここで注意しておく事は、MSSQLが稼働しているサーバー名は上でデータベースを作成した時点では表示されないので、ウインサーバーさんに問い合わせて教えて貰う必要がある。
ワテも問い合わせたら教えて貰った。
mssql9.winserver.ne.jp
あとは、「1433」は接続するポートの番号なのだが、これはMSSQLのデフォルトが1433なのでその値を試したら無事に接続出来た(後述)。
また、「SQLEXPRESS」はデータベースのインスタンス名なのだが、これもデフォルト値の「SQLEXPRESS」で上手く行った。
ちなみに、MariaDBをWinserverさんの共用サーバーに作成した場合には、データベースサーバーの名前は管理画面で後から確認する事も出来る。MadiaDBの操作は以下の記事で紹介している。
SSMSでデータベースに接続成功した
SSMSを使ってMSSQLに接続成功すると下図の画面が出る。
通常は上図の「接続」ボタンをクリックすると数秒以内に下図の画面が出る。
図 SSMSで無事にデータベースサーバーに接続成功した画面
逆に言えば、もし何秒も経っても接続されない場合には、何らかの入力が間違えている。例えばサーバー名、ユーザー名、パスワードなど。
サーバーのプロパティでMSSQLのバージョンを確認する
さて、上図のサーバー名(mssql9.winserver.ne.jp,1433\SQLEXPRESS)の上で右クリックしてプロパティ表示すると下図が出る。
図 SSMSでサーバーのプロパティを見てみる例
製品:Microsoft SQL Server Web (64-bit)
のように表示された。確かにSQL Server(有料製品)だ。
もし無料版ならSQL Server Expressと表示される。
自分で作成したデータベースを確認する
先ほど、Winserverの共用サーバー管理画面で作成したデータベースを見てみる。
そうすると確かに「wareko_mssql_2017」と言うデータベースがある(下図)。
図 SSMSのオブジェクトエクスプローラー画面
データベースにテーブルを作成する
データベースにテーブルを作成してみよう。
テーブルとは、まあ例えて言えばエクセルの表のような物だ。
多数の行と列からなる表だ。
さっそくテーブルを作成する為に、下図のように「テーブル」と言う項目の上で右クリックして「新規作成」の「テーブル」を実行する。
図 テーブルの新規作成を行う例
そうすると下図に示すテーブル作成画面が表示される。
図 SSMSのテーブル作成画面
上図において、「列名」「データ型」は以下のように入れてみた。
列名 | データ型 | NULLを許容 |
name | nvarchar(50) | ☑ |
age | int | ☑ |
address | nvarchar(MAX) | ☑ |
表 簡単な名簿のテーブルを作成してみた
つまりまあ、簡単な名簿のテーブルだ。
ここで、nvarcharは何かと言うと可変サイズのUnicode文字を意味する。
nchar および nvarchar (Transact-SQL)
固定サイズ (nchar)、または可変サイズ (nvarchar) の文字データ型です。
SQL Server 2012 (11.x) 以降、補助文字 (SC) が有効になっている照合順序を使用する場合、これらのデータ型には Unicode 文字データの全範囲が格納され、UTF-16 文字エンコードが使用されます。
SC が無効の照合順序を指定する場合、これらのデータ型には UCS-2 文字エンコードでサポートされている文字データのサブセットのみが格納されます。
引用元 https://docs.microsoft.com/ja-jp/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver15
なので、nvarchar(50)なら50文字までの全角文字を保管できる。
nvarchar(MAX)は何かと言うと以下の通り。
nvarchar [ ( n | max ) ]
可変サイズの文字列データです。 n によってバイト ペアでの文字列のサイズが定義されます。1 から 4,000 までの値を指定できます。max は、ストレージの最大サイズが 2^30-1 文字 (2 GB) であることを示します。 ストレージのサイズは、n の 2 倍のバイト数 + 2 バイトです。
UCS-2 エンコードの場合、ストレージのサイズは n の 2 倍のバイト数 + 2 バイトとなり、格納できる文字数もまた n となります。 UTF-16 エンコードの場合、ストレージのサイズは引き続き n の 2 倍のバイト数 + 2 バイトですが、補助文字によって 2 つのバイト ペア (またはサロゲート ペア) が使用されるため、格納できる文字数は n よりも少なくなる場合があります。 ISO シノニム nvarchar は national char のさまざまな と 各国語文字がさまざまなです。
引用元 https://docs.microsoft.com/ja-jp/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver15
つまりまあ、nvarchar(MAX)のカラムには2GBまでの文字を保持出来ると言う事かな。たぶん。
まあ、今回は住所(address)を保持するカラムなのでせいぜい100文字くらいでも良いだろう。その場合にはnvarchar(100)で良い。
入力が終わったら、入力画面右上の✖をクリックしてウインドウを閉じると下図の確認画面が出るので「はい」を選択する。
そうすると下図のテーブル名の確認画面が出るので好きな名前を入れてOKをクリックする。
その結果、無事にデータベース内にテーブルを作成する事が出来る。
ただし上図のように「最新の情報に更新」を実行しないとテーブルが表示されない。
無事にテーブルの作成が完了した(下図)。
図 テーブル dbo.Table_1を作成した例
ここで「Table_1」は先ほど入力したテーブルの名前だが、その左に付いている「dbo」は何か気になる。
組み込みスキーマ
SQL Server には、組み込みのデータベース ユーザーおよびロールと同じ名前を持った 10 個の定義済みスキーマが付属しています。 これらは主に下位互換性を確保するために存在します。 固定データベース ロールと同じ名前のスキーマは、不要であれば削除してもかまいません。 次のスキーマを削除することはできません。
- dbo
- guest
- sys
- INFORMATION_SCHEMA
dbo スキーマ
dbo スキーマは、新しく作成されたデータベースに使用される既定のスキーマです。
引用元 https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/sql/ownership-and-user-schema-separation-in-sql-server
ワテの場合、最初のうちはこの「dbo」ってのが一体全体なんなのかサッパリ分からなかったのだが、今では慣れた。
詳しい説明は各自マイクロソフト社のサイトで勉強して頂くのが良いが、実用上はデータベースのテーブルにアクセスする時には
Table_1
ではなくて、
dbo.Table_1
の形式を使うと良い(この後、実際にSQL文を実行する時にその例を示す)。
テーブルにデータを入力する
実際にデータベースを運用開始した場合には、テーブルにデータを入力するならプログラム的な手法で行う場合が多いだろう。
例えば何らかの会員登録制のウェブサイトにおいて、名前や住所などの入力欄があり、そこに入力して「登録」ボタンをクリックするとそれらの情報がデータベースに保管されるなど。
それらの例は次回以降の記事で紹介したいが、ここではSSMSの画面で直接テーブルにデータを入力してみる。
まあ例えて言えばエクセルの画面を開いてセルにデータを手入力する感じだ。
早速やってみる。
下図のようにテーブル名の上で右クリックして「上位200行の編集」を実行する。
そうすると下図が開く。
上図を見れば分かると思うが、まさにエクセルの画面と同じ形式だ。
適当にname, age, addressの欄にデータを入力してみた。
nameカラムはnvarchar(50)で定義しているので、Unicode文字で50文字まで可能だ。
なので上例のようにアラビア語でシンドバッド(سندباد)と入力する事も可能だ。
あと、各カラムはNULL許容型にしているので、データを入力しなくてもエラーは出ない。
入力が完了したら、入力画面右上の✖をクリックしてウインドウを閉じる。
なお、上で見たように「上位200行の編集」なので、201行以上のデータをこの画面で入力する事は出来ない。
もし201以上の多数のデータをテーブルに書き込みたい場合には、この後でやるSQL文を実行する手法でデータを書き込むなどのやり方で出来る。
テーブルに入力されているデータを表示してみる
先ほど入力したデータを見てみよう。
テーブル名の上で右クリックして「上位1000行の選択」を実行する。
そうすると下図が出る。
図 SQL文を実行してテーブルのデータ上位1000件までを取り出した例
この右上の部分は以下のSQL文だ。
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/
SELECT [name]
,日付未入力
,[address]
FROM [wareko_mssql_2017].[dbo].[Table_1]
それを実行した結果が上図右下の部分で、確かに先ほど手入力した三行のデータが表示出来ている。
上のSQL文で、以下の行に注目すると良い。
FROM [wareko_mssql_2017].[dbo].[Table_1]
データベースを指定するには、このように
[データベース名].[スキーマ名].[テーブル名]
三つの名前をドットで連結して指定するのだ。
特定のデータを取り出すSQL文を実行してみる
では、例えば年齢(age)が35歳の人だけを取り出すSQL文を実行してみよう。
先ほどのSQL文の末尾にWHERE条件を一行追加した。
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/ SELECT [name] ,日付未入力 ,[address] FROM [wareko_mssql_2017].[dbo].[Table_1] where 日付未入力 = 35
コード 年齢35歳の人を取り出すSQL文
このSQL文を実行するには、メニューバーにある「▶実行」アイコンをクリックすれば良い。
その実行結果を以下に示す。
その結果、上図のように年齢35歳の人を抽出する事が出来た。
このSQL文をファイル保管しておきたい場合には、入力画面右上の✖をクリックしてウインドウを閉じると下図が出るので、「はい」をクリックすればファイルに保存出来る。
と言う事で、Microsoft SQL Server Management Studioを使ってSQL Serverを操作するのはとっても簡単でしょ!
まとめ
当記事では、Winserver社のWindows共用サーバーにおいて、SQL Serverのデータベースを一つ作成して、そのデータベースをMicrosoft SQL Server Management Studioを使って自宅のWindows 10パソコンから操作する例を紹介した。
自宅パソコンもWindows 10 Pro、共用サーバーもWindows Server 2019なので、全てWindows系オペレーティングシステムで完結しているのだ。
その結果、Linux系の知識は一切必要が無いので、Linuxを知らなくても簡単にこれらの作業が出来るのだ。
SSMSを使えば使い易いGUI環境でSQL文の実行実験が可能なので、データベース未経験の人でも扱い易いツールだと思う。
SSMSを使ってデータベースの操作に慣れたら、PHPやC#あるいはPythonなどのプログラミング言語を使ってデータベースを操作するテクニックを覚えると良いだろう。
次回の第二回記事では、プログラムでデータベースを操作する例を紹介したいと思ている。
乞うご期待
コメント