DataBaseMySQL

MySQL基礎

SQL文

  • select 列名 :取得列(カラム)の指定。「,」で区切る。全ての列を取得する場合は「*」。重複データを除外する場合distinctをselectの後につける。すべて取得はall。
  • from テーブル名 : データを取得するテーブルの指定
  • where 条件式 :条件指定
  • group by 列名 :列名でグループ化する
  • having 条件式 :集約した結果に対して条件を付ける
  • order by 列名や式 並び順 :並び替えの条件を指定。 asc :*default 昇順(ascending) desc :降順(descending)。複数の条件の場合「,」で区切る。
  • limit 値 :取得する行数の指定。実務では基本指定する。
書き順

select * from テーブル名 where 絞り込み条件 group by グループ化の条件 having グループ化後の絞り込み条件 order by 並び替えの条件 limit 取得行数;

データ型

  • 文字列
  • 数値
  • 日付・時刻
文字列型
  • char型 キャラ 固定長の文字列255文字まで。指定数より少ないとスペースで埋められる。char(数値)
  • varchar型 バーキャラ 可変長の文字列255文字まで。varchar(255)
  • text型 テキスト 長い文字列65535文字まで。
数値型
  • int型 インテジャー 整数 -2147483648~2147482647
  • tinyint型 タイニーイント とても小さな整数 -128~127
  • float型 フロート (単精度)浮動小数点数 -3.402823466E+38~-1.175494351E-38, 0, および1.175494351E-38~3.402823466E+38
  • double型 ダブル (倍精度)浮動小数点数 -1.7976931348623157E+308~-2.2250738585072014E-308, 0, および2.2250738585072014E-308~1.7976931348623157E+308 実務上少数を扱う場合はdouble型を使用
  • int unsigned 符号なし 正の整数 扱える値の範囲が増える
  • tinyint(1) 真偽値を扱うことが出来る trueが1、falseは0、nullと0がfalseでそれ以外はtrue
日付・時刻型
  • date型 デイト 日付を扱える。’1000-01-01’~’9999-12-31’まで。
  • datetime型 デイトタイム 日付と時刻を扱える。’1000-01-01 00:00:00.000000’~’9999-12-31 23:59:59.999999’まで。
  • time型 タイム 時刻を扱える。’-838:59:59’~’838:59:59’まで。

代表的な比較演算子

  • = :等しい
  • > :より大きい
  • >= :以上
  • < :より小さい
  • <= :以下
  • !=, <> :等しくない
  • A in B :AにBが含まれている
  • A not in B :AにBが含まれていない
  • A is null :Aがnull
  • A is not null :Aがnullでない
  • A like B :AへのBのパターンマッチング
  • A between B and C AがBからCの範囲に含まれている

パターンマッチングでのワイルドカード

  • % :0文字以上の任意の文字列
  • _ :1文字以上の任意の文字列

主な算術演算子

nullを含んだ計算結果は全てnullになる。

  • + :足し算
  • – :引き算
  • * :掛け算
  • / :割り算
  • % :余り

集約関数

nullは基本的に無視される。データベースにnullが含まれないように構築するのが望ましい。

例 select avg(price) from products where category = 1;
  • sum(引数) :合計値
  • avg(引数) :平均値
  • min(引数) :最小値
  • max(引数) :最大値
  • count(引数) :行数
  • count(distinct 引数) :重複排除

関数

  • abs(引数) :絶対値を取得
  • round(対象, 桁数) :四捨五入。桁数が0で少数第1位を四捨五入
  • concat(‘文字列1’, ‘文字列2’, …) :文字列連結
  • current_date() :現在の日付
  • current_time() :現在の時間
  • current_timestamp() :日時を取得。タイムスタンプ
  • now() :日時を取得
  • dayname() :曜日を取得
  • weekday() :曜日を数字で取得0が月曜日
  • dayofmonth() :今月に入っての経過日数
  • last_day() :月末の日
  • date_format(日時型の列, ‘フォーマット形式’) :’%Y%m’など
  • extract() :日付や時間の特定部分を取り出す

date_format()で使える文字

  • %Y :4桁の年表示
  • %y :2桁の年表示
  • %M :英語で月名を表示
  • %m :数字で月を表示
  • %c :0無しの数字で月を表示
  • %d :日付を表示
  • %W :曜日を表示
  • %p :AM,PMを表示
  • %r :時刻を12時間で表示
  • %k :時刻を24時間で表示
  • %i :分を表示
  • %s :秒を表示

interval N day :N日後

interval N hour :N時間後 同様にminuteは分、secondは秒

例 select current_date() + interval 5 day;

extract()はチャート作成に使える

例 select * from charts where extract(year_month from timestamp) = 201906;

コメントを残す