新卒から文系エンジニア→人材業界に転職した人のブログ

新卒から文系エンジニア→人材業界に転職。技術・スキルがないためブログを通して勉強。その後、IT業界の業界知識が活かせる人材業界へ。異業種×異職種の転職経験有り。

このエントリーをはてなブックマークに追加

【SQL入門】基本的なSQLを目的別にまとめてみた

【今回の内容】


最近、仕事で簡易なSQLを使うことが多いので、よく使うものをまとめてみました。


使うといっても、かなり基本的なSQLです。


備忘録的なメモとしてまとめておきます。


【内容】

①基本的な列の取得

単一列取得したい

select カラム名 from テーブル名

複数列取得したい

select カラム名, カラム名, from テーブル名

すべての列を取得したい

すべての列を取得:select * from テーブル名

②列を条件で指定したい

単一条件取得したい

        select カラム名 from テーブル名 where カラム名='条件'

複数条件取得したい

        select カラム名 from テーブル名 where カラム名='条件' and カラム名='条件'

③列名の値の一部を指定して取得


前方一致
        
        select カラム名 from テーブル名 like カラム名='%条件'

後方一致
        
        select カラム名 from テーブル名 like カラム名='条件%'

部分一致
        
        select カラム名 from テーブル名 like カラム名='%条件%'


④条件を指定して、複数レコードをまとめたい

    select カラム名,sum(合計を出したいカラム名) from テーブル名 where カラム名="" group by

     重複をなくしたいカラム名

または

    select distinct 重複をなくしたいカラム名 from テーブル名 where カラム名=""

⑤レコードの表示順序を変えたい。


    昇順にしたい
    
         select カラム名 from テーブル名 order by 昇順に並べたいカラム名 asc

降順にしたい

select カラム名 from テーブル名 order by 昇順に並べたいカラム名 desc

SQLを見やすくしたい(相関名の指定)


select * from テーブル名 略称

→次から略称.カラム名略称の指すテーブルを指定できる。複数テーブルを結合しながら
 
発行するSQLはどうしても複雑になりがちなので、テーブル名を短くし、可読性をあげる

⑦複数テーブルから情報を取得したい(テーブル結合)


■特定のカラムが両方のテーブルとも一致するレコードを取得(内部結合)


      select カラム名 from テーブルA,テーブルB where A.カラム名=B.カラム名

 
      またはselect カラム名 from テーブルA inner join テーブルB on( A.カラム名=B.カラム名)


■特定のカラムが一致しないものも取得したい

 
     →左のテーブルにあるレコードはすべて取得し、かつ指定したカラム名と一致する右のテーブルのレコード
 
     があれば取得する(外部結合)

     select カラム名 from テーブルA left join テーブルB on( A.カラム名=B.カラム名)

※一致しないレコードには空白を表示する


■特定のカラムが一致しないものも取得したい

 →右のテーブルにあるレコードはすべて取得し、かつ指定したカラム名と一致する左のテーブルのレコード

      があれば取得する(外部結合)

    select カラム名 from テーブルA right join テーブルB on( A.カラム名=B.カラム名)

⑧あるテーブルした取得した情報をそのまま他のテーブルに対して、問い合わせたい(副問問い合わせ)

select カラム名 from テーブル名A where カラム名 in (select カラム名 from テーブルB where
       カラム名='')

→inの後のselect文の取得するカラム数が複数の場合は、「in」を使用し、単一の場合は
         「カラム名=」
 でよい!!

.hatena-module:nth-of-type(10) { background: transparent; } .hatena-module:nth-of-type(10) .hatena-module-title{ display: none; } .hatena-module:nth-of-type(10) .hatena-module-body { padding: 0; }