SQL

【SQL・初心者・基礎】SQL文のまとめ一覧

RDBMS(リレーショナルデータベースマネージメントシステム)とは?

  • RDBMSとはリレーショナルデータベースをSQLで管理する為のソフトウェアです。

リレーショナルデータベースとは?

  • リレーショナルデータベースとは各データをテーブル(表)の形で表している事を示している。

RDBMSの種類


Oracle
MySQL
Microsoft SQL server
PostgreSQL
SQLite

 MySQL 操作

ターミナルでMySQLに接続する方法

$ mysql -h ホスト名 -u ユーザー名 -D データベース名

 SQLとは?

  • SQL(ストラクチャードクエリランゲージ)とはデータベースの操作などを行うための言語です。

テーブル操作

CREATE TABLEとは?

テーブルが作成できます


CREATE TABLE テーブル名 (
  カラム名 型,
  カラム名 型,
  カラム名 型
);

DROP TABLEとは?

テーブルを削除できます

$ DROP TABLE テーブル名;

カラム操作

カラムを追加する事ができます

$ ALTER TABLE テーブル名 ADD カラム1 データ型 ;

カラムを削除する事ができます

$ ALTER TABLE テーブル名 DROP COLUMN 削除するカラム;

データ操作

showとは?

DB内のテーブルを確認できる

$ show tables; 

指定したテーブルのカラム情報を確認できる

$ show columns from テーブル名; 

SELECTとは?

データの取得をする際に利用する

$ SELECT カラム名 FROM テーブル名;

特定のカラムを探す

$ SELECT table_name, column_name FROM information_schema.columns WHERE column_name = '探したいカラム名'

INSERTとは?

データを新規で追加する際に利用する

・カラム名はカンマ区切りで複数指定することができ、カラム数と同じ数をカンマ区切りでVALUESに指定します。

$ INSERT INTO テーブル名(カラム名) VALUES(追加するデータ);

UPDATEとは?

データ更新する際に利用する

・WHERE句で条件を指定しないと指定したカラムのデータすべてに変更が適用されます。

$ UPDATE テーブル名 SET カラム名 = 'データ' WHERE 条件;

DELETEとは?

データを削除する際に行う。

・DELETEもUPDATE同様条件を指定しないと指定したテーブルのデータすべてが削除されます。

$ DELETE FROM テーブル名 WHERE 条件

データを絞り込む

WHERE句とは?

条件を付けてデータを絞り込む

・「=」で値が等しいかを判定する。

$ SELECT * FROM shop WHERE id = 20;

 LIKE句とは?

%は何でも何文字でも曖昧検索が可能

・WHERE句の後に指定します。

・指定された文字が含まれているのを表示


$ SELECT * FROM shop WHERE shop_name LIKE '%さん%';
$ SELECT * FROM shop WHERE shop_name LIKE '%屋さん%';

・末尾に指定された文字が含まれている

$ SELECT * FROM shop WHERE shop_name LIKE '%屋さん';

・先頭に指定された文字が含まれている

$ SELECT * FROM shop WHERE shop_name LIKE 'ピザ%';

・先頭と末尾に指定された文字が含まれている

$ SELECT * FROM shop WHERE shop_name LIKE 'お%屋さん';

「NOT」を付ける事で不要なデータを除去できる

・指定されている文字が含まれていたら除去

$ SELECT * FROM shop WHERE shop_name NOT LIKE '%ピザ%';

 _は一文字曖昧検索が可能

・ この間は何文字かを指定

$ SELECT * FROM shop WHERE shop_name LIKE 'お__屋さん';

NULL検索

指定のカラムにNULLが入っているもののみを表示

$ SELECT * FROM shop WHERE カラム名 IS NULL;

指定のカラムにNULLが入っていないもののみを表示

$ SELECT * FROM shop WHERE カラム名 IS NOT NULL;

INとは?

複数の値を指定できる

$ SELECT * FROM shop WHERE shop_name IN('おそば屋さん', 'おうどん屋さん');

betweenとは?

指定した範囲でデータを検索する

・IDが2〜7を表示
・NOTは否定を指しています。


$ SELECT * FROM shop where id between 2 AND 7;
$ SELECT * FROM shop where id NOT between 2 AND 7;

比較演算子とは?

>、 <、 >=、 <= で比較をできる

・IDが10より大きいものだけを表示

$ SELECT * FROM shop where id >= 10;

論理演算子とは?

ANDはかつ、両方という意味です

・どちらも含まれていれば表示

$ SELECT * FROM shop where id = 2 AND shop_name = 'お寿司屋さん';

ORはまたは、どっちかという意味です

。どちらかが含まれていれば表示

