CRUDとは
CRUDとは
CRUDは Create(作成) Read(参照) Update(更新) Delete(削除)の頭文字をとって命名されたデータベース操作の種類のことで
データベース操作の基本です。
テーブルを作成してみる
create table users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, age INTEGER, created_at DATETIME, updated_at DATETIME);`
create tableの基本文法は
create table [ユーザ名] ( [カラム名1] [型1] [オプション1],[カラム名2] [型2] [オプション2] ...)
Create /INSERTでレコードを作成する
テーブルが作成できたので実際にレコードを作成します。作成するにはInsert文で作成します。
INSERT INTO users (name, email, age, created_at, updated_at) VALUES('John', 'john@example.com', 20, NOW(), NOW())
このような形式で挿入するテーブル、カラムとその値を指定してレコードを挿入します。 複数カラムを入れたい場合
INSERT INTO users (name, email, age, created_at, updated_at) VALUES('Mary', 'mary@example.com', 20, NOW(), NOW()), ('Sam', 'sam@example.com', 22, NOW(), NOW()), ('Brian', 'brian@example.com', 30, NOW(), NOW()),
また、次のようにnameを指定しない形でのINSERT文もSQLの構文としては正しいですが、
前の段階でnameカラム自体にNOT NULL(空でない)制約をかけているのでnameを省略するとエラーになります。
> INSERT INTO users ( email, age, created_at, updated_at) -> VALUES('alice@example.com', 20, NOW(), NOW()); ERROR 1364 (HY000): Field 'name' doesn't have a default value
ここでは、NOTNULL制約をかけているのでデフォルトの値がないと言われています。
Read/SELECTでレコードを参照する
前で作成したので確認してみる
SELECT*FROM users;
ここで条件を絞り込むにはwhere句を使用します。
例
SELECT*FROM users where name = 'masato';
名前にmが含まれている場合
SELECT*FROM users where name like '%m%';
名前にmが含まれるかつ20際以上の人
SELECT*FROM users where name like '%m%' and age>=20;
名前に"m"が含まれるか"s"が含まれる人
SELECT*FROM users wehere name like '%m%' or name like '%s%';
など様々な形で条件式を書くことができます。AND条件OR条件を設定することができます。
Update/UPDATEでレコードを更新
次は更新処理です。masatoの名前をxxxという形式で更新しています。
UPDATE users SET name ='xxxx' where name ='masato';
更新日も設定すると
UPDATE users SET name = 'XXXX', updated_at = NOW() where name = 'masato';
このように複数のカラムを更新することができます。 UPDATEはSQLで迂闊にWHERE句を忘れるとテーブル全て更新されてしまいます。
Delete/DELETEでのレコード削除
最後のDELETEはいたってシンプルです
DELETE FROM users;
これだとテーブルの全レコードを削除してしまうのでUPDATEと同様に条件を絞って削除します。
DELETE *FROM users where age>=20;
まとめ
CRUD操作のおさらいをしました。フレームワークありきだと直接SQLを操作しないため書く機会が減ってしまいますが、
このように整理してみると基本が振り返れていいですね。