データを管理
データを管理
☑️データ型
テーブルのそれぞれの絡むには必ずデータ型を決めておく必要がある。データ型を指定することでそのカラムに保存する値のフォーマットを揃えることができる。
☑️数値を扱うデータ型
数値型を設定しておくと誤って数値以外の文字列の値が保存されることがなくなる。
* TINYINT
整数を扱う数値のデータ型
-128~127
* SMALLINT
整数を扱う数値のデータ型
-32768~32767
* MEDIUMINT
整数を扱う数値のデータ型
-8388608~8388607
* INT
整数を扱う数値のデータ型
-214783648~214783647
* BIGINT
整数を扱う数値のデータ型
-9223372036854775808~9223372036854775807
* DECIMAL
誤差のない性格な小数を格納できる
* FLOAT
小数第7位程度まで正確な小数を格納できる。
* DOUBLE
小数第15位程度まで正確な小数を格納できる。
☑️文字列を扱うデータ型
文字列を扱うデータ型を設定したカラムに保存された値は文字列として扱われる。
* CHAR
0〜255バイトを指定できる。
* VARCHAR
0〜65,535バイトを指定できる
* TINYTEXT
255バイト
* TEXT
65,535バイト
* MEDIUMTEXT
16,777,215バイト
* LONGTEXT
4,294,967,295バイト
☑️日付や時間を扱うデータ型
日付のみを保存できるもの時間のみを保存できるもの日付と時間の両方を保存できるものなどがある。
* DATE
日付
* DATETIME
日付と時間
* TIME
時間
* YEAR
年
☑️2種類の値のみを扱うデータ型
このデータ型を設定したカラムに保存できるのは真と偽の2種類のみ。
BOOLEAN型と呼ばれる。
☑️保存できるデータに制限をつける
テーブルのカラムに対して制約をつけて格納できるデータに制限をかけたり属性をつけて値をある規則で整えて格納することができる。 制約を適切につけておくことで不正なデータが挿入されるのを避け、不整合が発生するのをあらかじめ防ぐことができる。また属性をつけて一定のルールでデータを揃えておくことでデータを管理しやすくなるメリットもある。
☑️初期値を設定
DEFAULT制約を使うとカラムに初期値を設定することができる。DEFAULT制約をつけたカラムに値を何も入れないとあらかじめ指定しておいた初期値が格納される。 あらかじめ最初に決まっているステータスがある場合は初期値を設定しておく。
「CREATE TABLE テーブル名(カラム名 データ型 DEFAULT 値、カラム名 データ型DEFAULT 値);」
☑️データが空の状態を防ぐ
NOT NULL制約を使うと、カラムにNULLを格納できないようにすることができる。 必ず何らかの値を格納しておく必要のあるカラムに設定する。
「CREATE TABLE テーブル名(カラム名 データ型 NOT NULL);」
☑️他の行と同じ値を入れられないようにする
UNIQUE制約は、カラムに他のレコードと重複した値を格納できないようにする。
商品コードやIDなど必ず同じ値が存在することのないカラムに設定しておく。
「CREATE TABLE テーブル名(カラム名 データ型 UNIQUE);」
☑️自動で連番を入れる
AUTO_INCREMENTは、 カラムに自動的に連続した番号を格納することができる。自動的に各レコードに番号が割り当てられるのでそれを商品やユーザを識別するための番号として扱うといった用途に役立つ。UNIQUE制約など数値が一意に定まるものが必要
「CREATE TABLE テーブル名(カラム名 データ型 UNIQUE AUTO_INCREMENT);」
☑️行を一意に識別できるようにする
PRIMARY KEYを設定すると他のレコードと重複する値やNULLを格納できなくする。
各レコードを識別するためのカラムに設定しておく。
「CREATE TABLE テーブル名(カラム名 データ型 UNIQUE PRIMARY KEY);」
☑️他のテーブルと関連づける
FOREIGN KEYを設定するとそのカラムには指定した他のテーブルのカラムに存在する値しか格納できなくなる。 他のテーブルの値に依存したカラムをもう設けてテーブル同士を関連付けておくことができる。
「CREATE TABLE テーブル名(カラム名 データ型 ,カラム2データ型,FOREIGN KEY(カラム2) REFERENCES 外部テーブル名(外部カラム名));」
☑️トランザクション
データベースに対して行われる複数の処理をまとめたものをトランザクションと呼ぶ。
SQLは1文ずつ実行することができるが、連続して複数のデータの追加や更新の必要がある場合は1つのアクションとして実行するように1連の処理を束ねることができる。 銀行の振り込みと引き落とし等2つの処理を同時に実行させるシステムで使われる。
特性として
* 原子性
トランザクションに含まれる処理が「全て実行される」か「全て実行されない」かのどちらか
* 一貫性
あらかじめ設定された条件を満たしデータの整合性を保証する
* 独立性
処理の途中経過が隠蔽され外部から結果だけが見ることができる。処理の実行途中の状態で他の処理に影響与えない。
* 永続性
トランザクションが完了したらその結果が失われる事は無い
☑️コミット
1連のトランザクションに含まれる処理が成功したときにその結果をデータベースに反映させることをコミットと呼ぶ。 SQL文を実行する過程ではまだデータベースには結果が反映されない。最後にコミットを行うことでそこで初めて変更内容が適用される。
☑️ロールバック
トランザクション内の処理で問題が発生したときに処理を取り消してトランザクション開始時間の状態まで戻すことをロールバックと呼ぶ