Print Friendly, PDF & Email

この記事では、当社の新人エンジニア研修の参考にデータベースを解説します。

第一章となる今回はデータベースを初めて学ぶ皆さんが知っておきたいことをまとめました。

新人エンジニアが最初に知っておきたい データベース の学び方

なぜ、 データベース を学ぶのか、その理由。

もしも、データベースがなく、全てのデータをファイルに保存していたとしたら。

将来どのプログラム言語を使うとしてもRDBMSが関係する、SQL使わなくても裏でSQLが動いています。

1. データベース の特徴

データベースの特徴、それは以下の3点です。

データベースのテーブルの各部の名前

テーブルの各部の名前
リレーショナルデータベースの列と行

CREATE TABLE `sampledb`.`user` (
  `user_id` INT ZEROFILL NOT NULL AUTO_INCREMENT,
  `user_name` VARCHAR(45) NOT NULL,
  `e-mail` VARCHAR(45) NULL,
  `birthday` DATE NOT NULL,
  `creation_time` DATETIME NOT NULL,
  `update_time` DATETIME NOT NULL,
  PRIMARY KEY (`user_id`));

カラム名はバッククオート(`)で囲っています。バッククオートの入力方法は、キーボードのShift + @ です。

実は バッククオートでなくても

INSERT INTO sampledb.user (user_name, e-mail, birthday) VALUES ('imai ', 'imai@saycon', '1995/10/10');
MySQL_Create
LTER TABLE sampledb.user
ADD COLUMN password VARCHAR(45) NOT NULL AFTER user_name;

当社の新人エンジニア研修の最終課題で使うと思われるMySQLのデータ型は以下のとおりです。

型名Javaのデータ型格納できる値用途
INT(m)int32ビット整数 -2,147,483,648~2,147,483,647商品の数量などの整数値
※mは桁数、以下同様
CHAR(m)Stringm(文字数指定):0~255文字
固定長文字列
都道府県コードなど桁数が決まった文字列
VARCHR(m)String m(バイト数指定):0~65535バイト
可変長文字列
氏名やメールアドレス、住所など
TEXTString 0~65535バイト(固定)商品を紹介する文章など長いテキスト
DATEjava.sql.Date100-01-01~9999-12-31誕生日などの年月日
DATETIME
java.sql.Timestamp100-01-01 00:00:00~
9999-12-31 23:59:59
レコードの更新日時など秒単位まで必要な日時

※ もしも、日付時刻をcharやvarcharで管理すると10バイト以上を消費してしまいますが、datetimeであれば5バイト程度と約半分のデータ容量で済みます。また、日付や時間の加算減算も直接MySQLで行うことができるなどのメリットがあります。

レコードを削除するにはDELETE文を使用します。

ただし、データベースは事実を記録すことがその使命です。

ですので、論理削除といってレコードに削除フラグを用意して、削除したことにするという運用をすることが一般的です。

例えば、ユーザーテーブルにある個人情報をユーザーが改正個人情報保護法30条に基づき消去の依頼があった場合などは削除できないと困ります。

全てのレコードを削除したい場合には、DELETE文をWHERE句を付けずに実行すれば実現できます。
ただし、全レコードをスキャンして削除する為遅くなります。

MySQLにはTRUNCATE TABLEという全てのレコードを高速に削除する文があります。ただしMySQLの場合、DELETEはROLLBACKで元に戻すことが可能ですが、TRUNCATEはもとに戻すことができません。

なお、TRUNCATEを使ってももテーブルの定義情報までは削除されずに残ります。

今回はデータベースの特徴について学びました。

次回は、Javaの変数とデータ型を学んでいきます。

<まとめ:隣の人に正しく説明できたらチェックを付けましょう>

□JVMによってJavaは、「一度(プログラムを)書けば、どこでも実行できる」という優れた特徴を有している
 

まとめができたら、アウトプットとして演習問題にチャレンジしましょう。

JavaSE8の解説に戻る

最後までお読みいただきありがとうございました。

新人エンジニア研修のプログラムを見てみる

当社はJava講師を募集中です(サブ講師のため未経験者可)