Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

データベースの基本1(MySQL)

CREATEでテーブルを作る

基本式:CREATE TABLE テーブル名 (カラム1 型, カラム2 型, ...);

CREATE TABLE my_items (id INT, item_name TEXT, price INT);

INSERTでデータを挿入する

SETを使った書き方とVALUESを使った書き方がある
基本式:
INSERT INTO テーブル名 SET カラム名1=値, カラム名2=値, ...;
INSERT INTO テーブル名(カラム名1, カラム名2, ...) VALUES (値1, 値2, ...);

INSERT INTO my_items SET id=1, item_name='レモン', price=500;
INSERT INTO my_items(id, item_name, price) VALUES (1, 'レモン', 500);

UPDATEでデータを変更する

条件文がでてきます。ここが最も難しく、しかしパワフルな部分です。とりあえず基礎を。
基本式:UPDATE テーブル名 SET カラム名1=値, カラム名2=値, ... WHERE 条件文;

UPDATE my_items SET price=200 WHERE id=1;

UPDATESET以降は変更するカラムだけ書けばいい。WHERE以下の構文が条件で、ここではid=1のデータを指定する。

DELETEでデータを削除する

基本式:DELET FROM テーブル名 WHERE 条件文;

/* my_itmesテーブルからidが1のデータを削除するなら */
DELETE FROM my_items WHERE id=1;

UPDATESET以降は変更するカラムだけ書けばいい。WHERE以下の構文が条件で、ここではid=1のデータを指定する。

SELECTでデータを検索する

基本式:SELECT カラム名1, カラム名2, ... FROM テーブル名 WHERE 条件文;

SELECT id, item_name FROM my_items WHERE id=1;
SELECT * FROM my_items WHERE id=1;

*は全てという意味を持つ。これを指定するとわざわざカラム名指定しなくていい。

WHEREで条件指定する

SELECT,UPDATE,DELETEではWHEREに続けて条件文を書いた。複雑な条件はたくさんあるが、よく使うものをいくつかピックアップ。

id item_name price keyword
1 いちご 180 赤い、甘い、ケーキ
2 りんご 90 丸い、赤い、パイ
3 バナナ 120 パック、甘い、黄色
4 ベリー 200 袋入り、青い、眼精疲労

データベースに上記のデータが入っていることを前提に。テーブル名はmy_items

不等号を使う

SELECT * FROM  my_items WHERE id<>1;
/* idが1以外の商品 */

文章の部分検索LIKE

キーワード検索によく使われる。入力したキーワードを含んだ文章を検索できる。

前後を曖昧にした部分検索

keywordカラムに甘いというキーワードが含まれた商品だけを抜き出す

SELECT * FROM my_items WHERE keyword LIKE '%甘い%';

いちご、バナナをヒットさせた。LIKEは半角空白に続けて検索したい文字を追加する。前後に%をつけます。

後ろのみを曖昧にした検索(前方一致)

%が部分検索の記号で、この部分にはどんな文字があってもいいということになる。

SELECT * FROM my_items WHERE keyword LIKE '赤い%';

これはいちごだけがヒットする。りんごにもキーワード「赤い」があるが、%が後にしかついてないので、先頭にキーワード「赤い」があるやつを検索する。このように、%の位置によって条件が変化する。

数の検索を組み合わせて使うAND, OR

複数の条件を全て満たすデータの検索

例えば、50円以上150円未満のものを探したいというとき

SELECT * FROM my_items WHERE price>=50 AND price<150;

ANDは「且つ」という条件になる

複数の条件のどれかを満たすデータの検索

idが1と3の商品を探したいというとき

SELECT * FROM my_items WHERE id=1 OR id=3;

ORは「または」という条件になる。

複雑な条件での検索

SELECT * FROM my_items WHERE (id=1 OR id=3) AND price<150 AND keyword LIKE '%甘い%';

バナナがヒットします。

ORを使うときの注意

正確に条件を()で囲わないと、正常に動作しなくなる。例えば

SELECT * FROM my_items WHERE id=1 OR id=3 AND price<150 AND keyword LIKE `%甘い%`;

これでは180円のいちごがヒットしてしまう。

データベースの基本2(MySQL)
【参考】
よくわかるPHPの教科書

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?