$ SELECT * FROM shop where id = 2 or shop_name = 'お寿司屋さん';

NOT、「!」は否定を意味します

・含まれていないもの以外を表示


$ SELECT * FROM shop where id != 2 NOT shop_name = 'お寿司屋さん';
$ SELECT * FROM shop where NOT shop_name = 'お寿司屋さん';

データを並び替える

Order by(オーダーバイ)とは?

Order byは並び替えを行うことができます

・ORDER BYはカラムの後にasc(昇順), desc(降順)を指定できる。
・デフォルトは「asc」です。


$ SELECT * FROM shop ORDER BY id;
$ SELECT * FROM shop ORDER BY id DESC;

・WHEREで絞った後に並べ替えも可能

$ SELECT * FROM shop WHERE id > 2 ORDER BY id DESC;

データを集計

COUNTとは?

件数を算出する


$ SELECT COUNT(*) FROM shop;
$ SELECT COUNT(shop_name) FROM shop;

DISTINCTとは?

重複したものを表示しない

$ SELECT COUNT(DISTINCT shop_name) FROM shop;

グループ化

Group byとは?

データを集計する軸となるカラムを指定する


$ SELECT shop_name, COUNT() FROM shop GROUP BY shop_name;
$ SELECT shop_name, COUNT() FROM shop WHERE shop_name != 'ピザ屋さん' GROUP BY shop_name;

havingとは?

Group byで集計したものを絞り込む

$ SELECT shop_name, COUNT() FROM shop GROUP BY shop_name HAVING count() >= 2;

ASとは?

AS(アズ(読み方)エイリアスの略語)を使ってシンプルにすることが可能

COUNT(*)cntへ変更してHAVINGで利用。

$ SELECT shop_name,COUNT(*) AS cnt FROM shop GROUP BY shop_name HAVING cnt >= 2;

SUMとは?

合計値を取得

$ SELECT SUM(id) FROM shop;

・グループ化も可能

$ SELECT SUM(id) FROM shop GROUP BY category_id;

MAXとは?

最大値を算出する

$ SELECT MAX(id) FROM shop;

・グループ化も可能

$ SELECT MAX(id) FROM shop GROUP BY category_id;

MINとは?

最小値を算出する

$ SELECT MIN(id) FROM shop;

・グループ化も可能

$ SELECT MIN(id) FROM shop GROUP BY category_id;

AVGとは?

平均値を算出する

$ SELECT AVG(id) FROM shop;

・グループ化も可能

$ SELECT AVG(id) FROM shop GROUP BY category_id;

テーブルを結合する

JOINとは?

テーブル同士を結合すること

joinの種類は大きく分けて2つ

内部結合(INNER JOIN)
・互いの条件に一致するレコードのみを抽出する。
・片方のテーブルにしか存在しない値は間引かれる。
外部結合(OUTER JOIN)
・結合元と結合先で値が一致しないものも抽出する。
LEFT OUTER JOIN
・左側のテーブルを軸に結合する。
RIGHT OUTER JOIN
・右側のテーブルを軸に結合する。
FULL OUTER JOIN
・結合の優先順位が存在しない。

INNER JOINとは?

一致するものだけを取得する

$ SELECT * FROM users AS u INNER JOIN microposts AS m ON u.id = m.user_id;

補足:SQLの別の記述の仕方


SELECT
  *
FROM
  users as u
  inner join microposts as m
    on u.id = m.user_id;

名前、順番なども変更が可能


SELECT
  u.id as 'ユーザーID',
  m.id as 'ポストID',
  u.name as '氏名',
  u.email as 'メールアドレス',
  m.content as '投稿'
FROM
  users as u
  inner join microposts as m
    on u.id = m.user_id;

テーブル名を反対にしても結果は同じ


SELECT
  u.id as 'ユーザーID',
  m.user_id as '結合ID',
  m.id as 'ポストID',
  u.name as '氏名',
  u.email as 'メールアドレス',
  m.content as '投稿'
FROM
  microposts as m
  inner join users as u
    on u.id = m.user_id;

LEFT JOINとは?

usersを軸にして結合して値が存在しない場合はNULL表示


SELECT
  *
FROM
  users AS u
  left join microposts AS m
    on u.id = m.user_id;

RIGHT JOINとは?

micropostsを軸にして結合して値が存在しない場合はNULL表示

SELECT
  *
FROM
  users AS u
  right join microposts AS m
    on u.id = m.user_id;

最後に一言

以上になります、少しでも参考になったら幸いです!!

-SQL
-, , ,

Copyright© Akitoblog , 2020 All Rights Reserved Powered by AFFINGER5.