注意。無料にも制限が、条件がある。

大丈夫かな?
データベースは、データ管理システムを選べたり、何やら色々と使い勝手が違う模様。

progateを使ってみたけどわからない。

MySQLをインストールする
とりあえずこのコマンドを叩いてみた。
brew install mysql
そしたらインストールが始まった。(成功する前に色々ゴタゴタやったけど失敗していた。不思議だ)
インストールが終わった後にこんなメッセージが。
We've installed your MySQL database without a root password. To secure it run: mysql_secure_installation MySQL is configured to only allow connections from localhost by default To connect run: mysql -uroot To have launchd start mysql now and restart at login: brew services start mysql Or, if you don't want/need a background service you can just run: mysql.server start
MySQLという管理人だけでなく、倉庫も作ってくれたの?
よし、では起動しよう。
mysql -uroot
ところがどっこい。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
なんのことかわからないけどエラーをそのままググってみると同じことで悩んでいる人がいた。

結局、
mysql.server restart
で次のような結果に。
よくわからないけど「制限」がかかるが起動できそうなので断っておく。
コンソールの表示は次のよう。
ERROR! MySQL server PID file could not be found! Starting MySQL .... SUCCESS!
エラーなのか成功したのかよくわからないが成功した模様。
満を期して
mysql -uroot
するとこう曰う。
いらっしゃい!
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 8.0.23 Homebrew Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
いつもと違う。
mysql>
これは、データーベースへの窓口ではないのか。
窓口を終了するときは
quit
を入力するようです。
初めてSQLでコマンド入力
status
で、サーバーの情報が見られると言うので叩いてみる。
ここで疑問が浮上。一体、いつデータベースを作ったのか。
MySQLは管理人のはず。倉庫をいつ作った?どこに作った?かわからない。
同じような疑問を持っている人がいました。

どうやら、MySQLという管理人が倉庫も勝手に作ってくれる、、、、のか?
と思ったらこちらでシンプルな回答を発見。

- amazonなどの「借りるデータベース」はネットを経由してamazonのサーバーに作られる。
- MySQLをダウンロードしてデフォルトのままだとインストールされたPCのどこかに作られる。
気を取り直して、いくつかのコマンドを打ってみます。

こちらを参考にしました。
mysql> show tables;
するとこうでる。
ERROR 1046 (3D000): No database selected
データベースを選ばなくちゃいけないらしい。
そもそもdtabaseがあるのか知らん。
mysql> show database;
ありました。
データベースは、1つかと思っていたのですが。複数あるようです。
データベースが何かわからなくなってきました。
データベースを作ろう
なので作ってみます。
CREATE DATABASE sunshower;
成功したようです。
あとは、このページに従って触ってみましょう。
use sunshower;
データベースを選ぶコマンドがありました。
できました。
今使っているデータベースを確認するコマンドは次のよう、。
SELECT DATABASE();
もう一度、やってみます。
mysql> show tables;
するとこうでる。
Empty set (0.00 sec)
どうやら、テーブルを作らないといけないようです。
tableを作ろう
tableを作るときには、列と行のデータの型を指定します。
データベースの世界で
- 列(縦方向の集まり)はコラム
- 行(横方向の集まり)はレコード
と呼びます。
次のコードでは
データ型がINT型(数値)のidという名前のコラム
データ型がVARCHAR(100)(文字列)のnameという名前のコラム
を作っています。
CREATE TABLE sunshower (id INT, name VARCHAR(100));
実行結果は????
Query OK, 0 rows affected (0.01 sec)
行は影響を受けていないと言います。中身がないけど、枠だけはできたのでしょうか?
再び
SHOW TABLES;
どうやら、sunshowerというデータベースの中にsunshowerというテーブルができたと教えてくれているようです。
参考はこちら

行が一つセットされているとのこと。何のことかわかりません。
次のコマンドで中身が見られるそうです。
DESCRIBE menus;
Nullの列は中身がないとYESと表記される模様。
中身を入れてみます。
INSERT INTO sunshower (id, name) VALUES (1, 'ピカピカ');
中身を見るのは次のコマンドで。
SELECT * FROM sunshower;
できました。
もう一回入れたらどうなるでしょうか?
INSERT INTO sunshower (id, name) VALUES (1, 'ピカピカ');
なんと・・・idが被って二つ入ってしまいました。
一度に何個かの行を入れてみます。
INSERT INTO sunshower (id, name) VALUES (1, 'はればれ'), (2, 'さめざめ'), (3, 'ジメジメ');
できました。
DELETE FROM sunshower WHERE name= 'ピカピカ';
2つとも消えました。
更新するときは次のよう。
UPDATE sunshower SET name='ひえびえ' WHERE id = 3;
ひとまずここまで。
以下、このサイトが参考になります。

pythonとSQLを使ってみた。結局何が違う?
今のところ、データが収納されている倉庫がdatabaseの場合はSQL、csvファイルの場合はpython、といった違いしか感じられませんでした。
SQLでもpythonで試してきたようなメソッドがあるのかどうか、わかりません。
SELECT * FROM テーブル名 WHERE カラム名 IS NOT NULL;
SELECT * FROM テーブル名 WHERE カラム名 IS NULL;
SELECT * FROM テーブル名 WHERE カラム名=値;
といった検索ができるようです。
計算もできるようです。最大値や平均値、項目の数が求められるようです。
SELECT AVG(カラム名) FROM テーブル名;
詳しくはこちらのステップ7を参考に。

やってみよう。
CREATE TABLE score (id INT, score1 INT, score2 INT, score3 INt);
INSERT INTO score VALUES (1, 9, 4, 6), (2, 3, 5, 9), (3, 7, 1, 5), (4, 6, 7, 3);
SELECT * FROM score;
平均値を取得してみます。出てくるのは、カラムの平均値です。
SELECT AVG(score1) FROM score;
出してくれました!
例えばid=1の人のスコアの平均を出すにはどうしたら良いのでしょうか?
こんなコードを見つけました。
SELECT (score1 + score2 + score3) / 3 AS average FROM score;
出たー!!!!
テーブルに反映されているかなと期待。
ダメでした。
これでいけるかな?
INSERT INTO score (average) VALUES (average);
ダメでした。
検索したら出てきました。
ALTER TABLE テーブル名 ADD 新規カラム名 型情報 AFTER 既存カラム名;
ALTER TABLE score ADD average INT AFTER score3;
できた??
できたっぽい!
書き入れるのはUPDATEでいいのかな?
UPDATE score SET average=(score1 + score2 + score3) / 3 WHERE id = 1;
できたっぽい!
SELECT * FROM score;
書き入れることができました。
ただ、データの型がINTだったからか、小数点がつきませんでした。
データの型をfloatにしておけば・・・今から変更できるかな?
quitしたら、データはどうなるのか?
Bye
そしてもう一度起動。
mysql -uroot
そして
scoreはテーブルの名前でした。区別できるように表記しよう。これからは。
データベースsunshowerの中にテーブルscoreを作ったのでした。
残っていました!!!!
insert into seiseki values (‘Yamada’, 85, 72, suugaku + kokugo);
asで新しいコラムを作ったり、viewで見たいコラムを指定したりできるよう。


pythonで管理できる?
こんな記事を見つけました。
SQliteとMySQLの比較。


コメント