1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Webの勉強はじめてみた その33 〜データベース編〜

Posted at

N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第4章11〜15節です。

PostgreSQL

Dockerコンテナにデータベースだけを作る
日本語化も併せて。

Dockerfile
FROM --platform=linux/x86_64 postgres:12

RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y less
RUN locale-gen ja_JP.UTF-8
RUN localedef -f UTF-8 -i ja_JP ja_JP
USER postgres
ENV LANG ja_JP.UTF-8
ENV TZ Asia/Tokyo
docker-compose.yml
version: '3'
services:
  db:
    build: .
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres

コマンド

psql

  • PostgreSQLに接続。後ろにデータベース名をつけると直接接続できる

CREATE DATABASE データベース名

  • データベース作成

\c データベース名

  • データベースへ接続

CREATE TABLE テーブル名 (カラム名 データ型)

  • データテーブルの作成

\q

  • PostgreSQLから抜ける

データモデリング

データベース設計の作業や手法のこと

エンティティ

データベースを使って何を管理したいのか
単体で管理する必要があり、それを親として別のデータが付属するようなもの
エンティティのデータをリレーションともいう。

Visioで言葉の意味するところがわからずER図書いてた。

インデックス

RDBのパフォーマンスを上げるために使う。

EXPLAIN ANALYZE SQL文

  • 実行にかかった時間等がわかる

CREATE INDEX ON テーブル名 (カラム名)

  • 対象のカラムにインデックスをつける

別のテーブルが作られるイメージ。
PostgreSQLではB-Treeでのインデックススキャンがデフォルト。

テーブルの更新があった場合、インデックスも作り直す必要がある。

データ量が多いとせっかくインデックスを作ってもシーケンシャルスキャンになった。

集計

WHERE 句は「行」についての条件を書くための句。
WHERE 句の条件は、GROUP BY によってグループを作るよりも前に使われる。
HAVING 句は、グループを作った後の「グループを対象とする」条件文。

まとめ

データベースは以前、MySQL, SQL Server, Access, DB2と扱ったことがあるので今回はほぼ復習。ただデータモデリングは勉強になった。
データベースの設計をしても、自信が持てないとコードを書いてても不安がつきまとうので精神的にもきつい。

ところでこれまでずっとアーカイブを追う形で進めてましたが、いよいよ追いついてしまった。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?