DOM途中で飽きたので、MySQLやる。
これ終わったらFlaskでなんか作る
MySQLとは?
- Webアプリケーションでよく使われるデータベース
- オープンソースのリレーショナルデータベース・マネジメントシステム
データベースってなんや
- 検索や蓄積が容易に出来るように整理されたデータの集まり。
データベース関連の用語
- 1アプリケーションに対して、1つのデータベースを作成する。
-
テーブルをいう入れ物をDBの中に作って、そこにデータを格納していく。
- エクセルの表みたいな感じでデータを管理
-
フィールド:カラムのこと
- カラムの名前はカラム名
-
レコード:行のこと
- データを管理しやすいようにレコードにはidを振る。
-
クエリ: MySQLサーバーに対して投げるコマンド
- 大文字でも小文字でも区別されない
SQlって?
- データベース、テーブル、フィールドやレコードを扱う言語
- なんかの略ではない。
DBを操作していくよ!!
データベースの作成
mysql
create database name;
データベースの削除
mysql
drop database name;
選択されているデータベースの確認
mysql
select database();
use databasename; //これでデータベース変える
テーブル作るよ
テーブル名: users
カラム名:id, name, age
SQL
create table users users(id int unsinged, name varchar(32), age int); //テーブル作成
desc users; //表示
unsighnedってなんやね?
こんなんでてきた。
SQL
+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | YES | | NULL | |
| name | varchar(32) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+------------------+------+-----+---------+-------+
これで削除
SQL
drop table users;
データの挿入は?
SQL
insert into users (id ,name ,age) values (1, 'sato', 20);
insert into users (id ,name ,age) values (4, 'takahashi', null); // 未設定はnull
これで呼び出す。
select * from users;
SQL
+------+-----------+------+
| id | name | age |
+------+-----------+------+
| 1 | sato | 20 |
| 2 | suzuki | 20 |
| 3 | yamada | 31 |
| 4 | takahashi | NULL |
+------+-----------+------+
テーブル作成時のidカラムに関する設定
- auto_increment
- MySQLが連番を振ってくれる。
- nut null
- nullを許可しないよ!
- PRIMARY KEY
- nullじゃない。
- 重複しないことが保証される。
- 1テーブルで1カラムだけ指定できる。
- default 1
- デフォルトで1がはいるよ。
MySQL
mysql> create table users(id int unsigned auto_increment not null primary key,
-> name varchar(32),
-> age int not null default 1);
いろいろぶっこんだデータ
SQL
mysql> select * from users;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | sato | 18 |
| 2 | suzuki | 22 |
| 3 | takahashi | 29 |
| 4 | tanaka | 30 |
| 5 | ito | 19 |
| 6 | watanabe | 20 |
| 7 | yamamoto | NULL |
+----+-----------+------+
名前とageだけとってくる
SQL
mysql> select name, age from users;
+-----------+------+
| name | age |
+-----------+------+
| sato | 18 |
| suzuki | 22 |
| takahashi | 29 |
| tanaka | 30 |
| ito | 19 |
| watanabe | 20 |
| yamamoto | NULL |
+-----------+------+
条件指定で持ってくる
SQL
mysql> select * from users where id = 1;
+----+------+------+
| id | name | age |
+----+------+------+
| 1 | sato | 18 |
+----+------+------+
idが1,2,3のどれか
SQL
mysql> select * from users where id in (1, 2, 3);
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | sato | 18 |
| 2 | suzuki | 22 |
| 3 | takahashi | 29 |
+----+-----------+------+
idが1,2,3以外
SQL
mysql> select * from users where id not in (1, 2, 3);
+----+----------+------+
| id | name | age |
+----+----------+------+
| 4 | tanaka | 30 |
| 5 | ito | 19 |
| 6 | watanabe | 20 |
| 7 | yamamoto | NULL |
+----+----------+------+
パターンマッチ
Like文
select * from users where name like 's%'; // %は0文字以上の任意の文字列
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | sato | 18 |
| 2 | suzuki | 22 |
+----+--------+------+
更新
SQL
update users set age = 40 where id = 1 ;
mysql> select * from users;
+----+-----------+------+
| id | name | age |
+----+-----------+------+
| 1 | sato | 40 |
| 2 | suzuki | 22 |
| 3 | takahashi | 29 |
| 4 | tanaka | 30 |
| 5 | ito | 19 |
| 6 | watanabe | 20 |
| 7 | yamamoto | NULL |
+----+-----------+------+
削除
delete from users where id=1;