🦔

[SQL基礎]SELECT, WHERE, ORDER BY, LIMIT, OFFSET

2023/06/08に公開

SQLの基礎についてです。

私のSQL学習ツールは以下のものたちです!問題もあるので解きながら学習しています。

https://paiza.jp/works/sql/new-primer

https://prog-8.com/courses/sql

https://sqlab.net/

SELECT文

"データベースから、データを取得する命令"

基本型

SELECT [取得したい要素] FROM [使用テーブル];

以下のようなtableがあったとする.

id name age
1 narita 25
2 hamaya 25
3 kawakami 31

■ 特定要素のみの取得

このuserテーブルのnameのみを取得したい。そうすると、

SELECT name FROM user;

■ 複数の指定

では今度は、このuserテーブルのidとnameを取得したい。そうすると、

SELECT id,name FROM user;

このように,で繋げて記述で可能

■ tableの全てを取得したい

このuserテーブルの全てを取得したい。そうすると、

SELECT * FROM user;

*で全ての取得が可能!

WHERE: 条件文

SQLのSELECT文や他のクエリ文で使用される条件を指定する
(テーブルデータの検索条件を指定する)ための句(節)。
データのフィルタリングや検索条件の指定に使用される。

基本型

SELECT [取得したい要素] FROM [使用テーブル] WHERE [条件文];

条件文は比較演算子や論理演算子を使用して構築される。

比較演算子,論理演算子

比較演算子

演算子 説明
= 等しい
<> 等しくない
!= 等しくない
< より小さい
> より大きい
<= 以下
>= 以上
BETWEEN 範囲内
IN リスト内のいずれかに一致
LIKE パターンに一致
IS NULL NULLである
IS NOT NULL NULLでない

論理演算子

演算子 説明
AND かつ
OR または
NOT 否定

ORDER BY: 並べ替え(ソート)を行う

ORDER BYは並べ替え(ソート)を行ってくれる機能.

基本型

SELECT [表示要素名] FROM [テーブル名] ORDER BY [ソートする要素名] [昇順・降順の指定];

昇降順の指定

  • ASC :昇順(小さい値から大きい値への順)
  • DESC :降順(大きい値から小さい値への順)

ex.

// テーブル名: employees

id | name    | age | salary
---+---------+-----+-------
1  | John    | 30  | 50000
2  | Alice   | 25  | 60000
3  | Bob     | 35  | 40000
4  | Claire  | 28  | 55000
5  | David   | 32  | 45000

このtableからageを昇順でソートした場合

SELECT * FROM employees ORDER BY age ASC;

■ 二つ以上も可能。

  • ageは昇順、salaryは降順で取得する場合
SELECT * FROM employees ORDER BY age ASC,salary DESC;
  • ageを昇順で並び替え、ageが同じ場合はsalaryを昇順に
SELECT * FROM employees ORDER BY age ASC,salary;

LIMIT: 取得する行数を決める

LIMIT句は、SQLクエリの結果から特定の行数だけを取得するために使用される
クエリ結果の先頭から指定した数の行を取得することができるもの。

これに関しては、使えるものと使えないものがある
mySQLは使用可能。oracleDBは使えない。

基本型

SELECT1,2, ... FROM テーブル名 LIMIT 行数;

以下のようなtableがあったとする。

//テーブル名: employees

id | name    | age | salary
---+---------+-----+-------
1  | John    | 30  | 50000
2  | Alice   | 25  | 60000
3  | Bob     | 35  | 40000
4  | Claire  | 28  | 55000
5  | David   | 32  | 45000

このテーブルから上位3つの行を取得する場合、このように使用できる。

SELECT * FROM employees LIMIT 3;

取得する行数を指定するだけでなく、開始位置も指定することができる。

OFFSET: 開始位置を指定する

同じ上記のemployeesテーブルの、3番目の行から2つの行を取得する場合、

SELECT * FROM employees LIMIT 2 OFFSET 2;

今日は以上!

Discussion