MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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句を組み合わせるのが最もシンプルかつ効率的な方法です。

  1. MySQLの1つのINSERT文で複数行をまとめて挿入する方法

    はじめにMySQLでは、INSERT文を何度も実行しなくても、1つのクエリで複数の行(レコード)を一度に挿入することができます。VALUES句の後にカンマ区切りで複数の値セットを記述するだけで、効率よくデータを登録できるため、大量の初期データ投入などで非常に便利です。この記事では、実際のSQL例を使いながら、複数行を一括挿入する手順をわかりやすく解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成します。StudentIdはAUTO_INCREMENT付きの主キーとして定義し、レコード追加時に自動的に連番が採番されるようにしています。mysql> create table

  2. MySQLのUPDATE文で1つのクエリを使って複数のレコードを更新する方法

    MySQLでは、UPDATEステートメントを使うことで、1つのクエリで複数のカラムや複数のレコードの値をまとめて更新できます。この記事では、実際にサンプルテーブルを作成し、UPDATE文でデータを更新する具体的な手順を解説します。サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable     -> (     -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    &