Linux/2005-S09
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
* 第9回 データベース(MySQL) [#q184519a]
この内容、あるサイトの解説記事からパクってます。順次更新...
** 目次 [#k61e6e26]
#contents
** MySQLのインストール [#ba147ac1]
*** MySQLのダウンロード [#z89b3b41]
- Vine Linux 2.5 PPC 用のMySQLを入手し、インストールしま...
- 必要なファイルは、たとえば以下のサイトから入手してくだ...
-- http://www.ring.gr.jp/pub/linux/Vine/VinePlus/2.5/RPMS...
- MySQL-3.23.53-0vl2.ppc.rpm
- MySQL-client-3.23.53-0vl2.ppc.rpm
- MySQL-devel-3.23.53-0vl2.ppc.rpm
- MySQL-shared-3.23.53-0vl2.ppc.rpm
*** MySQLのインストール [#a0940be6]
- 下記ページを参考にして、ダウンロードしたRPMをインストー...
-- http://www.vinelinux.org/manuals/using-rpm-3-1.html
-- http://linux.shoukun.com/Vine/mysql_bbs.htm
+ たぶん(笑)、以下のようにしてインストールできます。
$ su
# rpm -ivh ファイルその1.rpm
# rpm -ivh ファイルその2.rpm
以下同様…
+ 設定ファイルを/etc/にコピーします。
$ su
# cp /usr/share/mysql/my-small.cnf /etc/my.cnf
+ 設定ファイルを編集します。
# vi /etc/my.cnf
+ [mysqld]という部分に、以下の内容を書き加えます。
[mysqld]
default-character-set=ujis
*** MySQLの起動 [#h174e01e]
+MySQLのサーバが起動しているか確認します。
$ mysqlshow
+ もし起動していたら、設定を有効にするためにいったん止め...
$ su
# /etc/init.d/mysql stop
+ MySQLサーバを起動します。
# /etc/init.d/mysql start
+ 管理ユーザー root にパスワードを設定しておきます。
$ mysqladmin -u root password '管理パスワード'
$ mysql_install_db
** データベースの準備 [#adebeeaa]
*** データベースの作成 [#g5545f28]
+ ユーザが使うためのデータベースを作っておきます。 ここで...
$ mysqladmin -u root -p create user_db
Enter password: 管理パスワード
+ 現在サーバ上にあるデータベースは、''mysqlshow'' または...
$ mysql -u root -p
Enter password: 管理パスワード
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
| user_db |
+----------+
3 rows in set (0.00 sec)
mysql> exit
Bye
+ 次に、普段データベースを利用するための一般ユーザを作り...
$ mysql -u root -p
Enter password: 管理パスワード
mysql> grant all on *.* to db_user@localhost identified ...
mysql> flush privileges;
mysql> exit
Bye
*** データベースへの接続 [#vd331545]
+ MySQLはサーバですので、ユーザとしてログインして利用しま...
$ mysql -u db_user -p
Enter password: ユーザパスワード
mysql>
+ 「 mysql> 」という文字を、プロンプト といい、 MySQLが命...
+ まずは、あらかじめ作成したデータベースを選択します(デ...
mysql> use user_db;
Database changed
mysql>
+ 以上でデータベースが操作できるようになりました。今後、...
mysql> exit
Bye
** データベースの設計 [#n077741d]
*** 郵便番号データベース [#jffd66f6]
「旧番号, 新番号, 都道府県名, 市区郡町村名, 町村字名」と...
+ まず、日本全国の郵便番号データをダウンロードします。
-- http://vilab.org/yubin_euc.csv
+ 「head yubin_euc.csv」や「tail yubin_euc.csv」というコ...
"907-14","907-1432","沖縄県","八重山郡竹富町","古見"
"907-15","907-1543","沖縄県","八重山郡竹富町","崎山"
"907-14","907-1431","沖縄県","八重山郡竹富町","高那"
"907-11","907-1101","沖縄県","八重山郡竹富町","竹富"
"907-14","907-1434","沖縄県","八重山郡竹富町","南風見"
"907-14","907-1433","沖縄県","八重山郡竹富町","南風見仲"
"907-17","907-1751","沖縄県","八重山郡竹富町","波照間"
"907-15","907-1544","沖縄県","八重山郡竹富町","鳩間"
"907-18","907-1800","沖縄県","八重山郡与那国町","以下に...
"907-18","907-1801","沖縄県","八重山郡与那国町","与那国"
*** テーブルの設計 [#p02b143c]
関係データベースは、「テーブル」(表)から構成されていま...
今回は以下のようなテーブルを作ります。「旧番号」「新番号...
|旧番号|新番号 |都道府県名|市区郡町村名 |町村字名|h
|060 |060-0041|北海道 |札幌市中央区 |大通東 |
|154 |154-0002|東京都 |世田谷区 |下馬 |
|468 |468-0039|愛知県 |名古屋市天白区 |西入町 |
|907-18|907-1801|沖縄県 |八重山郡与那国町|与那国 |
テーブルの設計ではカラム(各欄)の型を定義します。「型」...
|zipcode|>|>||h
|名称 |内容 |型 |属性|h
|oldzip|旧番号 |text||
|newzip|新番号 |text|空欄不可|
|pref |都道府県名 |text||
|city |市区郡町村名|text||
|addr |町字名 |text|空欄不可|
** SQLによるテーブル操作 [#r1a6eff6]
SQLは標準のデータベース言語であり、 MySQLをはじめ Access...
*** テーブルを作成する [#n6e40d7e]
>''【基本構文】 create table テーブル名 (カラム名1 カラム...
<
+ データベースにテーブルを作ります。上記の構成でテーブル...
mysql> use user_db;
mysql> create table zipcode(
-> oldzip text,
-> newzip text not null,
-> pref text,
-> city text,
-> addr text not null
-> );
Query OK, 0 rows affected (0.00 sec)
+ SQLでコマンドを打つことを、「SQL文を発行する」といいま...
mysql> show fields from zipcode;
+---------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| oldzip | text | YES | | NULL | |
| newzip | text | | | | |
| pref | text | YES | | NULL | |
| city | text | YES | | NULL | |
| addr | text | | | | |
+---------+------+------+-----+---------+-------+
5 rows in set (0.00 sec)
- データベースの操作の基本は、MySQLにログイン → データベ...
*** (テーブルの削除のしかた) [#t3b90999]
>''【基本構文】 drop table テーブル名; ''
<
*** データを作成する - INSERT文 [#w8cca056]
>''【基本構文】 insert into テーブル名 (カラム名1, カラム...
<
+ テーブルにデータ(レコード)を作成するには 「インサート...
mysql> insert into zipcode
-> (oldzip,newzip,pref,city,addr)
-> values('154','154-0002','東京都','世田谷区','下馬...
Query OK, 1 rows affected (0.03 sec)
+ 同様にして、以下のデータを登録してください。
|旧番号|新番号 |都道府県名|市区郡町村名 |町村字名|h
|060 |060-0041|北海道 |札幌市中央区 |大通東 |
|154 |154-0002|東京都 |世田谷区 |下馬 |
|468 |468-0039|愛知県 |名古屋市天白区 |西入町 |
|907-18|907-1801|沖縄県 |八重山郡与那国町|与那国 |
*** データを表示する - SELECT文 [#n52a4635]
>''【基本構文】 select フィールド名 from テーブル名 ; ''
<
+ 前項で登録したデータを表示してみます。テーブルからレコ...
+ 郵便番号と都道府県のみ選択して表示します。
mysql> select newzip,pref from zipcode;
+----------+--------+
| newzip | pref |
+----------+--------+
| 060-0041 | 北海道 |
| 154-0002 | 東京都 |
| 468-0039 | 愛知県 |
| 907-1801 | 沖縄県 |
+----------+--------+
4 rows in set (0.00 sec)
+ すべてのフィールドを表示する場合は、*記号で代用できます。
mysql> select * from zipcode;
*** データの一括投入 [#q39fc2f4]
+ 郵便番号データは、各県数千件のデータになるので、INSERT...
+ そこで一気に流し込みを行ないます。ファイルは、適当な場...
mysql> load data infile '/置いてある場所/yubin_euc.csv'
-> into table zipcode fields terminated by ',';
Query OK, 121622 rows affected (0.78 sec)
Records: 121622 Deleted: 0 Skipped: 0 Warnings: 0
-- ''エラーが出る場合は、yubin_euc.csv が読めるようになっ...
+ レコードの登録件数は、以下のSQLコマンドで確認できます。
mysql> select count(*) from zipcode;
+----------+
| count(*) |
+----------+
| 121622 |
+----------+
1 row in set (0.00 sec)
** データの検索 [#x11e21c9]
テーブル操作のSQL文を使ってみます。データベースの肝の部分...
*** データを検索する - WHERE句 [#ud942bc7]
テーブルからデータ(レコード)を検索するには 「セレクト(...
>''【基本構文】 select フィールド名 from テーブル名 where...
<
複数の行に分けて書くこともできます。
select フィールド名
from テーブル名
where 条件式 ;
+ 古い郵便番号が「468」の、すべてのフィールドを表示する。
select * from zipcode where oldzip='468' ;
+ 市区名が「世田谷区」の、新番号と町村名を表示する。
select newzip,addr
from zipcode
where city='世田谷区' ;
+ 以下のようにすると、条件にマッチするレコードの件数が分...
select count(*)
from zipcode
where pref='鳥取県' ;
+ 以下のように「リミット(LIMIT)句」を使うと、表示する件...
select *
from zipcode
where pref='鳥取県'
limit 50;
*** ちょっと高度な検索 [#j5acc262]
以下のSQLを理解し、結果を記録してください。
+ 都道府県名が「滋賀県」 かつ 市区郡町村名が「草津市」
select *
from zipcode
where pref='滋賀県' && city='草津市' ;
+ 市区郡町村名が「渋谷区」 または 「新宿区」
select *
from zipcode
where city='渋谷区' || city='新宿区' ;
+ 市区郡町村名に「日高」が含まれる(likeは文字列比較、%は...
select *
from zipcode
where city like '%日高%';
** 課題 [#w6929d86]
【問1】 上記の「ちょっと高度な検索」の実行結果をまとめて...
【問2】 下記問題を解いて、解答のSQL文と実行結果をまとめて...
+ 「東京都町田市」の郵便番号の一覧を検索しなさい。
+ 「東京都町田市玉川学園」の郵便番号を検索しなさい。
+ 旧郵便番号が「223」だった地区の住所を検索しなさい。
+ 町字名(addr)が、「霞ヶ関」(または、自分の好きな地名...
+ 住所のどこかに「中田」の入っている地名の一覧を検索しな...
- 時間のあまった人は、自分の住所等を題材にして適当な検索...
- それでも時間の余った人は、前回の続きをがんばってみてく...
【提出】
- 問題を解いて結果を確認したら、解答のSQL文と実行結果をメ...
-- report@fig.ele.eng.tamagawa.ac.jp
----
おしまい。~
今日はレポートはありません。
終了行:
* 第9回 データベース(MySQL) [#q184519a]
この内容、あるサイトの解説記事からパクってます。順次更新...
** 目次 [#k61e6e26]
#contents
** MySQLのインストール [#ba147ac1]
*** MySQLのダウンロード [#z89b3b41]
- Vine Linux 2.5 PPC 用のMySQLを入手し、インストールしま...
- 必要なファイルは、たとえば以下のサイトから入手してくだ...
-- http://www.ring.gr.jp/pub/linux/Vine/VinePlus/2.5/RPMS...
- MySQL-3.23.53-0vl2.ppc.rpm
- MySQL-client-3.23.53-0vl2.ppc.rpm
- MySQL-devel-3.23.53-0vl2.ppc.rpm
- MySQL-shared-3.23.53-0vl2.ppc.rpm
*** MySQLのインストール [#a0940be6]
- 下記ページを参考にして、ダウンロードしたRPMをインストー...
-- http://www.vinelinux.org/manuals/using-rpm-3-1.html
-- http://linux.shoukun.com/Vine/mysql_bbs.htm
+ たぶん(笑)、以下のようにしてインストールできます。
$ su
# rpm -ivh ファイルその1.rpm
# rpm -ivh ファイルその2.rpm
以下同様…
+ 設定ファイルを/etc/にコピーします。
$ su
# cp /usr/share/mysql/my-small.cnf /etc/my.cnf
+ 設定ファイルを編集します。
# vi /etc/my.cnf
+ [mysqld]という部分に、以下の内容を書き加えます。
[mysqld]
default-character-set=ujis
*** MySQLの起動 [#h174e01e]
+MySQLのサーバが起動しているか確認します。
$ mysqlshow
+ もし起動していたら、設定を有効にするためにいったん止め...
$ su
# /etc/init.d/mysql stop
+ MySQLサーバを起動します。
# /etc/init.d/mysql start
+ 管理ユーザー root にパスワードを設定しておきます。
$ mysqladmin -u root password '管理パスワード'
$ mysql_install_db
** データベースの準備 [#adebeeaa]
*** データベースの作成 [#g5545f28]
+ ユーザが使うためのデータベースを作っておきます。 ここで...
$ mysqladmin -u root -p create user_db
Enter password: 管理パスワード
+ 現在サーバ上にあるデータベースは、''mysqlshow'' または...
$ mysql -u root -p
Enter password: 管理パスワード
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
| user_db |
+----------+
3 rows in set (0.00 sec)
mysql> exit
Bye
+ 次に、普段データベースを利用するための一般ユーザを作り...
$ mysql -u root -p
Enter password: 管理パスワード
mysql> grant all on *.* to db_user@localhost identified ...
mysql> flush privileges;
mysql> exit
Bye
*** データベースへの接続 [#vd331545]
+ MySQLはサーバですので、ユーザとしてログインして利用しま...
$ mysql -u db_user -p
Enter password: ユーザパスワード
mysql>
+ 「 mysql> 」という文字を、プロンプト といい、 MySQLが命...
+ まずは、あらかじめ作成したデータベースを選択します(デ...
mysql> use user_db;
Database changed
mysql>
+ 以上でデータベースが操作できるようになりました。今後、...
mysql> exit
Bye
** データベースの設計 [#n077741d]
*** 郵便番号データベース [#jffd66f6]
「旧番号, 新番号, 都道府県名, 市区郡町村名, 町村字名」と...
+ まず、日本全国の郵便番号データをダウンロードします。
-- http://vilab.org/yubin_euc.csv
+ 「head yubin_euc.csv」や「tail yubin_euc.csv」というコ...
"907-14","907-1432","沖縄県","八重山郡竹富町","古見"
"907-15","907-1543","沖縄県","八重山郡竹富町","崎山"
"907-14","907-1431","沖縄県","八重山郡竹富町","高那"
"907-11","907-1101","沖縄県","八重山郡竹富町","竹富"
"907-14","907-1434","沖縄県","八重山郡竹富町","南風見"
"907-14","907-1433","沖縄県","八重山郡竹富町","南風見仲"
"907-17","907-1751","沖縄県","八重山郡竹富町","波照間"
"907-15","907-1544","沖縄県","八重山郡竹富町","鳩間"
"907-18","907-1800","沖縄県","八重山郡与那国町","以下に...
"907-18","907-1801","沖縄県","八重山郡与那国町","与那国"
*** テーブルの設計 [#p02b143c]
関係データベースは、「テーブル」(表)から構成されていま...
今回は以下のようなテーブルを作ります。「旧番号」「新番号...
|旧番号|新番号 |都道府県名|市区郡町村名 |町村字名|h
|060 |060-0041|北海道 |札幌市中央区 |大通東 |
|154 |154-0002|東京都 |世田谷区 |下馬 |
|468 |468-0039|愛知県 |名古屋市天白区 |西入町 |
|907-18|907-1801|沖縄県 |八重山郡与那国町|与那国 |
テーブルの設計ではカラム(各欄)の型を定義します。「型」...
|zipcode|>|>||h
|名称 |内容 |型 |属性|h
|oldzip|旧番号 |text||
|newzip|新番号 |text|空欄不可|
|pref |都道府県名 |text||
|city |市区郡町村名|text||
|addr |町字名 |text|空欄不可|
** SQLによるテーブル操作 [#r1a6eff6]
SQLは標準のデータベース言語であり、 MySQLをはじめ Access...
*** テーブルを作成する [#n6e40d7e]
>''【基本構文】 create table テーブル名 (カラム名1 カラム...
<
+ データベースにテーブルを作ります。上記の構成でテーブル...
mysql> use user_db;
mysql> create table zipcode(
-> oldzip text,
-> newzip text not null,
-> pref text,
-> city text,
-> addr text not null
-> );
Query OK, 0 rows affected (0.00 sec)
+ SQLでコマンドを打つことを、「SQL文を発行する」といいま...
mysql> show fields from zipcode;
+---------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| oldzip | text | YES | | NULL | |
| newzip | text | | | | |
| pref | text | YES | | NULL | |
| city | text | YES | | NULL | |
| addr | text | | | | |
+---------+------+------+-----+---------+-------+
5 rows in set (0.00 sec)
- データベースの操作の基本は、MySQLにログイン → データベ...
*** (テーブルの削除のしかた) [#t3b90999]
>''【基本構文】 drop table テーブル名; ''
<
*** データを作成する - INSERT文 [#w8cca056]
>''【基本構文】 insert into テーブル名 (カラム名1, カラム...
<
+ テーブルにデータ(レコード)を作成するには 「インサート...
mysql> insert into zipcode
-> (oldzip,newzip,pref,city,addr)
-> values('154','154-0002','東京都','世田谷区','下馬...
Query OK, 1 rows affected (0.03 sec)
+ 同様にして、以下のデータを登録してください。
|旧番号|新番号 |都道府県名|市区郡町村名 |町村字名|h
|060 |060-0041|北海道 |札幌市中央区 |大通東 |
|154 |154-0002|東京都 |世田谷区 |下馬 |
|468 |468-0039|愛知県 |名古屋市天白区 |西入町 |
|907-18|907-1801|沖縄県 |八重山郡与那国町|与那国 |
*** データを表示する - SELECT文 [#n52a4635]
>''【基本構文】 select フィールド名 from テーブル名 ; ''
<
+ 前項で登録したデータを表示してみます。テーブルからレコ...
+ 郵便番号と都道府県のみ選択して表示します。
mysql> select newzip,pref from zipcode;
+----------+--------+
| newzip | pref |
+----------+--------+
| 060-0041 | 北海道 |
| 154-0002 | 東京都 |
| 468-0039 | 愛知県 |
| 907-1801 | 沖縄県 |
+----------+--------+
4 rows in set (0.00 sec)
+ すべてのフィールドを表示する場合は、*記号で代用できます。
mysql> select * from zipcode;
*** データの一括投入 [#q39fc2f4]
+ 郵便番号データは、各県数千件のデータになるので、INSERT...
+ そこで一気に流し込みを行ないます。ファイルは、適当な場...
mysql> load data infile '/置いてある場所/yubin_euc.csv'
-> into table zipcode fields terminated by ',';
Query OK, 121622 rows affected (0.78 sec)
Records: 121622 Deleted: 0 Skipped: 0 Warnings: 0
-- ''エラーが出る場合は、yubin_euc.csv が読めるようになっ...
+ レコードの登録件数は、以下のSQLコマンドで確認できます。
mysql> select count(*) from zipcode;
+----------+
| count(*) |
+----------+
| 121622 |
+----------+
1 row in set (0.00 sec)
** データの検索 [#x11e21c9]
テーブル操作のSQL文を使ってみます。データベースの肝の部分...
*** データを検索する - WHERE句 [#ud942bc7]
テーブルからデータ(レコード)を検索するには 「セレクト(...
>''【基本構文】 select フィールド名 from テーブル名 where...
<
複数の行に分けて書くこともできます。
select フィールド名
from テーブル名
where 条件式 ;
+ 古い郵便番号が「468」の、すべてのフィールドを表示する。
select * from zipcode where oldzip='468' ;
+ 市区名が「世田谷区」の、新番号と町村名を表示する。
select newzip,addr
from zipcode
where city='世田谷区' ;
+ 以下のようにすると、条件にマッチするレコードの件数が分...
select count(*)
from zipcode
where pref='鳥取県' ;
+ 以下のように「リミット(LIMIT)句」を使うと、表示する件...
select *
from zipcode
where pref='鳥取県'
limit 50;
*** ちょっと高度な検索 [#j5acc262]
以下のSQLを理解し、結果を記録してください。
+ 都道府県名が「滋賀県」 かつ 市区郡町村名が「草津市」
select *
from zipcode
where pref='滋賀県' && city='草津市' ;
+ 市区郡町村名が「渋谷区」 または 「新宿区」
select *
from zipcode
where city='渋谷区' || city='新宿区' ;
+ 市区郡町村名に「日高」が含まれる(likeは文字列比較、%は...
select *
from zipcode
where city like '%日高%';
** 課題 [#w6929d86]
【問1】 上記の「ちょっと高度な検索」の実行結果をまとめて...
【問2】 下記問題を解いて、解答のSQL文と実行結果をまとめて...
+ 「東京都町田市」の郵便番号の一覧を検索しなさい。
+ 「東京都町田市玉川学園」の郵便番号を検索しなさい。
+ 旧郵便番号が「223」だった地区の住所を検索しなさい。
+ 町字名(addr)が、「霞ヶ関」(または、自分の好きな地名...
+ 住所のどこかに「中田」の入っている地名の一覧を検索しな...
- 時間のあまった人は、自分の住所等を題材にして適当な検索...
- それでも時間の余った人は、前回の続きをがんばってみてく...
【提出】
- 問題を解いて結果を確認したら、解答のSQL文と実行結果をメ...
-- report@fig.ele.eng.tamagawa.ac.jp
----
おしまい。~
今日はレポートはありません。
ページ名: