0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQL 基本の書き方

Last updated at Posted at 2021-10-16

【SQL CRAD】

SQL文 CRUD 機能
INSERT文 Create データ追加
SELECT文 Read データ取得
UPDATE文 Update データ更新
DELETE文 Delete データ削除

・データ追加

INSERT INTO テーブル名(カラム名)VALUES(値);
INSERT INTO user_table (id, name, age, address, created_at) VALUES (1, '山田花子', 20, '東京都〜', now()), (2, '佐藤太郎', 30, '千葉県〜', now());

・データ更新

UPDATE テーブル名 SET カラム名=値;
UPDATE user_table SET address = '山口県〜' WHERE id = 1;

参考
【MySQL入門③】データベースの基本操作CRUDを解説!
https://snome.jp/database/db-intro-3/

【SELECT文】
・一つのカラムのデータを取得

-- usersテーブルから、nameカラムのデータを取得
SELECT カラム名
FROM テーブル名;

SELECT name
FROM users;

・複数カラムのデータを取得

-- usersテーブルから、「nameカラム」と「prefectureカラム」のデータを取得
SELECT カラム名, カラム名
FROM テーブル名;

SELECT name, prefecture
FROM users;

・全てのカラムのデータを取得

-- usersテーブルから、全てのカラムのデータを取得
SELECT *
FROM テーブル名;

SELECT *
FROM users;

【WHERE文】
〜どこのレコード(行)を取得するか指定する〜

データ型

データ型 特徴
テキスト  "日本" ダブルクオーテーションまたはシングルクオーテーションで囲まれた文字
数値 20 数値データ
日付 "2021-10-01" ダブルクオーテーションまたはシングルクオーテーションで囲まれた日付("年-月-日")

・usersテーブルから、countryカラムが日本のデータを取得

-- usersテーブルから、countryカラムが日本のデータを取得
SELECT *
FROM テーブル名
WHERE カラム名 = 値;

SELECT * 
FROM users
WHERE country = "日本";
-- ageカラムが「20」のデータを取得

SELECT *
FROM users
WHERE age = 20;

SELECT * 
FROM users
WHERE age = 20;
-- created_atカラムが「2021-10-01」のデータを取得

SELECT *
FROM users
WHERE created_at ="2021-10-01";

SELECT * 
FROM users 
WHERE created_at ="2021-10-01";

・比較演算子

-- ageカラムが「20以上」のデータを取得

SELECT *
FROM users
WHERE age >= 20;

SELECT *
FROM users
WHERE age >= 20;
-- created_atカラムが「2021-10-01以前」のデータを取得
-- 日付データにも比較演算子は使える。クオーテーションで囲むことを忘れずに。

SELECT * 
FROM users
WHERE created_at <= "2021-10-01";

【LIKE演算子】
〜〇〇を含む(〇〇のような)〜
*指定したカラムが〇〇を含む(〇〇のような)レコード」という条件。

ワイルドカードとは、「どんな文字列にも一致することをさす記号」
LIKE演算子では「%」をワイルドカードとして扱う。
これにより「うさぎ」を含むデータを全て取得している。

SELECT *
FROM users
WHERE name LIKE %文字列%;

SELECT *
FROM users
WHERE name LIKE "%うさぎ%";

--「うさぎ」を含むデータを全て取得
●うさぎ
●垂れ耳うさぎ
●うさぎいぬ
●垂れ耳うさぎパンダ

--前方一致
"うさぎ%"

●うさぎまんじゅう
●うさぎ
●うさぎ耳

--後方一致
"%うさぎ"

●うさぎ
●白うさぎ
●赤色うさぎ

【NOT演算子】
・演算子の前に「NOT」を置くことで、その条件を満たさないデータを取得

-- 「age > 20」 という条件を満たさないものを取得できる

SELECT *
FROM users
WHERE NOT age > 20;


--「name LIKE "%うさぎ%"」という条件を満たさないレコードを取得
--名前に「うさぎ」という文字列を含まないものを取得する

SELECT *
FROM users
WHERE NOT name LIKE "%うさぎ%";

【IS NULL ・ IS NOT NULL】

-- priceカラムがNULLのレコードを取得

SELECT * FROM products
WHERE price IS NULL;


-- priceカラムがNULLでないレコードを取得

SELECT * FROM products
WHERE price IS NOT NULL;


-- 間違った書き方 price = NULLは使用できない
SELECT * FROM products 
WHERE price = NULL;

【AND 演算子】

-- AND 
-- WHEREに複数の条件を指定できる
-- 「WHERE 条件1 AND 条件2」 と書くと、条件1と条件2を満たすデータを検索することができる

SELECT * FROM products
WHERE brand_name = "pole"
AND category = "cream";

【OR 演算子】

-- OR
-- 条件をどちらか満たせば、検索できる
-- 「WHERE 条件1 OR 条件2」どちらかを満たすデータを検索することができる

SELECT * FROM = products
WHERE brand_name = "pole"
OR category = "cream";

【AND・OR 演算子 混在パターン】

-- ()をつけて優先順位をつける 
select * from employees where last_name = 'Taro' and ( hire_date < '1990-05-20' or hire_date > '2000-10-01' )  limit 10;

【追加】
・INSERT

-- usersテーブルにデータを追加。
INSERT INTO users(name, age)
VALUES("Usagi", 20);

【更新】
・UPDATE

-- usersテーブルのidカラムの値が6のレコードをnameをInuに、ageを30に変更してください。
UPDATE students
SET name = "Inu", age = 30
WHERE id = 6;

【重複を除いてカラムのデータ取得】
・DISTINCT

-- userテーブルの、nameカラムからデータを取得。(重複するデータ除いて)
SELECT DISTINCT(カラム名)
FROM テーブル名;

SELECT DISTINCT(name)
FROM users;

【指定したカラムのデータの合計数】
・COUNT
NULLはカウント数に入らないことに注意!

-- usersテーブルのnameカラムにあるデータの数が返ってくる
-- NULLはカウント数に入らないことに注意!

SELECT COUNT(カラム名)
FROM テーブル名;

SELECT COUNT(name)
FROM users;

-- NULLも含めてデータの数を知りたい時は、COUNT(*)というように全てのカラムを指定すると良い。
-- そうすると,特定のカラムのデータの数ではなく、テーブルのレコード数を返してくれる。
-- こうするとNULLを含めてデータの数を教えてくれる。

SELECT COUNT(*)
FROM purchases;

【単数のカラムでグループ化】
指定したカラムで完全に同一のデータを持つレコード同士が同じグループになる
・GROUP BY カラム名

--GROUP BYは、SELECTで使えるのは、GROUP BYに指定しているカラム名と集計関数のみ。
SELECT SUM(point), charged_at
FROM point_cards
GROUP BY charged_at;

【複数のカラムでグループ化】
・GROUP BY 複数の条件

SELECT SUM(point), charged_at, name
FROM users
GROUP BY charged_at, name;

【GROUP BY と WHERE を併用 】
・GROUP BY 複数の条件
-- 集計関数とは、 COUNT, SUM, AVG, MAX, MIN など


SELECT 集計関数
FROM テーブル名
WHERE 条件
GROUP BY カラム名、 カラム名;

【SELECT INTO】
・SELECT INTOは、SELECT文で抽出したデータを別テーブルとして作成することができる。

SELECT カラム名, カラム名, ... 
INTO 新しいテーブル名 
FROM 既存テーブル名
WHERE 条件

SELECT 
  [id]
 ,[name]
 ,[animal]
 ,[height]
 ,[weight]
INTO newTABLE
FROM KIZON_TABLE
WHERE weight > 60


0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?