PostgreSQLでテーブルを作成するには
■SQL文(クエリー)について
SQL言語は、データーベースを操作する言葉のため、殆どのデーターベースに対応するので、自分にあったデーターベースと共にSQL言語を学んでください
PostgreSQL→PostgreSQL 9.4.5文書
→PostgreSQLの基本コマンド
■テーブル
1)テーブル作成
SQL文(クエリー)
create table table_name
(column_name1 column_type, column_name2 column_type, …);
2)テーブル定義の確認
sample1=# create table test10(id integer, name text,address text);
CREATE TABLE
sample1=# ¥d test10
テーブル "public.test10"
列 | 型 | 修飾語
---------+---------+--------
id | integer |
name | text |
address | text |
3)テーブル削除
SQL文
sample1=# drop table test10;
DROP TABLE
sample1=# ¥d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+------+----------+----------
public | test | テーブル | postgres
(1 行)
sample1=#
4)デフォルト値の設定
SQL文
create table table_name
(column_name1 column_type DEFAULT default_value, …);
5)NOT NULL制約
カラムにNULL値を持つ事が出来ないように設定する
SQL文
create table table_name
(column_name1 column_type NOT NULL, …);
例文
sample1=# create table sample2(name text not null,address text);
CREATE TABLE
sample1=# insert into sample2(address) values('tokyo');
ERROR: 列"name"内のNULL値はNOT NULL制約違反です
DETAIL: 失敗した行は(null, tokyo)を含みます
sample1=# insert into sample2(name) values('yamada');
INSERT 0 1
sample1=#
6)UNIQUE制約
カラムに含まれる値は重複することが出来ないように設定する方法
SQL文
create table table_name
(column_name1 column_type UNIQUE, …);
C:\Users\hiromi>psql -U postgres
ユーザ postgres のパスワード:
psql (9.5.7)
"help" でヘルプを表示します.
postgres=#
sample1=# ¥d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+---------+----------+----------
public | sample | テーブル | postgres
public | sample2 | テーブル | postgres
public | test | テーブル | postgres
データベース接続
postgres=# ¥c sample1
データベース "sample1" にユーザ"postgres"として接続しました。
テーブルの作成--UNIQUE制約
sample1=# create table sample3(name text unique,address text);
CREATE TABLE
sample1=# ¥d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+---------+----------+----------
public | sample | テーブル | postgres
public | sample2 | テーブル | postgres
public | sample3 | テーブル | postgres
public | test | テーブル | postgres
(4 行)
データ入力SQL文
sample1=# insert into sample3(name,address) values('yamada','tokyo');
INSERT 0 1
sample1=# insert into sample3(name,address) values('yamada','osaka');
ERROR: 重複キーが一意性制約"sample3_name_key"に違反しています
DETAIL: キー (name)=(yamada) はすでに存在します
sample1=#
データ表示SQL文
sample1=# select * from sample3;
name | address
--------+---------
yamada | tokyo
(1 行)
7)PRIMARY KEY制約
カラムに含まれる値が完全に重複しないようする制約
SQL文
create table table_name
(column_name1 column_type PRIMARY KEY, …);
テーブル作成
sample1=# create table sample4(name text primary key,address text);
CREATE TABLE
データ入力
sample1=# insert into sample4(name,address) values('yamada','osaka');
INSERT 0 1
sample1=# insert into sample4(name,address) values('yamada','tokyo');
ERROR: 重複キーが一意性制約"sample4_pkey"に違反しています
DETAIL: キー (name)=(yamada) はすでに存在します
sample1=# insert into sample4(name,address) values('kobayasi','tokyo');
INSERT 0 1
sample1=# insert into sample4(name,address) values('','tokyo');
INSERT 0 1
表示
sample1=# select * from sample4;
name | address
----------+---------
yamada | osaka
kobayasi | tokyo
| tokyo
8)CHECK制約
行を追加する時に、許可するかどうかの条件を付ける制約
SQL文
create table table_name
(column_name1 column_type CHECK(条件式), …);
^
sample1=# create table sample5(id integer check(id > 10),name text);
CREATE TABLE
sample1=# insert into sample5(id,name) values(20,'yamada');
INSERT 0 1
sample1=# insert into sample5(id,name) values(8,'satou');
ERROR: リレーション"sample5"の新しい行は検査制約"sample5_id_check"に違反しています
DETAIL: 失敗した行は(8, satou)を含みます
sample1=# select * from sample5;
id | name
----+--------
20 | yamada
(1 行)
sample1=#