午前中からの続きです。
MySQLWorkbenchを起動できたら、左側のMANAGEMENTにあるServer Statusをクリックするとデータベースの状況がわかるとのことです。
とりあえず試しにデーターベースの一覧を取得してみます。
> SHOW DATABASES; 12:20:54 Get schemata Error Code: 1449 The user specified as a definer ('mysql.infoschema'@'localhost') does not exist
エラーが起こりますね。いい加減にして欲しい。。。 ローカルホストのUser'mysql.infoschema'が定義されていないとのこと。 このUserがいるのかどうか検索してみます。
> select user(); > SELECT host, user FROM mysql.user;
もちろんこんなユーザーいないですね。 このコマンドは使えたのですが、他のコマンドは全滅です。
グーグルで原因を探していたのですが、どうやらMySQL5.7から8にアップグレードされた時にユーザーの設定がうまくいってないようです(いったいいつアップグレードした)。
色々試してみましたが最終的にうまくいったのが以下のコマンド。
$ mysql -u root -p mysql> SET GLOBAL innodb_fast_shutdown = 1; mysql> exit $ mysql_upgrade -u root -p
これでやっと
SHOW DATABASES;
が使えました。引続き、SQLを勉強してしていきます。
SQLの構文
— hogehoge /* hoge hoge */
- 使うデータベースを選ぶ
USE test_db;
-テーブルの一覧をみる
SHOW TABLES;
- テーブルの構造を確認する(カラムとかの確認)
DESC テーブル名;
- データベースからデータを取得するコマンド
SELECT カラム名 FROM デーブル名;
- カラムを複数指定する場合はコンマで区切る。
SELECT カラム名, カラム名 FROM デーブル名;
ここまでのコマンドを実際に実行するとなるとこんな感じですね。
use test; SHOW TABLES; DESC books; SELECT title FROM books;
応用
取得した後にカラム名を変更させる -> asを使う
SELECT title as 件名 FROM books;
今あるカラムに演算を追加することができる。
SELECT title as 件名, price as 定価, price * 1.08 FROM books;
WHERE文
WHEREを付けることで条件を指定することができる。
SELECT title, price FROM books WHERE PRICE > 3000;
データベースを作る操作
- データベースを作るコマンド
CREATE DATABASE データベース名;
- テーブルを作るコマンド
CREATE TABLE テーブル名(カラム情報)
- 例
CREATE TABLE テーブル名(id int not null auto_increment primary key, user_name varchar(255) not null, ranking int)
- テーブルにカラムを追加するコマンド
ALTER TABLE テーブル名 ADD カラム名 int AFTER id;
キリが無いのでデータベースの基礎はこの辺にして、いつもの分析をはじめていきます。