LoginSignup
2
2

More than 3 years have passed since last update.

初学者向けのSQLまとめ

Last updated at Posted at 2020-01-25

SQLについての研修があったので復習を兼ねて内容をまとめました。

SQLはプログラミング初学者が重要視していません。
(あくまでも推測です。)

しかし、
先輩エンジニアはSQLはしっかり勉強すべき
と言っていたので
初学者の方も疎かにしないようにしましょう。

基礎的なSQLに関連のある言葉

SQL(structured query language)

データベースを操作する言語

DB(データベース)

データを格納する箱

RDB(リレーショナルデータベース)

データを表形式で扱うデータベース
複数のテーブルでデータベースを管理する方式

テーブル

データの格納領域
データの種類ごとに分けられている

カラム

テーブルの列

ロウ

テーブルの行

レコード

水平方向にあるデータそのものをさす言葉
ロウと混同してはいけない

フィールド

レコードを構成する1つ1つの要素

クエリ

SQLを実行した時にデータベースに送る命令文

SQL接続方法

-- 起動
mysql.server start

-- 停止
mysql.server stop

-- rootでログイン
mysql -u root -p

-- 起動状況確認
mysql.server status

SQLの例

-- クエリの最後に";"を忘れない

-- 全てのレコードを抽出する
select * from テーブル名;

-- 指定したカラムを含むレコードを抽出する
select カラム名 from テーブル名;

-- 列に別名をつける
select カラム名 as 新しいカラム名 form テーブル名;

-- asは省略可能
select カラム名 新しいカラム名 form テーブル名;

-- where句で条件を指定してレコードを抽出
select * from テーブル名 where 条件;

-- 他の言語で見ることがなかった比較演算子
-- 値がnulのレコード
is nul

-- 値がnulではないレコード
is not nul

-- ある値が値セットに含まれているかどうか
in()

-- ある値が値セットに含まれていないかどうか
not in()

/* パターンマッチング
% 0文字以上の文字列
_ 任意の1文字
''で囲む */
select * from テーブル名 where カラム名 like '***';

-- limit句で抽出するレコード数を制限する
-- オフセットは省略可能
select * from テーブル名 limit オフセット number;

集約関数

-- 合計値を求める
select sum(カラム名) from テーブル名;

--- 平均値を求める
select avg(カラム名) from テーブル名;

-- 最小値を求める
select min(カラム名) from テーブル名;

-- 最大値を求める
select max(カラム名) from テーブル名;

集約関数におけるnullの扱い

nullは「値がないこと」を表す時に使う言葉
集約関数では基本的にnullは無視される
nullを含んだ計算結果は全てnullになる。

-- 数える
select count(カラム名) from テーブル名;

-- 重複を取り除く
select count(distinct カラム名) from テーブル名;

select文の記述順序と実行順序

記述順序
select from where group by having order by limit;
実行順序
from where group by having select order by limit;

order by

昇順、降順を指定する

-- 昇順を指定
select * from テーブル名 order by カラム名 asc;

-- 降順を指定
select * from テーブル名 order by カラム名 desc;

演算子

-- 絶対値を求める。
select abs(引数);

-- 四捨五入
-- 桁数で0にすると、小数点第1位を四捨五入する。
select round(引数,桁数);

文字列の連結

select concat(引数1, 引数2) from テーブル名;

日付と時刻の関数と演算子


-- 現在の日付
select current_date();

-- 現在の時刻
select current_timestamp();

-- n日後の日付
select current_date() + interval n day;

-- n日前の日付
select current_date() - interval n day

n時間後の時間
select current_timestamp() + interval n hour;

n時間前の時間
select current_timestamp() - interval n hour;

-- extract
-- 日時や日付の特定の部分を取り出す。
-- 条件に当てはまるyearを含むレコードを取り出す
select * from テーブル名 where extract(year from カラム名) = 条件;

随時更新します。

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