Pythonプログラミングの講義が終わり、今日から最終講義のデータベースです。
【参考テキスト】
【目次】
- 第1章 データベースって何だろう-その用途と役割-
- 第2章 リレーショナルデータベースって何だろう-最も代表的なデータベース-
- 第3章 データベースにまつわるお金の話-イニシャルコストとランニングコスト-
- 第4章 データベースとアーキテクチャ構成-堅牢かつ高速なシステムを構築するために-
- 第5章 DBMSを操作する際の基本知識-操作する前に知っておくこと
- 第6章 SQL文の基本を学ぼう-SELECT文を理解する-
- 第7章 トランザクションと同時実行制御-複数のクエリをまとめる-
- 第8章 テーブル設計の基礎-テーブルの概念と正規形-
- 第9章 バックアップとリカバリ-障害に備える仕組み-
- Appendix パフォーマンスを考えよう-性能を向上させるために-
【講義内容】
- 第1章 データベースって何だろう-その用途と役割-
【ワンポイント】
- 講義は初心者向けなので、自分でMySQLの環境構築して自習。
MySQL
環境構築
- Windows10 Pro (64bit)
- MySQL8.0.22 (64bit zip版): Download
MySQL8インストール
環境変数にPathを追加
C:\mysql8\bin
データベース初期化
- 初期パスワードを控えておく
- [Server] A temporary password is generated for root@localhost: b0*fK/XuuobC
mysqld --initialize --console
VCRUNTIME140_1.dllのエラーが発生した場合にインストール
データベース起動
mysqld --console
ログイン
mysql -u root -p
パスワードの変更
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourPassword';
パスワードの確認
SELECT user,host,authentication_string FROM mysql.user;
データベースの停止
mysqladmin shutdown -u root -p
データベースの管理
ユーザの追加
CREATE USER mysql@localhost;
新規ユーザのパスワードを設定
SET PASSWORD FOR mysql@localhost='NewPassword';
データベースの作成
CREATE DATABASE kaggle;
権限の付与
GRANT ALL ON kaggle.* TO mysql@localhost;
データベースの選択
USE kaggle;
テーブルの作成
CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, text TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT charset=utf8;
テーブルの確認
DESC articles;
出力
+------------+--------------+------+-----+-------------------+-----------------------------------------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+-------------------+-----------------------------------------------+ | id | int unsigned | NO | PRI | NULL | auto_increment | | title | varchar(255) | NO | | NULL | | | text | text | NO | | NULL | | | created_at | datetime | YES | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | | updated_at | datetime | YES | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP | +------------+--------------+------+-----+-------------------+-----------------------------------------------+ 5 rows in set (0.02 sec)
データの追加
INSERT INTO articles ( title, text ) VALUES ( 'MySQL8インストール手順', 'https://dev.mysql.com/doc/refman/8.0/en/installing.html' ), ( 'Djangoアプリ制作について', 'Djangoは、PythonでWebアプリケーションを制作するための「フレームワーク」です。' );
データの参照
SELECT * FROM articles;
データの更新
UPDATE articles SET text='<a href="https://dev.mysql.com/doc/refman/8.0/en/installing.html">MySQL 8.0 Installing</a>' WHERE id=1;
データの削除
DELETE FROM articles WHERE created_at < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 MONTH);
【今日の積み上げ】
- データベースの基礎