Contents

(0)MySQLについての情報
(1)MySQLを起動する
(2)MySQL操作時の基本
(3)MySQLでのデータベースとは
(4)データベースにアクセスする
(5)テーブルを作成する

MySQLの基本操作

0.MySQLについての情報

MySQLの操作についての概要は、

http://dev.mysql.com/doc/mysql/ja/Tutorial.html

を、また、MySQLのSQLの仕様に関する詳細は、

http://dev.mysql.com/doc/mysql/ja/Reference.html

を参照して下さい。それ以外にも、MySQLや適切なキーワードを付与してgoogle等で検索すれば、いろいろなページが出て来ます。

1.MySQLを起動する

MySQLのサーバが、sqlserv.ac.jpという計算機に導入されているとします。
MySQLを計算機室のクライアント、sqlclient.ac.jp
から使用する場合は、Unixにログインした後、例えば、ユーザ名が"u001"である場合には以下のようにします。

mysql -h sqlserv.ac.jp -u u001 -p

入力後、パスワードを聞いてきますので、割り当てられたパスワードを入力します。
ログインが成功した場合は、コマンドプロンプトが"mysql>"に変わります。
ログインがうまくいかない場合は、入力内容に間違いが無いか確認して下さい。

UnixアカウントとMySQLアカウントはそれぞれ独立して管理されているものですから、変更しない限りは別
のパスワードが割り当てられています。
MySQLを使用するためにはUnix計算機にログインした上で、MySQLのサーバーに(更に)ログインすることが必要です。
混同しないように。

2.MySQL操作時の基本

コマンド入力などに際しての文字の扱い、コマンドプロンプトの示す状態は以下の通りです。

・大文字、小文字の区別はされない。(コマンド)
・大文字、小文字が区別される(データベース名およびテーブル名)
・ステートメントの終わりはセミコロン";"(セミコロンが入力されるまではステートメントの処理はされない)
・1ステートメントを複数行に分けて入力することも可。

プロンプトの意味
mysql> 新しいコマンドの入力待ち
-> 複数行コマンドで次の行の入力待ち
'> 単一引用符(`'')で始まる文字列を読み込み中の次の行の入力待ち
"> 二重引用符(`"')で始まる文字列を読み込み中の次の行の入力待ち
`> バッククォート記号(``')で始まる識別子を読み込み中の次の行の入力待ち

3.MySQLでのデータベースとは

MySQLでデータベースを作成するということは、これから作成するであろう1つ以上の
テーブルを格納するための領域に名前を付けて、それを生成することです。ただし、
この操作が出来るということは、データベースに対してどのようなことでも出来る権限
を持っていることに相当しますので、このたびの演習では、各自にはこの権限は与えていません。
ただ、データベース(テーブルを定義し、それを格納するための領域)を定義する操作自体は簡単で、
mydatabaseという名前のデータベースを作成する場合は、

create database mydatabase;

という命令を実行するだけです。

このたびの演習では、既に"d+学生番号"という名前のデータベースを各自が使用できるように用意しています。

4.データベースにアクセスする

4.0 使用可能なデータベースを表示させる

どのようなデータベースが使用できるかを知るためには、show databasesというコマンドを使用します。

show databases;

と入力すると、d+自分の学生番号、testという2つのデータベース名が表示されるはずです。
ただし、データベース"test"はテスト用の、ユーザ全員で共有しているデータベースですから、
各自がテーブル等を作成して演習を進める場合はこれは使用せずに、必ず"d+学生番号"のデータ
ベースを使用して下さい。testデータベースは、以下で出てくる例を試す限りにおいては、使用し
ても構いません(テーブルの参照や、関係演算の実行を試すことのみ可)。

4.1 データベース使用の宣言

データベースを使用する場合は、始めにどのデータベースを使用するかを宣言します。
たとえば、

use test

と入力すると、testというデータベースを使用することになります。別のデータベースを
使用したい場合は、useコマンドを実行すれば切り替えることができます。

4.2 データベースの内容を表示させる

useコマンドで使用を開始したデータベース中に既に定義されているテーブルを表示させる場合は、

show tables;

を実行します。また、特定のテーブルの定義内容(どのような属性が、どのような型で定義されて
いるかに関する情報)を表示させたい場合は、

describe (テーブル名);

と入力します。

5.テーブルを作成する

5.1 テーブルの定義

テーブルの定義はcreate tableコマンドを使用します。create table コマンドは基本的には

create table テーブル名 (属性名 型(データ長) 制約, ..);

という形式をとります。制約には、(primary) key, not null, unique, defaultなどが適用可能
ですが、制約は必ずしも付ける必要はありません。詳細は

http://dev.mysql.com/doc/mysql/ja/CREATE_TABLE.html

に記述されています。
テーブル名や属性名にMySQLの予約語(MySQLのコマンドなどで使用されている語)を使用した場合は
エラーとなります。MySQLの予約語については、

http://dev.mysql.com/doc/mysql/ja/Reserved_words.html

を参照して下さい。
以下は例として、studentというテーブルにsid, name, laboratoryという属性を定義する場合です。

create table student(sid char(8), name varchar(30), laboratory varchar(30));

次の例は、personal-dataというテーブルにid, age, address, phoneという属性を定義する例です。

create table personal-data(sid char(8), age int, address varchar(50), phone
varchar(15));

文字の大きさなどは、それぞれの属性が取り得る最大を良く考慮して決める必要があります。
よく利用される型としては、int, float, double, date, year, char, varchar等があります。
使用可能なデータ型(カラム型)については

http://dev.mysql.com/doc/mysql/ja/Column_types.html

を参照して下さい。

5.2 テーブルにレコード(データ)を入力する

テーブルにレコード(データ)を入力する方法には、insert文を使う方法とload data文を
使用する方法があります。

5.2.1 insert文を使用する方法

insert文は、

insert into テーブル名 values ('値1', '値2', '値3', ..);

という形式を取ります。値は、テーブルで定義した属性の順に並べる必要があります。
例えば、先ほど定義したstudentテーブルにsid:1482333, name:広大太郎, laboratory:データベース
であるようなレコードを定義する場合は、

INSERT INTO student VALUES ('1482333','広大太郎','データベース');

と入力します。

5.2.2 load data文の使用

load data文はあらかじめテキストファイルに属性値を並べておいたものを読み取ってテーブルに
格納するコマンドです。用意するテキストファイルは、属性値の区切りをタブ、レコードの区切りを
改行とします。必要であれば、カラムの区切り文字および改行コードを、LOAD DATA ステートメントで
明示的に指定することも可能です。load dataの構文は、

load data local infile "入力データファイル名" into table テーブル名;

となります。studentテーブルに対して

1482008 西条一郎 知的システム
1482321 下見次郎 情報認識論

のような内容のテキストデータを用意し、そのファイル名をdata.txtとした場合、このファイルの
内容を読み取ってテーブルに格納するためには、

load data local infile "data.txt" into table student;

と入力し、このコマンドを実行します。詳しい説明は、

http://dev.mysql.com/doc/mysql/ja/LOAD_DATA.html

を参照して下さい。