第5章の動作確認
完了要件
クライアントアプリケーションと関連するSQL文の動作を確認します。
5.3 データベースの作成
以下を確認します。
- createdbコマンド/dropdbコマンド
- CREATE DATABASE文/DROP DATABASE文
データベースの作成と削除
所有者がsatoユーザのデータベースを2種類の方法で作成します。
[postgres@host1 ~]$ createdb -O sato newdb1
[postgres@host1 ~]$ psql newdb1
psql (13.14)
"help"でヘルプを表示します。
newdb1=# SET ROLE sato;
SET
newdb1=> SELECT CURRENT_USER, SESSION_USER;
current_user | session_user
--------------+--------------
sato | postgres
(1 行)
newdb1=> CREATE DATABASE newdb2;
CREATE DATABASE
newdb1=> \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+-------------+-------------------+-----------------------
newdb1 | sato | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
newdb2 | sato | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
ossdb | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(6 行)
newdb1=> CREATE TABLE test1 (id INT);
CREATE TABLE
newdb1=> \d
リレーション一覧
スキーマ | 名前 | タイプ | 所有者
----------+-------+----------+--------
public | test1 | テーブル | sato
(1 行)
newdb1=> DROP DATABASE newdb2;
DROP DATABASE
newdb1=> DROP DATABASE newdb1; --エラー
ERROR: 現在オープンしているデータベースを削除できません
newdb1=> \q
[postgres@host1 ~]$ dropdb -U postgres -i newdb1
データベース"newdb1"は永久に削除されます。
実行しますか? (y/n)y
[postgres@host1 ~]$
最初にpostgresユーザがcreatedbコマンドでsatoユーザのnewdb1データベースを作成し、次にsatoユーザがCREATE DATABASE文でnewdb2データベースを作成します。psqlの\lコマンドで、2つのデータベースの所有者はsatoユーザであることが確認できます。
次にsatoユーザがnewdb1にtest1表を作成しています。その後、DROP DATABASE文でnewdb2を削除しています。現在newdb1に接続中のため、newdb1は削除できません。psqlを終了すればnewdb1も削除できます。