149
134

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.

【PostgreSQL】ポケモンずかんをつくってSQLを学ぶ1(テーブルを作成)

Last updated at Posted at 2020-11-10

##はじめに
この記事はPostgreSQLの勉強のアウトプットにポケモンずかんをつくりながら学びを深める試みです。pgAdminで作業をしているためご了承ください。
また登録されるポケモンの順序などは実際のポケモン図鑑の順番とは違いがありますので宜しくおねがいします。

####過去の記事
現在までの操作を記事化してたら謎にシリーズ化し始めてます。

筆者はポケモン第2世代までしかわからないですし、SQL初学者のため謎の動きもするかとおもいますが、それも生々しく残しながら楽しく学習していきます。

##データベースを作る
まずは大元となるポケモン図鑑のデータベース本体を作成する。
今回の場合、ポケモン図鑑は海外では**「pokedex」というらしいので、今回作るデータベース名は「pokedex」**とします。

  • pgAdminの場合は データベース(右クリック)→ 作成 → データベース
  • ターミナルの場合はcreatedb データベース名。今回の場合はcreatedb pokedexとなります。

##デーブルを作成する
###データ型で扱う
ポケモン図鑑に載せたいデータを洗い出します。
今回は ナンバー(number)、なまえ(name)、ぶんるい(category)、タイプ1(type1)、タイプ2(type2)、たかさ(height)、おもさ(weight)、説明文(description)、作成日(created)
を載せていこうと思います。

データ型には大きく4つの型が存在します。

  • 文字列型
  • 数値型
  • 日付型
  • 倫理/ビット型

これらを使い、それぞれに情報に適切なデータ型を用意します。

区分 データ型 用途例
文字列型 char(固定長数) 郵便番号など、長さが一定のもの
文字列型 varchar(可変長数) 人名やアイテム名など、長さが一定ではないもの
文字列型 text セリフや長い文章など、最大文字数を指定しないもの
数値型 int
(別名)integer
整数。小数点を含まない数値
数値型 double
(別名)real
浮動小数点数
数値型 float 浮動小数点数
数値型 money 金銭や通貨の値を表す金額データ型
数値型 serial 連番。図鑑のナンバーや登録番号など
日付型 date 日付
日付型 time 時刻
日付型 timestamp 日付と時刻
論理/ビット型 boolean 真偽値

こちらのデータ型をつかい、それぞれのデータに当てはめると

  • ナンバーは連番にしたいので sereal
  • なまえは6文字以内の文字列にしたいので varchar(6)
  • ぶんるいは6文字以内の文字列にしたいので varchar(7)
  • タイプ1は5文字以内の文字列にしたいので varchar(5)
  • タイプ2は5文字以内の文字列にしたいので varchar(5)
  • たかさは小数点込みなので float
  • おもさは小数点込みなので float
  • 説明文は長文なので text
  • 投稿日時はその時の日時にしたいので timestamp

といった感じに収めようと思います。

###制約をつける

こちらのデータに、「このデータは必須である」や、「重複ができない」などといった制約を与えることで、入力のミスなどに気づきやすくなるなど扱いやすくなります。

制約 意味 用途
not null 入力必須 入力しなくていいもの以外。
unique 値の重複を許さない 同じユーザー名やメールアドレスなど
check 条件をみたしているかチェックする (例) 説明文(description)テキストの文字が5文字以上であることをチェックする.
body text check(length(description) > 5),
default デフォルトの値を決める (例)現在時刻をデフォルトに設定する
created timestamp default 'now'
primary key not nullとuniqueの両方の性質を持つ。
※一つのテーブルに1つしか設定不可
(例)idを一意の値として設定する id serial primary key,

ポケモン図鑑登録の際に制約を当てはめるなら

  • numberをprimary keyとして設定する。
  • 基本的にデータはほぼ全部入力必須。
  • タイプ2を所持していないポケモンがいるためtype2には制約を与えない。

後々修正していくとはおもいますが、ひとまずはこの内容でテーブルを作成したいと思います!

###create文
これらを活用し、create table文でテーブルを作成します。create table文の書き方は以下です。

CREATE TABLE "テーブル名" (
カラム定義1,
カラム定義2,
カラム定義3,
 ...
)

そこからポケモン図鑑のテーブルを作っていきましょう

CREATE TABLE "pokemon" (	
	number serial primary key,
	name varchar(6) not null unique,
	category varchar(7) not null,
	type1 varchar(5) not null,
	type2 varchar(5),
	height float not null,
	weight float not null,
	description text check(length(description) > 5),
	created timestamp default 'now'
)

実行すればポケモン図鑑のテーブルができるはずです!

###select文でテーブルを確認する
テーブルができたかどうか、確認していきましょう。確認するコマンドはこちらです。

select * from pokemon;

作成できていましたかね?次からはテーブルの中にポケモンのデータをいれていきましょう。

149
134
4

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
149
134

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?