SQLとは?
SQLとは、、「データベースに対して様々な操作をするための言語」です。

PostgreSQLとは?
読み方:ポストグレースエスキューエル
用途:RDBMS→関係データデータベースに対して様々な操作をするためのシステム
他のRDBMS:IBM DB2, Microsoft SQL server, My SQL, PostgreSQL, FileMaker, H2 Databaseなど
ドキュメント
データベースの作成と削除
createdb データベース名 --作成 dropdb データベース名 --削除
データベースにアクセスする
psql データベース名
sampledbというデータベースを作ってアクセスしてみたら以下のようになります。

よく使うコマンド
\h
SQLコマンドのヘルプを表示する
\?
psqlコマンドのヘルプを表示する
\g または ;
問合せを実行します。もし、\gまたは;を打たないと問合せに続きがあると認識されていつまで経っても実行しません。以下のように-#のようになっている時は、\gまたは;を入力していないので、問い合わせの続きの入力を待っていることになります。ただし、\から始まるものには、\gまたは;は必要ありません。

\q
psqlを終了します。
\l
データベースの一覧を表示する
\dt
テーブルの一覧を表示する
\dv
ビューの一覧を表示する
\d テーブル名
テーブル名のアトリビュートや制約などを表示する
\i ファイル名
ファイル名の中にある問い合わせを読み込み実行する
テーブルの作成と削除
作成
作成の方法として2種類あります。
①直接問い合わせを書き込む方法
②ファイルに問い合わせを記述し、\i ファイル名でファイル名の中にある問い合わせを読み込む方法
CREATE TABLE ACCOUNT( ACCOUNT_NUMBER CHAR(10) NOT NULL PRIMARY KEY, BRANCH_NAME CHAR(15), BALANCE INT CHECK(BALANCE > 0));

\dtで確認してみると確かにtableが作成されています。

\d accountでtableがどのように定義されているかみてみると、、、

削除
drop table account;
\dtで確認してみると確かに削除されています。

テーブル名の変更
alter table account rename to myaccount;

データの挿入・削除
挿入
insert into myaccount values('123','hoge',300); --以下のように複数同時に挿入することもできる insert into myaccount values('133','hoge1',200),('113','hoge1',200);

削除
delete from myaccount where balance = 200; --where句を指定しないとデータが全て削除される(where 条件式 で削除するデータを指定します。) delete from myaccount;

テーブルの中身を見る
データの挿入と削除で出てきた、基本的にはselectとfromを使います。
SELECT 列名 → どの列から抽出するかを指定
FROM 表名 → どの表から抽出するかを指定
WHERE 条件式 → どのような条件で抽出するかを指定
GROUP BY 属性 → 属性ごとにまとめる
HAVING 条件 → GROUP BYした後にさらに条件をつけて絞り込む
ORDER BY 属性 → 指定した属性に対して昇順で並び替える
属性の後にDESCとつけると降順に並び替える(属性は複数OK)
・SELECT * で全ての行を抽出します。
・SELECT 列名 FROM テーブル名 WHERE LIKE 列名 ‘文字列’ で対象の列に対して、文字列検索が行えます。このLIKEの文字列には、ワイルドカードが使用できます。
ワイルドカード文字 | 意味 |
% | 0文字以上の任意の文字列 |
_ (アンダーバー) | 任意の1文字 |
・SELECT COUNT(*) で行数をカウントします
関数 | 意味 |
COUNT(*) | 行数を数える |
SUM(属性) | 属性の合計 |
MAX(属性) | 属性の最大値 |
AVG(属性) | 属性の平均 |

テーブルの内容(属性を指定)を全て出力

balanceが700以上のレコードを出力

branch_nameをまとめてbranch_nameごとのblanceの平均値を出力

上の条件に平均が600以上のレコードを出力

テーブルのaccount_number(昇順), account(降順)をソートして出力

SELECT文の入れ子
SELECT 商品番号 FROM WHERE 商品版号 NOT IN (SELECT 商品番号 FROM 在庫)
データの更新
update myaccount set branch_name = 'hoge3' where account_number = '133'; update myaccount set balance = balance + 50 where account_number = '133';


ビューの作成・削除
作成
create view myview as select * from myaccount where balance >= 250;

削除
drop view myview;
