13. データ管理とデータウエアハウス
1
URL: https://www.kkaneko.jp/de/ds/index.html
金子邦彦
謝辞:この資料では「いらすとや」のイラストを使用しています
反復練習による上達
データの整理や分析に関するスキルの向
理解度の確認、難易度の高い演習に挑戦
することによる成長
2
アウトライン
1. イントロダクション
2. 日時の扱い
3. データ管理とデータウエアハウス
4. 演習
3
SQLFiddle のサイトにアクセス
ウェブブラウザを使用
1. ウェブブラウザを開く
2. アドレスバーにSQLFiddleURLを入力
https://sqlfiddle.com/
URLが分からないときは、Googleなどの検索エンジンを利
用。「SQLFiddle」と検索し、表示された結果から
SQLFiddleのウェブサイトをクリック。
3. この授業では「MySQL」を使用
MySQL」をクリック
4
SQLFiddle の画面(20241月に更新)
5
SQL を編集するパネル
SQL問い合わせテーブル定義、デー
タの追加
実行ボタン
結果ウィンドウ
13-1. イントロダクション
6
リレーショナルデータベースの仕組み
データをテーブルと呼ばれる表形式で保存
テーブル間関連で結ばれる。複雑な構造を持ったデータ
を効率的に管理することを可能に。
7
関連
商品
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
購入者
商品番号
X
1
X
3
Y
2
購入
商品テーブルと購入テーブル
8
関連
商品
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
購入者
商品番号
X
1
X
3
Y
2
購入
Xさんは、1みかんと,
3 メロンを買った
Yさんは、 2 りんごを買った
商品テーブルの情報
購入テーブルの情報
SQL 理解のための前提知識
テーブル
データをテーブルと呼ばれる表形式で保存
問い合わせ(クエリ)
問い合わせ(クエリ)は、データベースから必要なデータ
を検索、加工するための指令
SELECT, FROM, WHERE など、多様なコマンドが存在。
結合、集約、ソート、副問い合わせなど、高度な操作も可
9
科目 受講者 得点
A
85
B
90
A
90
B
96
A
95
10
テーブル「商品」からデータを取得すSQLの例
SELECT *FROM 商品;
SELECT 商品名 FROM 商品;
SELECT DISTINCT 商品名 FROM 商品;
SELECT 商品名, 単価 FROM 商品 WHERE 単価 > 80;
SELECT 商品名, 単価 FROM 商品 WHERE 単価 BETWEEN 80 AND 85;
SELECT AVG(単価)FROM 商品;
AVG, MAX, MIN, SUM: 平均、最大、最小、合計
COUNT: 行数
SELECT * FROM 商品 WHERE 商品名 LIKE '%';
*ん」、「ん*」「**」のように書くことができる
Access では % でなく *
SELECT *FROM 商品 WHERE 商品名 IN ('みかん', 'りんご');
11
リレーショナルデータベースシステムの機能
機能
SQL
のキーワード
テーブル定義
テーブル定義
CREATE
TABLE
データ型
CHAR, TEXT, INTEGER, REAL,
DATETIME, BIT, NULL
オートナンバー
MySQL
では AUTO_INCREMENT
Access
では AUTOINCREMENT
主キー
PRIMARY
KEY
参照整合性制約
FOREIGN
KEY, REFERENCES
問い合わせ(クエ
リ)
射影、選択、結合
SELECT FROM WHERE
重複行除去
DISTINCT
比較,範囲指定,パター
ンマッチ,
AND/OR
=, <, >, <>, !=, <=, >=, BETWEEN,
LIKE, AND, OR,
IS NULL, IS NOT
NULL
集計・集約
GROUP BY, MAX, MIN, COUNT, AVG,
SUM
並べ替え(ソート)
ORDER BY
副問い合わせ
IN
データ操作
挿入
削除更新
INSERT INTO, DELETE FROM WHERE,
UPDATE SET WHERE
トランザクション
開始
コミット
ロール
バック
BEGIN TRANSACTION
MySQL
START TRANSACTION,
COMMIT, ROLLBACK
テーブルと属性
12
テーブル
ID」と「商品名
と「単価」の属性
テーブル名:商品
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
属性のデータ型
13
テーブル
の本体
属性名
整数、主キー テキスト 整数
INTEGER
PRIMARY KEY TEXT INTEGER
ID 商品名 単価
1
みかん
50
2
りんご
100
3
メロン
500
データ型と SQL
14
データ型
SQL
のキーワードのうち
主なもの
未定・未知・非存在
NULL
短いテキスト
char
長いテキスト
text
数値
integer, real
日付,時刻,日時
datetime
ブール値
bit, bool
整数integer, 浮動小数点数(小数付きの数)
real
短いテキスト半角 255文字分までが目安
それ以上になる可能性があるときは長いテキスト
主キー
主キーは、テーブルの各行を識別するためのキー
15
主キー
ID 商品名 単価
1
みかん
50
2
りんご
100
3
メロン
500
PRIMARY KEY
PRIMARY KEY はテーブル定義時に使用し、「
キー制約」を示す
16
ID 商品名 単価
1
みかん
50
2
りんご
100
3
メロン
500
CREATE TABLE テーブル名 (
列名1 データ型 PRIMARY KEY,
列名2 データ型,
...
);
CREATE TABLE 商品 (
ID INTEGER PRIMAY KEY,
商品名 TEXT,
単価 INTEGER);
SQL の書き方
主キー
SQL によるテーブル定義
テーブル名商品
属性名ID、商品名、単価
属性のデータ型数値、テキスト、数値
データの整合性を保つための制約主キー制約
17
CREATE TABLE 商品 (
ID INTEGER PRIMARY KEY,
商品名 TEXT,
単価 INTEGER);
データ追加のSQL
18
商品
INSERT INTO 商品 VALUES(1, 'みかん', 50);
INSERT INTO 商品 VALUES(2, 'りんご', 100);
INSERT INTO 商品 VALUES(3, 'メロン', 500);
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
演習1.テーブル定義と
データの追加、主キー制約
【トピックス】
1. SQL によるテーブル定義
2. 主キー制約 PRIMARY KEY
3. SQL によるデータの追加
4. 問い合わせ(クエリ)による
確認
19
SQLFiddle のサイトにアクセス
ウェブブラウザを使用、SQLFiddle MySQL を選ぶ
1. ウェブブラウザを開く
2. アドレスバーにSQLFiddleURLを入力
https://sqlfiddle.com/
URLが分からないときは、Googleなどの検索エンジンを利
用。「SQLFiddle」と検索し、表示された結果から
SQLFiddleのウェブサイトをクリック。
3. この授業では「MySQL」を使用
MySQL」をクリック
20
パネルに、テーブル定義データの追加問い合わせ
(クエリ)を行う SQL を入れる。
元からある SQL は不要なので消す
21
CREATE TABLE 商品 (
ID INTEGER PRIMARY KEY,
商品名 TEXT,
単価 INTEGER);
INSERT INTO 商品 VALUES(1, 'みかん', 50);
INSERT INTO 商品 VALUES(2, 'りんご', 100);
INSERT INTO 商品 VALUES(3, 'メロン', 500);
select * FROM 商品;
Execute」(または「Submit」)をクリック。SQLが実
行され、下側のウインドウに結果が表示される。結果を確認
22
外部キー
外部キーは、他のテーブルの主キーを参照するキー
23
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
ID
購入者
商品ID
数量
1
X
1
10
2
Y
2
5
購入テーブルの外部キー「商品
ID」は、購入テーブルの主キー
ID」を参照
主キー
外部キー
購入テーブル
商品テーブル
SQL によるテーブル定義
テーブル名購入
属性名ID、購入者、商品ID、数量
属性のデータ型数値、テキスト、数値、数値
データの整合性を保つための制約主キー制約、参照整合
性制約
24
CREATE TABLE 購入 (
ID INTEGER PRIMARY KEY,
購入者 TEXT,
商品ID INTEGER,
数量 INTEGER,
FOREIGN KEY (商品ID) REFERENCES 商品(ID));
FOREIGN KEY … REFERENCES
PRIMARY KEY … REFERENCES はテーブル定義時に使用
し、あるテーブルの外部キーが別のテーブルの主キー参照
する「参照整合性制約」を示す
25
SQL の書き方
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
ID
購入者
商品ID
数量
1
X
1
10
2
Y
2
5
主キー
外部キー
CREATE TABLE 購入 (
ID INTEGER PRIMARY KEY,
購入者 TEXT,
商品ID INTEGER,
数量 INTEGER,
FOREIGN KEY (商品ID) REFERENCES 商品(ID));
主キー
演習2.外部キー,参照整
合性制約
【トピックス】
1. 主キー
2. 外部キー
3. 参照整合性制約
4. PRIMARY KEY
5. FOREIGN KEY
REFERENCES
26
SQLFiddle のサイトにアクセス
ウェブブラウザを使用、SQLFiddle MySQL を選ぶ
1. ウェブブラウザを開く
2. アドレスバーにSQLFiddleURLを入力
https://sqlfiddle.com/
URLが分からないときは、Googleなどの検索エンジンを利
用。「SQLFiddle」と検索し、表示された結果から
SQLFiddleのウェブサイトをクリック。
3. この授業では「MySQL」を使用
MySQL」をクリック
27
パネルに、テーブル定義データの追加問い合わせ
(クエリ)を行う SQL を入れる。
前の演習で用いた SQL は不要である
28
CREATE TABLE 商品 (
ID INTEGER PRIMARY KEY,
商品名 TEXT,
単価 INTEGER);
INSERT INTO 商品 VALUES(1, 'みかん', 50);
INSERT INTO 商品 VALUES(2, 'りんご', 100);
INSERT INTO 商品 VALUES(3, 'メロン', 500);
CREATE TABLE 購入 (
ID INTEGER PRIMARY KEY,
購入者 TEXT,
商品ID INTEGER,
数量 INTEGER,
FOREIGN KEY (商品ID) REFERENCES 商品(ID));
INSERT INTO 購入 VALUES(1, 'X', 1, 10);
INSERT INTO 購入 VALUES(2, 'Y', 2, 5);
select * FROM 商品;
select * FROM 購入;
Execute」(または「Submit」)をクリック。SQLが実
行され、下側のウインドウに結果が表示される。結果を確認
29
13-2. 日時の扱い
30
現在日時の表示
現在日時の取得に now() を使用
SQL Fiddle MySQL
Access
31
SQL によるテーブル定義
テーブル名購入
属性名ID、購入者、商品ID、数量、購入日時
属性のデータ型数値、テキスト、数値、数値、日時
データの整合性を保つための制約主キー制約、参照整合
性制約
32
CREATE TABLE 購入 (
ID INTEGER PRIMARY KEY,
購入者 TEXT,
商品ID INTEGER,
数量 INTEGER,
注文日時 DATETIME,
FOREIGN KEY (商品ID) REFERENCES 商品(ID));
演習3.now() による現在
日時の取得
【トピックス】
1. now()
33
SQLFiddle のサイトにアクセス
ウェブブラウザを使用、SQLFiddle MySQL を選ぶ
1. ウェブブラウザを開く
2. アドレスバーにSQLFiddleURLを入力
https://sqlfiddle.com/
URLが分からないときは、Googleなどの検索エンジンを利
用。「SQLFiddle」と検索し、表示された結果から
SQLFiddleのウェブサイトをクリック。
3. この授業では「MySQL」を使用
MySQL」をクリック
34
パネルに、テーブル定義データの追加問い合わせ
(クエリ)を行う SQL を入れる。
前の演習で用いた SQL は不要である
35
select now();
Execute」(または「Submit」)をクリック。SQLが実
行され、下側のウインドウに結果が表示される。結果を確認
36
演習4.日時を扱うテーブ
【トピックス】
1. 日時
2. DATETIME
37
SQLFiddle のサイトにアクセス
ウェブブラウザを使用、SQLFiddle MySQL を選ぶ
1. ウェブブラウザを開く
2. アドレスバーにSQLFiddleURLを入力
https://sqlfiddle.com/
URLが分からないときは、Googleなどの検索エンジンを利
用。「SQLFiddle」と検索し、表示された結果から
SQLFiddleのウェブサイトをクリック。
3. この授業では「MySQL」を使用
MySQL」をクリック
38
パネルに、テーブル定義データの追加問い合わせ
(クエリ)を行う SQL を入れる。
前の演習で用いた SQL は不要である
39
CREATE TABLE 商品 (
ID INTEGER PRIMARY KEY,
商品名 TEXT,
単価 INTEGER);
INSERT INTO 商品 VALUES(1, 'みかん', 50);
INSERT INTO 商品 VALUES(2, 'りんご', 100);
INSERT INTO 商品 VALUES(3, 'メロン', 500);
CREATE TABLE 購入 (
ID INTEGER PRIMARY KEY,
購入者 TEXT,
商品ID INTEGER,
数量 INTEGER,
購入日時 DATETIME,
FOREIGN KEY (商品ID) REFERENCES 商品(ID));
INSERT INTO 購入 VALUES(1, 'X', 1, 10, '2023-01-04 09:00:00');
INSERT INTO 購入 VALUES(2, 'Y', 2, 5, '2023-01-04 10:00:00');
select * FROM 商品;
select * FROM 購入;
Execute」(または「Submit」)をクリック。SQLが実
行され、下側のウインドウに結果が表示される。結果を確認
40
ここまでのまとめ
SQL を用いた現在日時の表示 MySQL Access などで
動く)
select now();
SQL での日時の書き方
'2023-01-04 09:00:00'
日時を扱うテーブル定義
CREATE TABLE 購入 (
ID INTEGER PRIMARY KEY,
購入者 TEXT,
商品ID INTEGER,
数量 INTEGER,
購入日時 DATETIME,
FOREIGN KEY (商品ID) REFERENCES 商品(ID)); 41
13-3. データウエアハウス
42
データの一元管理と保存の利点
データの一元管理
さまざまな種類のデータを一か所で管理することで、
データアクセスと利用が容易になる。
データの長期保存
長期間にわたるデータの安全な保存(バックアッ
など)が容易になる
データ分析
さまざまな種類のデータを組み合わせた分析が可
になる
43
データの一元管理と保存
2つの異なるアプローチ
44
データウエアハウス
オンライントランザク
ション
主な目的
データ分析、データか
らのルール発見
銀行の取引、オンライ
ン予約、販売管理
機能
長期間のデータを用い
たデータ分析
トランザクション処理
使用され
る技術
SQL
、データの挿入、
結合、グループ化
SQL、データの挿入と削
除と更新、単純な問い
合わせ
主な理念
履歴データ
正規化
データウエアハウスの活用例
45
出典: Teradata Web ページ
http://jpn.teradata.jp/library/nyumon/ins_1904.html
◆大量の商品が出品され、購入されるオー
クションサイト
・不正行動の監視
・出品者、購入者が「どうすればより満
足するか」の分析
eBay Web ページ
http://www.ebay.co.jp/
出品、購入の状況を丸ごと記録
データウエアハウスの活用例
46
出典: Teradata Web ページ
http://jpn.teradata.jp/library/nyumon/ins_1904.html
◆「空席で飛ばすくらいなら、安値でも売
りたい」と思っている航空会社
・満席になりそうか、空席はいくつにな
りそうかを的確に予測
・空席をぴったり埋めるために、ダイナ
ミックに値下げ/値上げ
予約、キャンセルの状況を丸ごと記録
データウエアハウスとオンライントランザクション
の比較
オンライントランザクション最新情報を使用
データウエアハウスデータは一度格納されると消えるこ
となく残り続ける。 「履歴データ」の概念を重視
47
商品 価格 価格改定日
おせち
A
12000
2023-11-
10
おせち
A
10000
2023-11-
20
おせち
B
5000
2023-11-
10
氏名
予約内容
予約日
キャンセル
XX
おせち
A
2023
-12-01
YY
おせち
B
2023
-12-04
ZZ
おせち
B
2023
-12-05
2023
-12-06
ZZ
おせち
A
2023
-12-06
予約テーブル 価格テーブル
氏名 予約内容
XX
おせち
A
YY
おせち
B
ZZ
おせち
A
商品 価格
おせち
A
10000
おせち
B
5000
予約テーブル 価格テーブル
オンライントランザクションの特性
データの値の変更や削除を行うオンラントランザクション
システムでは、正規化は欠かせない
正規化は、リレーショナルデータベースのテーブルを適切
な形に再構成することで、データの冗長性を排除し、デー
タの整合性を向上させるプロセス
48
正規化前 正規化後
正規化により、元のテーブルにあった冗長性を排除
冗長なデータがある
冗長なデータがない
氏名 予約内容
XX
おせち
A
YY
おせち
B
ZZ
おせち
A
商品 価格
おせち
A
10000
おせち
B
5000
氏名 予約内容 価格
XX
おせち
A
10000
YY
おせち
B
5000
ZZ
おせち
A
10000
データウエアハウスの特性
データウエアハウスでは、 「履歴データ」の概念を重視
データの各行に、日時情報を付加し、時間の経過に応じた
データの変化を保持する
一度保存されたデータは、原則として削除されることはな
データの値の変更は、原則として行われない.データの値
の変更等に伴う異状が発生しない
49
「商品の価格は1つに決まっている」
という考え方ではなく、
商品の価格の履歴データを保持
商品 価格 価格改定日
おせち
A
12000
2023-11-
10
おせち
A
10000
2023-11-
20
おせち
B
5000
2023-11-
10
氏名
予約内容
予約日
キャンセル
XX
おせち
A
2023
-12-01
YY
おせち
B
2023
-12-04
ZZ
おせち
B
2023
-12-05
2023
-12-06
ZZ
おせち
A
2023
-12-06
予約テーブル 価格テーブル
ここまでのまとめ
データの一元管理
さまざまなのデータを一元管理。管理と利用を容易に。
複数のデータを組み合わせた分析が可能に
データウエアハウス
「履歴データ」の概念。データの時間に基づく変化を保持。
長期間のデータを用いた分析を可能に
一度保存されたデータは恒久的に保持され、削除や変更は
原則として行われない。
オンライントランザクション
トランザクションをリアルタイム処理。最新のデータをオ
ンラインで共有
データの値の変更等に伴い異状が発生する可能性がある。
そのため、正規化によりデータの冗長性を排除し、整合性
を保つ。 50
13-4. 演習
51
ある商店は「みかん」、「りんご」、「ロン
の3商品を扱っている
それぞれの商品の単価は変化する。その履歴を次
のようなテーブルで扱う
52
ID
商品名
単価 改訂日時
1
みかん
50
2023-12-
01 09:00:00
2
りんご
100
2023-12-
01 09:00:00
3
メロン
500
2023-12-
01 09:00:00
4
りんご
150
2024-01-
01 09:00:00
5
メロン
400
2024-01-
01 09:00:00
商品テーブル
購入を次のようなテーブルで扱う
53
購入テーブル
ID 購入者
商品ID
数量
購入日時
1
X
1
10
2023-12-
10 10:00:00
2
Y
2
5
2023-12-
20 12:00:00
3
Y
4
20
2024-01-
05 09:00:00
4
Z
5
3
2024-01-
05 11:00:00
演習5.データウエアは渦
の構築
【トピックス】
1. 日時
2. DATETIME
3. 履歴データ
54
SQLFiddle のサイトにアクセス
ウェブブラウザを使用、SQLFiddle MySQL を選ぶ
1. ウェブブラウザを開く
2. アドレスバーにSQLFiddleURLを入力
https://sqlfiddle.com/
URLが分からないときは、Googleなどの検索エンジンを利
用。「SQLFiddle」と検索し、表示された結果から
SQLFiddleのウェブサイトをクリック。
3. この授業では「MySQL」を使用
MySQL」をクリック
55
パネルに、テーブル定義データの追加問い合わせ(クエリ)を行
SQL を入れる。
前の演習で用いた SQL は不要である
56
CREATE TABLE 商品 (
ID INTEGER PRIMARY KEY,
商品名 TEXT,
単価 INTEGER,
改訂日時 DATETIME);
INSERT INTO 商品 VALUES(1, 'みかん', 50, '2023-12-01 09:00:00');
INSERT INTO 商品 VALUES(2, 'りんご', 100, '2023-12-01 09:00:00');
INSERT INTO 商品 VALUES(3, 'メロン', 500, '2023-12-01 09:00:00');
INSERT INTO 商品 VALUES(4, 'りんご', 150, '2024-01-01 09:00:00');
INSERT INTO 商品 VALUES(5, 'メロン', 400, '2024-01-01 09:00:00');
CREATE TABLE 購入 (
ID INTEGER PRIMARY KEY,
購入者 TEXT,
商品ID INTEGER,
数量 INTEGER,
購入日時 DATETIME,
FOREIGN KEY (商品ID) REFERENCES 商品(ID));
INSERT INTO 購入 VALUES(1, 'X', 1, 10, '2023-12-10 10:00:00');
INSERT INTO 購入 VALUES(2, 'Y', 2, 5, '2023-12-20 12:00:00');
INSERT INTO 購入 VALUES(3, 'Y', 4, 20, '2024-01-05 09:00:00');
INSERT INTO 購入 VALUES(4, 'Z', 5, 3, '2024-01-05 11:00:00');
select * FROM 商品;
select * FROM 購入;
Execute」(または「Submit」)をクリック。SQLが実
行され、下側のウインドウに結果が表示される。結果を確認
57
問い合わせ(クエリ)を行う SQL 追加 Execute
(または「Submit」)をクリックして実行し、結果を確認
58
SELECT * FROM 商品
JOIN 購入 ON 商品.ID = 購入.商品ID;
問い合わせ(クエリ)を行う SQL 追加 Execute
(または「Submit」)をクリックして実行し、結果を確認
59
SELECT 購入.購入日時, 購入.購入者, 購入.数量 * 商品.単価
FROM 商品
JOIN 購入 ON 商品.ID = 購入.商品ID;
問い合わせ(クエリ)を行う SQL 追加 Execute
(または「Submit」)をクリックして実行し、結果を確認
60
SELECT 購入.購入者, SUM(購入.数量 *商品.単価)
FROM 商品
JOIN 購入 ON 商品.ID = 購入.商品ID
GROUP BY 購入.購入者;
2つのテーブルを使い、
購入者ごとに申し込みの
合計金額を求める
問い合わせ(クエリ)を行う SQL 追加 Execute
(または「Submit」)をクリックして実行し、結果を確認
61
SELECT 商品名, MAX(改訂日時)
FROM 商品
GROUP BY 商品名;
各商品の最新の
改訂日時を得ている。
問い合わせ(クエリ)を行う SQL 追加 Execute
(または「Submit」)をクリックして実行し、結果を確認
62
SELECT 商品名, 単価, 改訂日時
FROM 商品
WHERE (商品名, 改訂日時)IN (
SELECT 商品名, MAX(改訂日時)
FROM 商品
GROUP BY 商品名);
副問い合わせで、
最新の改訂日時である
行を得る。その結果
を用いて最新価格を得る
自習1.Yによる購入
購入テーブルを用いて、購入者が Y のすべての購入情
報を得るSQLを作成しなさい
ヒント:SELECT を使用
63
自習2.商品「りんご」を購入した人の取得
商品名が りんご」である商品を購入したすべての購入者
を得るSQLを作成しなさい。 DISTINCT による重複行の除去
も行うこと。
ヒント:SELECTDISTINCTJOINWHERE を使用
64
自習3.購入者別の申し込み数の計算
目的:購入者ごとに、申し込みの回数を得る
購入テーブルを使用して、購入者ごとに、購入の回数を得る
SQL を作成しなさい。
ヒント:COUNT GROUP BY を使用
65
解答例
自習1.
SELECT *
FROM 購入
WHERE 購入者 = 'Y';
自習2.
SELECT DISTINCT(購入.購入者)
FROM 購入
JOIN 商品 ON 購入.商品ID = 商品.ID
WHERE 商品.商品名 = 'りんご';
66
解答例
自習3.
SELECT 購入者, COUNT(*)
FROM 購入
GROUP BY 購入者;
67
全体まとめ
データの一元管理により、多様なデータを組み合わせた分析が
可能になる。
オンライントランザクションでは、リアルタイムのデータ処理
により、オンラインでの情報共有を行う。
データウェアハウス「履歴データ」を重視し、データは一度
格納されると削除、変更されることなく保存される。
購入テーブル(属性は、ID、購入者、商品ID、数量、購入日
時)では、「購入日時」の属性を用いて購入履歴を管理できる
ようになる。
商品テーブル(属性は、ID、名前、単価、改訂日時)では、
「改訂日時」の属性を持ちいて価格の履歴を管理できるように
なる。
SQLでは、「DATETIME」を使って日時履歴を扱うことがで
きる。
日時のデータSQL では、「'2024-01-05 09:00:00'」のような
形式で表される。
MySQL Access では、「select now();」により、現在の日時
が表示される 68