mysqlの基本的操作(その1)
概要
いつもDB操作するときにググるのでメモ・・・
DB作って、テーブル作って、カラムにデータ挿入して、そのデータ更新する。
あとテーブルの削除。
簡単なところでよく使うSQLをメモ。
Database作成
syntaxはこれ。
> create database <db_name>;
実際動かすとこんな感じ。
$ mysql -u<username> -p<password> mysql> create database arel_test; Query OK, 1 row affected (0.04 sec) mysql> show databases; +-----------------------+ | Database | +-----------------------+ | information_schema | | arel_test | | performance_schema | +-----------------------+ 3 rows in set (0.00 sec)
Databse情報表示
いくつかあるので、以下に僕がよく使うやつを。
Database一覧表示
> show databases;
Database環境設定表示
全部表示したい場合は↓↓
> show variables;
特定のを探してる場合は↓↓
> show variables like <variable>;
例えば、character_set_databaseが見たいときは、
mysql> show variables like "character_set_database"; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | character_set_database | utf8 | +------------------------+-------+ 1 row in set (0.05 sec)
Table 作成
syntaxはこれ。
> create table <table_name>(col data_type, col data_type);
col: カラム名。好きに名前をつけましょう data_type: mysqlで決められてるので、そこから選びましょう
どんなdata_typeがあるのかな、とググッてみた↓↓
バージョンによっても多少違ったりするところはあると思うので、
一番は、各バージョンのMySQLのドキュメントを参照してちょ。
では試しに、test_tableという名前のテーブルを、こんなカラムで作ってみる。
カラム名 : data_type
- col01 : int
- col02 : varchar(64)
mysql> create table test_table(col01 int, col02 varchar(64)); Query OK, 0 rows affected (0.74 sec) mysql> show tables; +-------------------+ | Tables_in_ar_test | +-------------------+ | test_table | +-------------------+ 1 row in set (0.01 sec)
Table情報表示
Table一覧表示
さっき↑で使ったけど、
> show tables;
でテーブルの一覧が表示されます。
Table詳細表示
> describe <table_name>;
で、詳細でます。
例えば、こんな感じ。
mysql> desc test_table; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | col01 | int(11) | YES | | NULL | | | col02 | varchar(64) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.31 sec)
descは短縮系。
データ挿入
insert文ってやつです。
> insert into <table_name> (col, col, ...) values (val, val, ...);
最初のカッコの中に、データを挿入したいカラムを列挙して、
挿入する値自体は、次のカッコの中に、並べればOK。
さてさて、やってみよう。
mysql> insert into test_table (col01, col02) values (1, 'testvalue'); Query OK, 1 row affected (0.33 sec) mysql> select * from test_table; +-------+-----------+ | col01 | col02 | +-------+-----------+ | 1 | testvalue | +-------+-----------+ 1 row in set (0.27 sec)
おー、できたできた。
確認したいので、ついでにselect文も。
> select * from <table_name>;
で、<table_name>というテーブルにある全カラム(*が全カラム、っていう意味)の、
全データが出てきます。
* に、カラム名を入れると、特定カラムだけ引っ張ってこれます。
データ更新
そのまんま。既存データを更新しますよと。
> update <table_name> set <column_name>=<value>;
例えば、さっきのテーブルに、
col01 : 1 col02 : testvalue2
っていうのを更にinsertして、col01の値を、"2"に更新してみる。
mysql> mysql> insert into test_table (col01, col02) values (1, 'testvalue2'); Query OK, 1 row affected (0.30 sec) mysql> select * from test_table; +-------+------------+ | col01 | col02 | +-------+------------+ | 1 | testvalue | | 1 | testvalue2 | +-------+------------+ 2 rows in set (0.00 sec) mysql> update test_table set col01=2; Query OK, 2 rows affected (0.48 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> select * from test_table; +-------+------------+ | col01 | col02 | +-------+------------+ | 2 | testvalue | | 2 | testvalue2 | +-------+------------+ 2 rows in set (0.00 sec)
あー、なるほど。。。col01が両方2になった・・・。
というわけで条件をつける。
col02=='testvalue2'のカラムだけcol01を更新しよう。
そんな時は where文を使います。
> update <table_name> set <column_name>=<value> where <column_name>=<value>;
じゃ、これを使ってみる。
mysql> update test_table set col01=1 where col02='testvalue2'; Query OK, 1 row affected (0.38 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from test_table; +-------+------------+ | col01 | col02 | +-------+------------+ | 2 | testvalue | | 1 | testvalue2 | +-------+------------+ 2 rows in set (0.00 sec)
おー。できたできた。
テーブル削除
さて、最後にきれいにテーブルを削除して終わりにしますか。
> drop table <table_name>;
で、きれいさっぱりいけます。
下記実演。
mysql> show tables; +-------------------+ | Tables_in_ar_test | +-------------------+ | test_table | +-------------------+ 1 row in set (0.00 sec) mysql> drop table test_table; Query OK, 0 rows affected (0.49 sec) mysql> show tables; Empty set (0.00 sec)
ほんとにただのメモですわ。
おわり。