SQL – PostgreSQLではじめるDB入門 http://db-study.com DBの基礎から設計の考え方、実践で役立つ知識などを図解を用いてわかりやすく解説しています。さらにPostgreSQLによりサンプルを交えながらSQLを使いこなすために必要な知識をまとめています。 Sun, 04 Feb 2018 05:24:53 +0000 ja hourly 1 https://wordpress.org/?v=4.9.3 テーブルの削除(DROP TABLE) http://db-study.com/archives/257 http://db-study.com/archives/257#respond Sat, 04 Jun 2016 00:31:24 +0000 http://db-study.com/?p=257 前回はDELETEコマンドで行(レコード)を削除しましたが、今回はテーブル自体を削除するDROP TABLEコマンドについて見ていきます。

DROP TABLEコマンド

DROP TABLEコマンドによりテーブルを削除します。構文も単純であり、削除するテーブル名を指定するのみです。

DROP TABLEコマンドの基本構文
DROP TABLE テーブル名;

では、実際にテーブルを削除してみましょう。その前に、データベース内に存在するテーブルを確認しておきます。

testdb=# \d
              リレーションの一覧
 スキーマ |    名前     |    型    |  所有者
----------+-------------+----------+----------
 public   | staff       | テーブル | postgres
 public   | testTable01 | テーブル | postgres
(2 行)

現状は2つのテーブルがあることが確認できます。ではそのうちのStaffテーブルを削除してみましょう。

testdb=# DROP TABLE staff;

DROP TABLEコマンド発行後、正しくテーブルが削除されたかどうか確認してみます。

testdb=# \d
              リレーションの一覧
 スキーマ |    名前     |    型    |  所有者
----------+-------------+----------+----------
 public   | testTable01 | テーブル | postgres
(1 行)

このようにテーブルの削除は非常に簡単です。ただし、「間違えて削除してはいけないテーブルを削除してしまった」とDROP TABLEコマンド発行後に気がついても、もう元には戻せません。

例えば、本番稼働中のシステムのテーブルを誤って削除してしまったといった場合、直後に惨劇が訪れます。データベースはあらゆるシステムの根幹です。DROP TABLEコマンドを使用する場合は十分に注意するよう心がけて下さい。

]]>
http://db-study.com/archives/257/feed 0
データの削除(DELETE) http://db-study.com/archives/252 http://db-study.com/archives/252#respond Fri, 03 Jun 2016 21:22:25 +0000 http://db-study.com/?p=252 INSERTコマンドで登録したデータを削除するにはDELETEコマンドを使用します。

DELETEコマンド

DELETEコマンドにより、テーブルのデータを削除することができます。基本的な構文は以下になります。

DELETEコマンドの基本構文
DELETE FROM テーブル名 WHERE 条件式;

DELETEコマンドで削除するのは行(レコード)単位です。例えば、一部の列だけを削除すると言ったことはできません。

では、実際にDELETEコマンドを発行してデータを削除してみましょう。

testdb=# DELETE FROM Staff WHERE id='0002';

WHERE句で削除する対象の行を指定します。上記例では、id列が「0002」の行を削除しています。

では、id列「0002」の行が削除されているかどうか、SELECTコマンドで確認してみます。

testdb=# SELECT * FROM Staff;
  id  |    name    | age
------+------------+-----
 0001 | 山田太郎   |  46
 0003 | 斉藤達弘   |  46
 0004 | 桜井さつき |  46
(3 行)

対象行は存在せず、正しく削除されていることが確認できます。

全行を削除する

UPDATEコマンドと同じく、WHERE句の指定がないとテーブル内の全ての行が削除されます。

例えば、以下のDELETEコマンドを発行してみましょう。

testdb=# DELETE FROM Staff;

上記コマンド発行後、SELECTコマンドでデータを確認すると、データが1件も登録されていないことがわかります。

testdb=# SELECT * FROM Staff;
 id | name | age
