Open10
postgres
をすすめる。postgres環境はこちらの記事で作成
SELECT
first_name || ' ' || last_name,
email
FROM
customer;
||(結合演算子)を使ったカラム同士を連結できるらしい、、、
初めて知った。。。。
カラムのエイリアス名にスペースを入れたい場合は、"
でエイリアス名をくくってデータを取得する
SELECT
first_name || ' ' || last_name "full name"
FROM
customer;
length式を使用することで、文字列の長さを取得できる
SELECT
first_name,
LENGTH(first_name) len
FROM
customer
ORDER BY
len DESC;
order by区ではnull first or null lastが選択できる
- nulls firstはソートしたときにnullが最初に来る
- nulls lastはソートしたときにnullが最後に来る
nulls first
SELECT num
FROM sort_demo
ORDER BY num NULLS FIRST;
nulls last
SELECT num
FROM sort_demo
ORDER BY num NULLS LAST;
distinct_demoデータ作成
create table distinct_demo (
id serial NOT NULL primay key,
bcolor varchar,
fcolor varchar
);
insert into distinct_demo (bcolor, fcolor) values ('red', 'red'),('red', 'red'),('red', NULL),(NULL, 'red'),('red', 'green'),('red', 'blue'),('green', 'red'),('green', 'blue'),('green', 'green'),('blue', 'red'),('blue', 'green'),('blue', 'blue');
distinct句は指定したカラムが重複ないようにできる
複数カラムが指定された場合は、複数カラムで重複がないようにする
SELECT
DISTINCT bcolor,
fcolor
FROM
distinct_demo
ORDER BY
bcolor,
fcolor;
distnct on (column_a) column_b
重複グループの一番上のデータを取得する。
SELECT
DISTINCT ON (bcolor) bcolor,
fcolor
FROM
distinct_demo
ORDER BY
bcolor,
fcolor;
つづきはここから始める
ロールについて
ロールの概念には、"ユーザ"という概念と"グループ"という概念が含まれます。
ロールは、その設定方法に応じて、データベースユーザ、またはデータベースユーザのグループとみなすことができます。
ロールはデータベースオブジェクト(例えばテーブル)を所有することができます。
ロールは、どのオブジェクトに誰がアクセスできるかを制御するために、それらのオブジェクトに対しての権限を他のロールに割り当てることができます。
更に、ロールのメンバ資格を他のロールに与えることもできます。
そのため、メンバとなったロールは別のロールに割り当てられた権限を使用することができます。
昔は 「ユーザ」と「グループ」で分離されていたが、現在は 統一して「ロール」に集約された。
→ ロールはユーザとしても、グループ(メンバ)としても使うことができる。