i is blue, isn't it?
こんばんわ。
Djangoでタイピングアプリを制作していてよくわからないバグに出会いました。
iの色は何色だと思いますか?
【開発環境】
- OS:Windows10
- Webブラウザ:Google Chrome
問題のHTML
- font-sizeは見やすさのために書いているだけです。なくても同じです。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>i is blue, isn't it?</title> <style> span { font-size:96px; } .ans { color:blue; } </style> </head> <body> <div> <span class="ans">f</span><span>i</span> </div> </body> </html>
【解決策】
● 半角スペースを入れる
<span>f</span>半角スペース<span>i</span>● 改行する
<span>f</span> <span>i</span>
その他にも解決策があれば、Twitterにてコメントください。
103日目:データベース
データベースの講義2日目です。
【参考テキスト】
【講義内容】
- 第2章 リレーショナルデータベースって何だろう-最も代表的なデータベース-
- 第3章 データベースにまつわるお金の話-イニシャルコストとランニングコスト-
- 第4章 データベースとアーキテクチャ構成-堅牢かつ高速なシステムを構築するために-
【ワンポイント】
SELECT
SELECT * FROM tbl WHERE id = 1 GROUP BY area HAVING area = 'west' ORDER BY sale desc LIMIT 10;
DISTINCT
- 重複を排除した結果
SELECT DISTINCT user_id, user_name FROM shopping_logs;
COUNT()
- 全行数
SELECT COUNT(*) FROM users;
- buyカラムの行数(NULL除く)
SELECT COUNT(buy) FROM users;
- buyカラムの重複排除した行数(NULL除く)
SELECT COUNT(DISTINCT buy) FROM users;
SUM()
- 合計
SELECT SUM(price) FROM items;
AVG()
- 平均
SELECT AVG(price) FROM items;
MAX()
- 最大値
SELECT MAX(price) FROM items;
MIN()
- 最小値
SELECT MIN(price) FROM items;
WHERE
- カラム名 = 値
SELECT * FROM items WHERE name = '鶏もも肉';
- カラム名 != 値
SELECT * FROM items WHERE name != '鶏もも肉';
IN
- カラム名 IN(値1, 値2...)
SELECT * FROM items WHERE name IN('鶏むね肉', '羊肉');
LIKE
SELECT * FROM items WHERE name LIKE '鶏%肉';
is null
SELECT * FROM items WHERE price is not null;
【今日の積み上げ】
‐ データベースの基礎
102日目:データベース
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);
【今日の積み上げ】
- データベースの基礎