----+------+-----
(0 行)

意図して、全行削除する場合は良いですが、WHERE句の記述を忘れて誤って全てのデータを削除してしまったということにならないよう十分に注意しましょう。本番稼働中のシステムでこのようなミスをしてしまっては目も当てられません。

UPDATEやDELETEコマンドはある意味、危険なコマンドであるということを念頭に置いておくことが大切です。

]]>
http://db-study.com/archives/252/feed 0
psqlからPostgreSQLへ接続する http://db-study.com/archives/225 http://db-study.com/archives/225#respond Mon, 30 May 2016 10:16:42 +0000 http://db-study.com/?p=225 PostgreSQLに対してSQLを実行する手段はいろいろありますが、ここではpsqlというSQLインタプリタプログラムを利用していきます。

psqlは、PostgreSQLに標準で付属しており、PostgreSQLをインストールした環境であれば、すぐに利用できます。

今回は、psqlでPostgreSQLに接続し、データベースに関する情報を表示する手順について見ていきます。

psqlからデータベースへの接続

Linux版のPostgreSQLの場合であれば、シェル上からpsqlコマンドを実行します。

psqlコマンド
psql -U <データベースユーザー名> <データベース名>

-Uオプションでデータベースのユーザー名を指定し、引数としてデータベース名を指定します。psqlコマンドでよく使われるオプションとして以下のようなものがあります。

オプション 説明
-l データベース一覧を表示する。コマンド実行後、データベースに接続したままにならず、プロンプトに戻る。
-c ‘コマンド’ 引数で指定したSQLコマンドを実行し、結果を表示する。コマンド実行後、データベースに接続したままにならず、プロンプトに戻る。
-f ファイル名 引数で指定したファイルの中身をSQLとして実行する。コマンド実行後、データベースに接続したままにならず、プロンプトに戻る。
-p ポート番号 接続するPostgreSQLのポート番号を指定する。
-h ホスト名 接続するPostgreSQLのホスト名を指定する。

では、実際にpsqlを利用してデータベースに接続してみましょう。今回はpostgresユーザーでtemplate1データベースに接続します。

# su - postgres
$ psql -U postgres template1

コマンド実行後は、指定したデータベース(template1)への接続に成功したら、プロンプトが以下のように変わります。

template1=#

このプロンプトになっている間はデータベース(template1)に接続していることを示します。この状態になれば、直接SQLを実行することが可能となります。

また、プロンプトの最後が「=#」になっていますが、この意味は接続したユーザーがスーパーユーザーであることを表しています。一般ユーザーで接続した場合は「=>」になります。

データベースに関する情報表示

SQLを実行する前に、まず接続したデータベースにどのようなテーブルやインデックスがあるのかを確認する方法について見ていきましょう。

データベースに関する情報は、psqlで実装されているバックスラッシュコマンドで参照できます。例えば、定義されているテーブルを確認するには「\d」コマンドを実行します。

template1=# \d

よく使用されるバックスラッシュコマンドとして以下のようなものがあります。

バックスラッシュコマンド 説明
\? バックスラッシュコマンドヘルプを表示
\h SQLヘルプを表示
\q psqlを終了
\l データベースの一覧を表示
\dn スキーマの一覧を表示
\d テーブル、インデックス、シーケンス、ビューの一覧を表示
\dt テーブルの一覧を表示
\di インデックスの一覧を表示
\ds シーケンスの一覧を表示
\dv ビューの一覧を表示
\dS システムテーブルの一覧を表示
\du データベースユーザーの一覧を表示
\df 関数の一覧を表示
\r 入力途中のクエリのリセット
\timing SQL実行時間計測表示のON/OFF

他にもいろいろあり覚えるのが大変かもしれませんが、どのようなことが確認できるのかをおさえておき、バックスラッシュコマンドヘルプを表示するコマンドを最低限覚えておきましょう。

]]>
http://db-study.com/archives/225/feed 0