【独学】はじめてのWebプログラミング – 7.3 データベースの基礎③(Windows)

オプション

前回作成したデータベース「school」に、「teacher」というテーブルを追加します。
コマンドプロンプトで以下のSQLを実行します。

create table teacher

(

number int auto_increment primary key comment ‘先生の番号’,

name varchar(32) not null comment ‘先生の名前’,

create_datetime datetime comment ‘登録日時’,

update_datetime datetime comment ‘更新日時’

);

コマンドプロンプト
データベースの説明

前回と異なる点について解説します。

「auto_increment」は文字通り「自動でインクリメント」という意味です。これを指定すると、データを追加するとき、MySQLが自動的に「1」「2」「3」…と番号を採番しながら登録してくれます。numberには、自動的に「1」「2」「3」…という番号が登録されるのです。

データベースの説明

「primary key」は「主キー」という意味になります。
例えば下図を見て下さい。name(名前)が「鈴木一郎」で同じデータが複数あったとします。しかし、numberが異なれば、それぞれの鈴木一郎を識別することができます。マイナンバーのように特定の誰か・何かを識別する番号を、データベースでは「主キー」と呼びます。このように、データが重複しても別々のデータと識別できるように、データベースでは基本的には主キーを設けるようにします。

データベースの説明

「not null」は「nullデータを許可しない(=登録時に空データは許可しない)」という意味です。(nullとは、意味をもたないデータ、という意味です)
例えば下図のように、「not null」を指定したカラムnameに対し、空のデータを登録しようとすると、エラーとなって登録できません。
コードに不具合があって、誤って空データを登録してしまうことを防ぐことができます。

データベースの説明

teacherテーブルの構造を見てみます。

show fields from teacher;

コマンドプロンプト

Extraの箇所に「auto_increment」、Keyの箇所に「PRI(=primary key)」、Nullの箇所に「NO(=NullはNO=Nullを許可しない)」と表示されることが分かります。
これらの「Null」「Key」「Extra」、そして前回説明した「Default」の項目を、「オプション」項目と言います。

なお、「create table」時、numberには「not null」を指定していませんが、テーブル構造を見ると、Nullの箇所が「NO」となっています。これは、「primary key」を指定したカラムだからです。「primary key」を指定したカラムは、MySQLが自動的に、Nullを許可しないようにしてくれるのです。主キーでデータを識別するので、何らかの値をもつ必要があるためです。

データ操作

レコードの挿入

データベースのテーブルにレコードを追加します。
コマンドプロンプトで以下のSQLを実行します。

insert into student (number, name, create_datetime, update_datetime) values (1, “鈴木一郎”, NOW(), NOW());

コマンドプロンプト
データベースの説明

「insert into student」は「studentテーブルに(レコードを)挿入する」という意味です。次の「(number, name, create_datetime, update_datetime)」は作成したカラム名を指定します。次の「values (1, “鈴木一郎”, NOW(), NOW())」は、カラムに対応する値として「(1, “鈴木一郎”, NOW(), NOW())」を挿入する、という意味になります。
ここで「NOW()」はMySQLがもつ関数で、現在日時を取得することができます。

teacherテーブルにもレコードを挿入してみます。

insert into teacher (name, create_datetime, update_datetime) values (“山田花子”, NOW(), NOW());

コマンドプロンプト

今度は、カラム名として「number」を指定していません。
これは、teacherテーブルを作成する際、「primary key」と「auto_increment」を指定したためです。これらのオプションを指定して作成したカラムは、insert時に明示的にカラムと値を指定しなくても、MySQLが自動的に「1」「2」「3」という値を挿入してくれます。

レコードの取得

挿入したレコードが、正常にテーブルに挿入されているかを確認します。
コマンドプロンプトで以下のSQLを実行します。

select * from student;

コマンドプロンプト

文字通り「studentテーブルから選択(データを取得)する」という意味です。
「*」は「すべてのカラム」という意味です。つなげると「studentテーブルからすべてのカラムのデータを取得する」という意味になります。

すべてのカラムではなく、特定のカラムのデータのみを取得することもできます。

select number from student;

コマンドプロンプト

特定のカラムのデータのみを取得したい場合、selectの後にそのカラム名を指定します。

複数のカラムのデータを取得したい場合は、以下のようにカンマ区切りで複数のカラムを指定します。

select number,name from student;

コマンドプロンプト

レコードの更新

挿入したレコードの値を更新します。
コマンドプロンプトで以下のSQLを実行します。

update student set name=”山田太郎” where number=1;

コマンドプロンプト

「update student」は文字通り「studentテーブルを更新する」という意味です。次の「set name=”山田太郎”」は「カラムnameの値として”山田太郎”を設定する」という意味です。「where number=1」は「カラムnumberの値が1の場合に(レコードを抽出する)」という意味です。すなわち、「studentテーブルのカラムnumberの値が1のレコードを抽出し、そのレコードのカラムnameの値として”山田太郎”を設定する」という意味になります。

レコードを取得してみます。

コマンドプロンプト

nameが「山田太郎」に更新されていることが分かります。

複数のカラムの値を更新したい場合は、以下のようにカンマ区切りで指定します。

update student set name=”山田太郎”,update_datetime=NOW() where number=1;

コマンドプロンプト

レコードの削除

挿入したレコードの値を削除します。
コマンドプロンプトで以下のSQLを実行します。

delete from student where number=1;

コマンドプロンプト

「delete from student」は「studentテーブルから(レコードを)削除する」という意味です。「where number=1」は「カラムnumberの値が1のところに(レコードに)」という意味です。すなわち、「studentテーブルのカラムnumberの値が1のレコードを削除する」という意味になります。

レコードを取得してみます。

コマンドプロンプト

「Empty」と表示されており、レコードが削除されたことが分かります。

本節の説明は以上になります。

トップページ <<前のカリキュラムへ戻る 次のカリキュラムへ進む>>

タイトルとURLをコピーしました