MySQLにおけるデータ検索は、データベース管理の基本であり、その効率的な運用には欠かせません。
この記事では、SELECT文の基本から始め、WHERE句で使用されるAND、OR、NOTといった重要な演算子の適用方法を詳しく解説します。
これらの演算子を使いこなすことで、複雑なデータセットから必要な情報を効率的に抽出する方法を学びます。
▼youtube
今回利用するデータベースとテーブル
今回のデータの検索では学校関連のデータを管理するためのデータベースを作成し、その中に必要なテーブルを構築するプロセスについて説明します。
生徒の情報のテーブル【students テーブル】と生徒が所属している学科の【departments テーブル】を作成します。
- 「students」テーブル: このテーブルは、生徒の名前、学年、所属学科IDなど、生徒に関する様々な情報を格納します。
- 「departments」テーブル: こちらは、学科の名称や定員など、各学科に関連する情報を記録するためのテーブルです。
students テーブル
id | id番号 |
---|---|
name | 生徒氏名 |
grade | 学年 |
department_id | 所属する学科のid |
entry_exam | 入試の点数 |
status | 在籍状況 |
updated_at | 更新日 |
departments テーブル
id | id番号 |
---|---|
name | 学科名 |
quota | 定員 |
【SQL文】DB作成~データの追加
— DBの作成
CREATE DATABASE myschool_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
— DB作成の確認
SHOW DATABASES;
— 使用するDBの選択
USE myschool_db;
— テーブルの作成
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
grade INT NOT NULL DEFAULT 1,
department_id INT,
entry_exam INT,
status CHAR(3) NOT NULL DEFAULT ‘ACT’,
updated_at TIMESTAMP NOT NULL
);
CREATE TABLE departments (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL UNIQUE KEY,
quota INT NOT NULL
);
— テーブルの確認
SHOW TABLES;
DESCRIBE students;
DESCRIBE departments;
— データの追加
INSERT INTO departments
VALUES
(NULL, ‘国際経済学科’, 40),
(NULL, ‘国際地域学科’, 30),
(NULL, ‘日本文学文化学科’, 40),
(NULL, ‘犯罪心理学科’, 20),
(NULL, ‘社会心理学科’, 80);
INSERT INTO students
(name, grade, department_id, entry_exam, updated_at)
VALUES
(‘山中信二’, 4, 1, 82, NOW()),
(‘佐藤花子’, 4, 2, 68, NOW()),
(‘下田哲夫’, 3, 3, 77, NOW()),
(‘森川新吉’, 2, 1, 99, NOW()),
(‘新山冴子’, 1, 1, 84, NOW()),
(‘大村浩二’, 3, 3, 67, NOW()),
(‘本宮律子’, 1, 2, 75, NOW());
— データの確認
SELECT * FROM departments;
SELECT * FROM students;
データの検索 SELECT文
- カラム名はカンマで区切って列挙する
- カラム名を「*」とすると全カラムを取得
- WHEREで検索対象を指定する
studentsテーブルから全データを取得
SELECT * FROM students;
idが1番の生徒氏名と学年を取得
SELECT name, grade FROM students
WHERE id=1;
WHERE句で使用する演算子
= | 等しい |
---|---|
< | 未満 |
<= | 以下 |
> | より大きい |
>= | 以上 |
<> | 等しくない |
!= |
- 氏名が「山中信二」の会員データを取得
SELECT * FROM students
WHERE name=’山中信二’;
- 学年が3年以上の会員を検索
SELECT * FROM students
WHERE grade>=3;
- 更新日が2005年5月5日以降の生徒情報を取得
SELECT * FROM students
WHERE updated_at>=’2005-05-05′;
条件式を接続するための演算子
AND | 且つ |
---|---|
OR | または |
NOT | ~でない |
- 学年が3年以上で且つ2005年5月5日以降に情報が更新された生徒を検索
SELECT * FROM students
WHERE grade>=3
AND updated_at>=’2005-05-05′;
- 学年が3年以上、または入試の点数が80点以下ではない会員を検索
SELECT * FROM students
WHERE grade>=3
OR NOT entry_exam<=80;
まとめ
この記事では、MySQLにおけるデータ検索の基礎であるSELECT文と、WHERE句で使用する演算子(AND, OR, NOT)について詳しく解説しました。SELECT文は、データベースから必要な情報を選択するための基本的なツールです。一方、WHERE句は、特定の条件に基づいてデータをフィルタリングする際に使用されます。
演算子AND, OR, NOTは、これらのクエリをより柔軟にし、複雑なデータ要件に対応するために不可欠です。AND演算子は、複数の条件がすべて真である場合にデータを選択するために使用されます。OR演算子は、いずれかの条件が真である場合に使用されます。そして、NOT演算子は、特定の条件を否定するために用いられます。
このような演算子の組み合わせにより、より精密なデータ検索が可能になります。