PostgreSQL_2

f:id:kentaro-mori36:20180522204500p:plainhigeponさんMiyagawaさんがリツイートしてくれた :)


 

ということで。みなさん、Rebuild FM  聞きましょう。
ツイートlikeしてもらえると嬉しい~

rebuild.fm

 

Todays topic is also PostgreSQL 


データ検索のSQL文-グループ処理

 

グループ化した行の検索

..表の行をグループ化して、グループ化した結果を検索する。

 

SELECT GROUP BY

..select pref from customer group by pref;

 

SELECT GROUP BY 句とグループ関数

..select pref, count(*) from customer group by pref;  //各県の顧客数を得る

 

GROUP BY とグループ関数使用例

..select job, count(job), sum(salary), max(salary) form people group by job order by sum(salary) desc;

 

グループ化と検索条件 HAVING

..select job from people group by job having sum(salary)>250;

  group byで抽出したグループに対して、検索条件をつけることができる、その場合

  には、where句は使用できない。(group by のあとにつかう)

 

グループ化と where

..select job, count(*) from people where salary > 150 group by job;

group化する前にwhere句をつけるといいよん。

 

 

データ検索のSQL文-高度な検索

 

複数の表を使用した検索

    二つの表の検索結果をつなぐことができます

 

表の結合の種類表の内部結合

    表の結合には複数の方法がある

 

表の内部結合

2つの表に対応する行がある場合のみ、結合結果を表示する

・対応:左のFKに対応する主キー

 

表の外部結合ー左結合

・左側の表のすべての行に右側の表の行を対応づける

・右表で対応する行がない場合は、nullで表示される

・対応:左のFKに対応する右の主キー

 

表の外部結合ー右結合

・右の表の(以下同文)

・(同文)

・対応:右の主キーに対する左の FK

 

表の外部結合ー完全

・全てのレコードが表示される

・相手表に対応する行がない場合は、nullで表現される。

・対応:一方のFKと対応側の主キー

 

表の自己結合

・検索のために、表自身と結合する場合もある。

 

表の結合SQL構文

.. 基本構文

 

 

表の結合SQL文例ー内部結合

 

表の結合SQL文連ー左外部結合

表の結合SQL文例ー右外部結合

 

副問い合わせ

・先に検索しておいた結果を利用して、次の検索を行うことが必要な場合がある。先に行った検索を副問い合わせ

 

Select * from people where salary = (select max(salary) from people);

                 主問い合わせ                                    副問い合わせ

 

副問い合わせ検索列ー複数行問い合わせ1

・複数行条件

・副問い合わせの結果中のいずれかと一致する行の検索

 

 

データ更新とトランザクション

 

データの更新

データ更新のSQL

 

INSERT

表にレコード(行)を追加する

UPDATE

表の一部を変更する

DELETE

表からレコード(行)を削除する

 

INSERT文ー

.. insert into people values(111,’北条’ ,CURRENT_DATE,3.2);

.. insert into 生徒表(番号、誕生日、名前)VALUES(3,’1998-06-03’ ,’北条’);

 

UPDATE文ー

..UPDATE people set job= ‘営業’ where code=1000;

 

基本データ型

 

DELETE文ー基本構造

..DELETE FROM 表名 where 条件式;

..Delete from people where code=1000;

 

副問い合わせの利用

..update people set loc=(selec.  Code. From store where. Locatin=‘品川’)

  Where loc = (select ecode form store where locatiion=‘横浜’);

 

表の結合(MERGE

INSERT INTO bank1 SELECT acct, name, deposit from bank2;

INSERT INTO bank1 (cname, sum) SELECT name, deposit FROM bank2 WHERE acct > 700;

 

トランザクション管理

1つの作業を完了するために、連続して行う必要がある表操作

ー途中で中断すると、データの一貫性を損なう

 

トランザクション処理

一連のすべての操作を終わった状態で表の操作を確定する

ー途中で中断した場合は、すべて元に戻す

 

 

トランザクション管理を無効にした表の更新操作

 

トランザクション管理を有効にした表の更新操作

・コミット

   トランザクションの表の更新操作を確定することができる

ロールバック

   トランザクションの表の更新操作をキャンセルすることができる

 

トランザクションの単位

・コミットやロールバックの対象となる一連の操作

commit文やrollback文の実行によりトランザクションが終了

 

PostgreSQLトランザクション開始

¥set AUTOCOMMIT on

¥echo :AUTOCOMMIT on

START TRANSACTION;

 

COMMIT

COMMITを実行すると、トランザクションが確定する

・コミットされたデータは元にもどらない

 

ROLLBACK

ROLLBACKを実行すると、トランザクションを無効にする

COMMITされていないデータは変更されない

 

SAVEPOINTROLLBACK

SAVEPOINT文により、ロールバックする場所を指定できる。

  ..SAVEPOINT セーブポイント

 

排他制御

・データベースのデータは複数のユーザやプログラムが使用する。

・複数のユーザが同時に、表のデータを更新する場合の制御が必要

 

ロック機能

・他のユーザが表の操作をできない状態にする

・ロックをかけている単位は製品による

 

 

 最後に、講師の先生から「どこまでできていて、どこまで出来ていないか。」を先輩に報告することが大切だというお話をしてもらいました。自分がどこまで学習していて、なにが分かっていないか。少し恥ずかしい面もありますが、ちゃんと表出させていかないといけませんね。

Listening song..