<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SQL | ビズドットオンライン</title>
	<atom:link href="https://it-biz.online/tag/sql/feed/" rel="self" type="application/rss+xml" />
	<link>https://it-biz.online</link>
	<description></description>
	<lastBuildDate>Fri, 28 Feb 2025 02:46:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://it-biz.online/wp-content/uploads/2019/10/cropped-4a332f05ade4ac7bb3c46c472cb5eac8-32x32.png</url>
	<title>SQL | ビズドットオンライン</title>
	<link>https://it-biz.online</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>データベースとは？初心者向け完全ガイド｜基本概念から種類までを1分でわかりやすく解説</title>
		<link>https://it-biz.online/it-skills/database/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Mon, 30 May 2022 12:00:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=6411</guid>

					<description><![CDATA[データベースとは、コンピュータ上でデータを効率的 かつ 整理された方法で保存・管理するシステムのことを指します。 データベースという概念が誕生する前は「〇〇の情報が知りたいなら東京にいく」「■■が知りたいなら大阪に行く」 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>データベースとは、<strong>コンピュータ上でデータを効率的 かつ 整理された方法で保存・管理するシステムのこと</strong>を指します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>IT初心者向けにわかりやすく説明すると「<strong><span class="marker-under">あらゆる情報が整理されている収納箱</span></strong>」のようなものと言えます。</p>
</div></div>



<figure class="wp-block-image aligncenter size-full is-resized"><img fetchpriority="high" decoding="async" width="583" height="579" src="https://it-biz.online/wp-content/uploads/2023/03/image-3.png" alt="データベースとは" class="wp-image-6871" style="width:437px;height:434px" srcset="https://it-biz.online/wp-content/uploads/2023/03/image-3.png 583w, https://it-biz.online/wp-content/uploads/2023/03/image-3-300x298.png 300w, https://it-biz.online/wp-content/uploads/2023/03/image-3-500x497.png 500w, https://it-biz.online/wp-content/uploads/2023/03/image-3-200x200.png 200w, https://it-biz.online/wp-content/uploads/2023/03/image-3-150x150.png 150w" sizes="(max-width: 583px) 100vw, 583px" /><figcaption class="wp-element-caption">図1：データベースとは？</figcaption></figure>



<p>データベースという概念が誕生する前は「〇〇の情報が知りたいなら東京にいく」「■■が知りたいなら大阪に行く」といったように、補完されている場所も形式もバラバラで、一元的な管理が行えませんでした。</p>



<p><strong>そこで必要なデータを決められた形式で保持するための仕組みとして考えだされたのがデータベース。</strong></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>システムエンジニアの世界では "<strong>D</strong>ata<strong>B</strong>ase" の頭文字をとって「DB」と呼ぶのが一般的。</p>
</div></div>



<p>このページでは、IT初心者向けに「データベースとは何か？」を１からわかりやすく解説します</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-hand-o-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li><strong>データベースとは？</strong>
<ul class="wp-block-list">
<li>データベースの成り立ち</li>
</ul>
</li>



<li><strong>データベースの種類</strong>
<ul class="wp-block-list">
<li>リレーショナルデータベース</li>



<li>階層型データベース</li>



<li>ネットワーク型データベース</li>
</ul>
</li>
</ul>
</div>
</div></div>



<p>プログラマーやシステムエンジニアを目指す方であれば、<strong><span class="marker-under">知らないと恥ずかしい超・基本知識の１つ</span></strong>。是非最後までご覧ください。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">データベースとは</a><ol><li><a href="#toc2" tabindex="0">データベースの役割</a></li><li><a href="#toc3" tabindex="0">データベースの例</a></li></ol></li><li><a href="#toc4" tabindex="0">データベースの種類</a><ol><li><a href="#toc5" tabindex="0">リレーショナルデータベース</a></li><li><a href="#toc6" tabindex="0">階層型データベース</a></li><li><a href="#toc7" tabindex="0">ネットワーク型データベース</a></li></ol></li><li><a href="#toc8" tabindex="0">【まとめ】データベースとは？</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">データベースとは</span></h2>



<p>冒頭でも簡単にご説明した通り、データベースは一言で説明すると「<strong>様々なデータを決まった形で整理して集めたもの</strong>」「<strong>それを実現するための仕組み</strong>」です。</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="583" height="579" src="https://it-biz.online/wp-content/uploads/2022/05/image-25.png" alt="データベースとは わかりやすく" class="wp-image-6414" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-25.png 583w, https://it-biz.online/wp-content/uploads/2022/05/image-25-300x298.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-25-500x497.png 500w, https://it-biz.online/wp-content/uploads/2022/05/image-25-200x200.png 200w, https://it-biz.online/wp-content/uploads/2022/05/image-25-150x150.png 150w" sizes="(max-width: 583px) 100vw, 583px" /><figcaption class="wp-element-caption">【再掲】図1：データベースのイメージ</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>「<strong>様々なデータを決まった形で整理して集めたもの</strong>」「<strong>それを実現するための仕組み</strong>」－。</p>



<p>この定義に当てはまるものは基本的にデータベースと呼んでOK。</p>
</div></div>



<p>ただし、このページではより実践的に「<strong>システム</strong>」「<strong>IT</strong>」の世界における「データベース」の意味や特徴に焦点を当てて解説していきます。</p>



<ol class="wp-block-list is-style-numeric-list-enclosed has-list-style">
<li><strong>広義の意味での「データベース」</strong>
<ul class="wp-block-list">
<li>定義：一定の基準や体系に従って集められ、整理・格納された情報やデータの集まり。</li>



<li>例：図書館（物理的な本や資料の集合）、成績表（学生の成績データの集合）、アルバム（写真の集合）など。</li>



<li>特徴：物理的・電子的問わず、情報やデータを一元的に集約・保管している場所やシステム全般を指す。</li>
</ul>
</li>



<li><strong>システムの世界での「データベース」</strong>
<ul class="wp-block-list">
<li>定義：<strong><span class="marker-under">コンピュータシステム上で動作し、データの保存、検索、更新、削除などを効率的に行うためのソフトウェアやシステム</span></strong>。<br>→データの持続性、整合性、並行アクセスのサポートなどの機能を持つ。</li>



<li>例：Oracle、MySQL、PostgreSQL、MongoDBなどの<a href="https://it-biz.online/it-skills/dbms/">データベース管理システム（DBMS）</a>。</li>



<li>特徴：通常、特定のクエリ言語（例：<a href="https://it-biz.online/it-skills/sql/">SQL</a>）を使用してデータにアクセスし、データの整合性やセキュリティを保ちながら、高速にデータを処理することが可能。</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading"><span id="toc2">データベースの役割</span></h3>



<p>IT / システムの文脈のおける「データベース」。その主な目的は、複数のデータを一元的に保存し、必要なデータを簡単に検索・取得・追加・更新・削除することができるようにすること。これにより、企業や組織が効率的に情報を扱うことができます。</p>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">データベースの主な役割</div>
<ul class="wp-block-list">
<li><span class="fz-20px">データの<strong><span class="bold-red"><span class="bold-blue">保存</span></span></strong></span><br>→情報を整理してコンピュータ上に保存する</li>



<li><span class="fz-20px">データの<strong><span class="bold-red"><span class="bold-blue">検索</span></span><span class="fz-20px"><span class="bold">/</span></span><span class="bold-red"><span class="bold-blue">取得</span></span></strong></span><br>→特定の条件に一致するデータを見つけ出し取得する</li>



<li><span class="fz-20px">データの<strong><span class="bold-red"><span class="bold-blue">追加</span></span><span class="bold">/</span><span class="bold-red"><span class="bold-blue">更新</span></span><span class="bold">/</span><span class="bold-red"><span class="bold-blue">削除</span></span></strong></span><br>→新しいデータを追加したり既存のデータを更新・削除する</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">Tips：データベースの歴史</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>補足としてデータベースの成り立ち・歴史を簡単にご説明したいと思います。</p>
</div></div>



<p>データベースという用語はDoD (Department of Defense = <strong>米国国防省</strong>) で誕生しています。アメリカ国内で散在していた様々な軍事情報を一か所に集め、<strong><span class="marker-under">そこを見れば国内すべての軍事情報をすべて把握できるようにしたのがデータベース</span></strong>の起源です。</p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="786" height="453" src="https://it-biz.online/wp-content/uploads/2022/05/image-26.png" alt="データベースのイメージ" class="wp-image-6415" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-26.png 786w, https://it-biz.online/wp-content/uploads/2022/05/image-26-300x173.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-26-500x288.png 500w, https://it-biz.online/wp-content/uploads/2022/05/image-26-768x443.png 768w" sizes="(max-width: 786px) 100vw, 786px" /><figcaption class="wp-element-caption">図2：データベースのイメージ</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>データベースという概念が誕生する前は、〇〇の情報を知りたいなら□□の図書館へ・・・△△の情報を知りたいなら●●の大学へ・・・・と情報収集するにも膨大な労力が必要でした。もっと言うと、そもそもあまり「情報」「データ」というものが今ほど重要視されていなかった時代に、情報の重要性を認識しその必要性に応じて誕生したのが「データベース」です。</p>
</div></div>



<p>散在している情報を１か所に集積し、決まった形で管理・保持することで、必要な情報を素早く収集することが可能にしたい！　→これが "データベース" の起源です。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc3">データベースの例</span></h3>



<p>データベースはシステムの世界に限らず実は様々な場面で利用されています。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>広い意味で言うと、電話帳やアドレス帳、クラスの生徒名簿など、決まった形でデータが集められているのでデータベースの例と言えます。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="757" height="209" src="https://it-biz.online/wp-content/uploads/2022/05/image-27.png" alt="データベース 例" class="wp-image-6416" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-27.png 757w, https://it-biz.online/wp-content/uploads/2022/05/image-27-300x83.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-27-500x138.png 500w" sizes="(max-width: 757px) 100vw, 757px" /><figcaption class="wp-element-caption">図3：データベースの例</figcaption></figure>
</div></div>



<p>我々はこのように様々な場面でデータベースを活用していることが分かります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>もしデータベースがなかったら、〇〇さんの電話番号が知りたい！思っても、過去のメモなどを頑張って探したり、知っている人に聞いたりしないといけません。</p>



<p>同じようにシステムの世界でも、決まったデータを決まった形で整理・保持しておくことは、システムの効率性を高めるうえで非常に重要なことなのです。</p>
</div></div>



<p>では、コンピュータの世界ではどのようにデータを管理・整理しているのでしょうか。次に、コンピュータ内部におけるデータ保持形式の違いに着目してデータベースを分類して解説します。</p>



<h2 class="wp-block-heading"><span id="toc4">データベースの種類</span></h2>



<p>データベースは、どのような形でデータを保持するか？という観点で見た際、以下の３種類に分類することができます。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box cocoon-block-tab-caption-box"><div class="tab-caption-box-label block-box-label box-label fab-pencil"><span class="tab-caption-box-label-text block-box-label-text box-label-text">３種類のデータベース</span></div><div class="tab-caption-box-content block-box-content box-content">
<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="303" src="https://it-biz.online/wp-content/uploads/2022/05/image-28-1024x303.png" alt="データベース 種類" class="wp-image-6417" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-28-1024x303.png 1024w, https://it-biz.online/wp-content/uploads/2022/05/image-28-300x89.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-28-500x148.png 500w, https://it-biz.online/wp-content/uploads/2022/05/image-28-768x227.png 768w, https://it-biz.online/wp-content/uploads/2022/05/image-28-800x237.png 800w, https://it-biz.online/wp-content/uploads/2022/05/image-28.png 1264w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">図4：データベースの分類</figcaption></figure>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li><strong><span class="fz-20px">リレーショナルデータベース</span></strong><br>⇒エクセルのように表形式でデータを保存する</li>



<li><strong><span class="fz-20px">階層型データベース</span></strong><br>⇒ツリー状にデータを保存する</li>



<li><strong><span class="fz-20px">ネットワーク型データベース</span></strong><br>⇒データを相互に関連付けて保存する</li>
</ul>
</div>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ここでは、代表的な３つのデータベースを見ていきながら、データベースのイメージを深めていきましょう。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc5">リレーショナルデータベース</span></h3>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="457" height="343" src="https://it-biz.online/wp-content/uploads/2022/05/image-29.png" alt="リレーショナルデータベース わかりやすく" class="wp-image-6418" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-29.png 457w, https://it-biz.online/wp-content/uploads/2022/05/image-29-300x225.png 300w" sizes="(max-width: 457px) 100vw, 457px" /><figcaption class="wp-element-caption">図5：リレーショナルデータベースとは</figcaption></figure>



<p>データベースの中で最も一般的に利用されるのが<strong><span class="marker-under">リレーショナルデータベース</span></strong>です。</p>



<p>リレーショナルデータベースは、エクセルのように表形式（テーブル）であらわされるデータベースで、テーブル間の関係（リレーション）を定義することでデータの結びつきや関連性をわかりやすく表します。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="664" height="373" src="https://it-biz.online/wp-content/uploads/2022/05/image-31.png" alt="リレーショナルデータベース" class="wp-image-6420" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-31.png 664w, https://it-biz.online/wp-content/uploads/2022/05/image-31-300x169.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-31-500x281.png 500w, https://it-biz.online/wp-content/uploads/2022/05/image-31-240x135.png 240w, https://it-biz.online/wp-content/uploads/2022/05/image-31-320x180.png 320w, https://it-biz.online/wp-content/uploads/2022/05/image-31-640x360.png 640w" sizes="(max-width: 664px) 100vw, 664px" /><figcaption class="wp-element-caption">図6：リレーション</figcaption></figure>



<p>普段何気なく利用している電話帳や、学校の先生が使っていた出席簿などは、リレーショナルデータベースの原型とも言えます。そのうえで、リレーショナルデータベースの特徴は「<strong>リレーショナル</strong>」の名の通り（学生の個人情報を保持するテーブルや、成績を管理するテーブルなどを表形式で整理しつつ）<strong><span class="marker-under">それら２つのテーブルの関連性がわかるように</span></strong>整理されていることが特徴です。</p>



<p>「データベースといえばリレーショナルデータベース」と言っても過言ではないぐらいポピュラーな形式。<strong>データベースの勉強をする＝リレーショナルデータベースの勉強をする</strong>　という感じなので、リレーショナルデータベースという用語は必須で頭に入れておきましょう。</p>



<div class="wp-block-cocoon-blocks-label-box-1 label-box block-box cocoon-block-label-box"><div class="label-box-label block-box-label box-label fab-lightbulb"><span class="label-box-label-text block-box-label-text box-label-text">リレーショナルデータベースを専門的に解説すると</span></div><div class="label-box-content block-box-content box-content">
<p>リレーショナルデータベースをより専門的に説明すると、<strong>表形式のデータを使用してデータを保存・管理するためのデータベースモデル</strong>と説明できます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このモデルでは、データが複数のテーブルに分割され、各テーブルには行と列があります。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="512" height="358" src="https://it-biz.online/wp-content/uploads/2023/03/image-7.png" alt="リレーショナルデータベース,列 カラム,行 レコード" class="wp-image-6875" srcset="https://it-biz.online/wp-content/uploads/2023/03/image-7.png 512w, https://it-biz.online/wp-content/uploads/2023/03/image-7-300x210.png 300w, https://it-biz.online/wp-content/uploads/2023/03/image-7-500x350.png 500w" sizes="(max-width: 512px) 100vw, 512px" /><figcaption class="wp-element-caption">図7：リレーショナルデータベースの仕組み</figcaption></figure>
</div></div>



<p>各テーブルは列に対応する「<strong>フィールド</strong>」と行に対応する「<strong>レコード</strong>」で構成され、フィールドにはテーブル内で保存されるデータの種類に応じて<strong>データ型</strong>が定義されます。レコードには、テーブル内の各フィールドに対応する値が含まれます。</p>



<p>リレーショナルデータベースでは、複数のテーブルをリレーション（関連）として定義することができます。これにより、異なるテーブル間でデータを結合することができます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、生徒情報を保存するテーブルと成績情報を保存するテーブルがある場合、これら2つのテーブルを生徒の所属するクラスに関連付けることで、クラスごとの科目の点数を簡単に取得することが可能になります。</p>
</div></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="657" height="347" src="https://it-biz.online/wp-content/uploads/2023/03/image-8.png" alt="リレーショナルデータベース,リレーション" class="wp-image-6876" srcset="https://it-biz.online/wp-content/uploads/2023/03/image-8.png 657w, https://it-biz.online/wp-content/uploads/2023/03/image-8-300x158.png 300w, https://it-biz.online/wp-content/uploads/2023/03/image-8-500x264.png 500w" sizes="(max-width: 657px) 100vw, 657px" /><figcaption class="wp-element-caption">図8：リレーショナルデータベース/リレーション</figcaption></figure>



<p>リレーショナルデータベースは、データの整合性を維持しやすく、柔軟性があります。</p>



<p>SQL（Structured Query Language）を使用してデータの検索、更新、挿入、削除などを行うことができます。そのため、リレーショナルデータベースは、現代のアプリケーションやビジネスにおいて、最も一般的に使用されているデータベースモデルの1つです。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql/">SQLとは？</a></p>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>リレーショナルデータベースの概念を理解するためには、表形式での整理が非常に助けになると思いますので、以下、簡単な学生と講義の情報を管理するリレーショナルデータベースの例を示します。</p>



<p class="has-text-align-center"><span class="badge-green">例1</span>　<strong>学生テーブル（Students）</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>学生ID</th><th>名前</th><th>年齢</th><th>メールアドレス</th></tr></thead><tbody><tr><td>1</td><td>山田太郎</td><td>20</td><td><a href="mailto:yamada@example.com">yamada@example.com</a></td></tr><tr><td>2</td><td>鈴木花子</td><td>19</td><td><a href="mailto:suzuki@example.com">suzuki@example.com</a></td></tr><tr><td>3</td><td>佐藤一郎</td><td>21</td><td><a href="mailto:sato@example.com">sato@example.com</a></td></tr></tbody></table></div></figure>



<p class="has-text-align-center"><span class="badge-green">例2</span>　<strong>講義テーブル（Lectures）</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>講義ID</th><th>講義名</th><th>教授名</th></tr></thead><tbody><tr><td>101</td><td>数学</td><td>山本先生</td></tr><tr><td>102</td><td>物理学</td><td>高橋先生</td></tr><tr><td>103</td><td>コンピュータサイエンス</td><td>佐々木先生</td></tr></tbody></table></div></figure>



<p class="has-text-align-center"><span class="badge-green">例3</span>　<strong>学生講義マッピングテーブル（StudentLectures）</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>学生ID</th><th>講義ID</th></tr></thead><tbody><tr><td>1</td><td>101</td></tr><tr><td>1</td><td>103</td></tr><tr><td>2</td><td>102</td></tr><tr><td>3</td><td>101</td></tr></tbody></table></div></figure>



<p>この例では、学生テーブルが学生の情報、講義テーブルが講義の情報を保持しており、学生講義マッピングテーブルが学生と講義の関係性を示しています。</p>



<p>このような表形式のデータ構造が、リレーショナルデータベースでのデータ管理の基本です。リレーション（関係）とは、このようにテーブル間での関連性のことを指します。</p>
</div>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">まとめ：リレーショナルデータベースとは？</div>
<ul class="wp-block-list">
<li><strong>テーブル構造</strong>: データを表形式で保存し、行と列で構成される。</li>



<li><strong>リレーション</strong>: それぞれのテーブル間の関連性をリレーションと呼び、相互に関連付けられることが可能。</li>



<li><strong>データ整合性</strong>: 制約やルールを設定することで、データの整合性を維持する。</li>



<li><strong>SQL対応</strong>: SQL（Structured Query Language）を使用して、データの検索、挿入、更新、削除などの操作が行える。</li>



<li><strong>スケーラビリティ</strong>: 大量のデータと複雑なクエリに対しても、効率的に処理することができる。</li>
</ul>
</div>



<h3 class="wp-block-heading"><span id="toc6">階層型データベース</span></h3>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="403" height="342" src="https://it-biz.online/wp-content/uploads/2022/05/image-32.png" alt="階層型データベース わかりやすく" class="wp-image-6421" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-32.png 403w, https://it-biz.online/wp-content/uploads/2022/05/image-32-300x255.png 300w" sizes="(max-width: 403px) 100vw, 403px" /><figcaption class="wp-element-caption">図9：階層型データベース</figcaption></figure>



<p>階層型データベースは、データを<strong>階層型の親子関係で表現</strong>するデータベースです。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="536" height="297" src="https://it-biz.online/wp-content/uploads/2022/05/image-33.png" alt="階層型データベース" class="wp-image-6422" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-33.png 536w, https://it-biz.online/wp-content/uploads/2022/05/image-33-300x166.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-33-500x277.png 500w" sizes="(max-width: 536px) 100vw, 536px" /><figcaption class="wp-element-caption">図10：階層型データベースの例（1）</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>上記の階層型データベースの例では、英語の点数を各生徒別に保持しています。Cさんの点数は、英語 ＞ C と階層をたどることで取得することができます。</p>
</div></div>



<p>この他にも階層型データベースの例としては、会社の組織図やOSのファイル管理システム（ディレクトリ）が分かりやすいかと思います。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="542" height="312" src="https://it-biz.online/wp-content/uploads/2023/03/image-5.png" alt="階層型データベースの例" class="wp-image-6873" srcset="https://it-biz.online/wp-content/uploads/2023/03/image-5.png 542w, https://it-biz.online/wp-content/uploads/2023/03/image-5-300x173.png 300w, https://it-biz.online/wp-content/uploads/2023/03/image-5-500x288.png 500w" sizes="(max-width: 542px) 100vw, 542px" /><figcaption class="wp-element-caption">図11：：階層型データベースの例（2）</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>階層型データベースのポイントは、データを<strong>ツリー構造</strong>で表すということ。 そして1つのデータが他の複数のデータに対して、親子関係をもつということがポイントです。</p>
</div></div>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">階層型データベースが利用されるシステムの例</div>
<ul class="wp-block-list">
<li><strong>オペレーティングシステムのファイル管理</strong>: ファイルシステムの管理に階層型データベースの概念が用いられることが多く、ディレクトリやファイル間の親子関係を表現する。</li>



<li><strong>組織構造の管理</strong>: 企業の部署やチームの階層構造を管理するために使用されることがある。</li>



<li><strong>製品の部品構造</strong>: 製造業での部品の構造管理など、製品の階層構造を管理する際に用いられる。</li>



<li><strong>XML文書の管理</strong>: XML文書は階層構造を持つため、階層型データベースでの管理が適している。</li>



<li><strong>ネットワーク管理</strong>: ネットワークトポロジーの管理など、ネットワークの構造を階層型データベースで表現する場合がある。</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">階層型データベースのポイント</div>
<ul class="wp-block-list">
<li>データを<strong>ツリー構造</strong>で表す</li>



<li>1つのデータが他の複数のデータに対して<strong>親子関係</strong>をもつ</li>
</ul>
</div>



<p class="has-text-align-center"><span class="badge-blue">サンプル</span>　<strong>階層型データベースの操作例</strong></p>



<p>以下は、親子関係を表現するクラスを作成し、組織の階層構造を表示するプログラムです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="python" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class Department:
    def __init__(self, name):
        self.name = name
        self.sub_departments = []

    def add_sub_department(self, department):
        self.sub_departments.append(department)

    def display(self, level=0):
        print('  ' * level + self.name)
        for sub_department in self.sub_departments:
            sub_department.display(level + 1)

root = Department("会社")
sales = Department("営業部")
root.add_sub_department(sales)
sales.add_sub_department(Department("東京営業部"))
sales.add_sub_department(Department("大阪営業部"))

root.display()

# 会社
#   営業部
#     東京営業部
#     大阪営業部</pre>
</div>



<h3 class="wp-block-heading"><span id="toc7">ネットワーク型データベース</span></h3>



<p>ネットワーク型データベースは、階層型データベースに代わるデータモデルの1つで、データの関係性を以下のようなグラフ構造で表現する方法です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="502" height="346" src="https://it-biz.online/wp-content/uploads/2022/05/image-34.png" alt="ネットワーク型データベース わかりやすく" class="wp-image-6423" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-34.png 502w, https://it-biz.online/wp-content/uploads/2022/05/image-34-300x207.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-34-500x345.png 500w" sizes="(max-width: 502px) 100vw, 502px" /><figcaption class="wp-element-caption">図12：ネットワーク型データベース</figcaption></figure>



<p>ネットワーク型データベースは、複数のデータレコードが相互に関連している場合に使用されます。各レコードは、複数の「親」レコードおよび「子」レコードにリンクすることができます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、会社の組織図を考えてみると、ネットワーク型データベースでは、<strong><span class="marker-under">部下が複数の上司を持つ場合に柔軟に対応できます。</span></strong>上司と部下の関係がツリー構造で表現される階層型データベースではそれが表現できません。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="575" height="313" src="https://it-biz.online/wp-content/uploads/2023/03/image-6.png" alt="ネットワーク型データベース 例" class="wp-image-6874" srcset="https://it-biz.online/wp-content/uploads/2023/03/image-6.png 575w, https://it-biz.online/wp-content/uploads/2023/03/image-6-300x163.png 300w, https://it-biz.online/wp-content/uploads/2023/03/image-6-500x272.png 500w" sizes="(max-width: 575px) 100vw, 575px" /><figcaption class="wp-element-caption"><br>図13：ネットワーク型データベースの例(１)</figcaption></figure>
</div></div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box cocoon-block-balloon"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>また同様に下記のネットワーク型データベースを見れば、Aさんは国語と英語を受験していますが、Cさんは英語しか受験していないということが分かります。</p>
</div></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="565" height="298" src="https://it-biz.online/wp-content/uploads/2022/05/image-35.png" alt="ネットワーク型データベース" class="wp-image-6424" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-35.png 565w, https://it-biz.online/wp-content/uploads/2022/05/image-35-300x158.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-35-500x264.png 500w" sizes="(max-width: 565px) 100vw, 565px" /><figcaption class="wp-element-caption">図14：ネットワーク型データベースの例(２)</figcaption></figure>



<p>ネットワーク型データベースは従来の階層型データベースに比べて柔軟性が高く、複雑な関係を持つデータを扱うのに適しています。が、データの整合性を維持するために、<strong><span class="marker-under">リンクの数やパスの長さに制限がある場合があるという点がデメリット</span></strong>です。</p>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">ネットワーク型データベースが利用されるシステムの例</div>
<ul class="wp-block-list">
<li><strong>在庫管理システム</strong>: 商品、サプライヤー、カテゴリーなど、複数の要素間での多対多の関連性を表現する際に使用されることがある。</li>



<li><strong>航空予約システム</strong>: フライト、乗客、予約、空港など、多くのエンティティ間の複雑な関係を管理する必要があるため、ネットワーク型データベースが用いられることがある。</li>



<li><strong>製造プロセス管理</strong>: 製品、部品、供給業者、組立ラインなど、多対多の関係を持つデータを組織化し、効率的に追跡するために使用されることがある。</li>



<li><strong>アカデミックリサーチ</strong>: 複雑な研究データを扱う際、多対多の関連性を持つデータ構造を必要とすることがあるため、ネットワーク型データベースが選択されることがある。</li>



<li><strong>医療情報管理</strong>: 患者、診断、治療、医師などの多対多の関連性を持つデータを管理するのに適してる。</li>
</ul>
</div>



<h2 class="wp-block-heading"><span id="toc8">【まとめ】データベースとは？</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">このページのまとめ</div>
<ul class="wp-block-list">
<li><strong><span class="marker-under">1. リレーショナルデータベース</span></strong>
<ul class="wp-block-list">
<li><strong>構造</strong>: 表形式でデータを保存し、各テーブル間のリレーションを用いて関連付けます。</li>



<li><strong>用途</strong>: 一般的なデータ管理。多くのビジネスアプリケーションで使用されます。</li>



<li><strong>関係</strong>: 1対1、1対多、多対多の関係を表現可能。</li>



<li><strong>イメージ</strong>: エクセルのような表でデータを管理している様子。</li>
</ul>
</li>



<li><strong><span class="marker-under">2. 階層型データベース</span></strong>
<ul class="wp-block-list">
<li><strong>構造</strong>: データを親子関係の木構造で管理します。</li>



<li><strong>用途</strong>: ファイルシステム、組織図などの階層的なデータ表現。</li>



<li><strong>関係</strong>: 親子関係のみを持つ。</li>



<li><strong>イメージ</strong>: フォルダとサブフォルダのような構造。</li>
</ul>
</li>



<li><strong><span class="marker-under">3. ネットワーク型データベース</span></strong>
<ul class="wp-block-list">
<li><strong>構造</strong>: 複数の親子関係を持つことができるグラフ構造。</li>



<li><strong>用途</strong>: 複雑な多対多の関連性を持つデータ管理。</li>



<li><strong>関係</strong>: 1つの子が複数の親を持つことができる。</li>



<li><strong>イメージ</strong>: ソーシャルネットワークの友達関係のようなグラフ。</li>
</ul>
</li>
</ul>
</div>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【SQL】window関数の基本/意味や使い方を３分で解説</title>
		<link>https://it-biz.online/it-skills/sql-window/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Tue, 03 Oct 2023 00:00:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8408</guid>

					<description><![CDATA[window関数は、データベースのテーブル内の行に関連する情報を取得するための特別な種類のSQL関数です。 参考　SQLとは？（初心者向け解説） 具体的には、ある行を中心に、その前後の行を「window」として捉え、その [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong><span class="marker-under">window関数</span></strong>は、<a href="https://it-biz.online/it-skills/database/">データベース</a>のテーブル内の行に関連する情報を取得するための特別な種類のSQL関数です。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql/">SQLとは？（初心者向け解説）</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>名前に「window」と付いているのは、この関数が「視点（ウインドウ）」を移動させながら、その「ウインドウ」内のデータに基づいて計算を行うからです。</p>
</div></div>



<p>具体的には、ある行を中心に、その前後の行を「window」として捉え、その範囲内のデータを使って計算を行うイメージ。例えば、4日間の平均売上を求めたいとき、1日目、2日目、3日目、4日目の売上をウインドウ（＝計算範囲）として捉え、その平均を計算する、というようなことがwindow関数で可能です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="446" height="229" src="https://it-biz.online/wp-content/uploads/2023/10/image.png" alt="window関数" class="wp-image-8411" srcset="https://it-biz.online/wp-content/uploads/2023/10/image.png 446w, https://it-biz.online/wp-content/uploads/2023/10/image-300x154.png 300w" sizes="(max-width: 446px) 100vw, 446px" /><figcaption class="wp-element-caption">図1：window関数のイメージ</figcaption></figure>



<p>このページではwindow関数の基本を１からわかりやすく初心者向けに解説します。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>window関数の基本概念
<ul class="wp-block-list">
<li>window関数と通常の集計関数の違い</li>
</ul>
</li>



<li>基本的なwindow関数の概要
<ul class="wp-block-list">
<li><code>OVER</code>句とその構成要素</li>



<li>window関数の実際の例</li>
</ul>
</li>
</ul>
</div>
</div></div>



<p>プログラマーやシステムエンジニアを目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい基本知識</span></strong>です。是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql-abc/">【初心者向け】SQLの基本構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">window関数とは？</a><ol><li><a href="#toc2" tabindex="0">window関数の構文ルール</a></li></ol></li><li><a href="#toc3" tabindex="0">よく使われるwindow関数の紹介</a><ol><li><a href="#toc4" tabindex="0">1. ROW_NUMBER()</a></li><li><a href="#toc5" tabindex="0">2. RANK()</a></li><li><a href="#toc6" tabindex="0">3. DENSE_RANK()</a></li><li><a href="#toc7" tabindex="0">4. NTILE(n)</a></li><li><a href="#toc8" tabindex="0">5. LAG()</a></li><li><a href="#toc9" tabindex="0">6. LEAD()</a></li><li><a href="#toc10" tabindex="0">7. FIRST_VALUE(), LAST_VALUE()</a></li></ol></li><li><a href="#toc11" tabindex="0">まとめ：window関数とは？</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">window関数とは？</span></h2>



<p>window関数は、SQLの強力な機能の1つで、各行に対して、ある「window」と呼ばれる範囲内の行を基に計算を行う関数です。これにより、<strong>各行の相対的な情報</strong>、たとえば「この行の前の行の値は何か？」や「このグループ内でのこの行のランクは？」などを求めることができます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>window関数は通常の集計関数と異なり、結果セットの行数を変えずに各行に対して情報を提供します。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">window関数の構文ルール</span></h3>



<p>window関数を使用する際の基本的な構文は以下のようになります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;関数名>(&lt;式>) OVER (
    PARTITION BY &lt;分割列>
    ORDER BY &lt;並び替え列>
    &lt;フレーム範囲指定>
)</pre>



<ol class="wp-block-list">
<li><strong><code><span class="bold-blue">&lt;関数名&gt;(&lt;式&gt;)</span></code></strong>:
<ul class="wp-block-list">
<li>使用するwindow関数の名前と、その関数に渡す引数または式。</li>



<li>OVER はwindow関数を利用しますよ！という宣言・印だと理解すればOK。</li>
</ul>
</li>



<li><strong><code><span class="bold-blue">PARTITION BY &lt;分割列&gt;</span></code></strong>:
<ul class="wp-block-list">
<li><strong><code>PARTITION BY</code></strong>オプションを使って、データを特定の列の値に基づいてグループに分けることができる。→これにより、各グループ内でwindow関数が適用される。</li>



<li><a href="https://it-biz.online/it-skills/group-by/">GROUP BY</a> と同じようなイメージでOK。</li>
</ul>
</li>



<li><strong><code><span class="bold-blue">ORDER BY &lt;並び替え列&gt;</span></code></strong>:
<ul class="wp-block-list">
<li>ウインドウ内のデータの順序を定義します。この順序は、ランキング関数や前後の行との比較を行う関数など、関数の動作に影響を与えます。</li>
</ul>
</li>



<li><strong><code><span class="bold-blue">&lt;フレーム範囲指定&gt;</span></code></strong>:
<ul class="wp-block-list">
<li>window関数がどの範囲のデータを考慮して計算を行うかを指定します。例えば「現在の行から2行前まで」や「現在の行から次の行まで」といった具体的な範囲を定義できます。指定しない場合は、PARTITION全体が考慮されるのがデフォルトです。</li>
</ul>
</li>
</ol>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>と、文字だけではイメージしづらいかと思いますので、具体例を用いながらご説明します。</p>
</div></div>



<p class="has-text-align-center"><span class="badge-blue">サンプル</span>　<strong><code>students</code>テーブルの例</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">| id | name    | score |
|----|---------|-------|
| 1  | Alice   | 85    |
| 2  | Bob     | 90    |
| 3  | Charlie | 85    |
| 4  | David   | 92    |
| 5  | Eve     | 88    |
|----|---------|-------|</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>↑のテーブルを例に説明します。このテーブルは5人の生徒のテストのスコアが記録されています。</p>
</div></div>



<p>ここでは代表的なwindow関数の１つ、<code>ROW_NUMBER()</code>を使用してスコアの高い順にランキングをつけたいと考えてみます。その例が↓。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT
  name,
  score,
  ROW_NUMBER() OVER (ORDER BY score DESC) AS rank
FROM
  students;

/* 結果
|---------|-------|------|
| name    | score | rank |
|---------|-------|------|
| David   | 92    | 1    |
| Bob     | 90    | 2    |
| Eve     | 88    | 3    |
| Alice   | 85    | 4    |
| Charlie | 85    | 5    |
|---------|-------|------|
*/</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/select/">SELECT文の基本</a></p>



<ul class="wp-block-list">
<li><code>ROW_NUMBER()</code>関数は、指定された<code>ORDER BY</code>の順序に従って、各行にユニークな連番を割り当てる。</li>



<li><code>OVER (ORDER BY score DESC)</code>部分は、スコアを降順に並べ替えて、その順番に従って連番を付けることを指示。</li>



<li>結果、最もスコアが高いDavidが1位、次に高いBobが2位というようにランキングが付けられる。AliceとCharlieは同じスコアですが、<code>ROW_NUMBER()</code>はユニークな値を割り当てるため、異なるランクが付けられています。</li>
</ul>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="655" height="225" src="https://it-biz.online/wp-content/uploads/2023/10/image-1.png" alt="window関数の基本" class="wp-image-8412" srcset="https://it-biz.online/wp-content/uploads/2023/10/image-1.png 655w, https://it-biz.online/wp-content/uploads/2023/10/image-1-300x103.png 300w, https://it-biz.online/wp-content/uploads/2023/10/image-1-500x172.png 500w" sizes="(max-width: 655px) 100vw, 655px" /><figcaption class="wp-element-caption">図2：window関数の基本</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この基本的な動作を理解することで、他のウインドウ関数もより理解しやすくなるでしょう。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">【補足】PARTITION</span></div><div class="tab-caption-box-content block-box-content box-content">
<p><code>PARTITION BY</code> を使うことで、window関数を特定のカテゴリやグループごとに適用することができます。先ほどの、<code>students</code> テーブルに <code>class</code> 列を追加し、その上で <code>ROW_NUMBER()</code> を使用してクラスごとに順番をつけてみましょう。</p>



<p>↓のテーブルを利用して、クラスごとにスコアの高い順にランキングをつけてみます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/* 利用するテーブル
|----|---------|-------|-------|
| id | name    | score | class |
|----|---------|-------|-------|
| 1  | Alice   | 85    | A     |
| 2  | Bob     | 90    | B     |
| 3  | Charlie | 85    | A     |
| 4  | David   | 92    | B     |
| 5  | Eve     | 88    | A     |
|----|---------|-------|-------|
*/

-- クエリ
SELECT
  name,
  score,
  class,
  ROW_NUMBER() OVER (PARTITION BY class ORDER BY score DESC) AS rank_in_class
FROM
  students
ORDER BY
  class, rank_in_class;

/* 結果
| name    | score | class | rank_in_class |
|---------|-------|-------|---------------|
| Eve     | 88    | A     | 1             |
| Alice   | 85    | A     | 2             |
| Charlie | 85    | A     | 3             |
| David   | 92    | B     | 1             |
| Bob     | 90    | B     | 2             |
|---------|-------|-------|---------------|
*/</pre>



<p class="has-text-align-center"><strong>解説</strong></p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="699" height="233" src="https://it-biz.online/wp-content/uploads/2023/10/image-2.png" alt="window関数/PARTITION" class="wp-image-8413" srcset="https://it-biz.online/wp-content/uploads/2023/10/image-2.png 699w, https://it-biz.online/wp-content/uploads/2023/10/image-2-300x100.png 300w, https://it-biz.online/wp-content/uploads/2023/10/image-2-500x167.png 500w" sizes="(max-width: 699px) 100vw, 699px" /><figcaption class="wp-element-caption">図3：window関数/PARTITION</figcaption></figure>



<ul class="wp-block-list">
<li><code>PARTITION BY class</code> によって、データはクラスごとに分けられる→結果、各クラス内で独立したランキングが生成される。</li>



<li><code>ORDER BY score DESC</code> により、各クラス内でのランキングはスコアの降順にソートされる。<br>→クラスAではEveが1位、クラスBではDavidが1位に。</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このように、<code>PARTITION BY</code> を使うことで、ウインドウ関数を特定のカテゴリやグループごとに適用することができます。</p>
</div></div>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">フレーム範囲指定</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>フレーム範囲指定は、window関数を適用する際の対象範囲をより細かく制御するためのものです。通常、window関数は特定の行に基づいて、その行を中心に前後の範囲で計算を行いますが、フレーム範囲指定を使うことでその計算範囲を具体的に定義することができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;関数名>(&lt;式>) OVER (
    PARTITION BY &lt;分割列>
    ORDER BY &lt;並び替え列>
    ROWS &lt;範囲指定>
)</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><code>ROWS</code> の代わりに <code>RANGE</code> も利用できますが、その動作は異なります。ここでは、まず <code>ROWS</code> を用いたフレーム範囲指定について詳しく説明します。</p>
</div></div>



<p>以下は、フレーム範囲指定の一般的な使用方法の例です。</p>



<ol class="wp-block-list">
<li><strong>ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING</strong>:
<ul class="wp-block-list">
<li>現在の行を中心に、1行前と1行後を含む範囲で関数を適用します。</li>
</ul>
</li>



<li><strong>ROWS UNBOUNDED PRECEDING</strong>:
<ul class="wp-block-list">
<li>現在の行から、最初の行までの範囲で関数を適用します。</li>
</ul>
</li>



<li><strong>ROWS 2 FOLLOWING</strong>:
<ul class="wp-block-list">
<li>現在の行から、2行後までの範囲で関数を適用します。</li>
</ul>
</li>
</ol>



<p class="has-text-align-center"><span class="badge-blue">サンプル</span>　<strong>3日移動平均の計算</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/* 利用するsalesテーブル
|------------|--------------|
| date       | sales_amount |
|------------|--------------|
| 2023-01-01 | 100          |
| 2023-01-02 | 110          |
| 2023-01-03 | 90           |
| 2023-01-04 | 95           |
| 2023-01-05 | 105          |
|------------|--------------|
*/

-- 各日の売上の3日移動平均を計算するためのSQLクエリ
SELECT
  date,
  sales_amount,
  AVG(sales_amount) OVER (
    ORDER BY date
    ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
  ) AS moving_avg_3days
FROM
  sales;

/* 結果
|------------|--------------|------------------|
| date       | sales_amount | moving_avg_3days |
|------------|--------------|------------------|
| 2023-01-01 | 100          | 105              |
| 2023-01-02 | 110          | 100              |
| 2023-01-03 | 90           | 98.33            |
| 2023-01-04 | 95           | 96.67            |
| 2023-01-05 | 105          | 100              |
|------------|--------------|------------------|
*/</pre>



<p class="has-text-align-center"><strong>解説</strong></p>



<ul class="wp-block-list">
<li><code>ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING</code> によって、各日の売上の1日前、当日、1日後の3日間のデータを対象として平均を計算。</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>フレーム範囲指定を利用することで、累積計算や移動平均、前後のデータとの差分計算など、さまざまな集計処理を行うことができます。</p>
</div></div>
</div></div>



<h2 class="wp-block-heading"><span id="toc3">よく使われるwindow関数の紹介</span></h2>



<p>window関数は非常に多岐にわたるため、ここでは特によく使われるwindow関数をいくつか使い方を簡潔に紹介します。</p>



<h3 class="wp-block-heading"><span id="toc4">1. ROW_NUMBER()</span></h3>



<ul class="wp-block-list">
<li><strong>説明</strong>: 各行に一意の連続する番号を割り当てます。主にランキングや行番号付けに使用されます。</li>



<li><strong>例</strong>: 各商品の売上順にランキングをつける場合</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">ROW_NUMBER() OVER (ORDER BY sales_amount DESC)</pre>



<p class="has-text-align-center"><span class="badge-green">さらに詳しく→</span>　<a href="https://it-biz.online/it-skills/row_number/">ROW_NUMBER関数　</a></p>



<h3 class="wp-block-heading"><span id="toc5">2. RANK()</span></h3>



<ul class="wp-block-list">
<li><strong>説明</strong>: 各行にランキングを割り当てますが、同じ値を持つ行には同じランクを割り当て、次のランクはスキップされます。</li>



<li><strong>例</strong>: 各学生のテストスコアのランキングを付ける場合</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RANK() OVER (ORDER BY score DESC)</pre>



<h3 class="wp-block-heading"><span id="toc6">3. DENSE_RANK()</span></h3>



<ul class="wp-block-list">
<li><strong>説明</strong>: <code>RANK()</code>と同様にランキングを割り当てますが、同じ値を持つ行には同じランクを割り当て、次のランクはスキップされません。</li>



<li><strong>例</strong>: スポーツのポイントランキングで、同点者がいても次の順位をスキップせずに付ける場合</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">DENSE_RANK() OVER (ORDER BY points DESC)</pre>



<h3 class="wp-block-heading"><span id="toc7">4. NTILE(n)</span></h3>



<ul class="wp-block-list">
<li><strong>説明</strong>: データを指定した<code>n</code>の数だけの等しいサイズのバケットに分割します。</li>



<li><strong>例</strong>: 学生を4つのグループに分ける場合</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">NTILE(4) OVER (ORDER BY score)</pre>



<h3 class="wp-block-heading"><span id="toc8">5. LAG()</span></h3>



<ul class="wp-block-list">
<li><strong>説明</strong>: 指定したカラムの前の行の値を取得します。</li>



<li><strong>例</strong>: 各月の売上と前月の売上の差分を計算する場合</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sales_amount - LAG(sales_amount) OVER (ORDER BY month)</pre>



<h3 class="wp-block-heading"><span id="toc9">6. LEAD()</span></h3>



<ul class="wp-block-list">
<li><strong>説明</strong>: 指定したカラムの次の行の値を取得します。</li>



<li><strong>例</strong>: 各月の売上と次月の売上の差分を計算する場合</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sales_amount - LEAD(sales_amount) OVER (ORDER BY month)</pre>



<h3 class="wp-block-heading"><span id="toc10">7. FIRST_VALUE(), LAST_VALUE()</span></h3>



<ul class="wp-block-list">
<li><strong>説明</strong>: ウィンドウの最初の値や最後の値を取得します。</li>



<li><strong>例</strong>: 各月の売上とその四半期の最初の月の売上を比較する場合</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">sales_amount - FIRST_VALUE(sales_amount) OVER (ORDER BY month)</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>これらの関数は、ビジネスやデータ分析の現場で頻繁に使われます。適切な関数を選ぶことで、複雑な集計や解析を効率的に行うことができます。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc11">まとめ：window関数とは？</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<ul class="wp-block-list">
<li><strong><span class="bold-blue">定義</span></strong>: window関数は、結果セットのサブセット（ウィンドウ）上での計算を行うためのSQL関数。</li>



<li><strong><span class="bold-blue">特性</span></strong>: 通常の集計関数とは異なり、各行の詳細を保持しつつ集計を行うことが可能。
<ul class="wp-block-list">
<li><strong>PARTITION BY</strong>: <code>PARTITION BY</code>句を使用して、結果セットを特定のカテゴリや部分ごとに分けて関数を適用することが可能。</li>



<li><strong>ORDER BY</strong>: ウィンドウ内の行の順序を定義するために使用される。</li>



<li><strong>フレーム範囲指定</strong>: <code>ROWS</code>や<code>RANGE</code>を用いて、計算の対象となる行の範囲を具体的に定義することが可能。</li>
</ul>
</li>



<li><strong><span class="bold-blue">主な用途</span></strong>: ランキング、移動平均、累積合計など、特定のウィンドウ内での計算を行う場合に使用されます。</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/* 利用するテーブル
|------------|------------|--------------|
| date       | product_id | sales_amount |
|------------|------------|--------------|
| 2023-01-01 | A          | 100          |
| 2023-01-02 | A          | 110          |
| 2023-01-03 | A          | 90           |
| 2023-01-01 | B          | 95           |
| 2023-01-02 | B          | 105          |
| 2023-01-03 | B          | 105          |
|------------|------------|--------------|
*/

-- 各製品ごとに日付を基にした売上の3日移動平均を計算するSQLクエリ
SELECT
  date,
  product_id,
  sales_amount,
  AVG(sales_amount) OVER (
    PARTITION BY product_id
    ORDER BY date
    ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
  ) AS moving_avg_3days
FROM
  sales;

/* 結果
|------------|------------|--------------|------------------|
| date       | product_id | sales_amount | moving_avg_3days |
|------------|------------|--------------|------------------|
| 2023-01-01 | A          | 100          | 105              |
| 2023-01-02 | A          | 110          | 100              |
| 2023-01-03 | A          | 90           | 100              |
| 2023-01-01 | B          | 95           | 100              |
| 2023-01-02 | B          | 105          | 101.67           |
| 2023-01-03 | B          | 105          | 105              |
|------------|------------|--------------|------------------|
*/

-- PARTITION BY product_id により、各製品ごとにウィンドウ関数を適用。
-- ORDER BY date で、日付の昇順にデータを整列しています。
-- ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING で、各日の売上の1日前、当日、1日後の3日間のデータを対象として平均を計算。</pre>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box">
<div class="speech-person">
<figure class="speech-icon"><img decoding="async" class="speech-icon-image" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" /></figure>
<div class="speech-name"></div>
</div>
<div class="speech-balloon">
<p><!-- wp:paragraph --></p>
<p>現在のスキルに今一つ満足できていないシステムエンジニア/プログラマーの方へ。</p>
<p><!-- /wp:paragraph --></p>
</div>
</div>
<p><!-- /wp:cocoon-blocks/balloon-ex-box-1 --></p>
<p><!-- wp:paragraph --></p>
<p>SQLやデータベースの仕組みを１から学習したい方（学び直したい方）向けに、現役エンジニア達のスキルを結集して <strong><span class="marker-under"><span class="fz-14px"><span class="fz-18px"><span class="fz-20px">完全無料</span></span></span></span></strong> のSQL教材を作成しました。是非この機会にブックマークを！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph {"align":"center"} --></p>
<p class="has-text-align-center" style="text-align: center;"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/it-skills/sql_roadmap/">【完全無料】SQL：初心者向け学習ロードマップ</a>　←こちらから！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【SQL】ROW_NUMBER関数（連番付与）の使い方を３分で解説</title>
		<link>https://it-biz.online/it-skills/row_number/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Fri, 06 Oct 2023 10:39:08 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8438</guid>

					<description><![CDATA[ROW_NUMBER()は、SQLのwindow関数の1つ。ROW_NUMBER関数を使用すると、結果セットの行に一意の連番を付与することができます。実際のデータには影響を与えませんが、結果として表示されるデータに番号を [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><code><strong>ROW_NUMBER()</strong></code>は、<a href="https://it-biz.online/it-skills/sql/">SQL</a>のwindow関数の1つ。<code><strong>ROW_NUMBER</strong></code>関数を使用すると、<span class="marker-under"><strong>結果セットの行に一意の連番を付与</strong></span>することができます。実際のデータには影響を与えませんが、結果として表示されるデータに番号を付けるのに便利です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT ROW_NUMBER() OVER() as rownum, *
FROM sample_data;</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/select/">SELECT文の基本</a></p>



<ul class="wp-block-list">
<li><code>ROW_NUMBER()</code>は、結果セットの行に連番を付与する関数。</li>



<li><code>ORDER BY</code>を使って、特定の順序で番号を付けることが可能。</li>



<li><code>PARTITION BY</code>を使うと、指定した列の値ごとに番号付けをリセットすることができる。</li>
</ul>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql-window/">window関数とは？</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このページでは<code><strong>ROW_NUMBER</strong></code>関数の基本を１からわかりやすく初心者向けに解説します。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>ROW_NUMBER関数の意味と使い方：構文ルール</li>



<li>ROW_NUMBER関数の利用方法：サンプルコード</li>
</ul>
</div>
</div></div>



<p>プログラマーやシステムエンジニアを目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい基本知識</span></strong>です。是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql-abc/">【初心者向け】SQLの基本構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ROW_NUMBER関数とは？</a><ol><li><a href="#toc2" tabindex="0">ROW_NUMBER関数：構文ルール</a></li></ol></li><li><a href="#toc3" tabindex="0">ROW_NUMBER関数を利用する際の注意点</a><ol><li><a href="#toc4" tabindex="0">1. 一意性の確保</a></li><li><a href="#toc5" tabindex="0">2. 性能に関する注意点</a></li><li><a href="#toc6" tabindex="0">3. ROW_NUMBER() vs RANK() vs DENSE_RANK()</a></li><li><a href="#toc7" tabindex="0">4. バージョンやデータベースの種類による違い</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ROW_NUMBER関数とは？</span></h2>



<p><code>ROW_NUMBER()</code>はSQLのウィンドウ関数の１つで、<strong><span class="marker-under">データセットの各行に一意の連続する番号（行番号）を付与するときに使用</span></strong>します。主に、行に番号をつけたい場面や特定の条件でのランキングをつけたい場面などで使用されます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>実際のデータに変更を加えるわけではなく、クエリの結果として表示されるデータに一時的に番号を付けるためのものです。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">ROW_NUMBER関数：構文ルール</span></h3>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">ROW_NUMBER() OVER (
    [PARTITION BY 列名1, 列名2, ... ]
    [ORDER BY 列名A [ASC | DESC], ... ]
)</pre>



<ul class="wp-block-list">
<li><code><span class="bold-blue">PARTITION BY</span></code>
<ul class="wp-block-list">
<li>オプション（任意）：特定の列を基にしてデータをグループ分けし、そのグループごとに行番号を1から付け直します。</li>
</ul>
</li>



<li><code><span class="bold-blue">ORDER BY</span></code>
<ul class="wp-block-list">
<li>オプション（任意）：行番号を付与する際の順序を指定するためのもので、指定した列の順に従って行番号が付与されます。</li>
</ul>
</li>
</ul>



<p class="has-text-align-center"><span class="badge-blue">サンプルコード１</span>　studentsテーブル</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/* サンプルデータ
|----|---------|-------|
| id | name    | score |
|----|---------|-------|
| 1  | Alice   | 85    |
| 2  | Bob     | 90    |
| 3  | Charlie | 85    |
| 4  | David   | 92    |
| 5  | Eve     | 88    |
|----|---------|-------|
*/

SELECT 
    ROW_NUMBER() OVER(ORDER BY score, name) as rownum,
    id, 
    name, 
    score
FROM students;

/* 実行結果
scoreの昇順（低いスコアから高いスコアへ）に基づいて行番号が付与された結果が得られる
|--------|----|---------|-------|
| rownum | id | name    | score |
|--------|----|---------|-------|
| 1      | 1  | Alice   | 85    |
| 2      | 3  | Charlie | 85    |
| 3      | 5  | Eve     | 88    |
| 4      | 2  | Bob     | 90    |
| 5      | 4  | David   | 92    |
|--------|----|---------|-------|
*/</pre>



<p class="has-text-align-center"><span class="badge-blue">サンプルコード２</span>　employeesテーブル</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/* 
サンプルデータ: employees
|----|---------|------------|--------|
| id | name    | department | salary |
|----|---------|------------|--------|
| 1  | Alice   | HR         | 5000   |
| 2  | Bob     | Sales      | 5500   |
| 3  | Charlie | HR         | 5200   |
| 4  | David   | Sales      | 5300   |
| 5  | Eve     | Sales      | 6000   |
|----|---------|------------|--------|
*/

-- 部署（department）ごとに給与（salary）の昇順で行番号を付けるクエリ
SELECT 
    ROW_NUMBER() OVER(PARTITION BY department ORDER BY salary) as rownum,
    id, 
    name,
    department,
    salary
FROM employees;

/* 実行結果
|--------|----|---------|------------|--------|
| rownum | id | name    | department | salary |
|--------|----|---------|------------|--------|
| 1      | 1  | Alice   | HR         | 5000   |
| 2      | 3  | Charlie | HR         | 5200   |
| 1      | 4  | David   | Sales      | 5300   |
| 2      | 2  | Bob     | Sales      | 5500   |
| 3      | 5  | Eve     | Sales      | 6000   |
|--------|----|---------|------------|--------|
*/</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このクエリの実行結果を見ると、<code>PARTITION BY</code>の効果により、部署ごとに行番号が1から始まっています。そして、その中で<code>ORDER BY</code>により給与の昇順に行番号が付けられていることがわかります。</p>
</div></div>



<p>このように、<code>PARTITION BY</code>と<code>ORDER BY</code>を組み合わせることで、特定のカテゴリやグループ内での順序付けを行うことができます。</p>



<h2 class="wp-block-heading"><span id="toc3">ROW_NUMBER関数を利用する際の注意点</span></h2>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>最後にROW_NUMBER関数を利用する際の注意点について補足しておきます。</p>



<p>この関数はよく利用する関数でもあるので、特に以下の点を押さえておくことが重要です。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc4">1. 一意性の確保</span></h3>



<p><code>ROW_NUMBER()</code>関数は、指定した順序で行に一意の番号を付与します。しかし、<strong><span class="marker-under">同じ値を持つ行（つまり順序が同じ行）が複数存在する場合、それらの行の順序はデータベースエンジンに依存する</span></strong>ため、必ずしも一定ではありません。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/* サンプルデータ: students
|----|---------|-------|
| id | name    | score |
|----|---------|-------|
| 1  | Alice   | 85    |
| 2  | Bob     | 85    |
| 3  | Charlie | 90    |
|----|---------|-------|
*/

SELECT 
    ROW_NUMBER() OVER(ORDER BY score) as rownum,
    id, 
    name, 
    score
FROM students;

/* 実行結果 (順序は不確定)
|--------|----|---------|-------|
| rownum | id | name    | score |
|--------|----|---------|-------|
| 1      | ?  | ?       | 85    |
| 2      | ?  | ?       | 85    |
| 3      | 3  | Charlie | 90    |
|--------|----|---------|-------|
*/</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このクエリでは、AliceとBobの<code>score</code>が同じであるため、それらに付与される行番号の順序は不確定です。</p>
</div></div>



<p>一意の順序を確保するためには、<code>ORDER BY</code>句に複数の列を追加することで、一意性を強制することができます。以下のように、<code>score</code>の後に<code>id</code>を追加してみます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/* サンプルデータ: students
|----|---------|-------|
| id | name    | score |
|----|---------|-------|
| 1  | Alice   | 85    |
| 2  | Bob     | 85    |
| 3  | Charlie | 90    |
|----|---------|-------|
*/

SELECT 
    ROW_NUMBER() OVER(ORDER BY score, id) as rownum,
    id, 
    name, 
    score
FROM students;

/* 実行結果 (一意の順序が確保される)
|--------|----|---------|-------|
| rownum | id | name    | score |
|--------|----|---------|-------|
| 1      | 1  | Alice   | 85    |
| 2      | 2  | Bob     | 85    |
| 3      | 3  | Charlie | 90    |
|--------|----|---------|-------|
*/</pre>



<p>このクエリでは、<code>score</code>が同じ場合、次に<code>id</code>の順番を考慮するため、一意の順序が確保されます。</p>



<h3 class="wp-block-heading"><span id="toc5">2. 性能に関する注意点</span></h3>



<p>大量のデータを扱う場合、<code>ROW_NUMBER()</code>関数の計算には時間がかかることがあります。特に<code>PARTITION BY</code>や<code>ORDER BY</code>を使った複雑なソートや分割を行う際には、パフォーマンスの低下が考えられます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>適切なインデックスの作成やクエリの最適化を検討することが重要です。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc6">3. ROW_NUMBER() vs RANK() vs DENSE_RANK()</span></h3>



<p><code>ROW_NUMBER()</code>以外にも、<code>RANK()</code>や<code>DENSE_RANK()</code>などの関数があります。これらの関数も行に番号を付与するのに使用されますが、同じ値を持つ行に対する取り扱いが異なります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>使用する関数を選択する際には、それぞれの動作を理解して、目的に合った関数を選択することが重要です。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc7">4. バージョンやデータベースの種類による違い</span></h3>



<p><code>ROW_NUMBER()</code>関数は、多くのリレーショナルデータベースシステムでサポートされていますが、使用できるバージョンや具体的な動作、性能などにはデータベースの種類やバージョンによる違いがあります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>公式のドキュメントやリファレンスを確認することをおすすめします。</p>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<p class="has-text-align-center"><strong>ROW_NUMBER関数のまとめ</strong></p>



<ul class="wp-block-list">
<li><code>ROW_NUMBER()</code>は、結果セットの行に連番を付与する関数です。</li>



<li><code>ORDER BY</code>を使って、特定の順序で番号を付けることができます。</li>



<li><code>PARTITION BY</code>を使うと、指定した列の値ごとに番号付けをリセットすることができます。</li>
</ul>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box">
<div class="speech-person">
<figure class="speech-icon"><img decoding="async" class="speech-icon-image" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" /></figure>
<div class="speech-name"></div>
</div>
<div class="speech-balloon">
<p><!-- wp:paragraph --></p>
<p>現在のスキルに今一つ満足できていないシステムエンジニア/プログラマーの方へ。</p>
<p><!-- /wp:paragraph --></p>
</div>
</div>
<p><!-- /wp:cocoon-blocks/balloon-ex-box-1 --></p>
<p><!-- wp:paragraph --></p>
<p>SQLやデータベースの仕組みを１から学習したい方（学び直したい方）向けに、現役エンジニア達のスキルを結集して <strong><span class="marker-under"><span class="fz-14px"><span class="fz-18px"><span class="fz-20px">完全無料</span></span></span></span></strong> のSQL教材を作成しました。是非この機会にブックマークを！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph {"align":"center"} --></p>
<p class="has-text-align-center" style="text-align: center;"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/it-skills/sql_roadmap/">【完全無料】SQL：初心者向け学習ロードマップ</a>　←こちらから！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【SQL】COUNT関数を１分でわかりやすく解説</title>
		<link>https://it-biz.online/it-skills/sql-count/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Wed, 08 Jun 2022 00:00:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=6485</guid>

					<description><![CDATA[SQLを利用してテーブルのレコード数を調べたいときに便利なCOUNT関数について初心者向けにわかりやすく１分で解説します。 参考　SQLとは？ このページではCOUNT関数の構文ルール / 利用する際の注意点を初心者でも [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>SQLを利用してテーブルのレコード数を調べたいときに便利な<strong>COUNT関数</strong>について初心者向けにわかりやすく１分で解説します。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql/">SQLとは？</a></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT COUNT(対象カラム)
FROM テーブル名
WHERE 条件（任意）;</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>COUNT関数は指定したテーブル/カラムに存在するレコード数を返してくれます。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="575" height="261" src="https://it-biz.online/wp-content/uploads/2022/06/image-23.png" alt="count関数のイメージ" class="wp-image-6488" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-23.png 575w, https://it-biz.online/wp-content/uploads/2022/06/image-23-300x136.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-23-500x227.png 500w" sizes="(max-width: 575px) 100vw, 575px" /><figcaption class="wp-element-caption">図1：count関数のイメージ</figcaption></figure>



<p><a href="https://it-biz.online/it-skills/select-distinct/">DISTINCTキーワード</a>や<a href="https://it-biz.online/it-skills/group-by/">GROUP BYキーワード</a>と同時に利用したりすると、できることがたくさん増えるので理解必須の基本知識です。</p>
</div></div>



<p>このページではCOUNT関数の構文ルール / 利用する際の注意点を初心者でも理解できるように１分で解説します。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>COUNT関数の使い方/構文ルール</li>



<li>COUNT関数の注意点：NULLのカウントについて</li>



<li>Tips：DISTINCTキーワードとの合わせ技</li>
</ul>
</div>
</div></div>



<p>プログラマー/システムエンジニアを目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい超・重要知識</span></strong>です。是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql-abc/">【初心者向け】SQLの基本構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">SQL：COUNT関数の基本</a><ol><li><a href="#toc2" tabindex="0">カラムを指定してCOUNT関数を利用する</a></li></ol></li><li><a href="#toc3" tabindex="0">COUNT関数の注意点</a></li><li><a href="#toc4" tabindex="0">Tips：DISTINCTキーワードとの合わせ技</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">SQL：COUNT関数の基本</span></h2>



<p>COUNT関数の基本構文ルールは以下の通り。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT COUNT(対象カラム)
FROM テーブル名
WHERE 条件（任意）;</pre>



<p>レコード数をカウントしたいカラム名を "<strong>COUNT</strong>" で囲んであげるだけの簡単な構文です。もしくは、カラムを指定せずに *（アスタリスク）でテーブルのレコード数をシンプルに取得することも可能。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以下のテーブルに含まれるレコード数をカウントしてみます。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="526" height="327" src="https://it-biz.online/wp-content/uploads/2022/06/image-24.png" alt="" class="wp-image-6495" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-24.png 526w, https://it-biz.online/wp-content/uploads/2022/06/image-24-300x187.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-24-500x311.png 500w" sizes="(max-width: 526px) 100vw, 526px" /></figure>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT COUNT(*)
FROM MemberList;

-- 結果「8」</pre>



<p>結果は「８」となります。レコード数が８個あるので、その結果が返ってきてくるということ。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="575" height="261" src="https://it-biz.online/wp-content/uploads/2022/06/image-23.png" alt="" class="wp-image-6488" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-23.png 575w, https://it-biz.online/wp-content/uploads/2022/06/image-23-300x136.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-23-500x227.png 500w" sizes="(max-width: 575px) 100vw, 575px" /></figure>



<h3 class="wp-block-heading"><span id="toc2">カラムを指定してCOUNT関数を利用する</span></h3>



<p>先ほどは <strong>COUNT(*)</strong> のようにカラムを指定せずに単純にレコード数をカウントしました。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT COUNT(*)
FROM MemberList;
--カラムを指定せずにレコード数をカウント</pre>



<p>ですが、例えば Department カラムではNULL値が２行含まれており、このNULLを除外したレコード件数をカウントしたいような場合も存在します。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="526" height="327" src="https://it-biz.online/wp-content/uploads/2022/06/image-24.png" alt="" class="wp-image-6495" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-24.png 526w, https://it-biz.online/wp-content/uploads/2022/06/image-24-300x187.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-24-500x311.png 500w" sizes="(max-width: 526px) 100vw, 526px" /></figure>



<p>この場合は、Departmentカラムを以下のように指定してカウントすることで実現することができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT COUNT(Department)
FROM MemberList;
--カラム "Department" を指定してカウント</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この場合、NULL値がカウントされないので、結果は「６」となります。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc3">COUNT関数の注意点</span></h2>



<p>COUNT関数の大きな注意点がこの<strong>NULLのカウント方法</strong>にあります。</p>



<p>例えば、以下のテーブルをカラムを指定せずにカウントしてみます。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="576" height="307" src="https://it-biz.online/wp-content/uploads/2022/06/image-25.png" alt="" class="wp-image-6497" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-25.png 576w, https://it-biz.online/wp-content/uploads/2022/06/image-25-300x160.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-25-500x266.png 500w" sizes="(max-width: 576px) 100vw, 576px" /><figcaption class="wp-element-caption">すべてのカラムがNULL</figcaption></figure>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT COUNT(*) FROM MemberList;
--カラムを指定せずにレコード数をカウント</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>普通に考えるとどのカラムもNULLなので、結果は０となりそうですが、<strong><span class="marker-under">実はこのSQLを実行すると「８」が返って来ます。</span></strong></p>
</div></div>



<p>これは、COUNT関数が以下のような性質を持っていることが理由です。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">COUNT関数の仕組み</div>
<ul class="wp-block-list">
<li><strong>COUNT(*)</strong> は<strong><span class="marker-under">NULLも含めて</span></strong>レコード数をカウントする</li>



<li><strong>COUNT(カラム名)</strong> はNULLを除外してレコード数をカウントする</li>
</ul>
</div>
</div>



<p>つまり、以下のSQLを実行した場合は「８」と「０」が取得されるということ。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT COUNT(*), COUNT(Department)
  FROM MemberList;

--COUNT(*)⇒8  /  COUNT(Department)⇒0</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以上がCOUNT関数の大きな注意点です。SQL初心者にとって陥りがちな罠の１つですので、しっかりと押さえておきましょう。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc4">Tips：DISTINCTキーワードとの合わせ技</span></h2>



<p>COUNT関数は<a href="https://it-biz.online/it-skills/select-distinct/">DISTINCT</a>と組み合わせて利用することも可能です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT COUNT(DISTINCT Department)
FROM MemberList;

-- 結果「3」
-- Department列の重複を削除してカウント</pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="526" height="327" src="https://it-biz.online/wp-content/uploads/2022/06/image-24.png" alt="" class="wp-image-6495" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-24.png 526w, https://it-biz.online/wp-content/uploads/2022/06/image-24-300x187.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-24-500x311.png 500w" sizes="(max-width: 526px) 100vw, 526px" /></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><strong><span class="marker-under">Department列には「総務部」「財務部」「営業部」の３つの重複しないレコードが存在するため、結果は３となります。</span></strong></p>



<p>先ほど解説した通り、COUNT(カラム名) とした場合はNULLを除外するので４では返って来ません。</p>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>利用する<a href="https://it-biz.online/it-skills/dbms/">DBMS</a>によっては COUNT(DISTINCT カラム名) の構文が許容されていない場合もあります。その場合は、以下のようにDISTINCTをサブクエリとして利用することで同様の処理を実現することができます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT COUNT(*)
FROM (SELECT DepartMent FROM MemberList );</pre>
</div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">このページのまとめ</div>
<ul class="wp-block-list">
<li>COUNT関数はレコード件数を返す</li>



<li><strong>COUNT(*)</strong> は<strong><span class="marker-under">NULLも含めて</span></strong>レコード数をカウントする</li>



<li><strong>COUNT(カラム名)</strong> はNULLを除外してレコード数をカウントする</li>
</ul>
</div>



<p class="has-text-align-center"><strong>より実践的なサンプルコード</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- テーブルの作成
CREATE TABLE students (
    id INT PRIMARY KEY,
    first_name VARCHAR(255),
    last_name VARCHAR(255),
    age INT
);

-- データの挿入
INSERT INTO students (id, first_name, last_name, age)
VALUES (1, 'John', 'Doe', 20);

INSERT INTO students (id, first_name, last_name, age)
VALUES (2, 'Jane', 'Smith', NULL);

INSERT INTO students (id, first_name, last_name, age)
VALUES (3, 'Bob', 'Johnson', 22);

INSERT INTO students (id, first_name, last_name, age)
VALUES (4, 'Alice', 'Martin', 24);

-- SELECT COUNT
SELECT COUNT(*) FROM students;

/* 結果
4
*/

--age 列を指定してカウント
SELECT COUNT(age) FROM students;

/* 結果
3

COUNT(age)はageカラムのNULL値を除外してレコード数をカウントします。
このサンプルコードでは1つのレコードにNULL値が含まれているため、
カウントは4から1つ減って3になります。
*/</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/create-table/">CREATE TABLE</a> / <a href="https://it-biz.online/it-skills/sql-insert/">INSERT</a></p>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box">
<div class="speech-person">
<figure class="speech-icon"><img decoding="async" class="speech-icon-image" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" /></figure>
<div class="speech-name"></div>
</div>
<div class="speech-balloon">
<p><!-- wp:paragraph --></p>
<p>現在のスキルに今一つ満足できていないシステムエンジニア/プログラマーの方へ。</p>
<p><!-- /wp:paragraph --></p>
</div>
</div>
<p><!-- /wp:cocoon-blocks/balloon-ex-box-1 --></p>
<p><!-- wp:paragraph --></p>
<p>SQLやデータベースの仕組みを１から学習したい方（学び直したい方）向けに、現役エンジニア達のスキルを結集して <strong><span class="marker-under"><span class="fz-14px"><span class="fz-18px"><span class="fz-20px">完全無料</span></span></span></span></strong> のSQL教材を作成しました。是非この機会にブックマークを！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph {"align":"center"} --></p>
<p class="has-text-align-center" style="text-align: center;"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/it-skills/sql_roadmap/">【完全無料】SQL：初心者向け学習ロードマップ</a>　←こちらから！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【SQL】SELECT DISTINCT（重複レコードの除外）を１分で解説</title>
		<link>https://it-biz.online/it-skills/select-distinct/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Tue, 07 Jun 2022 00:00:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=6467</guid>

					<description><![CDATA[SQLのSELECT文で用いられるDISTINCTの意味と使い方をわかりやすく１分で解説します。 参考　SQLとは？ DISTINCTはSELECTした結果から "重複するレコードを除外する" オプションです。 プログラ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>SQLの<a href="https://it-biz.online/it-skills/select/">SELECT文</a>で用いられるDISTINCTの意味と使い方をわかりやすく１分で解説します。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql/">SQLとは？</a></p>



<p><strong><span class="marker-under">DISTINCTはSELECTした結果から "重複するレコードを除外する" オプション</span></strong>です。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="880" height="235" src="https://it-biz.online/wp-content/uploads/2022/06/image-21.png" alt="SELECT DISTINCT" class="wp-image-6480" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-21.png 880w, https://it-biz.online/wp-content/uploads/2022/06/image-21-300x80.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-21-500x134.png 500w, https://it-biz.online/wp-content/uploads/2022/06/image-21-768x205.png 768w, https://it-biz.online/wp-content/uploads/2022/06/image-21-800x214.png 800w" sizes="(max-width: 880px) 100vw, 880px" /><figcaption class="wp-element-caption">図1：DISTINCTキーワード</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このページではDISTINCTの構文ルールや利用方法の注意点を解説します。難しい内容ではないので１分ほどでマスターできます。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-hand-o-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>DISTINCTの使い方：構文ルール</li>



<li>DISTINCTで複数のカラムを指定する場合</li>



<li>DISTINCTの注意点</li>
</ul>
</div>
</div></div>



<p>プログラマー/システムエンジニアを目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい超・基本知識</span></strong>です。是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/select/">SELECT文の基本</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">SELECT：DISTINCTの構文ルール</a><ol><li><a href="#toc2" tabindex="0">NULLも１種類としてカウント</a></li><li><a href="#toc3" tabindex="0">DISTINCTで複数のカラムを指定する場合</a></li></ol></li><li><a href="#toc4" tabindex="0">DISTINCTキーワードの注意点</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">SELECT：DISTINCTの構文ルール</span></h2>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 基本形
SELECT DISTINCT カラム名
FROM テーブル名;

-- 複数のカラムに適用
SELECT DISTINCT カラム名1, カラム名2
FROM テーブル名;</pre>



<ol class="wp-block-list">
<li><strong>位置</strong>: <code>DISTINCT</code>キーワードは、<code>SELECT</code>文の直後に配置。</li>



<li><strong>対象</strong>: <code>DISTINCT</code>は１つ以上のカラムに適用され、そのカラムの組み合わせに対してユニークなレコードを返します。</li>



<li><strong>組み合わせ</strong>: 複数のカラムに<code>DISTINCT</code>を適用する場合、カラムの間にカンマ(,)を使用して区切る。</li>
</ol>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>DISTINCTは<strong>SELECT句で指定するカラム名の前に記述</strong>します。</p>
</div></div>



<p>以下のテーブルから、"Department" 列を重複を除外したい場合のサンプルコードがこちら。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="434" height="207" src="https://it-biz.online/wp-content/uploads/2022/06/image-13.png" alt="" class="wp-image-6472" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-13.png 434w, https://it-biz.online/wp-content/uploads/2022/06/image-13-300x143.png 300w" sizes="(max-width: 434px) 100vw, 434px" /></figure>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT DISTINCT Department 
  FROM MemberList;</pre>



<p id="block-b37eb40e-7f59-4eaf-85d1-7d9fa4f526b8">"Department" 列の重複が削除され、以下の結果が得られます。</p>



<figure class="wp-block-image aligncenter" id="block-87c7152b-148d-4ea4-9a96-94b513a26ddd"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2022/06/image-14.png" alt="画像に alt 属性が指定されていません。ファイル名: image-14.png"/><figcaption class="wp-element-caption">DISTINCTの実行結果</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>もし、DISTINCTを用いずに単純にSELECTした場合は以下の結果が得られます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Department 
  FROM MemberList;</pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="728" height="201" src="https://it-biz.online/wp-content/uploads/2022/06/image-17.png" alt="" class="wp-image-6476" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-17.png 728w, https://it-biz.online/wp-content/uploads/2022/06/image-17-300x83.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-17-500x138.png 500w" sizes="(max-width: 728px) 100vw, 728px" /></figure>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">NULLも１種類としてカウント</span></h3>



<p>DISTINCTを用いた場合はNULL値も１種類のデータとしてカウントされます。</p>



<p>例えば、どこにも所属していない社員がいるような場合。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="895" height="275" src="https://it-biz.online/wp-content/uploads/2022/06/image-19.png" alt="DISTINCT null" class="wp-image-6478" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-19.png 895w, https://it-biz.online/wp-content/uploads/2022/06/image-19-300x92.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-19-500x154.png 500w, https://it-biz.online/wp-content/uploads/2022/06/image-19-768x236.png 768w, https://it-biz.online/wp-content/uploads/2022/06/image-19-800x246.png 800w" sizes="(max-width: 895px) 100vw, 895px" /><figcaption class="wp-element-caption">図2：DISTINCT null</figcaption></figure>



<p>この場合、DISTINCTを用いるとNULLも消えずに選択されます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT DISTINCT Department 
  FROM MemberList;</pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="651" height="133" src="https://it-biz.online/wp-content/uploads/2022/06/image-20.png" alt="" class="wp-image-6479" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-20.png 651w, https://it-biz.online/wp-content/uploads/2022/06/image-20-300x61.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-20-500x102.png 500w" sizes="(max-width: 651px) 100vw, 651px" /><figcaption class="wp-element-caption">DISTINCT：NULLが含まれる場合の実行結果</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>NULLを出力したくない場合は、WHERE句でNULLを除外するように指定しましょう。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc3">DISTINCTで複数のカラムを指定する場合</span></h3>



<p>DISTINCTは以下のように複数のカラムを指定することも可能です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT DISTINCT Name, Department 
  FROM MemberList;</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>複数のカラムを指定する場合は、指定したカラムの<strong><span class="marker-under">組み合わせ</span></strong>がすべて一意に決まるように重複が除かれます。</p>
</div></div>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="224" src="https://it-biz.online/wp-content/uploads/2022/06/image-22-1024x224.png" alt="" class="wp-image-6481" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-22-1024x224.png 1024w, https://it-biz.online/wp-content/uploads/2022/06/image-22-300x66.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-22-500x109.png 500w, https://it-biz.online/wp-content/uploads/2022/06/image-22-768x168.png 768w, https://it-biz.online/wp-content/uploads/2022/06/image-22-800x175.png 800w, https://it-biz.online/wp-content/uploads/2022/06/image-22.png 1170w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>以上のように、Name列が "山田" かつDepartment列が "営業部" のように、組み合わせの結果が重複しているものが削除されるという点を押さえておきましょう。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>初心者にとっては少しだけ難しいかもしれませんが、これだけ覚えればDISTINCTは完璧です。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">DISTINCT は先頭のカラムの前にしか置けない</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>DISTINCTは先頭のカラムの前にしか記述することができません。</p>



<p>例えば、これはNG例。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Number, DISTINCT Department 
  FROM MemberList;</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>Department列の重複だけを削除したいと考えるとこのような使い方をしがちですが、これはSQLの構文ルール違反です。よくあるミスの１つです。</p>
</div></div>
</div></div>



<h2 class="wp-block-heading"><span id="toc4">DISTINCTキーワードの注意点</span></h2>



<p><code>DISTINCT</code>キーワードを使用する際の注意点について、サンプルコードを用いながらご説明します。</p>



<p class="has-text-align-center"><span class="badge-red">注意点１</span>　<strong>パフォーマンス</strong></p>



<ul class="wp-block-list">
<li><code>DISTINCT</code>は重複するレコードを除外するため、内部的にはソートやグルーピングが行われることがあります。そのため、大量のデータが存在するテーブルに対して使用するとパフォーマンスが低下する可能性があります。</li>



<li>インデックスの有無や設計もパフォーマンスに影響します。</li>
</ul>



<p class="has-text-align-center"><span class="badge-red">注意点２</span>　<strong>結果の順序</strong></p>



<ul class="wp-block-list">
<li><code>DISTINCT</code>の後に続くカラムの順序は結果の表示順に影響しますが、ユニーク性の評価には影響しません。</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 例1
SELECT DISTINCT column1, column2
FROM some_table;

-- 例2
SELECT DISTINCT column2, column1
FROM some_table;

-- 上記２つのSQLはユニークなレコードのセットは同じになりますが、結果の表示順は異なる可能性があります。</pre>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">SELECT DISTINCTのまとめ</div>
<ul class="wp-block-list">
<li>DISTINCTはSELECTした結果から "重複するレコードを除外する" オプション</li>
</ul>
</div>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 基本形
SELECT DISTINCT カラム名
FROM テーブル名;

-- 複数のカラムに適用
SELECT DISTINCT カラム名1, カラム名2
FROM テーブル名;</pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="880" height="235" src="https://it-biz.online/wp-content/uploads/2022/06/image-21.png" alt="" class="wp-image-6480" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-21.png 880w, https://it-biz.online/wp-content/uploads/2022/06/image-21-300x80.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-21-500x134.png 500w, https://it-biz.online/wp-content/uploads/2022/06/image-21-768x205.png 768w, https://it-biz.online/wp-content/uploads/2022/06/image-21-800x214.png 800w" sizes="(max-width: 880px) 100vw, 880px" /></figure>



<p class="has-text-align-center"><strong>サンプルコード</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- テーブルの作成
CREATE TABLE employees (
    id INT PRIMARY KEY,
    first_name VARCHAR(255),
    last_name VARCHAR(255),
    job_title VARCHAR(255)
);

-- レコードの挿入
INSERT INTO employees (id, first_name, last_name, job_title)
VALUES (1, 'John', 'Doe', 'Software Engineer');

INSERT INTO employees (id, first_name, last_name, job_title)
VALUES (2, 'Jane', 'Smith', 'Software Engineer');

INSERT INTO employees (id, first_name, last_name, job_title)
VALUES (3, 'Bob', 'Johnson', 'Project Manager');

INSERT INTO employees (id, first_name, last_name, job_title)
VALUES (4, 'Alice', 'Martin', 'Data Analyst');

INSERT INTO employees (id, first_name, last_name, job_title)
VALUES (5, 'Charlie', 'Brown', 'Data Analyst');

-- SELECT DISTINCT
SELECT DISTINCT job_title
FROM employees;

/* 結果
job_title
------------------
Software Engineer
Project Manager
Data Analyst

重複するjob_titleが取り除かれ一意のjob_titleのみが表示される
*/</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/create-table/">CREATE TABLE</a> / <a href="https://it-biz.online/it-skills/sql-insert/">INSERT</a></p>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box">
<div class="speech-person">
<figure class="speech-icon"><img decoding="async" class="speech-icon-image" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" /></figure>
<div class="speech-name"></div>
</div>
<div class="speech-balloon">
<p><!-- wp:paragraph --></p>
<p>現在のスキルに今一つ満足できていないシステムエンジニア/プログラマーの方へ。</p>
<p><!-- /wp:paragraph --></p>
</div>
</div>
<p><!-- /wp:cocoon-blocks/balloon-ex-box-1 --></p>
<p><!-- wp:paragraph --></p>
<p>SQLやデータベースの仕組みを１から学習したい方（学び直したい方）向けに、現役エンジニア達のスキルを結集して <strong><span class="marker-under"><span class="fz-14px"><span class="fz-18px"><span class="fz-20px">完全無料</span></span></span></span></strong> のSQL教材を作成しました。是非この機会にブックマークを！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph {"align":"center"} --></p>
<p class="has-text-align-center" style="text-align: center;"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/it-skills/sql_roadmap/">【完全無料】SQL：初心者向け学習ロードマップ</a>　←こちらから！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【SQL】SELECT文の基本をわかりやすく３分で解説</title>
		<link>https://it-biz.online/it-skills/select/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Mon, 06 Jun 2022 12:00:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=6454</guid>

					<description><![CDATA[SELECT文は指定したテーブルからレコードを抽出する際に用いるSQL文で、SQL文全体の中で最も頻繁に用いられる構文です。 参考　SQLとは？ SELECT文の基本を知らないと、どの言語を扱うプログラマーであっても現場 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong><span class="marker-under">SELECT文は指定したテーブルからレコードを抽出する際に用いるSQL文</span></strong>で、SQL文全体の中で最も頻繁に用いられる構文です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 列名1, 列名2, ... 
FROM テーブル名
WHERE 条件式;</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql/">SQLとは？</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SELECT文は何も見なくてもすらすらと書けるのが、プログラマー/システムエンジニアとしての基本です！是非最後までご覧ください。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-hand-o-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>SELECT文の基本
<ul class="wp-block-list">
<li>カラムを指定</li>



<li>全カラムを指定</li>



<li>AS：別名の付与</li>
</ul>
</li>



<li>WHERE：抽出条件の指定</li>
</ul>
</div>
</div></div>



<p>SELECT文の基本を知らないと、<span class="marker-under"><strong>どの言語を扱うプログラマーであっても現場でも大変苦労します。</strong></span>このページの内容は確実に理解するようにしましょう！</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>"SELECT" は大文字で書けば良い？小文字で書けば良い・・・？</p>



<p>SQLの基本的な記述ルールが実は曖昧・・・。という方は以下の記事も併せてご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/it-skills/sql-abc/" title="【SQL】基本的な記述ルール5つを１分で解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2022/06/sql_abc-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2022/06/sql_abc-320x180.png 320w, https://it-biz.online/wp-content/uploads/2022/06/sql_abc-240x135.png 240w, https://it-biz.online/wp-content/uploads/2022/06/sql_abc-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【SQL】基本的な記述ルール5つを１分で解説</div><div class="blogcard-snippet internal-blogcard-snippet">【SQL入門】SQL文を記述する際の基本ルール４つを解説します。OK例/NG例のそれぞれをサンプルコード付きでわかりやすく説明しています。たった今SQL文でエラーが発生して「ハマってる」人は必見です。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.10.04</div></div></div></div></a>
</div></figure>
</div></div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12" checked><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">SELECT文の基本</a><ol><li><a href="#toc2" tabindex="0">WHERE：抽出条件の指定</a></li><li><a href="#toc3" tabindex="0">SELECT *：すべてのカラムを抽出する</a></li><li><a href="#toc4" tabindex="0">AS：カラム名に別名を付与して抽出</a></li><li><a href="#toc5" tabindex="0">WHERE句では別名（AS）は使用不可</a></li></ol></li><li><a href="#toc6" tabindex="0">SQL：SELECT文のまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">SELECT文の基本</span></h2>



<p>テーブルからデータを取得する際の基本的なSELECT文は以下の通りです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 列名1, 列名2, ... 
FROM テーブル名
WHERE 条件式;</pre>



<ul class="wp-block-list">
<li><code><span class="bold-blue">SELECT</span></code>: 取得したいカラム（列）を指定します。</li>



<li><code><span class="bold-blue">FROM</span></code>: どのテーブルからデータを取得するかを指定します。</li>



<li><code><span class="bold-blue">WHERE</span></code>（<strong>任意</strong>）: 取得するデータの条件を指定します。この句はオプションで、指定しなければテーブルの全てのデータが取得されます。</li>
</ul>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">句（clause）</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>句 とは<strong>SQLを構成する要素</strong>のこと。SELECT / FROM などのSQLキーワードから始まるフレーズを指します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SELECT句やFROM句などというように「SQLキーワード＋句」とセットで呼称するのが一般的です。</p>
</div></div>
</div></div>



<p>以下は、<code>employees</code>というテーブルから<code>first_name</code>と<code>last_name</code>を取得する例です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>取得したいカラムが複数ある場合は「,」で区切ります。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/* 対象テーブルのレコード
+----+------------+-----------+-------------+
| id | first_name | last_name | department  |
+----+------------+-----------+-------------+
|  1 | John       | Doe       | Engineering |
|  2 | Jane       | Smith     | HR          |
|  3 | Alice      | Johnson   | Sales       |
|  4 | Bob        | White     | Engineering |
+----+------------+-----------+-------------+
*/

-- 全ての従業員の名前を取得
SELECT first_name, last_name 
FROM employees;

/* 結果
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| John       | Doe       |
| Jane       | Smith     |
| Alice      | Johnson   |
| Bob        | White     |
+------------+-----------+
*/

-- first_nameが"John"である従業員の名前と部署を取得
SELECT first_name, last_name, department
FROM employees 
WHERE first_name = 'John';

/* 
+------------+-----------+-------------+
| first_name | last_name | department  |
+------------+-----------+-------------+
| John       | Doe       | Engineering |
+------------+-----------+-------------+
*/</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>↑の形がSELECT文の基本中の基本です。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">WHERE：抽出条件の指定</span></h3>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>WHERE句についてはいくつかの注意点があるので、１から基本から再度振り返っておきます。</p>
</div></div>



<ul class="wp-block-list">
<li><code><span class="bold-blue">WHERE</span></code>（<strong>任意</strong>）: 取得するデータの条件を指定。指定しなければテーブルの全てのデータが取得される。</li>
</ul>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば、↓のテーブルから「Suzuki」さんに関するデータを取得したいような場合。</p>



<p>このようなシーンで利用されるのが<strong>WHERE句</strong>です。</p>
</div></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="860" height="179" src="https://it-biz.online/wp-content/uploads/2022/06/image-9.png" alt="where句" class="wp-image-6464" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-9.png 860w, https://it-biz.online/wp-content/uploads/2022/06/image-9-300x62.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-9-500x104.png 500w, https://it-biz.online/wp-content/uploads/2022/06/image-9-768x160.png 768w, https://it-biz.online/wp-content/uploads/2022/06/image-9-800x167.png 800w" sizes="(max-width: 860px) 100vw, 860px" /><figcaption class="wp-element-caption">図1：where句</figcaption></figure>



<p>レコードを抽出する条件を指定する場合、以下のようにWHERE句を用います。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>MemberList テーブルから "Name" 列が「Suzuki」となっているものを取得する場合のサンプルコードがこちらです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Number, Name, Address, PhoneNumber
  FROM MemberList
 WHERE Name = "Suzuki";</pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="857" height="149" src="https://it-biz.online/wp-content/uploads/2022/06/image-10.png" alt="" class="wp-image-6465" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-10.png 857w, https://it-biz.online/wp-content/uploads/2022/06/image-10-300x52.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-10-500x87.png 500w, https://it-biz.online/wp-content/uploads/2022/06/image-10-768x134.png 768w, https://it-biz.online/wp-content/uploads/2022/06/image-10-800x139.png 800w" sizes="(max-width: 857px) 100vw, 857px" /></figure>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="has-text-align-center"><strong><code>WHERE</code>句を利用する際の注意点</strong></p>



<ol class="wp-block-list">
<li><strong>データ型の一致</strong>：<code>WHERE</code>句で条件を指定する際、比較するカラムの<a href="https://it-biz.online/it-skills/data_type/">データ型</a>と比較値のデータ型が一致していることを確認する必要があります。データ型が異なるとエラーが発生する場合があります。</li>



<li><strong>NULLの取り扱い</strong>: <a href="https://it-biz.online/it-skills/dbms/">DBMS</a>によっては、NULLとの比較に特別な取り扱いが必要です。例えば、<code><span class="red">= NULL</span></code>ではなく<code><span class="red">IS NULL</span></code>を使用する必要があるなど。</li>



<li><strong>複数の条件の組み合わせ</strong>: <code>AND</code>や<code>OR</code>を使用して複数の条件を組み合わせる際、適切な括弧を使用して条件の優先順位を明確にすることが重要です。</li>



<li><strong>パフォーマンス</strong>: 複雑な条件やサブクエリ、JOINなどを多用すると、クエリのパフォーマンスに影響が出ることがあります。クエリの最適化やEXPLAINコマンドを使用して実行計画を確認することで、ボトルネックを特定し最適化の方向性を探ることができます。</li>
</ol>
</div>



<h3 class="wp-block-heading"><span id="toc3">SELECT *：すべてのカラムを抽出する</span></h3>



<p>テーブルのカラムが多くなっていくと、１つ１つのカラムをSELECT句で指定するのは大変です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>そこで、テーブルにあるすべてのカラムを抽出したい場合は「<strong>*　アスタリスク</strong>」を用います。</p>
</div></div>



<p class="has-text-align-center is-style-cross-line has-box-style"><code><span class="bold-blue">SELECT *</span></code>　の基本</p>



<ul class="wp-block-list">
<li><code>*</code>はワイルドカードとして機能し、<span class="marker-under">テーブル内のすべてのカラム</span>を意味する。</li>



<li>このコマンドは、テーブルの内容を迅速に確認したい時や、テーブルの構造（どのようなカラムがあるか）を知りたい場合に便利です。</li>
</ul>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT *
  FROM （テーブル名）;</pre>



<p>例えばテーブル「employees」からすべてのカラムを抽出したい場合は以下のように記述します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT * FROM employees;</pre>



<p>結果はすべてのカラムがそのまま抽出されます。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>「*」を使用すると、結果の並び順は「<a href="https://it-biz.online/it-skills/create-table/">CREATE TABLE</a>」で定義した通りに出力されます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>結果の並び順を変更したい場合には、SELECT句でカラム名を順番を変えて記述する必要があります。</p>
</div></div>
</div>



<p>「*」を利用すればSQL文の記述も早くなりカラム名指定などのミスも格段に減ります。</p>



<p>ただし、すべてのカラムを抽出する分、SQL実行のパフォーマンスも落ちてしまうというデメリットも存在します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ちょっとしたときにSELECT文を書くようなときは「*」指定はOKですが、例えば<strong><span class="marker-under">高効率なパフォーマンスが求められる場合や、抽出したいカラムが決まっている場合は１個１個カラムを指定するように心がけることをおすすめします。</span></strong></p>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="has-text-align-center"><strong>注意点</strong></p>



<ol class="wp-block-list">
<li><strong>パフォーマンス</strong>：大きなテーブルで<code>SELECT *</code>　を使うと、不要なデータも読み込むことになり、システムのパフォーマンスに影響を与える可能性があります。必要なカラムのみを指定してデータを取得することが、効率的です。</li>



<li><strong>明確さ</strong>: カラムを明示的に指定することで、コードが読みやすくなり、どの情報が取得されるのか明確になります。<code>SELECT *</code>を使うと、後からコードを見返したときに、どの情報が取得されているのかすぐにはわからない場合があります。</li>



<li><strong>スキーマ変更の影響</strong>: テーブルの構造（スキーマ）が変更された場合、<code>SELECT *</code>を使用しているSQLはその変更を反映して結果を返します。これは予期しない結果をもたらす可能性があります。</li>
</ol>
</div>



<h3 class="wp-block-heading"><span id="toc4">AS：カラム名に別名を付与して抽出</span></h3>



<p>SQL文では、抽出するカラム名に別名を付与してレコードを抽出することが可能です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Number      AS "番号", 
       Name        AS "氏名", 
       Address     AS "住所", 
       PhoneNumber AS "電話番号"
  FROM MemberList;</pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="587" height="342" src="https://it-biz.online/wp-content/uploads/2022/06/image-7.png" alt="select AS" class="wp-image-6462" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-7.png 587w, https://it-biz.online/wp-content/uploads/2022/06/image-7-300x175.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-7-500x291.png 500w" sizes="(max-width: 587px) 100vw, 587px" /><figcaption class="wp-element-caption">SELECT文（ASキーワード）</figcaption></figure>



<p>通常、テーブルのカラム名はアルファベットか数字で表されている場合が多いのですが、これだと少し分かりづらい場面があります。このようなタイミングで<strong>ASキーワード</strong>を利用して日本語の別名を付与してあげたりする使い方もできます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>日本語で別名を付与する場合は必ず「"　ダブルクォーテーション」で囲んであげる必要があります。</p>



<p>もし、別名もアルファベットで付与する場合にはダブルクォーテーションは不要です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Number      AS A, 
       Name        AS B, 
       Address     AS C, 
       PhoneNumber AS D
  FROM MemberList;</pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="676" height="121" src="https://it-biz.online/wp-content/uploads/2022/06/image-8.png" alt="" class="wp-image-6463" srcset="https://it-biz.online/wp-content/uploads/2022/06/image-8.png 676w, https://it-biz.online/wp-content/uploads/2022/06/image-8-300x54.png 300w, https://it-biz.online/wp-content/uploads/2022/06/image-8-500x89.png 500w" sizes="(max-width: 676px) 100vw, 676px" /></figure>
</div></div>



<h3 class="wp-block-heading"><span id="toc5">WHERE句では別名（AS）は使用不可</span></h3>



<p>WHERE句の注意点の１つが、別名使用不可という点です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えば以下のような利用方法はできません。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Number      AS A, 
       Name        AS B, 
       Address     AS C, 
       PhoneNumber AS D
  FROM MemberList
 WHERE B = "Suzuki";</pre>
</div></div>



<p>せっかくASキーワードで別名を付けたのだからWHERE句でも使いたい・・・！という気持ちもしますが、SQLではNGです。データベース初心者にとっては陥りがちなミスの１つでもあるので、しっかり頭に入れておきましょう。</p>



<h2 class="wp-block-heading"><span id="toc6">SQL：SELECT文のまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">このページのまとめ</div>
<ul class="wp-block-list">
<li>指定したテーブルからレコードを抽出するには<strong>SELECT文</strong>を用いる</li>



<li><strong>SELECT句：抽出するカラムを指定</strong>
<ul class="wp-block-list">
<li>* アスタリスクで全カラムを抽出</li>



<li>ASキーワードで別名を指定</li>
</ul>
</li>



<li><strong>FROM句：抽出するテーブルを指定</strong></li>



<li><strong>WHERE句：抽出する条件を指定</strong></li>
</ul>
</div>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- SELECT文の基本
SELECT * FROM employees;

-- 複雑なSELECT文
SELECT first_name, last_name, salary
FROM employees
WHERE salary > 50000
ORDER BY salary DESC;

-- より複雑なSELECT文
SELECT e1.first_name, e1.last_name, e1.salary, d.department_name
FROM employees e1
INNER JOIN (
    SELECT department_id, AVG(salary) AS avg_salary
    FROM employees
    GROUP BY department_id
) AS e2 ON e1.department_id = e2.department_id
INNER JOIN departments d ON e1.department_id = d.department_id
WHERE e1.salary > e2.avg_salary
ORDER BY d.department_name, e1.salary DESC;</pre>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box">
<div class="speech-person">
<figure class="speech-icon"><img decoding="async" class="speech-icon-image" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" /></figure>
<div class="speech-name"></div>
</div>
<div class="speech-balloon">
<p><!-- wp:paragraph --></p>
<p>現在のスキルに今一つ満足できていないシステムエンジニア/プログラマーの方へ。</p>
<p><!-- /wp:paragraph --></p>
</div>
</div>
<p><!-- /wp:cocoon-blocks/balloon-ex-box-1 --></p>
<p><!-- wp:paragraph --></p>
<p>SQLやデータベースの仕組みを１から学習したい方（学び直したい方）向けに、現役エンジニア達のスキルを結集して <strong><span class="marker-under"><span class="fz-14px"><span class="fz-18px"><span class="fz-20px">完全無料</span></span></span></span></strong> のSQL教材を作成しました。是非この機会にブックマークを！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph {"align":"center"} --></p>
<p class="has-text-align-center" style="text-align: center;"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/it-skills/sql_roadmap/">【完全無料】SQL：初心者向け学習ロードマップ</a>　←こちらから！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【SQL】基本的な記述ルール5つを１分で解説</title>
		<link>https://it-biz.online/it-skills/sql-abc/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Thu, 02 Jun 2022 00:00:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=6449</guid>

					<description><![CDATA[SQL文を記述する際の基本的なルール5つを初心者向けにわかりやすく解説します。 参考　SQLとは？ このページでは、頭に入れておきたいSQLの基本的な構文ルールを簡単に解説しておきたいと思います。 プログラマーやシステム [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>SQL文を記述する際の<strong><span class="marker-under">基本的なルール5つ</span></strong>を初心者向けにわかりやすく解説します。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql/">SQLとは？</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SQL自体は決して難しくはない言語です。ですが、初心者にとってはなかなかエラーなくSQL文を書くことも簡単ではないのではないでしょうか。</p>
</div></div>



<p>このページでは、頭に入れておきたいSQLの基本的な構文ルールを簡単に解説しておきたいと思います。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-pencil"><span class="tab-caption-box-label-text block-box-label-text box-label-text">SQL基本ルール</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>SQLの文末は「;」セミコロン</li>



<li>キーワードの大文字・小文字は区別されない</li>



<li>単語は半角スペースか改行で区切る</li>



<li>定数は「'」で囲む</li>



<li>１行コメントは「--」：複数行コメントは「/*  */」</li>
</ul>
</div>
</div></div>



<p>プログラマーやシステムエンジニアを目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい超・基本知識</span></strong>です。是非最後までご覧ください。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-question-circle"><span class="tab-caption-box-label-text block-box-label-text box-label-text">そもそもSQLって何？という方はこちら</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以下のページではSQLとは何か？データベースとは？をIT初心者向けにわかりやすく解説しています。気になった方は併せてチェックしておきましょう。</p>
</div></div>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/it-skills/sql/" title="SQLとは？初心者向けにわかりやすく３分で解説【簡単】" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2022/05/sql-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2022/05/sql-320x180.png 320w, https://it-biz.online/wp-content/uploads/2022/05/sql-300x168.png 300w, https://it-biz.online/wp-content/uploads/2022/05/sql-500x280.png 500w, https://it-biz.online/wp-content/uploads/2022/05/sql-768x431.png 768w, https://it-biz.online/wp-content/uploads/2022/05/sql-800x449.png 800w, https://it-biz.online/wp-content/uploads/2022/05/sql-240x135.png 240w, https://it-biz.online/wp-content/uploads/2022/05/sql-640x360.png 640w, https://it-biz.online/wp-content/uploads/2022/05/sql-1024x574.png 1024w, https://it-biz.online/wp-content/uploads/2022/05/sql.png 1332w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">SQLとは？初心者向けにわかりやすく３分で解説【簡単】</div><div class="blogcard-snippet internal-blogcard-snippet">【IT初心者向け】SQL (Structured Query Language) って何？というプログラマー/エンジニア志望の方向けにSQLの基本を１からわかりやすく解説。DDL,DCL,DMLって何？という方でも理解できるよう、豊富なサンプルコード付きでご説明します。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.10.04</div></div></div></div></a>
</div></figure>
</div></div>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ルール１：SQLの文末は「;」セミコロン</a></li><li><a href="#toc2" tabindex="0">ルール２：キーワードの大文字・小文字は区別されない</a></li><li><a href="#toc3" tabindex="0">ルール３：単語は半角スペースか改行で区切る</a></li><li><a href="#toc4" tabindex="0">ルール４：定数は「'」で囲む</a></li><li><a href="#toc5" tabindex="0">ルール５：１行コメントは「--」：複数行コメントは「/*  */」</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ルール１：SQLの文末は「;」セミコロン</span></h2>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-pencil"><span class="tab-caption-box-label-text block-box-label-text box-label-text">SQL基本ルール</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li><strong><span class="marker-under">SQLの文末は「;」セミコロン</span></strong></li>



<li>キーワードの大文字・小文字は区別されない</li>



<li>単語は半角スペースか改行で区切る</li>



<li>定数は「'」で囲む</li>



<li>１行コメントは「--」：複数行コメントは「/*  */」</li>
</ul>
</div>
</div></div>



<p>SQL文は「;」セミコロンで終えるのが必須のルールです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Name FROM MemberList;</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/select/">SELECT文</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>よくある初歩的なミスとして「;」セミコロンを忘れるのがSQL初心者の罠。一つひとつのSQL文は必ず「;」で終わりを示すのがルールです。</p>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>特定のツールや<a href="https://it-biz.online/it-skills/dbms/">DBMS</a>では必須ではない場合もあるため、具体的な使用状況に応じて適切な手法を選択することが必要です。</p>
</div>



<h2 class="wp-block-heading"><span id="toc2">ルール２：キーワードの大文字・小文字は区別されない</span></h2>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-pencil"><span class="tab-caption-box-label-text block-box-label-text box-label-text">SQL基本ルール</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>SQLの文末は「;」セミコロン</li>



<li><strong><span class="marker-under">キーワードの大文字・小文字は区別されない</span></strong></li>



<li>単語は半角スペースか改行で区切る</li>



<li>定数は「'」で囲む</li>



<li>１行コメントは「--」：複数行コメントは「/*  */」</li>
</ul>
</div>
</div></div>



<p>SQLのキーワード（<a href="https://it-biz.online/it-skills/select/">SELECT</a>など）は大文字・小文字の区別はされません。</p>



<p>したがって、以下どちらの記述で書いても結果は同じです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Name FROM MemberList;</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">select Name from MemberList;</pre>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="has-text-align-center"><strong>以下の点に注意が必要</strong></p>



<ol class="wp-block-list">
<li><strong>データベースオブジェクトの名前</strong>：一部のデータベース管理システム（DBMS）では、テーブル名、カラム名、その他のオブジェクト名に対して大文字・小文字が区別される場合がある。例えば、PostgreSQLではデフォルトで大文字・小文字が区別される。</li>



<li><strong>慣習と可読性</strong>：SQLキーワードを大文字で書くのは、多くの開発者や組織の慣習となっているので基本的にはこれに従うこと。→キーワードを大文字で書くことで、実際のテーブル名やカラム名などのオブジェクト名との視覚的な区別が容易になる（テーブルやカラム名は小文字が一般的）。</li>



<li><strong>DBMSの特性</strong>：使用しているDBMSのドキュメントやガイドラインを参照することで、そのDBMSが大文字・小文字の区別をどのように扱っているのかを正確に知ることができるので、詳しくはそちらを参照すること。</li>
</ol>
</div>



<h2 class="wp-block-heading"><span id="toc3">ルール３：単語は半角スペースか改行で区切る</span></h2>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-pencil"><span class="tab-caption-box-label-text block-box-label-text box-label-text">SQL基本ルール</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>SQLの文末は「;」セミコロン</li>



<li>キーワードの大文字・小文字は区別されない</li>



<li><strong><span class="marker-under">単語は半角スペースか改行で区切る</span></strong></li>



<li>定数は「'」で囲む</li>



<li>１行コメントは「--」：複数行コメントは「/*  */」</li>
</ul>
</div>
</div></div>



<p>SQLのキーワードやテーブル名、カラム名などの単語は必ず「半角スペース」か「改行」で区切ります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Name FROM MemberList;</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT
Name
FROM
MemberList;</pre>



<p>半角スペースか改行で区切らないとエラーとなります。例えば以下はNGです。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECTName FROM MemberList;
-- SELECT と Name の間にスペースが存在しないため構文エラー</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>また、これもよくある落とし穴ですが「<strong><span class="marker-under">全角スペースで区切るのもNG</span></strong>」です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT　Name FROM MemberList;
--SELECT と Name の間が全角スペースなのでNG</pre>



<p>たまに、このミスを犯してドツボにはまる人もいるので、基本の「き」としてしっかり頭に入れておきましょう！</p>
</div></div>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="has-text-align-center"><strong>以下の点に注意が必要</strong></p>



<ol class="wp-block-list">
<li><strong>複数のスペース</strong>：１つ以上の連続する半角スペースは、１つのスペースとして解釈される。→したがって、SQL文内において複数のスペースを挟んでも問題はない。</li>



<li><strong>可読性</strong>：コードの可読性を向上させるために、適切なインデントや改行を使用することが推奨される。→他の開発者や将来の自分がそのSQL文を読みやすくなる。</li>



<li><strong>DBMSの特性</strong>：一部のDBMSやツールには、特定の書式要件や制約がある場合がある。</li>
</ol>
</div>



<h2 class="wp-block-heading"><span id="toc4">ルール４：定数は「'」で囲む</span></h2>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-pencil"><span class="tab-caption-box-label-text block-box-label-text box-label-text">SQL基本ルール</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>SQLの文末は「;」セミコロン</li>



<li>キーワードの大文字・小文字は区別されない</li>



<li>単語は半角スペースか改行で区切る</li>



<li><strong><span class="marker-under">定数は「'」で囲む</span></strong></li>



<li>１行コメントは「--」：複数行コメントは「/*  */」</li>
</ul>
</div>
</div></div>



<p>SQL文では、抽出条件を指定する場面などで「定数」を記述することができます。「定数」を記述する場合は、<strong><span class="marker-under">それが定数であることを明示するために「'」シングルコーテーションで囲みます。</span></strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">CREATE TABLE MemberList (
Number INT,
Name VARCHAR(50),
Address VARCHAR(150),
----------------------------
PhoneNumber VARCHAR(13) DEFAULT '090-1234-5678'
----------------------------
);

--'090-1234-5678' は定数</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/create-table/">CREATE TABLE文</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ただし、<strong>数字の定数の場合は「'」シングルコーテーションで囲む必要はありません</strong>。以下ではNumberカラムのデフォルト値として 100 を指定するSQL文の例です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">CREATE TABLE MemberList (
----------------------------
Number INT DEFAULT 100,
----------------------------
Name VARCHAR(50),
Address VARCHAR(150),
PhoneNumber VARCHAR(13) DEFAULT '090-1234-5678'
);</pre>
</div></div>



<h2 class="wp-block-heading"><span id="toc5">ルール５：１行コメントは「--」：複数行コメントは「/*  */」</span></h2>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-pencil"><span class="tab-caption-box-label-text block-box-label-text box-label-text">SQL基本ルール</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>SQLの文末は「;」セミコロン</li>



<li>キーワードの大文字・小文字は区別されない</li>



<li>単語は半角スペースか改行で区切る</li>



<li>定数は「'」で囲む</li>



<li><strong><span class="marker-under">１行コメントは「--」：複数行コメントは「/*  */」</span></strong></li>
</ul>
</div>
</div></div>



<p>SQLでは文中にコメントを記述することができます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>複雑なSQL文の説明を記載しておいたりするような使い方が一般的です。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- これは1行のコメントです
SELECT * FROM tablename;</pre>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/*
これは複数行の
コメントです
*/
SELECT * FROM tablename;</pre>



<p>コメントはSQL実行時に一切考慮されない行なので、基本的には何を書いてもOKです。日本語で書いてもアルファベットで書いてもSQL自体の処理内容には一切影響がありません。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT Name FROM MemberList;
-- MemberListからName列のレコードを取得

SELECT Name
/* このようにSQL文中に無理やりコメントを挟むこともできます。
   ですが、返って可読性を落としてしまうのでオススメできる利用方法ではありません。*/
FROM MemberList;</pre>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">このページのまとめ</div>
<ul class="wp-block-list">
<li>SQLの基本的な記述ルールは以下の４つ
<ul class="wp-block-list">
<li>SQLの文末は「;」セミコロン</li>



<li>キーワードの大文字・小文字は区別されない</li>



<li>単語は半角スペースか改行で区切る</li>



<li>定数は「'」で囲む</li>



<li>１行コメントは「--」：複数行コメントは「/*  */」</li>
</ul>
</li>
</ul>
</div>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box">
<div class="speech-person">
<figure class="speech-icon"><img decoding="async" class="speech-icon-image" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" /></figure>
<div class="speech-name"></div>
</div>
<div class="speech-balloon">
<p><!-- wp:paragraph --></p>
<p>現在のスキルに今一つ満足できていないシステムエンジニア/プログラマーの方へ。</p>
<p><!-- /wp:paragraph --></p>
</div>
</div>
<p><!-- /wp:cocoon-blocks/balloon-ex-box-1 --></p>
<p><!-- wp:paragraph --></p>
<p>SQLやデータベースの仕組みを１から学習したい方（学び直したい方）向けに、現役エンジニア達のスキルを結集して <strong><span class="marker-under"><span class="fz-14px"><span class="fz-18px"><span class="fz-20px">完全無料</span></span></span></span></strong> のSQL教材を作成しました。是非この機会にブックマークを！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph {"align":"center"} --></p>
<p class="has-text-align-center" style="text-align: center;"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/it-skills/sql_roadmap/">【完全無料】SQL：初心者向け学習ロードマップ</a>　←こちらから！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SQLとは？初心者向けにわかりやすく３分で解説【簡単】</title>
		<link>https://it-biz.online/it-skills/sql/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Tue, 31 May 2022 00:00:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=6406</guid>

					<description><![CDATA[SQL (Structured Query Language) とは、現在最も広く用いられているデータベース操作を行うために用いられる特別な言語です。 このページでは、そもそもデータベースって何？SQLって何？SQLは何 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong>SQL</strong> (<strong>S</strong>tructured <strong>Q</strong>uery <strong>L</strong>anguage) とは、現在最も広く用いられている<strong><span class="marker-under">データベース操作を行うために用いられる特別な言語</span></strong>です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><a href="https://it-biz.online/it-skills/select/">SELECT文</a> / <a href="https://it-biz.online/it-skills/sql-insert/">INSERT文</a>、<a href="https://it-biz.online/it-skills/create-table/">CREATE TABLE</a> ～というような単語を聞いたことがある方もいるかもしれません。それが今回ご紹介するSQLの正体です。</p>
</div></div>



<p>このページでは、<strong>そもそもデータベースって何？SQLって何？SQLは何ができるの？</strong>という疑問をお持ちのIT初心者向けに、１から丁寧にわかりやすく３分で解説します。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>専門用語はできるだけ利用せずに解説します！</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-hand-o-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>データベースとは？</li>



<li>SQLとは？
<ul class="wp-block-list">
<li>SQLの由来</li>



<li>標準SQL</li>
</ul>
</li>



<li>SQLの種類
<ul class="wp-block-list">
<li><strong>SQL-DDL</strong></li>



<li><strong>SQL-DCL</strong></li>



<li><strong>SQL-DML</strong></li>
</ul>
</li>
</ul>
</div>
</div></div>



<p>プログラマーやシステムエンジニアを目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい超・基本知識です！</span></strong>是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/it-skills/sql_roadmap/">【完全無料】SQL：初心者向け学習ロードマップ</a>　←こちらから！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">SQLとは？わかりやすく言うと・・・</a><ol><li><a href="#toc2" tabindex="0">SQLの歴史</a></li><li><a href="#toc3" tabindex="0">標準SQL</a></li></ol></li><li><a href="#toc4" tabindex="0">SQLの種類</a><ol><li><a href="#toc5" tabindex="0">SQL-DDL</a></li><li><a href="#toc6" tabindex="0">SQL-DCL</a></li><li><a href="#toc7" tabindex="0">SQL-DML</a></li></ol></li><li><a href="#toc8" tabindex="0">まとめ：SQLとは？</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">SQLとは？わかりやすく言うと・・・</span></h2>



<p>SQLは<strong>データベース</strong>を操作するための特別な言語です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>データベースを定義したり、データを登録・更新したり、データを削除したりする際に用いる言語がSQL。</p>



<p>逆に言えば、SQLの理解なしでデータベースの操作を自由自在に行うことはできません。</p>
</div></div>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="962" height="322" src="https://it-biz.online/wp-content/uploads/2023/08/image-6.png" alt="SQLとは" class="wp-image-8343" srcset="https://it-biz.online/wp-content/uploads/2023/08/image-6.png 962w, https://it-biz.online/wp-content/uploads/2023/08/image-6-300x100.png 300w, https://it-biz.online/wp-content/uploads/2023/08/image-6-500x167.png 500w, https://it-biz.online/wp-content/uploads/2023/08/image-6-768x257.png 768w, https://it-biz.online/wp-content/uploads/2023/08/image-6-800x268.png 800w" sizes="(max-width: 962px) 100vw, 962px" /><figcaption class="wp-element-caption">図1：SQLとは？</figcaption></figure>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/database/">データベースとは？</a></p>



<p>前提としてデータベースとは何か？を一言で説明すると「<strong>様々なデータを決まった形で整理して集めたもの</strong>」となります。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="583" height="579" src="https://it-biz.online/wp-content/uploads/2022/05/image-25.png" alt="" class="wp-image-6414" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-25.png 583w, https://it-biz.online/wp-content/uploads/2022/05/image-25-300x298.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-25-500x497.png 500w, https://it-biz.online/wp-content/uploads/2022/05/image-25-200x200.png 200w, https://it-biz.online/wp-content/uploads/2022/05/image-25-150x150.png 150w" sizes="(max-width: 583px) 100vw, 583px" /></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>日常で使う「アドレス帳」「電話帳」、先生が利用する「学生名簿」なども "データベースである" と説明することができます。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="757" height="209" src="https://it-biz.online/wp-content/uploads/2022/05/image-27.png" alt="データベース 例" class="wp-image-6416" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-27.png 757w, https://it-biz.online/wp-content/uploads/2022/05/image-27-300x83.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-27-500x138.png 500w" sizes="(max-width: 757px) 100vw, 757px" /></figure>
</div></div>



<p>これらのデータをどのように整理して保存するか？（＝データベース/テーブル/ビューの定義）を定義したり、データベースから目的のデータを取り出したり、データベースへのアクセス権限を制御したりするのが<strong>SQL</strong> (<strong>S</strong>tructured <strong>Q</strong>uery <strong>L</strong>anguage) の役割。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><strong><span class="marker-under">SQLと言ったら、まずは「データベースを作ったりデータベースにデータを登録したり・・・」ができるあれこれなんだな～と理解できればまずはOK</span></strong>です。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">SQLはリレーショナルデータベースを操作する言語</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この中でSQLは<strong><span class="marker-under">リレーショナルデータベースを操作するために考え出されたデータベース言語</span></strong>です。</p>



<p>エクセルのような表形式で保持されているデータからどのようにデータを取り出すか？どのようにデータベースを定義するか？はすべてSQLで行われます。</p>
</div></div>



<p>データベースは、データの保持形式に着目すると以下の３つに分類することができます。</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="303" src="https://it-biz.online/wp-content/uploads/2022/05/image-28-1024x303.png" alt="データベース 種類" class="wp-image-6417" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-28-1024x303.png 1024w, https://it-biz.online/wp-content/uploads/2022/05/image-28-300x89.png 300w, https://it-biz.online/wp-content/uploads/2022/05/image-28-500x148.png 500w, https://it-biz.online/wp-content/uploads/2022/05/image-28-768x227.png 768w, https://it-biz.online/wp-content/uploads/2022/05/image-28-800x237.png 800w, https://it-biz.online/wp-content/uploads/2022/05/image-28.png 1264w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li><strong>リレーショナルデータベース</strong><br>⇒エクセルのように表形式でデータを保存する</li>



<li><strong>階層型データベース</strong><br>⇒ツリー状にデータを保存する</li>



<li><strong>ネットワーク型データベース</strong><br>⇒データを相互に関連付けて保存する</li>
</ul>
</div>



<p class="has-text-align-center"><span class="badge">関連</span>　<a href="https://it-biz.online/it-skills/database/">データベースとは？IT初心者向けにわかりやすく３分で解説【DB】</a></p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">SQLの歴史</span></h3>



<p><strong>SQL</strong>はIBM社が1970年代に開発した "SEQUEL" (<strong>S</strong>tructured <strong>E</strong>nglish <strong>Que</strong>ry <strong>L</strong>anguage) と呼ばれるデータベース言語に由来します。</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="434" height="112" src="https://it-biz.online/wp-content/uploads/2022/05/image-36.png" alt="SEQUEL" class="wp-image-6432" srcset="https://it-biz.online/wp-content/uploads/2022/05/image-36.png 434w, https://it-biz.online/wp-content/uploads/2022/05/image-36-300x77.png 300w" sizes="(max-width: 434px) 100vw, 434px" /></figure>



<p>SEQUELはリレーショナルデータベースの定義や操作に特化した言語で、文法も非常に簡単で覚えやすいという特徴があったため、IBM製のデータベースだけでなく、IBM社以外のデータベースでも採用が進んでいきました。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>各メーカーがお互いに協力しながら発展させていったデータベース言語が今日のSQLの起源です。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc3">標準SQL</span></h3>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SQLは様々な会社が協力して発展させ標準化していったデータベース言語ですが、会社によっては多少独自の機能拡張を行ったり、独自の文法を用いたりする場合が出てきました。</p>
</div></div>



<p>会社独自の発展や機能拡張の開発などで "SQL" というデータベース言語自体が統一されていない状況を避けるために、<strong>ISO（国際標準化機構：International Organization for Standardization）</strong>がSQLの標準化を行いました。</p>



<p>これを<strong><span class="marker-under">標準SQL</span></strong>と呼びます。</p>



<p>標準SQLは数年に一度改定が行われ、2022年現在の最新版は "SQL:2016" となっています。 </p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>制定年</th><th>規格名称</th></tr></thead><tbody><tr><td>1986年</td><td>SQL86</td></tr><tr><td>1989年</td><td>SQL89</td></tr><tr><td>1992年</td><td>SQL92</td></tr><tr><td>1995年</td><td>SQL/CLI</td></tr><tr><td>1996年</td><td>SQL/PSM</td></tr><tr><td>1999年</td><td>SQL1999 (SQL99)</td></tr><tr><td>2003年</td><td>SQL:2003</td></tr><tr><td>2008年</td><td>SQL:2008</td></tr><tr><td>2011年</td><td>SQL:2011</td></tr><tr><td>2016年</td><td>SQL:2016</td></tr></tbody></table></div><figcaption class="wp-element-caption">SQL規格一覧</figcaption></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>すべての規格を覚える必要はありませんが、ここでは「<strong>SQLは時代とともに少しづつ変化すること/今後もSQLの規格が変わりうること</strong>」「<strong>利用しているSQLの規格によって動作が異なる場合があること</strong>」を頭に入れておきましょう。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">標準SQLと "方言"</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>上記で説明した通り、標準SQLはISOによって標準化されている世界統一規格です。</p>



<p>しかしながら、<strong><span class="marker-under">実は各ベンダーは必ずしもこの標準SQLに完全準拠しなければならないというわけではありません</span></strong>。つまり、各ベンダー独自でSQLを拡張している場合（＝方言）があって、我々はそれを考慮してSQLを学んでいく必要があるということです。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>例えばOracleDBでは利用できるSQL文がMicrosoftのSQL Serverでは利用できない・・・というようなことがあります。</p>
</div></div>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">例）OracleDBとSQL Serverの差異</div>
<ul class="wp-block-list">
<li><strong>ピボットテーブル（Pivot Table）</strong><br>Oracleでは、PIVOT構文を使用して、行を列に変換することが可能。SQL ServerにもPIVOT構文がありますが、いくつかの制限が存在する。</li>



<li><strong>テーブルの複数列の追加</strong><br>Oracleでは、<a href="https://it-biz.online/it-skills/alter-table/">ALTER TABLE文</a>を使用して、複数の列を同時に追加することが可能。SQL Serverでは、ALTER TABLE文を使用して1つの列しか追加できない。</li>



<li><strong>数字の書式設定</strong><br>Oracleでは、TO_CHAR関数を使用して、数字を文字列に変換し、書式設定することができる。SQL Serverでは、FORMAT関数を使用して書式設定する必要がある。</li>



<li><strong>表領域（Tablespace）</strong><br>Oracleでは、テーブルを格納するための領域を管理するための概念である「表領域」を提供している。SQL Serverには、これに相当する機能がない。</li>
</ul>
</div>



<p>標準SQLがベースとなる共通言語。そのうえで、細かな方言SQLが各ベンダーの製品ごとに存在しているという点を押さえておきましょう。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>基本的には標準SQLを押さえておけばどのデータベースだとしても大部分の処理を行うことは可能です。そのため、まずは確実に標準SQLの構文・処理内容を頭に入れるようにしておきましょう。</p>
</div></div>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-lightbulb"><span class="tab-caption-box-label-text block-box-label-text box-label-text">ISO：国際標準化機構</span></div><div class="tab-caption-box-content block-box-content box-content">
<p>ISO：国際標準化機構 とは、日本を含む世界各国にある標準化組織から構成される非政府組織です。</p>



<p>例えばクレジットカードの大きさなど、世界全体で統一しておいた方がよい "モノ" や "仕組み" を標準として定義することが主な役割で、ネットワークの仕組み＝<a href="https://it-biz.online/it-skills/osi-reference-model/">OSI参照モデル</a>などを定義している団体としても有名です。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc4">SQLの種類</span></h2>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SQLをより具体的にイメージできるように、<strong><span class="marker-under">SQLでできること</span></strong>を以下の３種類に分けて解説します。</p>
</div></div>



<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-hand-o-right block-box"><div class="iconlist-title">SQLの種類</div>
<ul class="wp-block-list">
<li><strong>SQL-DDL</strong> (<strong>D</strong>ata <strong>D</strong>efinition <strong>L</strong>anguage)<br>⇒データベースを<span class="marker-under"><strong><span class="fz-22px">定義</span></strong></span>するためのSQL</li>



<li><strong>SQL-DCL</strong> (<strong>D</strong>ata <strong>C</strong>ontrol <strong>L</strong>anguage)<br>⇒データベースを<span class="marker-under"><strong><span class="fz-22px">制御</span></strong></span>するためのSQL</li>



<li><strong>SQL-DML</strong> (<strong>D</strong>ata <strong>M</strong>anipulation <strong>L</strong>anguage)<br>⇒データベースのデータを<span class="marker-under"><strong><span class="fz-22px">操作</span></strong></span>するためのSQL</li>
</ul>
</div>



<p>ザックリいえば、SQLはデータの登録や削除だけでなく、テーブル（表）の定義や、データ操作に関する権限などの設定も行えるということ。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>ここでは具体的にそれぞれのSQLがどのような操作を行えるのか？を見ていきながら「SQLってこういうことね！」というイメージを持てるようにしていきましょう！</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc5">SQL-DDL</span></h3>



<p>SQL-DDL (<strong>D</strong>ata <strong>D</strong>efinition <strong>L</strong>anguage) は<strong><span class="marker-under">データベースを定義するためのSQL</span></strong>です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>"データ定義言語" と呼ぶ場合もあります。</p>
</div></div>



<p>主にテーブルやビューを新規に作成したり変更・削除したりするのがSQL-DDLの役割。SQL-DDLに分類される代表的な命令は以下の通りです。</p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>SQL-DDL</th><th>処理内容</th></tr></thead><tbody><tr><td><a href="https://it-biz.online/it-skills/create-table/">CREATE TABLE</a></td><td>新しいテーブルを作成する</td></tr><tr><td><a href="https://it-biz.online/it-skills/create-view/">CREATE VIEW</a></td><td>新しい<a href="https://it-biz.online/it-skills/sql-view/">ビュー</a>を作成する</td></tr><tr><td><a href="https://it-biz.online/it-skills/drop-table/">DROP TABLE</a></td><td>既存のテーブルを削除する</td></tr><tr><td><a href="https://it-biz.online/it-skills/drop-view/">DROP VIEW</a></td><td>既存のビューを削除する</td></tr><tr><td><a href="https://it-biz.online/it-skills/alter-table/">ALTER</a></td><td>既存のテーブルやビューを更新する</td></tr><tr><td><a href="https://it-biz.online/it-skills/create-index/">CREATE INDEX</a></td><td><a href="https://it-biz.online/it-skills/index/">インデックス</a>を作成する</td></tr><tr><td><a href="https://it-biz.online/it-skills/create-trigeer/">CREATE TRIGEER</a></td><td><a href="https://it-biz.online/it-skills/create-trigeer/">トリガー</a>を作成する</td></tr></tbody></table></div><figcaption class="wp-element-caption">DDLの例</figcaption></figure>



<p>基本的にはデータ操作を行うのではなく、データベースそのものの管理や制限を行うために用いるのがSQL-DDL (<strong>D</strong>ata <strong>D</strong>efinition <strong>L</strong>anguage）だと覚えておけばOKです。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>また、SQL-DDLは既存のテーブルやビューを変更したり、削除したりすることも可能なので、使用ミスをしてしまうと影響が大きいというのも特徴です。</p>
</div></div>



<p class="has-text-align-center"><span class="badge-green">サンプル１</span>　<strong>SQL-DDL</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- テーブルの作成 (CREATE TABLE)
-- 社員テーブルを作成します。ID、名前、年齢、部署IDをカラムとして持ちます。
CREATE TABLE 社員 (
    ID INT PRIMARY KEY,
    名前 VARCHAR(50),
    年齢 INT,
    部署ID INT
);

-- インデックスの作成 (CREATE INDEX)
-- 社員テーブルの名前カラムにインデックスを作成します。検索速度の向上が期待されます。
CREATE INDEX idx_名前
ON 社員 (名前);</pre>



<h3 class="wp-block-heading"><span id="toc6">SQL-DCL</span></h3>



<p><strong>SQL-DCL</strong> (<strong>D</strong>ata <strong>C</strong>ontrol <strong>L</strong>anguage) は<strong><span class="marker-under">データベースのセキュリティを制御するためのSQL</span></strong>です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SQL-DCL はデータ制御言語と呼ばれる場合もあります。</p>
</div></div>



<p>SQL-DCLで制御するのは主にデータベースへの権限です。SQL-DCLを利用すると、全員に公開しても良いデータベース、一部の人だけに公開しておきたいデータベースなど個別に権限を制御することが可能。</p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>SQL-DCL</th><th>処理内容</th></tr></thead><tbody><tr><td>GRANT</td><td>テーブル/ビューに対する権限を付与する</td></tr><tr><td>REVOKE</td><td>テーブル/ビューに対する権限をはく奪する</td></tr><tr><td><a href="https://it-biz.online/it-skills/begin/">COMMIT/ROLLBACL</a></td><td><a href="https://it-biz.online/it-skills/db-transaction/">トランザクション</a>を管理する</td></tr></tbody></table></div></figure>



<p>DCLは扱う内容が割と高度なので、そこまで利用頻度は高くないものの、逆に言えばこれらの処理が頭に入っているプログラマーやエンジニアは市場価値が高めかも？です。</p>



<p class="has-text-align-center"><span class="badge-green">サンプル２</span>　<strong>SQL-DCL</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- ユーザー 'ユーザー名' に対して、社員テーブルに対するSELECT権限を付与します。
GRANT SELECT ON 社員 TO ユーザー名;

-- ユーザー 'ユーザー名' に対して、社員テーブルに対するSELECT、UPDATE権限を付与します。
GRANT SELECT, UPDATE ON 社員 TO ユーザー名;

-- ユーザー 'ユーザー名' から、社員テーブルに対するUPDATE権限を取り消します。
REVOKE UPDATE ON 社員 FROM ユーザー名;

-- ユーザー 'ユーザー名' から、社員テーブルに対するすべての権限を取り消します。
REVOKE ALL ON 社員 FROM ユーザー名;</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>↑のサンプルコードは、特定のユーザーに対してテーブルへのアクセス権限を付与（<code>GRANT</code>）したり、取り消し（<code>REVOKE</code>）したりする操作を示しています。これにより、データベースのセキュリティとアクセス制御が可能になります。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc7">SQL-DML</span></h3>



<p>SQL-DML (<strong>D</strong>ata <strong>M</strong>anipulation <strong>L</strong>anguage) は<strong><span class="marker-under">データベースを操作するためのSQL</span></strong>です。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>"データ操作言語" と呼ぶ場合もあります。</p>
</div></div>



<p>テーブルにデータを登録したり更新・削除したりするのがSQL-DMLの役割で、日常的に最も利用頻度が高いのがSQL-DML。</p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>SQL-DML</th><th>処理内容</th></tr></thead><tbody><tr><td><a href="https://it-biz.online/it-skills/select/">SELECT</a></td><td>テーブルからデータ（レコード）を抽出する</td></tr><tr><td><a href="https://it-biz.online/it-skills/sql-insert/">INSERT</a></td><td>テーブルにデータ（レコード）を新規登録する</td></tr><tr><td><a href="https://it-biz.online/it-skills/sql-update/">UPDATE</a></td><td>テーブルのデータ（レコード）を更新する</td></tr><tr><td><a href="https://it-biz.online/it-skills/sql-delete/">DELETE</a></td><td>テーブルからデータ（レコード）を削除する</td></tr></tbody></table></div></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SQL-DMLはプログラム構築をする人にとっては理解必須の重要SQLです。基本的な処理内容と文法・注意点は暗記レベルで押さえておく必要があります。</p>
</div></div>



<p class="has-text-align-center"><span class="badge-green">サンプル３</span>　<strong>SQL-DML</strong></p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">-- 社員テーブルに新しいレコードを挿入します。
INSERT INTO 社員 (ID, 名前, 年齢, 部署ID) VALUES (1, '田中太郎', 25, 101);

-- 社員テーブルの特定のレコードの年齢を更新します。
UPDATE 社員 SET 年齢 = 26 WHERE ID = 1;

-- 社員テーブルから特定のレコードを削除します。
DELETE FROM 社員 WHERE ID = 1;

-- 社員テーブルから特定の条件に合致するレコードを検索します。
SELECT 名前, 年齢 FROM 社員 WHERE 部署ID = 101;</pre>



<p>↑のサンプルコードは、データの挿入（<code>INSERT</code>）、更新（<code>UPDATE</code>）、削除（<code>DELETE</code>）、検索（<code>SELECT</code>）といった基本的なデータ操作を示しています。これらのコマンドは日常的なデータベース操作に頻繁に使用されるもので、データの取り扱いにおいて中心的な役割を果たします。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SQL初心者は、まずはこれらの基本的なDMLから学習を進めていくと良いでしょう。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc8">まとめ：SQLとは？</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title">このページのまとめ</div>
<ul class="wp-block-list">
<li><strong>SQL</strong> (<strong>S</strong>tructured <strong>Q</strong>uery <strong>L</strong>anguage) とは現在最も広く用いられている<strong><span class="marker-under">データベース操作を行うために用いられる特別な言語</span></strong></li>



<li>SQLには「標準SQL」という規格が存在。ただし、メーカーによっては多少の違い（＝方言SQL）がある点を押さえておく必要がある。</li>



<li>SQLは大きく以下の３種類に分類される
<ul class="wp-block-list">
<li><strong>SQL-DDL</strong> (<strong>D</strong>ata <strong>D</strong>efinition <strong>L</strong>anguage)<br>⇒データベースを<span class="marker-under">定義</span>するためのSQL</li>



<li><strong>SQL-DCL</strong> (<strong>D</strong>ata <strong>C</strong>ontrol <strong>L</strong>anguage)<br>データベースを<span class="marker-under">制御</span>するためのSQL</li>



<li><strong>SQL-DML</strong> (<strong>D</strong>ata <strong>M</strong>anipulation <strong>L</strong>anguage)<br>⇒データベースのデータを<span class="marker-under">操作</span>するためのSQL</li>
</ul>
</li>
</ul>
</div>
</div>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box">
<div class="speech-person">
<figure class="speech-icon"><img decoding="async" class="speech-icon-image" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" /></figure>
<div class="speech-name"></div>
</div>
<div class="speech-balloon">
<p><!-- wp:paragraph --></p>
<p>現在のスキルに今一つ満足できていないシステムエンジニア/プログラマーの方へ。</p>
<p><!-- /wp:paragraph --></p>
</div>
</div>
<p><!-- /wp:cocoon-blocks/balloon-ex-box-1 --></p>
<p><!-- wp:paragraph --></p>
<p>SQLやデータベースの仕組みを１から学習したい方（学び直したい方）向けに、現役エンジニア達のスキルを結集して <strong><span class="marker-under"><span class="fz-14px"><span class="fz-18px"><span class="fz-20px">完全無料</span></span></span></span></strong> のSQL教材を作成しました。是非この機会にブックマークを！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph {"align":"center"} --></p>
<p class="has-text-align-center" style="text-align: center;"><span class="badge-green">読者料典</span>　<a href="https://it-biz.online/it-skills/sql_roadmap/">【完全無料】SQL：初心者向け学習ロードマップ</a>　←こちらから！</p>
<p><!-- /wp:paragraph --></p>
<p><!-- wp:paragraph --></p>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【SQL】rank関数の使い方/コツを１分でわかりやすく解説</title>
		<link>https://it-biz.online/it-skills/sql-rank/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Tue, 03 Oct 2023 07:52:09 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8415</guid>

					<description><![CDATA[RANK()関数は、結果セットの中の各行に一意の順序付けを提供するウインドウ関数です。 参考　ウインドウ関数とは？ この関数は、同じ値を持つ行には同じランクを付け、次の行にはその数だけスキップしてランクを付けます。例えば [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong><span class="marker-under"><code>RANK()</code>関数</span></strong>は、結果セットの中の各行に一意の順序付けを提供するウインドウ関数です。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql-window/">ウインドウ関数とは？</a></p>



<p>この関数は、同じ値を持つ行には同じランクを付け、次の行にはその数だけスキップしてランクを付けます。例えば、ランキングが「1,2,2,4」となることがあります。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">CREATE TABLE sales (
    id INT,
    salesperson VARCHAR(50),
    city VARCHAR(50),
    amount INT
);

INSERT INTO sales VALUES
(1, 'Alice', 'Tokyo', 200),
(2, 'Bob', 'Tokyo', 350),
(3, 'Charlie', 'Tokyo', 200),
(4, 'David', 'Osaka', 400),
(5, 'Eva', 'Osaka', 150),
(6, 'Frank', 'Osaka', 400);

-- 都市ごとの売上ランキングを取得
SELECT city, salesperson, amount,
RANK() OVER (PARTITION BY city ORDER BY amount DESC) AS ranking_within_city
FROM sales;

/* 結果
+---------+-------------+--------+---------------------+
| city    | salesperson | amount | ranking_within_city |
+---------+-------------+--------+---------------------+
| Tokyo   | Bob         | 350    |                   1 |
| Tokyo   | Alice       | 200    |                   2 |
| Tokyo   | Charlie     | 200    |                   2 |
| Osaka   | David       | 400    |                   1 |
| Osaka   | Frank       | 400    |                   1 |
| Osaka   | Eva         | 150    |                   3 |
+---------+-------------+--------+---------------------+
*/</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このページではrank関数の使い方を１からわかりやすくサンプルコード付きでご説明します。</p>
</div></div>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>rank関数の使い方・構文ルール</li>



<li>rank関数を利用する際の注意点</li>
</ul>
</div>
</div></div>



<p>プログラマーやシステムエンジニアを目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい基本知識</span></strong>です。是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql-abc/">【初心者向け】SQLの基本構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18" checked><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">rank関数とは？</a><ol><li><a href="#toc2" tabindex="0">rank関数：構文ルール</a></li></ol></li><li><a href="#toc3" tabindex="0">rank関数の利用例</a></li><li><a href="#toc4" tabindex="0">rank関数のまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">rank関数とは？</span></h2>



<p><code>RANK()</code>関数は、SQLの中で<strong>データの順番（ランキング）をつけるためのツール</strong>です。たとえば、試験の点数が高い順に1位、2位、3位…と順番をつけたいときに使います。同じ点数の場合、同じ順位をつけて、次の順位はスキップします。例: 1位、2位、2位、4位… という風になります。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>シンプルに言えば、「どのデータが上位なのか、下位なのか」を教えてくれる関数です。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">rank関数：構文ルール</span></h3>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RANK() OVER (
    PARTITION BY &lt;分割列>
    ORDER BY &lt;並び替え列></pre>



<ol class="wp-block-list">
<li><strong>RANK()</strong>
<ul class="wp-block-list">
<li><code>RANK()</code>関数を利用します！という宣言部分。</li>
</ul>
</li>



<li><strong>PARTITION BY &lt;分割列&gt;</strong>
<ul class="wp-block-list">
<li>データを<code>&lt;分割列&gt;</code>の値に基づいてグループ化（パーティション化）します。これにより、各グループ内で<code>RANK()</code>関数が独立して計算されます。</li>
</ul>
</li>



<li><strong>ORDER BY &lt;並び替え列&gt;</strong>
<ul class="wp-block-list">
<li><code>&lt;並び替え列></code>を基準にして、ランキングの順序を決定します。例えば、スコアのカラムを基準にして高い順にランキングをしたい場合、スコアのカラムを指定します。</li>
</ul>
</li>
</ol>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>window関数の基本的な構文ルールや詳細（PARTITION/ORDERなど）は以下の記事をご覧ください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/it-skills/sql-window/" title="【SQL】window関数の基本/意味や使い方を３分で解説" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2023/10/window-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2023/10/window-320x180.png 320w, https://it-biz.online/wp-content/uploads/2023/10/window-240x135.png 240w, https://it-biz.online/wp-content/uploads/2023/10/window-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【SQL】window関数の基本/意味や使い方を３分で解説</div><div class="blogcard-snippet internal-blogcard-snippet">【初心者向け】window関数（ウインドウ関数）の基本から応用までを１からわかりやすく解説。PARTITION BYやORDER BYの使い方、主要な関数の紹介など、集計を行いながら各行の詳細を保持するSQLの強力なツールを効果的に活用するためのガイドです。</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.10.06</div></div></div></div></a>
</div></figure>
</div></div>



<h2 class="wp-block-heading"><span id="toc3">rank関数の利用例</span></h2>



<p>ここからは実際にrank関数を利用するサンプルを見ていきながら、注意点やTipsなどをご説明していきます。</p>



<p class="has-text-align-center"><span class="badge-blue">サンプル1</span><strong>　売上が高い順にランキングをつける</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>名前</th><th>売上</th></tr></thead><tbody><tr><td>Aさん</td><td>1000</td></tr><tr><td>Bさん</td><td>1500</td></tr><tr><td>Cさん</td><td>900</td></tr><tr><td>Dさん</td><td>1500</td></tr></tbody></table></div><figcaption class="wp-element-caption">売上テーブル</figcaption></figure>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 名前, 売上, RANK() OVER (ORDER BY 売上 DESC) AS ランキング
FROM 売上テーブル;</pre>



<p class="has-text-align-center"><strong>結果</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>名前</th><th>売上</th><th>ランキング</th></tr></thead><tbody><tr><td>Bさん</td><td>1500</td><td>1</td></tr><tr><td>Dさん</td><td>1500</td><td>1</td></tr><tr><td>Aさん</td><td>1000</td><td>3</td></tr><tr><td>Cさん</td><td>900</td><td>4</td></tr></tbody></table></div></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>「売上」列に同じ値がある場合は、どちらも同じ順位で表示されるという点を押さえておきましょう。</p>
</div></div>



<p class="has-text-align-center"><span class="badge-blue">サンプル2</span><strong>　都道府県ごとの売上が高い順にランキング</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>都道府県</th><th>名前</th><th>売上</th></tr></thead><tbody><tr><td>東京</td><td>Aさん</td><td>1000</td></tr><tr><td>東京</td><td>Bさん</td><td>1500</td></tr><tr><td>大阪</td><td>Cさん</td><td>1300</td></tr><tr><td>大阪</td><td>Dさん</td><td>1100</td></tr></tbody></table></div><figcaption class="wp-element-caption">売上テーブル</figcaption></figure>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 都道府県, 名前, 売上, RANK() OVER (PARTITION BY 都道府県 ORDER BY 売上 DESC) AS ランキング
FROM 売上テーブル;</pre>



<p class="has-text-align-center"><strong>結果</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>都道府県</th><th>名前</th><th>売上</th><th>ランキング</th></tr></thead><tbody><tr><td>東京</td><td>Bさん</td><td>1500</td><td>1</td></tr><tr><td>東京</td><td>Aさん</td><td>1000</td><td>2</td></tr><tr><td>大阪</td><td>Cさん</td><td>1300</td><td>1</td></tr><tr><td>大阪</td><td>Dさん</td><td>1100</td><td>2</td></tr></tbody></table></div></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>「PARTITION BY <strong>都道府県</strong>」と指定しているため、都道府県ごとにランク付けされているのがポイントです。</p>
</div></div>



<p class="has-text-align-center"><span class="badge-blue">サンプル3</span><strong>　月ごとの売上が高い順にランキング</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>月</th><th>名前</th><th>売上</th></tr></thead><tbody><tr><td>1月</td><td>Aさん</td><td>1000</td></tr><tr><td>1月</td><td>Bさん</td><td>1500</td></tr><tr><td>2月</td><td>Cさん</td><td>1300</td></tr><tr><td>2月</td><td>Dさん</td><td>1100</td></tr></tbody></table></div><figcaption class="wp-element-caption">売上テーブル</figcaption></figure>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT 月, 名前, 売上, RANK() OVER (PARTITION BY 月 ORDER BY 売上 DESC) AS ランキング
FROM 売上テーブル;</pre>



<p class="has-text-align-center"><strong>結果</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>月</th><th>名前</th><th>売上</th><th>ランキング</th></tr></thead><tbody><tr><td>1月</td><td>Bさん</td><td>1500</td><td>1</td></tr><tr><td>1月</td><td>Aさん</td><td>1000</td><td>2</td></tr><tr><td>2月</td><td>Cさん</td><td>1300</td><td>1</td></tr><tr><td>2月</td><td>Dさん</td><td>1100</td><td>2</td></tr></tbody></table></div></figure>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>今度は「PARTITION BY 月」としているため、月別に売上が高いレコード順にランクされている点がポイント。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc4">rank関数のまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">RANK() OVER (
    PARTITION BY &lt;分割列>
    ORDER BY &lt;並び替え列></pre>



<ol class="wp-block-list">
<li><strong>重複値の扱い</strong>: <code>RANK()</code>関数は同じ値を持つ行に同じランキングを割り当てる。次のランキングは、重複した行数をスキップして進められる。
<ul class="wp-block-list">
<li>例: 1, 2, 2, 4（「3」はスキップ）</li>
</ul>
</li>



<li><strong><span class="bold-blue">PARTITION BY</span></strong>:
<ul class="wp-block-list">
<li><code>PARTITION BY</code>を使用すると、指定されたカラムの値ごとにランキングをリセットして計算される。</li>
</ul>
</li>



<li><strong><span class="bold-blue">ORDER BY</span></strong>:
<ul class="wp-block-list">
<li>ランキングの順序を決定するカラムを指定。</li>



<li>昇順（<strong>ASC</strong>）または降順（<strong>DESC</strong>）を指定。デフォルトは昇順。</li>
</ul>
</li>



<li><strong>window関数</strong>:
<ul class="wp-block-list">
<li><code>RANK()</code>はwindow関数の一つです。window関数は、結果セット内の行のサブセット（ウインドウ）に関数を適用するためのもの。</li>
</ul>
</li>



<li><strong>フレーム指定不要</strong>:
<ul class="wp-block-list">
<li><code>RANK()</code>関数の場合、フレーム範囲の指定は必要ない。</li>
</ul>
</li>



<li><strong>他のランキング関数との違い</strong>:
<ul class="wp-block-list">
<li><code>RANK()</code>と似た関数に<code>DENSE_RANK()</code>や<code>ROW_NUMBER()</code>がある→それぞれの関数でランキングの付け方や重複値の扱いが異なるため注意。</li>
</ul>
</li>
</ol>
</div>



<p>SQLやデータベースの仕組みを１から学習したい方（学び直したい方）向けに、現役エンジニア達のスキルを結集して <strong><span class="marker-under"><span class="fz-14px"><span class="fz-18px"><span class="fz-20px">完全無料</span></span></span></span></strong> のSQL教材を作成しました。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SQLは決して難しい技術ではないので、エンジニアであれば「当たり前のように」扱えて当然かも・・・？</p>



<p>とはいえ、案外SQLをちゃんと使ったことがない人も多いはずです。この機会に是非一度ご覧になってみてください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/it-skills/sql_roadmap/" title="【完全無料】SQL：初心者向け学習ロードマップ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2023/03/SQL_roadmap-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2023/03/SQL_roadmap-320x180.png 320w, https://it-biz.online/wp-content/uploads/2023/03/SQL_roadmap-240x135.png 240w, https://it-biz.online/wp-content/uploads/2023/03/SQL_roadmap-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【完全無料】SQL：初心者向け学習ロードマップ</div><div class="blogcard-snippet internal-blogcard-snippet">SQL（Structured Query Language）：初心者向けにわかりやすく３０記事でSQLをマスターするための記事を整理。IT初心者でもこの記事を読めば必ずSQLを利用することができるようになります！</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.09.22</div></div></div></div></a>
</div></figure>
</div></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【SQL】COALESCE関数の意味と使い方をわかりやすく１分で解説</title>
		<link>https://it-biz.online/it-skills/sql-coal/</link>
		
		<dc:creator><![CDATA[ビズドットオンライン]]></dc:creator>
		<pubDate>Mon, 02 Oct 2023 00:00:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[IT-Skills]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[データベース]]></category>
		<category><![CDATA[プログラミング]]></category>
		<guid isPermaLink="false">https://it-biz.online/?p=8390</guid>

					<description><![CDATA[COALESCE関数は、データベースのSQLで使われる関数の1つで、引数のリストから最初のNULLでない値を返す関数です。つまり、複数の値の中から最初の非NULLの値を取得する際に使用します。 参考　SQLとは？（初心者 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong><code>COALESCE</code>関数</strong>は、<a href="https://it-biz.online/it-skills/database/">データベース</a>のSQLで使われる関数の1つで、引数のリストから最初のNULLでない値を返す関数です。つまり、複数の値の中から最初の非NULLの値を取得する際に使用します。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">COALESCE(引数1, 引数2, ... 引数N)</pre>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql/">SQLとは？（初心者向け解説）</a></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>日本語で発音すると「コアレス」と近い読み方になります。</p>
</div></div>



<p>このページでは、COALESCE関数の意味と使い方（コツ）を初心者向けにわかりやすく１分でご説明します。</p>



<div class="wp-block-cocoon-blocks-tab-caption-box-1 tab-caption-box block-box"><div class="tab-caption-box-label block-box-label box-label fab-edit"><span class="tab-caption-box-label-text block-box-label-text box-label-text">このページで学べる内容</span></div><div class="tab-caption-box-content block-box-content box-content">
<div class="wp-block-cocoon-blocks-iconlist-box iconlist-box blank-box list-caret-right block-box"><div class="iconlist-title"></div>
<ul class="wp-block-list">
<li>COALESCE関数の構文ルール/使い方</li>



<li>COALESCE関数の使いどころとコツ</li>
</ul>
</div>
</div></div>



<p>プログラマーやシステムエンジニアを目指す方であれば<strong><span class="marker-under">知らないと恥ずかしい基本知識</span></strong>です。是非最後までご覧ください。</p>



<p class="has-text-align-center"><span class="badge">参考</span>　<a href="https://it-biz.online/it-skills/sql-abc/">【初心者向け】SQLの基本構文ルール</a></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">COALESCE関数</a><ol><li><a href="#toc2" tabindex="0">COALESCE関数の使いどころ/よくある利用方法</a></li></ol></li><li><a href="#toc3" tabindex="0">SQL：COALESCE関数のまとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">COALESCE関数</span></h2>



<p><code>COALESCE</code>はSQLの関数で、複数の引数を取り、<strong><span class="marker-under">その引数の中から最初のNULLでない値を返す関数</span></strong>です。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">COALESCE(引数1, 引数2, ... 引数N)</pre>



<ol class="wp-block-list">
<li><strong>返されるのは最初のNULLでない値</strong>: 引数のリストを左から右へと順番に評価し、最初に出現するNULLでない値がその結果として返されます。</li>



<li><strong>全ての引数がNULLの場合、結果もNULL</strong>: <code>COALESCE</code>関数に与えられた全ての引数がNULLの場合、関数の結果もNULLとなります。</li>
</ol>



<p class="has-text-align-center"><span class="badge-blue">サンプルコード</span>　<code>employees</code> テーブルの例</p>



<p><code>employees</code> テーブルが以下のデータを持っていると仮定します。</p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>id</th><th>first_name</th><th>phone_home</th><th>phone_work</th></tr></thead><tbody><tr><td>1</td><td>John</td><td><strong>NULL</strong></td><td>03-1234-5678</td></tr><tr><td>2</td><td>Jane</td><td>050-1234-5678</td><td><strong>NULL</strong></td></tr></tbody></table></div><figcaption class="wp-element-caption"><code>employees</code> テーブル</figcaption></figure>



<p>このテーブルから社員の電話番号を取得したい場合を考えてみます。<strong>自宅の電話番号がない場合は、仕事の電話番号を取得したいとします。</strong></p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>この場合のSQLクエリは次のようになります。</p>
</div></div>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT first_name, COALESCE(phone_home, phone_work) AS phone_number FROM employees;</pre>



<p>このクエリの結果、Johnの自宅の電話番号がNULLなので、仕事の電話番号が<code>phone_number</code>として取得されます。一方、Janeの場合は自宅の電話番号が存在するので、その値が<code>phone_number</code>として取得されます。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>このように、<code>COALESCE</code>関数は特定の条件下でのデータのフォールバック値を設定する際に非常に役立ちます。</p>
</div></div>



<h3 class="wp-block-heading"><span id="toc2">COALESCE関数の使いどころ/よくある利用方法</span></h3>



<p class="has-text-align-center"><span class="badge-blue">CASE１</span>　<strong>デフォルト値の設定</strong></p>



<p>あるカラムがNULLの場合にデフォルト値を設定したい場合に利用します。（例: 商品の価格が設定されていない場合に0を表示する。）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT product_name, COALESCE(price, 0) AS price FROM products;</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p><a href="https://it-biz.online/it-skills/sql-sum/">SUM関数</a>や<a href="https://it-biz.online/it-skills/sql-avg/">AVG関数</a>はNULL値を除外して計算しますが、NULLは「0」として計算したいような場合に用いられます。</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT AVG(COALESCE(score, 0)) AS average_score_with_nulls FROM students;

-- COALESCE関数は、最初の非NULL値を返します。
-- 上記の例では、scoreがNULLの場合は0を返します。
-- したがって、このSQL文はNULL値を0として平均スコアの計算に含めます。</pre>
</div></div>



<p class="has-text-align-center"><span class="badge-blue">CASE２</span>　<strong>複数のカラムからのフォールバック</strong></p>



<p>１つのカラムがNULLの場合、別のカラムの値を使用する、というようなシナリオで利用します。（例: 自宅の電話番号がない場合、携帯の電話番号を表示する。）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT name, COALESCE(home_phone, mobile_phone) AS contact_number FROM contacts;</pre>



<p class="has-text-align-center"><span class="badge-blue">CASE３</span>　<strong>日付の範囲での最小・最大値取得</strong></p>



<p>複数の日付のカラムがあり、最も古い日付や最も新しい日付を取得したい場合に、NULL値を考慮しつつ利用することができます。（例: 製品の製造日と入荷日のうち、最も新しい日付を取得する。）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT product_name, COALESCE(manufactured_date, arrival_date) AS recent_date FROM products;</pre>



<p class="has-text-align-center"><span class="badge-blue">CASE４</span>　<strong>外部結合の結果の扱い</strong></p>



<p><a href="https://it-biz.online/it-skills/sql-outerjoin/">OUTER JOIN</a>を使用すると、一致する行が存在しない場合にNULLが返されることがあります。このNULLの結果を適切な値に置き換える際に<code>COALESCE</code>が役立ちます。（例: 注文情報と支払情報を結合し、支払いがまだされていない場合に0を表示する。）</p>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT orders.order_id, COALESCE(payments.amount, 0) AS payment_amount FROM orders
LEFT JOIN payments ON orders.order_id = payments.order_id;</pre>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>以上のようなシチュエーションで、<code>COALESCE</code>関数はデータのNULL値を適切に扱い、より意味のある値やデフォルト値に置き換えるために役立ちます。</p>
</div></div>



<h2 class="wp-block-heading"><span id="toc3">SQL：COALESCE関数のまとめ</span></h2>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box memo-box">
<ul class="wp-block-list">
<li><code>COALESCE</code>はSQLの関数で、<strong>複数の引数から最初のNULLでない値を返す</strong>。</li>



<li>複数のカラムや値からデフォルト値やフォールバック値を設定する際に利用される。</li>



<li>引数の中で全ての値がNULLの場合、<strong><code>COALESCE</code>関数自体もNULLを返す</strong>。</li>



<li>データのNULL値を適切に管理し、意味のある値やデフォルト値に変換するための便利なツール。</li>
</ul>



<p class="has-text-align-center"><strong>サンプル</strong></p>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>id</th><th>first_name</th><th>last_name</th><th>email</th><th>phone</th></tr></thead><tbody><tr><td>1</td><td>Taro</td><td>Yamada</td><td>taro@example.com</td><td>NULL</td></tr><tr><td>2</td><td>Hanako</td><td>Suzuki</td><td>NULL</td><td>090-1111-2222</td></tr><tr><td>3</td><td>Yuki</td><td>Tanaka</td><td>yuki@example.com</td><td>080-3333-4444</td></tr></tbody></table></div></figure>



<pre class="EnlighterJSRAW" data-enlighter-language="sql" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">SELECT first_name, last_name, COALESCE(email, phone) AS contact_method FROM users;</pre>



<figure class="wp-block-table aligncenter"><div class="scrollable-table stfc-sticky"><table><thead><tr><th>first_name</th><th>last_name</th><th>contact_method</th></tr></thead><tbody><tr><td>Taro</td><td>Yamada</td><td>taro@example.com</td></tr><tr><td>Hanako</td><td>Suzuki</td><td>090-1111-2222</td></tr><tr><td>Yuki</td><td>Tanaka</td><td>yuki@example.com</td></tr></tbody></table></div></figure>
</div>



<p>SQLやデータベースの仕組みを１から学習したい方（学び直したい方）向けに、現役エンジニア達のスキルを結集して <strong><span class="marker-under"><span class="fz-14px"><span class="fz-18px"><span class="fz-20px">完全無料</span></span></span></span></strong> のSQL教材を作成しました。</p>



<div class="wp-block-cocoon-blocks-balloon-ex-box-1 speech-wrap sb-id-1 sbs-stn sbp-l sbis-cb cf block-box"><div class="speech-person"><figure class="speech-icon"><img decoding="async" src="https://it-biz.online/wp-content/uploads/2023/06/man.png" alt="" class="speech-icon-image"/></figure><div class="speech-name"></div></div><div class="speech-balloon">
<p>SQLは決して難しい技術ではないので、エンジニアであれば「当たり前のように」扱えて当然かも・・・？</p>



<p>とはいえ、案外SQLをちゃんと使ったことがない人も多いはずです。この機会に是非一度ご覧になってみてください。</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-ビズドットオンライン wp-block-embed-ビズドットオンライン"><div class="wp-block-embed__wrapper">

<a href="https://it-biz.online/it-skills/sql_roadmap/" title="【完全無料】SQL：初心者向け学習ロードマップ" class="blogcard-wrap internal-blogcard-wrap a-wrap cf" target="_blank"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="320" height="180" src="https://it-biz.online/wp-content/uploads/2023/03/SQL_roadmap-320x180.png" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://it-biz.online/wp-content/uploads/2023/03/SQL_roadmap-320x180.png 320w, https://it-biz.online/wp-content/uploads/2023/03/SQL_roadmap-240x135.png 240w, https://it-biz.online/wp-content/uploads/2023/03/SQL_roadmap-640x360.png 640w" sizes="(max-width: 320px) 100vw, 320px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【完全無料】SQL：初心者向け学習ロードマップ</div><div class="blogcard-snippet internal-blogcard-snippet">SQL（Structured Query Language）：初心者向けにわかりやすく３０記事でSQLをマスターするための記事を整理。IT初心者でもこの記事を読めば必ずSQLを利用することができるようになります！</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://it-biz.online" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">it-biz.online</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2023.09.22</div></div></div></div></a>
</div></figure>
</div></div>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
