MySQL 基本コマンドメモ

■データベースの参照

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.01 sec)

 

■データベースの作成

database名にハイフンを使う場合にはバッククォートを使用する。

mysql> create database `tagutagu-db01`;
Query OK, 1 row affected (0.03 sec)

 

■環境確認・文字コード確認

mysql> status
--------------
mysql Ver 14.14 Distrib 5.6.32, for Linux (x86_64) using EditLine wrapper

Connection id: 2
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.32 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 5 min 28 sec

Threads: 1 Questions: 10 Slow queries: 0 Opens: 67 Flush tables: 1 Open tables: 60 Queries per second avg: 0.030
--------------

 

■プロンプトの変更

mysql> prompt mysql_tagutagu>
PROMPT set to 'mysql_tagutagu>'
mysql_tagutagu>

 

■使用するデータベースの宣言

データベースサーバの種類(ポスグレ)によってはこれを始めにやらないと怒られるらしい。

mysql> use tagutagu-db01;
Database changed

 

■テーブルの作成

mysql> create table tagutagu(ID VARCHAR(10),Name VARCHAR(10),Age INT);
Query OK, 0 rows affected (0.23 sec)

mysql> show tables;
+-------------------------+
| Tables_in_tagutagu-db01 |
+-------------------------+
| tagutagu |
+-------------------------+
1 row in set (0.00 sec)

 

▼MySQLのデータ型
カラムにはデータ型を指定し、データ型から外れる値は入力することができない。
この仕組みによって、RDBMSはデータの安全性や整合性を高めている。

(数値型)
種類 格納される値 範囲
INT 整数 -2147483658 ~ -2147483657
TININT 小さい整数 -128 ~ 127
FLOAT 単精度浮動小数点数 -3.40282×1038~3.40282×1038
DOUBLE 倍精度浮動小数点数 -1.79769×10308~1.79769×10308
 
(文字列型)
種類 格納される値 対応している範囲
CHAR 固定長の文字列 255文字まで
VARCHAR 可変長の文字列 1~65532バイトまで SHIFT_JISなら256文字
TEXT 長い文字列 65535文字まで
※mysqlではあふれた文字は削除されて格納されるので注意する。
(日付型)
データ型 格納される値 対応している範囲
DATETIME 日付と時刻 yyyy-mm-dd hh:mm:ss
DATE 日付
yyyy-mm-dd
TIME 時刻
hh:mm:ss
 
■カラムのデータ型を変更する。(ALTER文)
---
■文字コードを確認する。
mysql> status
--------------
mysql  Ver 14.14 Distrib 5.6.34, for Linux (x86_64) using  EditLine wrapper

Connection id:		2942
Current database:	hogehoge
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.6.34-log MySQL Community Server (GPL)
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/var/lib/mysql/mysql.sock
Uptime:			5 hours 30 min 23 sec

Threads: 1  Questions: 20689  Slow queries: 0  Opens: 75  Flush tables: 1  Open tables: 62  Queries per second avg: 1.043
--------------

 

■テーブルの文字コードを変更する。

mysql > alter table テーブル名 charset = utf8

 

■カラム構造の確認

---

 

■テーブルの削除方法

mysql> desc tagutagu;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID | varchar(10) | YES | | NULL | |
| Name | varchar(10) | YES | | NULL | |
| Age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
もしくは

mysql> desc tagutagu\G
*************************** 1. row ***************************
 Field: ID
 Type: varchar(10)
 Null: YES
 Key:
Default: NULL
 Extra:
*************************** 2. row ***************************
 Field: Name
 Type: varchar(10)
 Null: YES
 Key:
Default: NULL
 Extra:
*************************** 3. row ***************************
 Field: Age
 Type: int(11)
 Null: YES
 Key:
Default: NULL
 Extra:
3 rows in set (0.00 sec)

■レコードの挿入(INSERT)

mysql> insert into tagutagu (ID,Name,Age) values ('A101','pikachu',5) ,('A102','hitokage',10) ,('A103','zenigame',20) , ('A104','danefusha',30) ,('A105','myutwo',100);
Query OK, 5 rows affected (0.04 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> select * from tagutagu;
+------+-----------+------+
| ID | Name | Age |
+------+-----------+------+
| A101 | pikachu | 5 |
| A102 | hitokage | 10 |
| A103 | zenigame | 20 |
| A104 | danefusha | 30 |
| A105 | myutwo | 100 |
+------+-----------+------+
5 rows in set (0.01 sec)

 

■レコードの削除(テーブルの中身を削除)

mysql> select * from テーブル名;

 

■特定テーブルの全レコードの参照(SELECT)

mysql> select * from テーブル名;

 

■特定カラムの参照(SELECT)

mysql> select * from VM_INFO where os = 'CentOS release 6.6';

 

■テーブルのコピー(Create)

---

■テーブルのカラム+データのコピー方法(Create)

---

■データのカラム構造のみをコピー方法

---

■データのみをコピーする方法

---

■特定のカラムをコピーして別カラムに上書きコピーする。

mysql> UPDATE tabel-name SET `コピー先カラム` = `コピー元カラム`

 

■実行中のプロセス確認

mysql> show processlist;
+----+------+-----------+---------------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+---------------+---------+------+-------+------------------+
| 4 | root | localhost | tagutagu-db01 | Sleep | 903 | | NULL |
| 5 | root | localhost | tagutagu-db01 | Query | 0 | init | show processlist |
+----+------+-----------+---------------+---------+------+-------+------------------+
2 rows in set (0.00 sec)

 

■空文字、NULLのみをSELECTする。

---

■複数条件(and, or)でSELECTする。

---

■ユーザ作成

ALLは全てのDB操作を意味する。*.*は全てのデータベース、tableを意味する。
※localhostと%は区別されるので、ローカルとリモート全て許可する場合には、localhostと%で二回実行する。

mysql> GRANT ALL PRIVILEGES ON *.* TO tagutagu@"localhost" IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;

 

よく使いそうな許可アクションのパラメータ

権限 意味
ALL GRANT OPTION以外全て許可
ALTER ALTER TABLEを許可
CREATE CREATE TABLEを許可
DELETE DELETEを許可
DROP DROP TABLE を許可
INDEX CREATE INDEX , DROP INDEXを許可
INSERT INSERTを許可
REPLICATION SLAVE スレーブ側のレプリケーションに必要な動作を許可
SELECT SELECTを許可。
UPDATE UPDATEを許可

■シェルからSQLを実行する。

[root@www:~]# mysql -u root -p -e 'select * from DB_name.Tbl_name;'

 

Copyright © 2021 たぐたぐ.com. All rights reserved.