MySQLで特定の1行だけを取得する方法|主キーとWHERE句を使ったSELECT文の基本
MySQLで1行を選択する基本
MySQLでテーブルから特定の1行だけを取得したい場合、WHERE句を使用します。特に、主キー(PRIMARY KEY)を条件に指定すれば、確実に1行だけを効率よく取り出すことができます。
基本的な構文は以下の通りです。
SELECT * FROM テーブル名 WHERE 主キーのカラム名 = 値;
それでは、実際にサンプルテーブルを作成しながら動作を確認していきましょう。
サンプルテーブルの作成
まず、主キーを持つテーブルを作成します。IdカラムをAUTO_INCREMENT付きの主キーとして定義しています。
mysql> create table selectWithPrimaryKey
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(20),
-> Age int,
-> Marks int,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.78 sec)
テストデータの挿入
次に、INSERT文を使って複数のレコードを挿入します。
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Larry',24,98);
Query OK, 1 row affected (0.15 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('John',23,89);
Query OK, 1 row affected (0.21 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Mike',21,85);
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Sam',26,56);
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Carol',21,59);
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('Bob',20,91);
Query OK, 1 row affected (0.21 sec)
mysql> insert into selectWithPrimaryKey(Name,Age,Marks) values('David',28,93);
Query OK, 1 row affected (0.15 sec)全レコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from selectWithPrimaryKey;
実行結果は以下のようになります。
+----+-------+------+-------+
| Id | Name | Age | Marks |
+----+-------+------+-------+
| 1 | Larry | 24 | 98 |
| 2 | John | 23 | 89 |
| 3 | Mike | 21 | 85 |
| 4 | Sam | 26 | 56 |
| 5 | Carol | 21 | 59 |
| 6 | Bob | 20 | 91 |
| 7 | David | 28 | 93 |
+----+-------+------+-------+
7 rows in set (0.00 sec)
主キーを指定して1行だけ取得する
ここで本題です。WHERE句で主キー「Id = 6」を指定してクエリを実行すると、該当する1行のみが取得できます。
mysql> select *from selectWithPrimaryKey where Id = 6;
実行結果は以下の通りです。
+----+------+------+-------+
| Id | Name | Age | Marks |
+----+------+------+-------+
| 6 | Bob | 20 | 91 |
+----+------+------+-------+
1 row in set (0.00 sec)
ポイントまとめ
- WHERE句を使うことで、条件に一致する行だけを抽出できます。
- 主キーはテーブル内で一意の値を持つため、主キーを条件にすれば必ず1行だけが取得されます。
- 主キーにはインデックスが自動的に設定されるため、大量データの中でも高速に検索できます。
このように、MySQLで1行だけを取得する場合は、主キーとWHERE句を組み合わせるのが最もシンプルかつ効率的な方法です。
-
MySQLの1つのINSERT文で複数行をまとめて挿入する方法
はじめにMySQLでは、INSERT文を何度も実行しなくても、1つのクエリで複数の行(レコード)を一度に挿入することができます。VALUES句の後にカンマ区切りで複数の値セットを記述するだけで、効率よくデータを登録できるため、大量の初期データ投入などで非常に便利です。この記事では、実際のSQL例を使いながら、複数行を一括挿入する手順をわかりやすく解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成します。StudentIdはAUTO_INCREMENT付きの主キーとして定義し、レコード追加時に自動的に連番が採番されるようにしています。mysql> create table
-
MySQLのUPDATE文で1つのクエリを使って複数のレコードを更新する方法
MySQLでは、UPDATEステートメントを使うことで、1つのクエリで複数のカラムや複数のレコードの値をまとめて更新できます。この記事では、実際にサンプルテーブルを作成し、UPDATE文でデータを更新する具体的な手順を解説します。サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, &