meideru blog

家電メーカーで働いているmeideruのブログです。主に技術系・ガジェット系の話を書いています。

最低限知っておきたいSQLの基本操作一覧

 

今は、SQLを勉強中です。

SQLとは、RDBMS(データベース)を操作するための言語です。

今日は、私の備忘録も兼ねて基本操作をこの記事に書きたいと思います。

目次

ユーザに関して

ユーザ関連の操作は、rootでRDBMSにログインする必要があります。

ユーザの作り方

ユーザを作るには、create user を使用します。

MariaDB [(none)]> create user sample_user;
Query OK, 0 rows affected (0.00 sec)

上のサンプルコードでは、sample_user というユーザを作っています。

ユーザのパスワードの設定方法

ユーザのパスワードを設定するには、set password を使用します。

MariaDB [(none)]> set password for sample_user = password('sample_password');
Query OK, 0 rows affected (0.00 sec)

上のサンプルコードでは、sample_user というユーザに sample_password というパスワードを設定しています。

ユーザのホスト名を設定

ユーザのホスト名を設定するには、rename user を使用します。

MariaDB [(none)]> rename user 'sample_user'@'%' to 'sample_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)

上のコードではsample_user のホスト名を localhost に設定しています。

いくつか注意点があります。まずユーザ名とホスト名は’ ‘ で括ります。@ は ‘ ‘ で括ってはいけません。

初期状態では、ユーザのホスト名は%となっています。これは、任意のホスト名で接続できるという意味です。

ユーザの一覧表示

ユーザ一覧を表示するときは、mysqlデータベースのuserテーブルから抽出して表示します。

MariaDB [(none)]> select user, host, password from mysql.user;
+-----------------+-----------------------+-------------------------------------------+
| user            | host                  | password                                  |
+-----------------+-----------------------+-------------------------------------------+
| sample_user     | localhost             | ***************************************** |
+-----------------+-----------------------+-------------------------------------------+
1 rows in set (0.00 sec)

パスワードは暗号化されて表示されます。

ユーザの削除

ユーザを削除するときは、drop を使用します。

MariaDB [(none)]> drop user 'sample_user'@'localdomain';
Query OK, 0 rows affected (0.00 sec)

上のコードは、sample_user を削除しています。

特定のユーザでのログイン方法

特定のユーザでのログインをするときは、オプションで-u, -p を使用します。

[sample@sample-server ~]$ mysql -u sample_user -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 7
Server version: 5.5.47-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

-u の後に ユーザ名を付け加えます。

ホスト名を指定してログインする方法もあります。「-h (ホスト名)」を加えてログインします。特に指定がなければ、localhostでログインされます。

データベース・テーブルに関して

データベースの作り方

データベースを作るには、create database を使用します。

MariaDB [(none)]> create database sample_database;
Query OK, 1 row affected (0.00 sec)

上のコードでは、sample_database というデータベースを作成しています。

データベースの一覧表示

データベースを一覧表示するには、show databases を使用します。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| sample_database    |
+--------------------+
3 rows in set (0.00 sec)

これで、一覧が表示されます。

データベースを使用する方法

データベースを使用する(切り替える)には、use を使用します。

MariaDB [(none)]> use sample_database;
Database changed
MariaDB [sample_database]>

コードを入力した後は、[ ] の中身が sample_database になっていることがわかります。これは今、sample_database を使用しているという意味です。

テーブルの作り方

テーブルを作るときは、親となるデータベースを選択していなければなりません。

テーブルを作成するには、create tableを使用します。なお、列を決定する必要があります。

MariaDB [sample_database]> create table sample_table;
ERROR 1113 (42000): A table must have at least 1 column
MariaDB [sample_database]> create table sample_table(
    -> id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
    -> last_name VARCHAR(50),
    -> first_name VARCHAR(50),
    -> age TINYINT UNSIGNED,
    -> PRIMARY KEY(id));
Query OK, 0 rows affected (0.08 sec)

上のコードでは、id、ラストネーム、ファーストネーム、年齢を列としてテーブルを作成しています。

型や主キーなど細かいことについては、この場での説明はしません^^;

テーブルを一覧表示する方法

テーブルを一覧表示するには、show tables を使用します。

MariaDB [sample_database]> show tables;
+---------------------------+
| Tables_in_sample_database |
+---------------------------+
| sample_table              |
+---------------------------+
1 row in set (0.00 sec)

テーブルの列を表示する方法

テーブルの列を表示するには、show clumns を使用します。

MariaDB [sample_database]> show columns from sample_table;
+------------+-----------------------+------+-----+---------+----------------+
| Field      | Type                  | Null | Key | Default | Extra          |
+------------+-----------------------+------+-----+---------+----------------+
| id         | mediumint(8) unsigned | NO   | PRI | NULL    | auto_increment |
| last_name  | varchar(50)           | YES  |     | NULL    |                |
| first_name | varchar(50)           | YES  |     | NULL    |                |
| age        | tinyint(3) unsigned   | YES  |     | NULL    |                |
+------------+-----------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

上のコードでは、sample_database の sample_table の列を一覧表示しています。

権限について

権限をユーザに付与する方法

権限をユーザに付与するには、grant を使用します。

使い方は以下です。

grant (権限) on (データベース名).(テーブル名) to '(ユーザ名)'@'(ホスト名)';

実際に使ってみましょう。

MariaDB [(none)]> grant all on sample_databese.sample_table to 'sample_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)

上のコードでは、sample_user に sample_database の sample_table に関して、全て(all)の権限を与えています。

権限に関しては、allの他に、以下のようなものがあります。

コマンド 内容
all 権限の操作を除いた全ての権限を付与する
create テーブルの作成を可能にする
create user ユーザの作成や削除などを可能にする
delete テーブル内のデータの削除を可能にする
drop テーブルの削除を可能にする
select テーブルからデータの取り出しを可能にする
show databases データベースの一覧表示を許可する
update データの書き換えを可能にする
grant option ユーザへの権限操作を可能にする

ユーザの権限の確認する方法

ユーザの権限を確認するには、show grants を使用します。

MariaDB [(none)]> show grants for 'sample_user'@'localhost';
+------------------------------------------------------------------------------------------------------------------ --+
| Grants for sample_user@localhost                                                                                    |
+------------------------------------------------------------------------------------------------------------------ --+
| GRANT USAGE ON *.* TO 'sample_user'@'localhost' IDENTIFIED BY PASSWORD '*********************************** ' |
| GRANT ALL PRIVILEGES ON `sample_databese`.`sample_table` TO 'sample_user'@'localhost'                               |
+------------------------------------------------------------------------------------------------------------------ --+
2 rows in set (0.00 sec)

上のコードは、かなり形が崩れいていると思いますが(T_T)

とりあえず、権限の確認はできています。

ユーザの権限を削除する方法

権限を削除するには、revoke を使用します。

MariaDB [(none)]> revoke all on sample_database.sample_table from 'sample_user'@'localhost';
Query OK, 0 rows affected (0.00 sec)

権限を反映する方法

権限を反映するには、flush privileges を使用します。

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

なお、権限を反映する必要があるときは、スキーマのテーブルを直接編集したときなので、grant で権限を付与したときは flush privileges を使用する必要はありません。

 - 技術系