LoginSignup
2
0

More than 3 years have passed since last update.

SQL基礎の基礎

Last updated at Posted at 2020-10-09

データベースと言っても色々な仕組みのものがあるが、
その中でも広く使われているリレーショナルデータベース管理システムは、
データベース内の「テーブル」に入っているデータを「SQL」という言語を使って操作できます。

そしてここでは主に、検索・追加・更新・削除の簡単な書き方を記述します。

検索

基本構文

検索の基本構文は以下のように記述していきます。

select
from
where
order by      ;

select: 取得したい列名を羅列
from: 取得元のテーブル名
where: 抽出したい行に関する条件を指定
order by: 指定した順序に並べて取得

order byが必要ない時もありますが、基本的には;で終わります。

selectとfrom

テーブル定義書を見てテーブル名を確認し、どのカラム(列)の情報を取りたいかを記述

Userテーブル
-id
-name
-email
-age
-state

ここでname,age,emailを取得したい場合は

select name, age, email
from user as u

のように記述する。fromのテーブル名にはasを付けて「以下〇〇と省略」とした方が便利です。
また、selectはテーブル定義の順でなくとも構いません。

where

自分が欲しい行に関する条件を whereに記述しま
す。
例えば、nameは「伊藤」さんの中でageが「20~30」歳の人のデータが取りたい場合、以下のように記述します。

where name = "伊藤"
and age >= 20
and age <= 30

また、日付や数値など範囲を表す場合(値の下限と上限を含む形で)の範囲を指定する場合には、
BETWEENという特別な書き方もあります。

where name = "伊藤"
and age between 20 and 30

order by

順序のない保存データから取り出したデータにも、当然、順序はありません。
取り出す度に変化する可能性がある「順不同」だと考えてください。
ですので、結果を得る際の順序を指定するためには、
最後に残った四角枠である「ORDER BY」句に、並び替えに使うカラム名を羅列します。

例えば、age順であれば、

order by age

このように記述し、通常は昇順ですので逆順にしたい場合は、以下のように記述します。

order by age desc

まとめ

つまり、nameは「伊藤」さんの中でageが「20~30」歳の人のデータをageが高い順に取得したい場合は、
以下のように記述します。

select name, age, email
from user as u
where u.name = "伊藤"
and u.age between 20 and 30
order by u.age desc

追加

テーブルに新しいデータを追加する

テーブルにデータを追加するには INSERT 文を使います。
userテーブルにデータを追加。

insert into user
  [(col_name [, col_name] )]
  {value | value} (value_list) [, (value_list)] 

テーブル名( tbl_name )を指定してデータを追加します。
テーブルに含まれる特定のカラムを指定してデータを追加する場合は次のように記述します。
(指定しなかったカラムにはデフォルトの値が格納されます)。カラム名の数と値の数は同じでなくてはなりません。

insert into user values(value1, value2, )

例えば、userテーブルのカラムが
user
-id
-name
-age
であった場合、以下のように記述しデータを追加します。

insert into user value (1, "伊藤", 23);

また、ageを記述しなかった場合、nullが格納されます。

insert into user (id, name) value (1, "伊藤");

=> 1, "伊藤", null

default値の使用

INSERT 文を実行するときに値を指定するのではなくデフォルトの値を使用したい場合には、
値の代わりに DEFAULT と記述することができます。

insert into user value (1, "伊藤", default);

また、全てのカラムにデフォルトのデータを追加するには以下のように記述します。

insert into user () value ();

数式を利用したデータの追加

testテーブルに名前、数学、国語、英語、総得点のカラムを作った際に総得点のカラムには数式を利用してデータを追加します。

test
-name
-math
-english
-japanese
-sum

insert into test value ("伊藤", 60, 40, 50, math + english + japanese);

複数のデータをまとめて追加

user
-id
-name
-age

insert into user value (1, "伊藤", 23), (2, "佐藤", 30), (3, "加藤", 19);

更新

where句を書き忘れると全ての情報が書き換えられます。更新をする際には、selectで一度検索し、
変更する点のみになっているかを確認する癖をつけるようにしましょう。

update users
set age = 24
where id = 1

削除

更新と同様、where句を書き忘れると全ての情報が書き換えられます。更新をする際には、selectで一度検索し、
変更する点のみになっているかを確認する癖をつけるようにしましょう。

delete from users
where id = 1
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0