Sign in Join
Wiki copytemporary

SQLdb Tutorial0/ja: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## 概要
22
33この記事は、SQLdb Tutorial 1, 2 と 3 で使うためのサンプルデータとサンプルテーブルを、データベース環境と同時に設定するためのものです。
44
55このページはとても長い文章からなっていますが、異なるデータベースシステムにおける説明を含んでいますので、必要な個所のみ読んでください。
66
77もしもあなたがすぐにでもチュートリアルを実行したいのなら、Firebird サーバーと下記のサンプルデータベースをインストールすることをお勧めします。
88
99## 必要条件
1010
1111このチュートリアルは、最近の Lazarus のバージョンを用いることを基本に記述されています(Laz 1.0)。; より古いバージョンの Lazarus 0.9.30. でも動くはずです。
1212
1313さらに、FirebirdなどのSQL / リレーショナルデータベースが必要です(可能であればバージョン2.0以降)。標準設定(例えば、ユーザー名がSYSDBAでパスワードがmasterkey)を使用し、employeeサンプルデータベースがインストールされていることが望ましいです。
1414
1515別のデータベース(たとえばMicrosoft SQL Server、MySQL、PostgreSQL、Oracle、SQLite、Sybase ASE、またはODBCを使用した他のデータベース)を使用することもできます。必要なデータベースクライアントライブラリがインストールされていることを確認してください(データベースに関するさまざまなウィキ記事を参照してください)。Firebirdまたはemployee.fdbがインストールされていない場合は、以下のセクション「Firebirdやemployee.fdbがインストールされていない場合」を参照してください。
1616
1717## Firebird のインストール
1818
1919まだFirebirdやチュートリアルで使用されるサンプルデータベースをインストールしていない場合は、以下の手順を参照してください。
2020
2121### Firebird client/server のインストール
2222
2323何もインストールしていない場合は、www.firebirdsql.orgからインストーラーをダウンロードして実行し、サーバーをインストールします(たとえば、「32-bit Classic、Superclassic&Superserver」)。
2424
2525### WindowsでのFirebird database ライブラリ
2626
2727インストール後、WindowsではFirebirdクライアントDLLが存在している必要があります:
2828
2929- システムディレクトリにある可能性があります(すべてのプログラムで利用可能)。
3030- Lazarusディレクトリにもある可能性があります(IDE内でのデザイン時サポートのため)し、実行可能ファイルがある出力ディレクトリにもある可能性があります(コンパイルされたプログラムを実行するため)。
3131
3232Firebirdサーバーをインストールしていない場合、クライアントDLLを手に入れる簡単な方法は次のとおりです:Firebird Embedded 2.5を以下からダウンロードしてください [1](http://www.firebirdsql.org/en/firebird-2-5/) アプリケーションディレクトリへこれらのファイルを伸長してください:
3333
3434``` bash
3535fbclient.dll #サーバを使うときのみ
3636#もしくは
3737fbembed.dll #組み込み用途のみ
3838firebird.msg
3939ib_util.dll
4040icudt30.dll
4141icuin30.dll
4242icuuc30.dll
4343Microsoft.VC80.CRT.manifest
4444msvcp80.dll
4545msvcr80.dll
4646```
4747
4848Rename fbembed.dllを to fbclient.dll にリネームしてください(このファイル名は通常のクライアントサーバの Firebird クライアントです - 古いLazarus/FPCで用いる際の助けとなります)。組み込みのFirebird DLLは通常のFirebirdクライアントとしても機能することができます。
4949
5050プロジェクトディレクトリにemployee.fdbデータベースがあることを確認してください。それをfirebird 2.5サーバーのexamples/empbuild/ディレクトリからコピーすることができます。
5151
5252最後に、プロジェクトを1度コンパイルして(たとえ空であっても)出力ディレクトリを作成し、そのディレクトリにdllファイルとemployee.fdbデータベースをコピーしてください。
5353
5454### 他のシステムにおける Firebird データベースライブラリ
5555
5656Linux/OSXでは、Firebirdクライアント共有ライブラリも必要です。 Linuxでは、Firebirdクライアントパッケージを取得するためにディストリビューションのプログラムを使用できます。たとえば、Debianでは以下のようにします:
5757
5858``` bash
5959aptitude install libfbclient2 firebird-dev #FPC 2.6とそれ以下はlibfbclient.soを探しに行くので、devバージョンが必要ですlibfbclient.so
6060```
6161
6262## Firebird または employee.fdb がインストールされていない?
6363
6464もしも employee サンプルデータベースがインストールされていなかったり、Firebird以外のデータベースを用いる場合、以下にチュートリアルに用いる最小限のテーブルを示します。(注: いくつかのデータベースについての方法を以下に示しています)。
6565
6666### 自動生成
6767
6868これを設定する最も簡単な方法は、システム上に新しい空のデータベースを作成し、次にTSQLScriptSampleサンプル/ユーティリティプログラムでそれに接続することです。 このプログラムは、現在のLazarus開発リリースには`./examples/database/tsqlscript`ディレクトリに含まれていますが、以下からダウンロードすることもできます。
6969
7070
7171<http://svn.freepascal.org/svn/lazarus/trunk/examples/database/tsqlscript/>
7272
7373コンパイルし、プログラムを実行、データソースに接続します:
7474
75-<figure>
76-<img src="tsqlscriptsample_connect.png" title="tsqlscriptsample_connect.png" />
77-<figcaption>tsqlscriptsample_connect.png</figcaption>
78-</figure>
75+![](/wiki-images/6/6e/Tsqlscriptsample_connect.png)
7976
8077そしてボタン、*Copy table creation script* をクリックし、*Run script*を実行します:
8178
82-<figure>
83-<img src="tsqlscriptsample_runfirstscript.png" title="tsqlscriptsample_runfirstscript.png" />
84-<figcaption>tsqlscriptsample_runfirstscript.png</figcaption>
85-</figure>
79+![](/wiki-images/a/ab/Tsqlscriptsample_runfirstscript.png)
8680
8781プログラムは成功したことを示すはずです。 同様に *Copy sample data script* と *Run script*
8882
8983問題が起こった場合には、以下の手動的方法をとることができます。
9084
9185### 手動による生成
9286
9387今後のチュートリアルで用いるために、 CUSTOMER と EMPLOYEE のテーブルを作成します。
9488
9589用いるデータベースのエディタやツールから、以下の SQL コマンドを実行してください。:
9690
9791``` sql
9892CREATE TABLE CUSTOMER
9993(
10094 CUST_NO INTEGER NOT NULL,
10195 CUSTOMER VARCHAR(25) NOT NULL,
10296 CITY VARCHAR(25),
10397 COUNTRY VARCHAR(15),
10498 CONSTRAINT CT_CUSTOMER_PK PRIMARY KEY (CUST_NO)
10599);
106100```
107101
108102``` sql
109103CREATE TABLE EMPLOYEE
110104(
111105 EMP_NO INTEGER NOT NULL,
112106 FIRST_NAME VARCHAR(15) NOT NULL,
113107 LAST_NAME VARCHAR(20) NOT NULL,
114108 PHONE_EXT VARCHAR(4),
115109 JOB_CODE VARCHAR(5) NOT NULL,
116110 JOB_GRADE INTEGER NOT NULL,
117111 JOB_COUNTRY VARCHAR(15) NOT NULL,
118112 SALARY NUMERIC(10,2) NOT NULL,
119113 CONSTRAINT CT_EMPLOYEE_PK PRIMARY KEY (EMP_NO)
120114);
121115```
122116
123117データベース上で確認できるように、いくつかのデータを入れておきます。まずは、クライアントのデータです。:
124118
125119``` sql
126120INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (1, 'Michael Design', 'San Diego', 'USA');
127121INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (2, 'VC Technologies', 'Dallas', 'USA');
128122INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (3, 'Klämpfl, Van Canneyt', 'Boston', 'USA');
129123INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (4, 'Felipe Bank', 'Manchester', 'England');
130124INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (5, 'Joost Systems, LTD.', 'Central Hong Kong', 'Hong Kong');
131125INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (6, 'Van der Voort Int.', 'Ottawa', 'Canada');
132126INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (7, 'Mrs. Mauvais', 'Pebble Beach', 'USA');
133127INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (8, 'Asinine Vacation Rentals', 'Lihue', 'USA');
134128INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (9, 'Fax', 'Turtle Island', 'Fiji');
135129INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (10, 'FPC Corporation', 'Tokyo', 'Japan');
136130INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (11, 'Dynamic Intelligence Corp', 'Zurich', 'Switzerland');
137131INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (12, '3D-Pad Corp.', 'Paris', 'France');
138132INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (13, 'Swen Export, Ltd.', 'Milan', 'Italy');
139133INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (14, 'Graeme Consulting', 'Brussels', 'Belgium');
140134INSERT INTO CUSTOMER (CUST_NO, CUSTOMER, CITY, COUNTRY) VALUES (15, 'Klenin Inc.', 'Den Haag', 'Netherlands');
141135```
142136
143137つぎに、被雇用者のデータです。:
144138
145139``` sql
146140INSERT INTO EMPLOYEE (emp_no, first_name, last_name, phone_ext, job_code, job_grade,
147141 job_country, salary)
148142 VALUES (1,'William','Shatner','1702','CEO',1,'USA',48000);
149143INSERT INTO EMPLOYEE (emp_no, first_name, last_name, phone_ext, job_code, job_grade,
150144 job_country, salary)
151145 VALUES (2,'Ivan','Rzeszow','9802','Eng',2,'Russia',38000);
152146INSERT INTO EMPLOYEE (emp_no, first_name, last_name, phone_ext, job_code, job_grade,
153147 job_country, salary)
154148 VALUES (3,'Erin','Powell','1703','Admin',2,'USA',45368);
155149```
156150
157151データベースを生成し、テーブルを生成し、データをあなたのデータベース環境に入力してください。
158152
159153### SQLite
160154
161155SQLite を使う場合、sqlite の executable を実行することで、上記のデータベースをあなたのプロジェクトディレクトリに作成できます。:
162156
163157``` bash
164158sqlite employee.sqlite
165159```
166160
167161次に、上記 CREATE TABLE と INSERT 宣言をコピー&ペーストしてください。
168162
169163正しいデータが入っているかどうかをテストするには、以下のクエリを入力します。:
170164
171165``` SQL
172166select * from customer;
173167```
174168
175169セッションは以下のコマンドで終了できます。
176170
177171``` SQL
178172.quit
179173```
180174
181175以上より、プロジェクトのディレクトリに、 employee.sqlite というファイルが作られているはずです。
182176
183177必要とされる sqlite の dll/so がインストールされていることを確認しておいてください。 - 例えば、Windows であれば sqlite3.dll が以下のディレクトリにあるはずです。
184178
185179- あなたの Lazarus とプロジェクト出力フォルダ または、
186180- あなたの system ディレクトリ
187181
188182また、あなたが 32-bit sqlite dll を使っている場合、 32-bit の lazarus を使う必要があります。
189183
190184あなたのプロジェクトファイルをコンパイル(それが空のプロジェクトでも)して、一旦出力ディレクトリを作ります。そして、(Windows 上で) employee.sqlite データベースと dll をコピーして、そのディレクトリに入れます。
191185
192186### PostgreSQL
193187
194188この節では、Linuxサーバとシェルが使われていると仮定します; 例えばpgadminといったGUI ツールとWindowsでも似たような手順でできるでしょう。
195189
196190サーバにログインし、postgresアカウントに切り替えます
197191
198192``` bash
199193su - postgres -c psql # 直ちにpsql SQLインタープリタを起動します
200194```
201195
202196データベースとテーブルのためにユーザーを作ります
203197
204198``` SQL
205199CREATE USER employee WITH PASSWORD 'hellopassword'; -- of course, adjust password to taste
206200-- 'CREATE ROLE'といったようなメッセージが現れ成功したことがわかります。
207201-- 後にパスワードを変更するには、以下のようなコマンドで行えます。
208202-- ユーザーemployeeにパスワード '<newpasswordhere>' を与えます;
209203
210204-- パスワードを期限切れにしないため。もしよりセキュリティを望むのであれば、ここは飛ばしてください:
211205ALTER USER employee VALID UNTIL 'infinity'; --パスワードは期限切れにならなりません
212206
213207-- ここで、少し、セキュリティを厳しくする
214208-- ユーザーにデータベースや他のユーザーを作ることを許しません:
215209ALTER USER employee NOCREATEDB NOCREATEUSER; --オブジェクト作成を制限します
216210-- 'ALTER ROLE'のように、成功するはずです
217211
218212-- employeeデータベースを作る:
219213CREATE DATABASE employee;
220214-- CREATE DATABASE のように、成功するはずです
221215
222216-- データベース管理者とユーザーにすべての特権を割り当てます:
223217GRANT ALL PRIVILEGES ON DATABASE employee; -- TOに対して employeeデータベースの全権限を与えます
224218-- GRANTのように成功するはずです
225219
226220-- シリアル データタイプ-またの名を、autonumber/autoincrementを作ります
227221CREATE TABLE customer
228222(
229223 cust_no serial NOT NULL,
230224 customer character varying(25) NOT NULL,
231225 city character varying(25),
232226 country character varying(15),
233227 CONSTRAINT integ_60 PRIMARY KEY (cust_no )
234228);
235229
236230-- 従業員テーブルを作ります:
237231CREATE TABLE EMPLOYEE
238232(
239233 EMP_NO SERIAL NOT NULL,
240234 FIRST_NAME VARCHAR(15) NOT NULL,
241235 LAST_NAME VARCHAR(20) NOT NULL,
242236 PHONE_EXT VARCHAR(4),
243237 JOB_CODE VARCHAR(5) NOT NULL,
244238 JOB_GRADE INTEGER NOT NULL,
245239 JOB_COUNTRY VARCHAR(15) NOT NULL,
246240 SALARY NUMERIC(10,2) NOT NULL,
247241 CONSTRAINT CT_EMPLOYEE_PK PRIMARY KEY (EMP_NO)
248242);
249243
250244-- これで、データを挿入するためINSERTステートメントを、上記の節からコピーアンドペーストします
251245
252246-- 正しいデータが存在するかこのクエリで試験します
253247SELECT * FROM customer;
254248-- いくつかの顧客データを見ることができます
255249
256250-- psqlから抜けます
257251\q
258252```
259253
260254これで、postgresにpostgresユーザーとしてシェルログインできます
261255
262256もし、サーバが、開発機ではなく他の機器ならばデータベースにネットワークアクセスできるか確かめてください。postgresドキュメンテーションを参照してください。しかし、このコマンドが動くはずです。
263257
264258``` bash
265259# nano (例えば、vim、emacs、joe...)を設定し、状況によりpostgresのバージョンナンバーによりますが、
266260nano /etc/postgresql/8.4/main/pg_hba.conf
267261```
268262
269263このような行があること、注意:192.168.0.1は実際のLANアドレスに読み替えてください、を確かめて
270264
271265\#md5ハッシュパスワードを用いてローカルネットワークからアクセスを許可するには: host all all 192.168.0.1/24 md5
272266
273267またはより厳しく:
274268
275269\# employeeユーザーによってのみemployeeデータベースにアクセスすることを許すには host employee employee 192.168.0.1/24 md5
276270
277271もしこのような行がなければ最後に加え、エディタを終了します 詳細はPostgreSQLに譲ります
278272
279273PostgreSQL設定を読み込みます:
280274
281275``` bash
282276
283277psql
284278```
285279
286280then
287281
288282``` SQL
289283
290284SELECT pg_reload_conf(); --設定を読み込み...
291285-- ...抜けてシェルに戻ります:
292286\q
293287```
294288
295289PostgreSQLにログインテストします
296290
297291Note: デフォルトではPostgreSQLは パスワードを許さない、ident/unixドメインソケットでのログインを試みます なので、ホストに対してTCP/IPを強制する:
298292
299293``` bash
300294psql -h 127.0.0.1 -d employee -U employee -W # tcp/ip経由でログインします db パスワードを入力してください
301295```
302296
303297必要とされるPostgreSQLのdll/so、そして他のライブラリがインストールされていることを確認してください 例えば、Windowsではそれらは
304298
305299- Lazarus + project 出力ディレクトリおよび
306300- システムディレクトリ
307301
308302の双方にある必要があります。 もし、何もなくともprojectを1度出力ディレクトリにコンパイルし、Windowsでは dlls をそのディレクトリにコピーしてください。
309303
310304## 終わりに
311305
312306これで、あなたのデータベースが設定できました。[[SQLdb Tutorial1/ja|初めての "本当の" チュートリアル]] に進みましょう。
313307
314308## 関連情報
315309
316310- [[SQLdb Tutorial1/ja]]: DB チュートリアルの第一の部分。データベースのデータを、どのように grid に表示させるかを学びます。
317311- [[SQLdb Tutorial2/ja]]: DB チュートリアルの第二の部分。データベースのデータの挿入や編集について学びます。
318312- [[SQLdb Tutorial3/ja]]: DB チュートリアルの第三の部分。複数のデータベースについてのプログラムやログインフォームの使い方を学びます。
319313- [[SQLdb Tutorial4/ja]]: DB チュートリアルの第四の部分。どのようにデータモジュールを用いるかを学びます。
320314- [[Lazarus Database Overview/ja]]: Lazarus がサポートしているデータベースについての情報。 データベースごとの記述へのリンクを含みます。
321315- [[SQLdb Package/ja]]: SQLdb パッケージについての情報
322316- [[SQLdb Programming Reference/ja]]: SQLdb データベースコンポーネントの入出力の概要
323317- [[SqlDBHowto/ja]]: SQLdb パッケージを用いることについての情報
324318- [[Working With TSQLQuery/ja]]: TSQLQuery についての情報
325-
326-\
327319
328320---
329321*From the Free Pascal wiki, page "SQLdb Tutorial0/ja", as it stood on 2024-03-30 after a change by Ariben, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history