備忘録的プログラミングリファレンス

データベースの作成

 データベースは、実際にデータを収める複数のテーブルやテーブルの集合体であるスキーマ、ビュー,トリガといったスクリプトを統括し管理します。 まず先に統括し管理するためのデータベースを作成することから始めます。
 データベースを作成するには CREATE DATABASE 文を使用します。
 CREATE DATABASE 文は標準SQLにはありません。データベースの実装に依存しますのでお使いのデータベースを参照してください。

 PostgreSQLではpsqlインターフェイスを利用します。詳しくは「PostgreSQLの操作(postmasterとpsql)」を参照してください。

psqlにログイン
$ psql データベース名
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.
...

 MySQLではmysqlインターフェイスを利用します。

mysqlにログイン
$ mysql -p データベース名
...
mysqlからログアウト
mysql> \q または quit
Bye

 簡単にデータベースを作成するには以下の構文を使います。データベースオーナーはログインしているユーザーに成ります。

データベース作成例
CREATE DATABASE example;

 データベースを作成したら、そのデータベース内でテーブルを作成していきます。

CREATE DATABASEの構文

 CREATE DATABASEの構文は、例えばPostgreSQLでは以下のように示されています。

PostgreSQL CREATE DATABASEの構文
CREATE DATABASE name
    [ [ WITH ] [ OWNER [=] user_name ]
           [ TEMPLATE [=] template ]
           [ ENCODING [=] encoding ]
           [ LC_COLLATE [=] lc_collate ]
           [ LC_CTYPE [=] lc_ctype ]
           [ TABLESPACE [=] tablespace_name ]
           [ ALLOW_CONNECTIONS [=] allowconn ]
           [ CONNECTION LIMIT [=] connlimit ]
           [ IS_TEMPLATE [=] istemplate ] ]
	

 MySQLでは以下のように示されています。

MySQL CREATE DATABASEの構文
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_option] ...

create_option: [DEFAULT] {
    CHARACTER SET [=] charset_name
  | COLLATE [=] collation_name
  | ENCRYPTION [=] {'Y' | 'N'}
}
	

オプションの指定例

PostgreSQLでのオプション

 データベース所有者を指定する場合は以下のようにします。

データベースの所有者の指定例
psql> CREATE DATABASE example OWNER user_name;

 さらにテーブルスペースを指定する場合は以下のようにします。テーブルスペースはデフォルトでなければ、先にテーブルスペースを作成しておく必要があります。

データベースの所有者とテーブルスペースの指定例
psql> CREATE DATABASE example OWNER user_name TABLESPACE exmpl_tablespace;

MySQLでのオプション

 データベース所有者を指定する場合は以下のようにします。

データベースの所有者の指定例
mysql> CREATE DATABASE example user_name;

MySQL データベースに接続

 作成したデータベースにテーブルやビューを作成したりデータを編集するためには、データベースを指定し接続しなければなりません。
 データベースに接続する方法には、mysql コマンドでデータベースを指定する、mysql コマンドプロンプトで USE コマンドを実行する方法があります。

mysql コマンドでデータベース指定
$ mysql -u username -p db_name
...
mysql>

 使用するデータベースは -p オプションで指定します。-p オプションによる指定がない場合は使用する何もデータベースがない状態でログインします。
 以下のように SELECT database(); クエリーを実行すると NULL と表示されます。

現在使用中のデータベース

 現在接続中のデータベースを確認するには SELECT クエリーで databse() 関数を使用します。

現在使用中のデータベースの確認
mysql> SELECT databse();
+-------------------+
| database()        |
+-------------------+
| current_database  |
+-------------------+
...

 データベースを切り替えるには以下のような use クエリーを実行します。

データベース切り替え

 mysql にログインした状態でデータベースを切り替えるには USE コマンドを使用します。

データベースの切り替え
mysql> use other_db;
Database changed

 詳しくは MySQL のデータベースを参照してください。

テーブルの作成

 テーブルとは、データベースにおいてデータを格納するために用意する表のようなものです。

 表計算のような行列の概念があり、CREATE TABLEでは列の各カラム(項目)の定義をします。

列名の部分

 例えば以下のようにテーブルを定義します。

TABLE の作成( MySQL )
CREATE TABLE sales_slip (
	id 		SERIAL PRIMARY KEY,		/* 行番号 */
	date_time 	TIMESTAMP DEFAULT CURRENT_TIMESTAMP,	/* 日付 */
	goods_name 	VARCHAR(30),			/* 商品名 */
	unit_price 	INT,				/* 単価 */
	amount 		INT,				/* 数量 */
	price 	BIGINT GENERATED ALWAYS AS ( amount * unit_price ) STORED  /* 金額 */
);

 テーブルに格納されるデータは行と列として扱います。

 ただし、データベースではデータの扱いがテキストベースで行われ、データがどのように扱われているかは想像力を働かせる必要があります。

 詳しくはテーブルを参照してください。