<?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 &#8211; スグブログ</title>
	<atom:link href="https://sugublog.org/category/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/sql/feed/" rel="self" type="application/rss+xml" />
	<link>https://sugublog.org</link>
	<description>ブログ運営について発信中</description>
	<lastBuildDate>Tue, 19 Mar 2024 09:48:44 +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://sugublog.org/wp-content/uploads/2021/07/icon_20210703-min-150x150.png</url>
	<title>SQL &#8211; スグブログ</title>
	<link>https://sugublog.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【SQL】max関数で最大値のレコードを取得する方法</title>
		<link>https://sugublog.org/sql-max/</link>
					<comments>https://sugublog.org/sql-max/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Tue, 19 Mar 2024 09:48:43 +0000</pubDate>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[max]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=6533</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/analytics-8-1024x724.jpg" class="webfeedsFeaturedVisual" /></p>SQLのmax関数で最大値のレコードを取得する方法を教えます。 また最大値のレコードを取得する時のエラーになるものや注意点もお伝えします。 そのエラーの対処法なども現役エンジニアの筆者が答えていきます。 この記事を読めば [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/analytics-8-1024x724.jpg" class="webfeedsFeaturedVisual" /></p>
<p><span class="swl-marker mark_orange"><strong><span class="swl-inline-color has-swl-deep-01-color">SQLのmax関数</span></strong>で最大値のレコードを取得する方法</span>を教えます。</p>



<p>また<span class="swl-marker mark_yellow">最大値のレコードを取得する時の<span class="swl-inline-color has-swl-deep-01-color"><span class="swl-fz u-fz-l">エラー</span></span>になるものや<span class="swl-inline-color has-swl-deep-01-color"><span class="swl-fz u-fz-l">注意点</span></span></span>もお伝えします。</p>



<p>その<span class="swl-inline-color has-swl-deep-03-color"><span class="swl-fz u-fz-l">エラーの対処法</span></span>なども現役エンジニアの筆者が答えていきます。</p>


<div class="p-blogParts post_content" data-partsID="5030">
<p>windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。</p>
</div>


<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<p>この記事を読めば<span class="swl-inline-color has-swl-deep-01-color">SQLのmaxについて理解</span>できます。</p>



<h2 class="wp-block-heading">SQLのmax関数で最大値のレコードを取得する方法</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="770" src="https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-2-1024x770.jpg" alt="max" class="wp-image-4805" srcset="https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-2-1024x770.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-2-300x226.jpg 300w, https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-2-768x577.jpg 768w, https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-2.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><span class="swl-marker mark_orange">最大値のレコードを取得する<strong><span class="swl-inline-color has-swl-deep-01-color">max関数</span></strong>のSQLの基礎</span>は以下です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select max(カラム名) where テーブル名 group by グルーピングしたいカラム名</code></pre></div>



<p>SQLの<span class="swl-inline-color has-swl-deep-02-color">テーブル基礎構成</span>は以下です。</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>SQLのテーブル構成</th><th>カラム１</th><th>カラム２</th></tr></thead><tbody><tr><th>レコード１</th><td>レコード１の値</td><td>レコード１の値</td></tr><tr><th>レコード２</th><td>レコード２の値</td><td>レコード２の値</td></tr></tbody></table><figcaption class="wp-element-caption">SQLのテーブル構成</figcaption></figure>



<p><strong><span class="swl-inline-color has-swl-deep-01-color">max関数の特徴</span></strong>として３つあります。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>SQLのMAX関数の特徴３選</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>グループ内で最大値を抽出する</li>



<li>グループを指定しない場合は全体を1グループとして抽出する</li>



<li>数字だけでなく、文字列や日付なども使用可能</li>
</ul>
</div></div>



<h2 class="wp-block-heading">maxを使用してグループ内で最大値を抽出する</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/07/analytics-6-1024x683.jpg" alt="max" class="wp-image-3692" srcset="https://sugublog.org/wp-content/uploads/2021/07/analytics-6-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/analytics-6-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/analytics-6-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/analytics-6.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><span class="swl-marker mark_orange"><strong><span class="swl-inline-color has-swl-deep-01-color">max</span></strong>を使用してグループ内で最大値を抽出</span>してみます。</p>



<p>まず下のようなSQLテーブルがあるとします。テーブル名は「users」にします。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th><th>group_name</th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td>41</td><td>B</td></tr><tr><td>2</td><td>user_2</td><td>24</td><td>A</td></tr><tr><td>3</td><td>user_3</td><td>35</td><td>B</td></tr><tr><td>4</td><td>user_4</td><td>12</td><td>C</td></tr><tr><td>5</td><td>user_5</td><td>43</td><td>A</td></tr></tbody></table><figcaption class="wp-element-caption">SQLのusersテーブル</figcaption></figure>



<p>「group」カラムが同じものの中での最大値を抽出してみます。そのSQLは以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select group_name ,max(score) from users group by group_name;</code></pre></div>



<p>このSQLを実行した結果は以下となります。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th>group_name</th><th>max(score)</th></tr></thead><tbody><tr><td>A</td><td>43</td></tr><tr><td>B</td><td>41</td></tr><tr><td>C</td><td>12</td></tr></tbody></table><figcaption class="wp-element-caption">SQLの実行結果</figcaption></figure>



<p class="has-border -border01">AからCまでのグループの中で、scoreの最大値が表示されています。</p>



<h2 class="wp-block-heading">maxを持っているレコードを表示したい時の注意点</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/09/moving_0926-2-1024x683.jpg" alt="注意" class="wp-image-4208" srcset="https://sugublog.org/wp-content/uploads/2021/09/moving_0926-2-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/09/moving_0926-2-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/09/moving_0926-2-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/09/moving_0926-2.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th><th>group_name</th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td>41</td><td>B</td></tr><tr><td>2</td><td>user_2</td><td>24</td><td>A</td></tr><tr><td>3</td><td>user_3</td><td>35</td><td>B</td></tr><tr><td>4</td><td>user_4</td><td>12</td><td>C</td></tr><tr><td>5</td><td>user_5</td><td>43</td><td>A</td></tr></tbody></table><figcaption class="wp-element-caption">SQLのusersテーブル</figcaption></figure>



<p>では先程の条件で<span class="swl-inline-color has-swl-deep-01-color">レコード全体</span>を表示してみます。SQLは以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select id,name,group_name ,max(score) from users group by group_name;</code></pre></div>



<p>selectの後に「id」と「name」を追加しました。</p>



<p>実行結果は以下となりました。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th>group_name</th><th> score </th></tr></thead><tbody><tr><td data-has-cell-bg="1" data-text-color="white"><span class="swl-cell-bg has-swl-deep-01-background-color" data-text-color="white" aria-hidden="true"> </span>2</td><td data-has-cell-bg="1" data-text-color="white"><span class="swl-cell-bg has-swl-deep-01-background-color" data-text-color="white" aria-hidden="true">&nbsp;</span>user_2</td><td>A</td><td>43</td></tr><tr><td data-has-cell-bg="1" data-text-color="white"><span class="swl-cell-bg has-swl-deep-01-background-color" data-text-color="white" aria-hidden="true">&nbsp;</span>1</td><td data-has-cell-bg="1" data-text-color="white"><span class="swl-cell-bg has-swl-deep-01-background-color" data-text-color="white" aria-hidden="true"> </span>user_1</td><td>B</td><td>41</td></tr><tr><td data-has-cell-bg="1" data-text-color="white"><span class="swl-cell-bg has-swl-deep-01-background-color" data-text-color="white" aria-hidden="true">&nbsp;</span>4</td><td data-has-cell-bg="1" data-text-color="white"><span class="swl-cell-bg has-swl-deep-01-background-color" data-text-color="white" aria-hidden="true">&nbsp;</span>user_4</td><td>C</td><td>12</td></tr></tbody></table><figcaption class="wp-element-caption">SQLの実行結果</figcaption></figure>



<p>このSQLですがデーターベースの種類によって<span class="swl-bg-color has-swl-deep-01-background-color">エラー</span>が出るか、<span class="swl-bg-color has-swl-deep-01-background-color">想定外のグループの最初の人</span>が出るかになります。</p>



<p class="is-style-big_icon_point">「group by」でグルーピングした場合は<span class="swl-inline-color has-swl-deep-01-color">「group by」で指定したカラム</span>か、<span class="swl-inline-color has-swl-deep-01-color">関数（maxやminなど）</span>でないと思い通りに処理してくれません。</p>



<p>このDBではエラーが出ず結果が出ていますが、「id」と「name」に関しては正常に表示されていません。</p>



<p class="has-border -border01">例えばAグループの最高得点は43ですが、その方の「id」は「5」、「name」は「user_5」が正解です。しかしここでは「id」は「2」、「name」は「user_2」となっており、想定通りではありません。</p>



<p class="is-style-big_icon_caution">「group by」でグルーピングした場合は<span class="swl-marker mark_yellow"><span class="swl-inline-color has-swl-deep-01-color"><strong>「group by」で指定したカラム</strong></span>か<strong><span class="swl-inline-color has-swl-deep-01-color">関数（maxやminなど）</span></strong>以外は指定しないでください。</span></p>



<h2 class="wp-block-heading">max関数でグループを指定しない場合</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="620" src="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg" alt="グルーピング" class="wp-image-4505" srcset="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/user1114-300x182.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/user1114-768x465.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/user1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th><th>group_name</th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td>41</td><td>B</td></tr><tr><td>2</td><td>user_2</td><td>24</td><td>A</td></tr><tr><td>3</td><td>user_3</td><td>35</td><td>B</td></tr><tr><td>4</td><td>user_4</td><td>12</td><td>C</td></tr><tr><td>5</td><td>user_5</td><td>43</td><td>A</td></tr></tbody></table><figcaption class="wp-element-caption">SQLのusersテーブル</figcaption></figure>



<p><strong><span class="swl-inline-color has-swl-deep-01-color">max関数でグループを指定しない場合</span></strong>を試します。SQLは以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select group_name ,max(score) from users;</code></pre></div>



<p>scoreのmax以外にgroup_nameを追加で表示させています。実行結果は以下です。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th>group_name</th><th>max(score)</th></tr></thead><tbody><tr><td data-has-cell-bg="1" data-text-color="white"><span class="swl-cell-bg has-swl-deep-01-background-color" data-text-color="white" aria-hidden="true">&nbsp;</span>B</td><td>43</td></tr></tbody></table><figcaption class="wp-element-caption">SQLの実行結果</figcaption></figure>



<p class="has-border -border01">テーブル全体で一番最大の43が表示されていますが、それに対応する「group_name」の「A」ではなく「B」が表示されています。</p>



<p class="is-style-big_icon_caution">グループを指定しない場合はテーブルを一つのグループとして抽出するので<span class="swl-marker mark_yellow"><strong><span class="swl-inline-color has-swl-deep-01-color">関数（maxやmin）以外</span></strong>は指定しないでください。</span></p>



<h2 class="wp-block-heading">maxで数字だけでなく、文字列や日付などの最大を抽出</h2>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="1024" height="649" src="https://sugublog.org/wp-content/uploads/2021/06/time1-1-min-e1623600613499.jpg" alt="日付" class="wp-image-2966" srcset="https://sugublog.org/wp-content/uploads/2021/06/time1-1-min-e1623600613499.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/06/time1-1-min-e1623600613499-300x190.jpg 300w, https://sugublog.org/wp-content/uploads/2021/06/time1-1-min-e1623600613499-768x487.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th>birthday</th><th> score </th><th>group_name</th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td>1999-4-3</td><td>41</td><td>B</td></tr><tr><td>2</td><td>user_2</td><td>1996-07-15</td><td>24</td><td>A</td></tr><tr><td>3</td><td>user_3</td><td>2001-12-03</td><td>35</td><td>B</td></tr><tr><td>4</td><td>user_4</td><td>2006-01-09</td><td>12</td><td>C</td></tr><tr><td>5</td><td>user_5</td><td>1998-07-07</td><td>43</td><td>A</td></tr></tbody></table><figcaption class="wp-element-caption">SQLのusersテーブル</figcaption></figure>



<p>maxやminは数字だけではなく、<span class="swl-inline-color has-swl-deep-01-color">日付や文字列</span>まで優劣をつけてくれます。</p>



<p>ここでは日付の最大を抽出してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select group_name,name,max(birthday) from users;</code></pre></div>



<p>SQLの実行結果は以下となりました。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> group_name</th><th>name</th><th> max(birthday)</th></tr></thead><tbody><tr><td data-has-cell-bg="1" data-text-color="white"><span class="swl-cell-bg has-swl-deep-01-background-color" data-text-color="white" aria-hidden="true">&nbsp;</span>B</td><td data-has-cell-bg="1" data-text-color="white"><span class="swl-cell-bg has-swl-deep-01-background-color" data-text-color="white" aria-hidden="true">&nbsp;</span>user_1</td><td>2006-01-09</td></tr></tbody></table><figcaption class="wp-element-caption">SQLの実行結果</figcaption></figure>



<p class="has-border -border01">maxで最大の「2006年1月9日」が抽出されています。</p>



<p class="is-style-icon_bad">max以外の指定カラムは出鱈目（デタラメ）なので注意です。</p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">max関数以外のレコードも全て表示する方法</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="288" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0813-1-1024x288.jpg" alt="" class="wp-image-3983" srcset="https://sugublog.org/wp-content/uploads/2021/08/programing_0813-1-1024x288.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/programing_0813-1-300x84.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/programing_0813-1-768x216.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/programing_0813-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th><th>group_name</th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td>41</td><td>B</td></tr><tr><td>2</td><td>user_2</td><td>24</td><td>A</td></tr><tr><td>3</td><td>user_3</td><td>35</td><td>B</td></tr><tr><td>4</td><td>user_4</td><td>12</td><td>C</td></tr><tr><td>5</td><td>user_5</td><td>43</td><td>A</td></tr></tbody></table><figcaption class="wp-element-caption">SQLのusersテーブル</figcaption></figure>



<p><strong><span class="swl-inline-color has-swl-deep-01-color">maxで最大値のレコード全体を表示</span></strong>できないかをサブクエリで試行錯誤してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT * 
FROM `users` AS u 
where score 
in (select max(score) 
from `users` AS s 
where u.group_name = s.group_name)</code></pre></div>



<p>「users」のテーブルを「u」として「score」がサブクエリの結果の範囲に入っているレコードを表示します。</p>



<p>サブクエリでは「users」テーブルを「s」として「u」と「s」の「group_name」が同じもののmax（最大値）を表示します。</p>



<p>サブクエリの最大値がscoreと同じレコードを全て表示しています。</p>



<p>SQLの結果は以下となりました。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th><th>group_name</th></tr></thead><tbody><tr><td data-has-cell-bg="1"><span data-icon-size="l" data-icon-type="bg" aria-hidden="true" class="swl-cell-bg"> </span>1</td><td data-has-cell-bg="1"><span data-icon-size="l" data-icon-type="bg" aria-hidden="true" class="swl-cell-bg"> </span>user_1</td><td>41</td><td>B</td></tr><tr><td data-has-cell-bg="1"><span data-icon-size="l" data-icon-type="bg" aria-hidden="true" class="swl-cell-bg"> </span>4</td><td data-has-cell-bg="1"><span data-icon-size="l" data-icon-type="bg" aria-hidden="true" class="swl-cell-bg"> </span>user_4</td><td>12</td><td>C</td></tr><tr><td data-has-cell-bg="1"><span data-icon-size="l" data-icon-type="bg" aria-hidden="true" class="swl-cell-bg"> </span>5</td><td data-has-cell-bg="1"><span data-icon-size="l" data-icon-type="bg" aria-hidden="true" class="swl-cell-bg"> </span>user_5</td><td>43</td><td>A</td></tr></tbody></table><figcaption class="wp-element-caption">SQLのusersテーブル</figcaption></figure>



<p class="has-border -border01">グループごとのmax（最大値）が表示され、そのレコードも全て表示できました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/sql-max/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SQLserverでCASEとWHENを使用して分岐する</title>
		<link>https://sugublog.org/sql-base-case-when/</link>
					<comments>https://sugublog.org/sql-base-case-when/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Sun, 01 Oct 2023 11:45:12 +0000</pubDate>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[CASE]]></category>
		<category><![CDATA[THEN]]></category>
		<category><![CDATA[WHEN]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=5627</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/server_007-3-1024x768.jpg" class="webfeedsFeaturedVisual" /></p>プログラミングをするにあたって条件分岐は重要であり、極めるとやりたい事の幅がグッと広がります。 SQLにも条件分岐があります。CASEとWHENとTHENを使用します。updateなどでもcaseは使われます。 実際にS [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/server_007-3-1024x768.jpg" class="webfeedsFeaturedVisual" /></p>
<p><strong>プログラミングをするにあたって条件分岐は重要</strong>であり、極めるとやりたい事の幅がグッと広がります。</p>



<p><strong>SQLにも条件分岐</strong>があります。<strong><span class="swl-inline-color has-swl-deep-01-color">CASEとWHENとTHEN</span></strong>を使用します。updateなどでもcaseは使われます。</p>



<p>実際にSQLで<strong><span class="swl-inline-color has-swl-deep-01-color">CASEとWHENとTHEN</span></strong>を使用して結果をみてみましょう。</p>



<p>また<span class="swl-bg-color has-swl-deep-01-background-color">よくあるエラー</span>なども一緒にご紹介します。</p>


<div class="p-blogParts post_content" data-partsID="5030">
<p>windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。</p>
</div>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLでCASEとWHENとTHENを使用して分岐する</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/07/pixta_77773496_M-1024x791.jpg" alt="選択する" class="wp-image-3635"/><figcaption class="wp-element-caption">Business person stand on road fork with hard and easy directions. Choice way isometric</figcaption></figure>
</div>


<p><strong>SQLでCASEを使用して条件分岐する時の基礎構文</strong>は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>CASE WHEN 評価 THEN 式
     WHEN 評価 THEN 式
     WHEN 評価 THEN 式
     ・
     ・
     ELSE 式
END</code></pre></div>



<p><strong>SQLのCASE</strong>を使用する時の決まりはあまりなく、<span class="swl-bg-color has-swl-deep-02-background-color">どこにも記述できる</span>事が強みです。</p>



<p>WHENの後に評価式をもってきて該当すればTHEN以降の式が返されます。</p>



<p>どれにも当てはまらない場合はELSEの後の式が返されます。</p>



<p class="is-style-icon_info">ELSEは省略可能ですが、すればELSE NULLになるので省略しない</p>



<p class="is-style-big_icon_caution">終了時にはENDを入れる（必須項目）</p>



<h2 class="wp-block-heading">SQLでCASEやWHENやTHENを使用してみる</h2>



<p>では実際に<strong>SQLでCASE</strong>を使用します。</p>



<p><span class="swl-marker mark_orange">使用用途としてSELECT文の結果を柔軟に表示変えする事</span>が多いです。</p>



<h3 class="wp-block-heading">実際にSQLを実行する環境説明</h3>



<p>以下のSQLテーブルがあるとします。</p>



<figure class="wp-block-image size-full is-style-border"><img decoding="async" width="354" height="320" src="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_having.png" alt="SQLのテーブル_点数" class="wp-image-5623" srcset="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_having.png 354w, https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_having-300x271.png 300w" sizes="(max-width: 354px) 100vw, 354px" /><figcaption class="wp-element-caption">SQLのテーブル_点数</figcaption></figure>



<h3 class="wp-block-heading">GROUP BY句にてグルーピングして点数の合計を出す</h3>



<p>チーム別の合計値を表示してみます。</p>



<p>以下のSQL文を見て下さい。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>※GROUP BY句にてグルーピングして点数の合計を出すSQL
SELECT `チーム名`,SUM(`点数`) FROM `点数` GROUP BY `チーム名`;</code></pre></div>



<p>結果は以下になります。</p>



<figure class="wp-block-image size-full is-style-desktop"><img decoding="async" width="171" height="95" src="https://sugublog.org/wp-content/uploads/2023/10/sql_case_sum.png" alt="SQLにてGROUP BY句でSUMの結果を表示" class="wp-image-5632"/><figcaption class="wp-element-caption">SQLにてGROUP BY句でSUMの結果</figcaption></figure>



<h3 class="wp-block-heading">CASEにてグルーピングして点数の合計を出す</h3>



<p>この結果ですがチーム名をカラムへ、合計点数をレコードに入れ替えしてみます。</p>



<p>以下のCASEのSQL文を見てください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT SUM(CASE WHEN `チーム名` = &#39;チームA&#39; THEN `点数` ELSE 0 END) &#39;チームAの点数&#39;, 
       SUM(CASE WHEN `チーム名` = &#39;チームB&#39; THEN `点数` ELSE 0 END) &#39;チームBの点数&#39;,
       SUM(CASE WHEN `チーム名` = &#39;チームC&#39; THEN `点数` ELSE 0 END) &#39;チームCの点数&#39;
       FROM `点数`;</code></pre></div>



<h3 class="wp-block-heading">CASEにてグルーピングして点数の合計を出すSQLの説明</h3>



<p>今回は<span class="swl-marker mark_orange"><strong>集約関数の中にCASE</strong>を指定して、チーム別にグルーピング</span>しています。</p>



<p>判別式でチーム名のカラムが〇〇のときに点数を合計、当てはまらなければ０を指定しています。</p>



<p class="is-style-icon_info">ENDは必須なので忘れずに記入してます。</p>



<p>このSQLを実行してみます。</p>



<figure class="wp-block-image size-full is-style-desktop"><img decoding="async" width="266" height="49" src="https://sugublog.org/wp-content/uploads/2023/10/sql_case_sum_change.png" alt="SQLにてCASE句でSUMの結果" class="wp-image-5633"/><figcaption class="wp-element-caption">SQLにてCASE句でSUMの結果</figcaption></figure>



<p>普通にグルーピングした結果の縦横を変換して表示できています。</p>



<p class="has-border -border02">このように<span class="swl-marker mark_orange">SELECT文を自分の行いたい表示に変更する時に<strong>CASE</strong>を使用します。</span></p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLでCASEのよくあるエラー</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/06/shutterstock_1433996435-min-1024x683.jpg" alt="エラー" class="wp-image-2885"/></figure>
</div>


<p><strong>SQLのCASE</strong>を使用する時のよくある<span class="swl-bg-color has-swl-deep-01-background-color">エラー</span>は様々あります。</p>



<p>その中でも一番多いのは最後の「END」を忘れる事です。</p>



<p>先程のSQL文で最後の「END」を消して実行してみましょう！</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-file="エラーSQL構文" data-lang="SQL"><code>※エラーが出るSQL構文
SELECT SUM(CASE WHEN `チーム名` = &#39;チームA&#39; THEN `点数` ELSE 0) &#39;チームAの点数&#39;, 
       SUM(CASE WHEN `チーム名` = &#39;チームB&#39; THEN `点数` ELSE 0) &#39;チームBの点数&#39;,
       SUM(CASE WHEN `チーム名` = &#39;チームC&#39; THEN `点数` ELSE 0) &#39;チームCの点数&#39;
       FROM `点数`;</code></pre></div>



<p>上のSQLを実行してみましょう！</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-file="エラーメッセージ" data-lang="SQL"><code>#1064 - SQL構文エラーです。バージョンに対応するマニュアルを参照して正しい構文を確認してください。 : &#39;) &#39;チームAの点数&#39;,
       SUM(CASE WHEN `チーム名` = &#39;チームB&#39;...&#39; 付近 1 行目</code></pre></div>



<p>このようなエラーメッセージが出ました！</p>



<p>このようなメッセージが出た時は最後の「END」を確認して見て下さい。</p>



<h2 class="wp-block-heading">SQLでCASEとWHENとTHENを使用して分岐するのまとめ</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="512" src="https://sugublog.org/wp-content/uploads/2021/07/code-007-01-1024x512.jpg" alt="SQLでCASEとWHENとTHENを使用して分岐するのまとめ" class="wp-image-3584" srcset="https://sugublog.org/wp-content/uploads/2021/07/code-007-01-1024x512.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/code-007-01-300x150.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/code-007-01-768x384.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/code-007-01-1536x768.jpg 1536w, https://sugublog.org/wp-content/uploads/2021/07/code-007-01-scaled.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><strong><span class="swl-inline-color has-swl-deep-01-color">SQLでCASEを使用して条件分岐する時の基礎構文</span></strong>は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>CASE WHEN 評価 THEN 式
     WHEN 評価 THEN 式
     WHEN 評価 THEN 式
     ・
     ・
     ELSE 式
END</code></pre></div>



<p>SQLのCASEを使用する時の決まりはあまりなく、<span class="swl-marker mark_orange">どこにも記述できる</span>事が強みです。</p>



<p class="is-style-big_icon_caution">終了時にはENDを入れる（必須項目）</p>



<p>SELECT文を自分の行いたい表示に変更する時にCASEを使用します。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/sql-base-case-when/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【SQL基礎】havingの使い方を学ぶ。countなどを使用する</title>
		<link>https://sugublog.org/sql-base-having-count/</link>
					<comments>https://sugublog.org/sql-base-having-count/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Sun, 01 Oct 2023 09:58:20 +0000</pubDate>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[HAVING]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=5618</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg" class="webfeedsFeaturedVisual" /></p>SQL文で集約したものに条件を付けたい場合があると思います。 そんな時はHAVING句が使用できます。 条件を付けたい場合だとWHERE関数を思いつくと思いますが、WHERE句はレコード単体に対してのみしか条件を付ける事 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg" class="webfeedsFeaturedVisual" /></p>
<p><strong><span class="swl-marker mark_orange">SQL文で集約したものに条件を付けたい場合</span></strong>があると思います。</p>



<p>そんな時は<strong><span class="swl-bg-color has-swl-deep-01-background-color">HAVING句</span></strong>が使用できます。</p>



<p>条件を付けたい場合だとWHERE関数を思いつくと思いますが、<span class="swl-bg-color has-swl-deep-02-background-color">WHERE句はレコード単体</span>に対してのみしか条件を付ける事ができません。</p>



<p>集約関数を使用する平均値が〇〇、合計値が〇〇といった条件はWHEREではできません。</p>



<p>そこででてくるのがHAVING句です。</p>


<div class="p-blogParts post_content" data-partsID="5030">
<p>windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。</p>
</div>


<p>HAVING句の使い方を学んで行きましょう！</p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLでhavingの使い方を学ぶ。countなどを使用する</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="512" src="https://sugublog.org/wp-content/uploads/2021/11/access1114-1024x512.jpg" alt="SQLでhavingの使い方を学ぶ。countなどを使用する" class="wp-image-4500" srcset="https://sugublog.org/wp-content/uploads/2021/11/access1114-1024x512.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/access1114-300x150.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/access1114-768x384.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/access1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">SQLでHaving句を使用する時の基礎構文</h3>



<p><strong><span class="swl-marker mark_orange">SQLでHaving句の基本構文</span></strong>は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT 集約関数 FROM テーブル名 GROUP BY カラム名 HAVING 集約関数;</code></pre></div>



<p class="is-style-icon_pen">集約関数とは平均のAVG関数や合計のSUM関数、数を数えるCOUNT関数などです。</p>



<p>集約関数を使用できるのは以下の3つです。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>集約関数が使用できる３句</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>SELECT句</li>



<li>HAVING句</li>



<li>ORDER BY句</li>
</ul>
</div></div>



<p class="has-border -border02">WHEREで集約関数は使用できないので<strong>Having句</strong>を使用します！</p>



<h3 class="wp-block-heading">SQLでHAVING句を使用する時の注意点</h3>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>HAVING句を使用する時の注意点</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>位置はGROUP BY句の後</li>



<li>Having句で使用できるものに制限あり</li>
</ul>
</div></div>



<p>一つ目の注意点として位置でHAVING関数が使用できるのは<strong><span class="swl-marker mark_yellow">GROUP BY句の後ろ</span></strong>になります。</p>



<p>二つ目の注意点は<span class="swl-marker mark_yellow">Having関数で使用できる要素が限られています。</span></p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>Having関数で使用できる要素</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>定数</li>



<li>集約関数</li>



<li>GROUP BY句で指定したカラム</li>
</ul>
</div></div>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLでhavingとCountを使ってみる</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="614" src="https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-4-1024x614.jpg" alt="traning" class="wp-image-4544" srcset="https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-4-1024x614.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-4-300x180.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-4-768x461.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-4.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>では実際にSQLでHaving句を使用して実施してみます</p>



<p>以下のテーブルがあったとします。</p>


<div class="wp-block-image is-style-border">
<figure class="aligncenter size-full"><img decoding="async" width="354" height="320" src="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_having.png" alt="SQLのテーブル_点数" class="wp-image-5623" srcset="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_having.png 354w, https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_having-300x271.png 300w" sizes="(max-width: 354px) 100vw, 354px" /><figcaption class="wp-element-caption">SQLのテーブル_点数</figcaption></figure>
</div>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<p>それぞれのチームの人数が4人のチームを表示させてみます。</p>



<p>下のSQL文を実行します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT `チーム名`,COUNT(*) &#39;人数&#39; FROM `点数` GROUP BY `チーム名` HAVING COUNT(*) = 4;</code></pre></div>



<h3 class="wp-block-heading">SQL文解説：havingとCount</h3>



<p>SELECT文で表示するカラムで「チーム名」と<strong><span class="swl-bg-color has-swl-deep-01-background-color">集約関数COUNT</span></strong>を指定し、わかりやすいようにカラム名を「人数」にします。</p>



<p>FROMでテーブル名を指定します。</p>



<p>GROUP BY句でグルーピングするカラム「チーム名」を指定します。</p>



<p class="has-border -border02"><strong>Having句で人数の合計が4</strong>を指定します。</p>



<p>ここでHaving句を使用する時の注意点を思い出してください。</p>



<p><strong><span class="swl-marker mark_orange">GROUP BY句の後ろに記述</span></strong>しています。また<strong><span class="swl-marker mark_orange">Having句で集約関数を使用している</span></strong>ので注意点はクリアしている事が分かると思います。</p>



<h3 class="wp-block-heading">SQL文実施：havingとCount</h3>



<p>実行結果は以下となります。</p>



<figure class="wp-block-image size-full is-style-desktop"><img decoding="async" width="104" height="79" src="https://sugublog.org/wp-content/uploads/2023/10/sql_having_count.png" alt="SQLにてHaving句でCountの結果を表示" class="wp-image-5624"/><figcaption class="wp-element-caption">SQLにてHaving句でCountの結果</figcaption></figure>



<p>チームの合計人数が４のチームが表示されています！</p>



<h2 class="wp-block-heading">SQLでhavingとSumを使ってみる</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-1-1024x683.jpg" alt="traning" class="wp-image-4541" srcset="https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-1-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-1-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-1-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/programing_shool1121-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>今度はチームごとの合計値が1500以上のチーム名と合計値を表示してみます。</p>



<p>下のSQL文を実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT `チーム名`,SUM(`点数`) FROM `点数` GROUP BY `チーム名` HAVING SUM(`点数`) &gt; 1500;</code></pre></div>



<ul class="wp-block-list"></ul>



<h3 class="wp-block-heading">SQL文解説：havingとSum</h3>



<p>SELECT文で表示するカラムでチーム名と<strong><span class="swl-bg-color has-swl-deep-01-background-color">集約関数SUM</span></strong>を指定します。</p>



<p>FROMでテーブル名を指定します。</p>



<p>GROUP BY句でグルーピングするカラム「チーム名」を指定します。</p>



<p class="has-border -border02"><strong>Having句で条件の点数の合計が1500以上</strong>を指定します。</p>



<p>ここでHaving句を使用する時の注意点を思い出してください。</p>



<p><strong><span class="swl-marker mark_orange">GROUP BY句の後ろ</span></strong>に記述しています。また<span class="swl-marker mark_orange"><strong>Having句で集約関数を使用</strong>している</span>ので注意点はクリアしている事が分かると思います。</p>



<h3 class="wp-block-heading">SQL文実施：havingとSum</h3>



<p>では上記のSQL文を実行してみます。</p>


<div class="wp-block-image is-style-desktop">
<figure class="aligncenter size-full"><img decoding="async" width="152" height="70" src="https://sugublog.org/wp-content/uploads/2023/10/sql_having_sum.png" alt="SQLにてHaving句でSUMの結果を表示" class="wp-image-5625" srcset="https://sugublog.org/wp-content/uploads/2023/10/sql_having_sum.png 152w, https://sugublog.org/wp-content/uploads/2023/10/sql_having_sum-150x70.png 150w" sizes="(max-width: 152px) 100vw, 152px" /><figcaption class="wp-element-caption">SQLにてHaving句でSUMの結果</figcaption></figure>
</div>


<p>チーム名でグルーピングしてその合計値が表示されて1500以上のものが表示されています。</p>



<h2 class="wp-block-heading">SQLでhavingを使用してエラーが出る場合</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="792" src="https://sugublog.org/wp-content/uploads/2021/07/clash-1024x792.jpg" alt="エラー発生" class="wp-image-3586" srcset="https://sugublog.org/wp-content/uploads/2021/07/clash-1024x792.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/clash-300x232.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/clash-768x594.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/clash-1536x1187.jpg 1536w, https://sugublog.org/wp-content/uploads/2021/07/clash-scaled.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>では以下のSQL構文を実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT `チーム名`,SUM(`点数`) FROM `点数` GROUP BY `チーム名` HAVING `点数` &gt; 250;</code></pre></div>



<p>Having句で「点数」カラムを条件にしていますが、GROUP BY句で使用されていないのでエラーが出てしまいます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>#1054 - 列 &#39;点数&#39; は &#39;having clause&#39; にはありません。</code></pre></div>



<p>Having句で使用する時の注意点に気を付けながら使用してください。</p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLでhavingの使い方を学ぶ。countなどを使用するのまとめ</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="620" src="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg" alt="SQLでhavingの使い方を学ぶ。countなどを使用するのまとめ" class="wp-image-4505" srcset="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/user1114-300x182.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/user1114-768x465.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/user1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><strong>SQLでHaving句の基本構文</strong>は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT 集約関数 FROM テーブル名 GROUP BY カラム名 HAVING 集約関数;</code></pre></div>



<p>SQLでHaving句を使う時の<span class="swl-inline-color has-swl-deep-01-color">注意点</span>は以下となります。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>HAVING句を使用する時の注意点</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>位置はGROUP BY句の後</li>



<li>Having句で使用できるものに制限あり</li>
</ul>
</div></div>



<p><strong><span class="swl-bg-color has-swl-deep-01-background-color">Having句で使用できるもの</span></strong>は以下となります。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>Having関数で使用できる要素</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>定数</li>



<li>集約関数</li>



<li>GROUP BY句で指定したカラム</li>
</ul>
</div></div>



<p><span class="swl-marker mark_yellow">レコード単体に条件</span>を付けたい場合は<span class="swl-marker mark_yellow">WHERE</span>ですが集約したものは指定できません。<span class="swl-marker mark_orange">集約関数やグルーピングしたものに条件</span>を付けたいときは、<span class="swl-marker mark_orange">Having</span>句を使用して見て下さい。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/sql-base-having-count/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【SQL基礎】exists句とnot exists句の使い方</title>
		<link>https://sugublog.org/sql-base-exists-and-not-exists/</link>
					<comments>https://sugublog.org/sql-base-exists-and-not-exists/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Sat, 30 Sep 2023 22:21:01 +0000</pubDate>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[exists]]></category>
		<category><![CDATA[not exists]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=5605</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/pixta_77773496_M-e1626536234619-1024x791.jpg" class="webfeedsFeaturedVisual" /></p>SQLで「exists」が出てきた事はありませんか？出てきてその動きが分かりにくく困った事はないでしょうか？ SQLでの「exists」は少し他のコマンドとは違いますのでここにまとめておきます。 exists句は奥が深い [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/pixta_77773496_M-e1626536234619-1024x791.jpg" class="webfeedsFeaturedVisual" /></p>
<p><strong><span class="swl-inline-color has-swl-deep-01-color">SQLで「exists」</span></strong>が出てきた事はありませんか？出てきてその動きが分かりにくく困った事はないでしょうか？</p>



<p>SQLでの「exists」は少し他のコマンドとは違いますのでここにまとめておきます。</p>



<p>exists句は奥が深いので今回は基礎の部分だけにしておきます。</p>


<div class="p-blogParts post_content" data-partsID="5030">
<p>windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。</p>
</div>


<p>実際に<span class="swl-marker mark_orange"><strong>「exists句」や否定形の「not exists句」を使用して</strong>動きも見ていくのでわかりやすく</span>なっています。</p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLで「exists」と「not exists」の使い方</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="444" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-1024x444.jpg" alt="データベース" class="wp-image-4503" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-1024x444.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-300x130.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-768x333.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">SQLで「exists」と「not exists」の基礎構文</h3>



<p><span class="swl-bg-color has-swl-deep-01-background-color">SQLで「exists句」を使用する時の基礎構文</span>は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select * from テーブル名 where exists (サブクエリ); </code></pre></div>



<p>SQLで「not exists句」を使用する時の基礎構文はexistsの前に「not」を入れるだけです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select * from テーブル名 where not exists (サブクエリ); </code></pre></div>



<p class="is-style-icon_book">サブクエリとは簡単に言うとSQLの中でSQL構文を使用する事。select構文の中にselect構文が入っているSQLを見た事があると思いますが、selectの中のselectがサブクエリになります。</p>



<h3 class="wp-block-heading">SQLでの「exists」と「not exists」の説明</h3>



<p>existsの特徴１は<span class="swl-bg-color has-swl-deep-02-background-color">引数が１つ</span>でサブクエリになるという事です。</p>



<p>existsの特徴２はwhereの<span class="swl-bg-color has-swl-deep-02-background-color">カラム（existsの左側）を指定しない</span>事です。</p>



<p>カラムを指定しない理由はサブクエリで求めたレコードがある（TRUE）かない（FALSE）かの2択だからです。だからカラムを指定しない</p>



<p>では実際にSQLで「exists」と「not exists」を使用してみましょう！</p>



<h2 class="wp-block-heading">SQLで「exists」と「not exists」を使ってみる</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="682" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-1024x682.jpg" alt="データベース" class="wp-image-4502" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-1024x682.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-768x511.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">SQL実施環境解説</h3>



<p>実施する際の環境を説明します。</p>



<p>以下の2つのテーブルがあるとします。</p>



<div class="swell-block-columns"><div class="swell-block-columns__inner">
<div class="swell-block-column swl-has-mb--s">
<figure class="wp-block-image size-full"><img decoding="async" width="310" height="318" src="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table.png" alt="SQLのテーブル" class="wp-image-5597" srcset="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table.png 310w, https://sugublog.org/wp-content/uploads/2023/10/sql_base_table-292x300.png 292w" sizes="(max-width: 310px) 100vw, 310px" /><figcaption class="wp-element-caption">SQLのテーブル_人員</figcaption></figure>
</div>



<div class="swell-block-column swl-has-mb--s">
<p></p>



<figure class="wp-block-image size-full"><img decoding="async" width="173" height="301" src="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_tensuhyou.png" alt="SQLのテーブル" class="wp-image-5610"/><figcaption class="wp-element-caption">SQLのテーブル_点数表</figcaption></figure>
</div>
</div></div>



<p>テニスを行った人の氏名、名前、年齢を表示してみます。</p>



<h3 class="wp-block-heading">SQLで「exists」を使ってみる</h3>



<p>以下のSQLコマンドを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT
    `氏名`,
    `名前`,
    `年齢`
FROM
    `人員` j
WHERE
    EXISTS(
    SELECT
        1
    FROM
        `点数表` t
    WHERE
        j.`番号` = t.`番号` AND t.`競技id` = 3
);</code></pre></div>



<h3 class="wp-block-heading">SQL文の説明</h3>



<p>SELECTで表示するものを記述しています。</p>



<p>FROMで表示するテーブルを記述しています。</p>



<p><strong><span class="swl-marker mark_orange">WHEREで「EXISTS」を指定</span></strong>しています。その後にサブクエリをいれています。</p>



<p>サブクエリのSELECTには「1」を記述していますが「*」でも良いです。</p>



<p class="is-style-icon_pen">「1」に特に意味はありません</p>



<p>サブクエリのFROMでサブクエリするテーブルを記述しています。</p>



<p>サブクエリのWHEREで条件を記述しています。</p>



<p>サブクエリでは<span class="swl-bg-color has-swl-deep-01-background-color">相関サブクエリ</span>をいれますので、<span class="swl-marker mark_orange">表示するテーブルの「番号」と検索するテーブルの「番号」をイコールにしてテーブルをつなげています。</span></p>



<p>ANDで繋げて条件の競技名テニスに対応している「競技id」が3のものを指定しています。</p>



<p class="has-border -border02">これで「競技id」が3になっている番号のレコードが真（TRUE）になり表示されます。</p>



<h3 class="wp-block-heading">SQLで「exists」を実施した結果</h3>



<p>では先程のSQL文を実施してみます。</p>


<div class="wp-block-image is-style-desktop">
<figure class="aligncenter size-full"><img decoding="async" width="125" height="122" src="https://sugublog.org/wp-content/uploads/2023/10/sql_exists.png" alt="SQLでexists句を使用した結果" class="wp-image-5612"/><figcaption class="wp-element-caption">SQLでexists句を使用した結果</figcaption></figure>
</div>


<p>テニスをしている4人が表示されました。</p>



<h3 class="wp-block-heading">SQLで「not exists」を使ってみる</h3>



<p>では今度は<strong><span class="swl-bg-color has-swl-deep-02-background-color">「not exists」を実施</span></strong>します。先程のSQL文の「exists」を「not exists」に変更したものが以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT
    `氏名`,
    `名前`,
    `年齢`
FROM
    `人員` j
WHERE NOT
    EXISTS(
    SELECT
        1
    FROM
        `点数表` t
    WHERE
        j.`番号` = t.`番号` AND t.`競技id` = 3
);</code></pre></div>



<p>SQL構文の説明は「exists」と同じなので省略します。</p>



<h3 class="wp-block-heading">SQLで「not exists」を実施した結果</h3>



<p>では先程のSQL文を実行します。</p>


<div class="wp-block-image is-style-desktop">
<figure class="aligncenter size-full"><img decoding="async" width="120" height="217" src="https://sugublog.org/wp-content/uploads/2023/10/sql_not_exists.png" alt="SQLでnot_exists句を使用した結果" class="wp-image-5613"/><figcaption class="wp-element-caption">SQLでnot_exists句を使用した結果</figcaption></figure>
</div>


<p>テニスをしている人以外が表示されました。</p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLで「exists」は「in」で代用可能</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/06/pixta_75493348_M-min-1024x682.jpg" alt="SQLで「exists」は「in」で代用可能" class="wp-image-2884"/></figure>
</div>


<p>実は<span class="swl-marker mark_orange"><strong>「exists句」と「not exists句」</strong>は「in句」でも対応可能</span>です。</p>



<p class="is-style-icon_announce">SQL文でin句を使用する基本は、以下の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -external" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">スグブログ</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/06/pixta_75493348_M-min-e1623599810234.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-in/" target="_blank" rel="noopener noreferrer">【SQL基礎】in句を使用して複数条件を綺麗に書く｜orで失敗する人へ | in句の上限などもご紹介！</a>
						<span class="p-blogCard__excerpt">SQLでin句を使用して条件を絞る事が可能です。 SQLで複数の条件を絞りたい時に「and」や「or」を使用すると思います。 しかし「or」を使用すると失敗したり、条件の記述が&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>「in句」を使用して同じことを行ってみます。以下のSQL構文を見て下さい。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT
    `氏名`,
    `名前`,
    `年齢`
FROM
    `人員` j
WHERE
    `番号` IN(
    SELECT
        `番号`
    FROM
        `点数表` t
    WHERE
        t.`競技id` = 3
);</code></pre></div>



<p><strong><span class="swl-marker mark_orange">「exists」を使用したSQL文からの変更点</span></strong>としては以下があります。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>existsからinにする時の変更点</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>「exists」を「in」に変更する</li>



<li>「in」の前にカラムを記入する</li>



<li>WHERE以降は競技がテニスの「競技id」が3のものを指定</li>
</ul>
</div></div>



<p>ではexistsからinに変更したSQL文を実行してみます。</p>



<figure class="wp-block-image size-full is-style-desktop"><img decoding="async" width="125" height="122" src="https://sugublog.org/wp-content/uploads/2023/10/sql_exists.png" alt="SQLでexists句を使用した結果" class="wp-image-5612"/><figcaption class="wp-element-caption">SQLでin句を使用した結果</figcaption></figure>



<p>「exists」の時と同じ結果になりました。</p>



<p>では<strong><span class="swl-marker mark_orange">「not exists」も「not in」に変更</span></strong>してみます。変更したSQL文は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT
    `氏名`,
    `名前`,
    `年齢`
FROM
    `人員` j
WHERE
    `番号` NOT IN(
    SELECT
        `番号`
    FROM
        `点数表` t
    WHERE
        t.`競技id` = 3
);</code></pre></div>



<p>ではこのSQL文を実行してみます。</p>



<figure class="wp-block-image size-full is-style-desktop"><img decoding="async" width="120" height="217" src="https://sugublog.org/wp-content/uploads/2023/10/sql_not_exists.png" alt="SQLでnot_exists句を使用した結果" class="wp-image-5613"/><figcaption class="wp-element-caption">SQLでnot_in句を使用した結果</figcaption></figure>



<p>こちらも「not exists」と同じ結果となりました。</p>



<h2 class="wp-block-heading">SQLでexistsとinではどちらを使う</h2>



<p class="is-style-big_icon_hatena">では<strong>SQLでは「exists」と「in」</strong>どちらを使用した方が良いのでしょうか？</p>



<p><span class="swl-marker mark_orange">回答は<strong>MySQLではexists</strong>を使う、<strong>oracleでは同じだけどexists</strong>使う</span></p>



<p>理由は処理速度が違うからです。「exists」MySQLの場合は処理がはやい</p>



<p>oracleは処理速度は同じと書いているのでどちらでも良いですが、MySQLと合わせてexistsを使用するにしました。</p>



<p>なので<strong>「exists」と「in」では</strong><span class="swl-bg-color has-swl-deep-01-background-color"><strong>「exists」</strong>を使用した方が良い</span>となりました。</p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLで「exists」と「not exists」の使い方のまとめ</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="560" src="https://sugublog.org/wp-content/uploads/2021/11/programing_1122-4-1024x560.jpg" alt="SQLで「exists」と「not exists」の使い方のまとめ" class="wp-image-4561" srcset="https://sugublog.org/wp-content/uploads/2021/11/programing_1122-4-1024x560.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/programing_1122-4-300x164.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/programing_1122-4-768x420.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/programing_1122-4.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">SQLで「exists」と「not exists」の基礎構文</h3>



<p>SQLで「exists句」を使用する時の基礎構文は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select * from テーブル名 where exists (サブクエリ); </code></pre></div>



<p>SQLで「not exists句」を使用する時の基礎構文は、existsの前にnotを入れるだけです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select * from テーブル名 where not exists (サブクエリ); </code></pre></div>



<p>「in」でも対応可能ですが「exists」と「in」では「exists」を使用した方が良い。</p>



<p>今回使用したexistsを利用したSQL例文は以下です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT
    `氏名`,
    `名前`,
    `年齢`
FROM
    `人員` j
WHERE
    EXISTS(
    SELECT
        1
    FROM
        `点数表` t
    WHERE
        j.`番号` = t.`番号` AND t.`競技id` = 3
);</code></pre></div>



<p>今回はSQLでexistsを使用してみました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/sql-base-exists-and-not-exists/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【SQL基礎】in句を使用して複数条件を綺麗に書く｜orで失敗する人へ</title>
		<link>https://sugublog.org/sql-base-in/</link>
					<comments>https://sugublog.org/sql-base-in/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Sat, 30 Sep 2023 18:12:37 +0000</pubDate>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[in句]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=5595</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/06/pixta_75493348_M-min-e1623599810234.jpg" class="webfeedsFeaturedVisual" /></p>SQLでin句を使用して条件を絞る事が可能です。 SQLで複数の条件を絞りたい時に「and」や「or」を使用すると思います。 しかし「or」を使用すると失敗したり、条件の記述が長くなってしまって綺麗ではない。と言った悩み [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/06/pixta_75493348_M-min-e1623599810234.jpg" class="webfeedsFeaturedVisual" /></p>
<p><strong><span class="swl-inline-color has-swl-deep-01-color">SQLでin句</span></strong>を使用して条件を絞る事が可能です。</p>



<p>SQLで複数の条件を絞りたい時に「and」や「or」を使用すると思います。</p>



<p class="is-style-icon_bad">しかし「or」を使用すると失敗したり、<span class="swl-marker mark_yellow">条件の記述が長くなってしまって綺麗ではない</span>。と言った悩みに当たった事もあると思います。</p>



<p>そこで今回は<strong>プログラミングを普段使用している筆者</strong>が、<strong><span class="swl-marker mark_orange">SQLで条件を絞る時にオススメの「in句」</span></strong>をご紹介します。</p>


<div class="p-blogParts post_content" data-partsID="5030">
<p>windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。</p>
</div>


<p class="has-border -border02"><span class="swl-marker mark_blue"><strong>SQL</strong>で条件を絞りたいけど<strong>「or句」で失敗</strong>してしまう</span>、または<span class="swl-marker mark_orange">もっと条件を<strong>スマートに表示</strong>したい</span>という方は「in句」を使用すれば解決しますよ。</p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLで「in句」を使用して複数条件を綺麗に書く</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="944" src="https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-1-1024x944.jpg" alt="SQLで「in句」を使用して複数条件を綺麗に書く" class="wp-image-4804" srcset="https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-1-1024x944.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-1-300x277.jpg 300w, https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-1-768x708.jpg 768w, https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">SQLで「in句」を使用する基礎構文</h3>



<p><strong>SQLで「in句」</strong>を使用する時の基礎構文は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select * from テーブル名 where カラム名 in (条件1,条件2,条件3,・・・);</code></pre></div>



<h3 class="wp-block-heading">SQLで「in句」を使用するメリット</h3>



<p>SQLで複数の条件を「in句」で使用すれば、<span class="swl-bg-color has-swl-deep-02-background-color">「カラム名」を一回しか記述しない</span>のでSQL構文が綺麗になります。</p>



<p>またSQLでorを使用して思い通りにいかない場合も、<strong><span class="swl-bg-color has-swl-deep-01-background-color">「in句」を使用すれば上手くSQLが動く</span></strong>こともあります。</p>



<h2 class="wp-block-heading">SQLで「in句」を実際使用する</h2>



<h3 class="wp-block-heading">SQLで「in句」を実践する</h3>



<p>では<strong><span class="swl-marker mark_orange">実際にSQLで「in句」を使用</span></strong>してみましょう！</p>



<p>下のようなテーブルがあったとします。</p>



<figure class="wp-block-image size-full is-style-border"><img decoding="async" width="310" height="318" src="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table.png" alt="SQLのテーブル" class="wp-image-5597" srcset="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table.png 310w, https://sugublog.org/wp-content/uploads/2023/10/sql_base_table-292x300.png 292w" sizes="(max-width: 310px) 100vw, 310px" /><figcaption class="wp-element-caption">データベースのテーブル例</figcaption></figure>



<p>年齢が23歳、55歳、37歳の氏名と名前を取り出してみましょう。</p>



<p>「in句」を用いたSQLは以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select `氏名`,`名前`,`年齢` from `人員` where `年齢` in (23,55,37);</code></pre></div>



<p>このSQLを実行してみます。<span class="swl-bg-color has-swl-deep-02-background-color">実行結果</span>は以下となりました。</p>



<figure class="wp-block-image size-full is-style-border"><img decoding="async" width="123" height="122" src="https://sugublog.org/wp-content/uploads/2023/10/sql_in_table.png" alt="SQLでin句を使用した結果" class="wp-image-5600"/><figcaption class="wp-element-caption">SQLでin句を使用した結果</figcaption></figure>



<p>思い通りの結果になっています。</p>



<h3 class="wp-block-heading">「in句」と「or句」を比較してみる</h3>



<p>ではこの<strong><span class="swl-bg-color has-swl-deep-01-background-color">SQL構文を「or句」</span></strong>で表すにはどうすれば良いでしょうか？</p>



<p>先程の結果となるSQL構文は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select `氏名`,`名前`,`年齢` from `人員` where `年齢` = 23 or `年齢` = 55 or `年齢` = 37;</code></pre></div>



<p>条件３つでも<strong><span class="swl-marker mark_yellow">かなり長いSQL構文</span></strong>になってますね。また<span class="swl-marker mark_yellow">条件の「年齢」を3回も記述</span>しています。</p>



<p><strong>SQLのin句と比べてor句では</strong>条件が増える度に条件が長くなり、条件分「年齢」を記述しないといけません。</p>



<p class="has-border -border02">見にくいですし記述するのも面倒ですので、SQLで複数条件を使用したい場合は「in句」を使用する方がメリットがあります。</p>



<h2 class="wp-block-heading">SQLで「in句」の条件の上限について</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="509" src="https://sugublog.org/wp-content/uploads/2021/08/school_08-5-1024x509.jpg" alt="SQLで「in句」の条件の上限" class="wp-image-4091" srcset="https://sugublog.org/wp-content/uploads/2021/08/school_08-5-1024x509.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/school_08-5-300x149.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/school_08-5-768x382.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/school_08-5.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">SQLで「in句」を使用する時の上限をまとめる</h3>



<p><strong><span class="swl-marker mark_orange">SQLで「in句」を使用する時の上限</span></strong>はあるのでしょうか。</p>



<figure class="wp-block-table td_to_th_"><table class="has-fixed-layout"><thead><tr><th>データベースの種類</th><th>SQLで「in句」の上限数</th></tr></thead><tbody><tr><td>mySQL</td><td>上限サイズまで</td></tr><tr><td>PostgreSQL</td><td>2の64乗、一つの条件が2kバイトまで</td></tr><tr><td>Oracle</td><td>1000個</td></tr></tbody></table><figcaption class="wp-element-caption">SQLのin句での上限まとめ表</figcaption></figure>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h3 class="wp-block-heading">mySQLで「in句」の上限を調べるコマンド</h3>



<p>MySQLでの上限サイズは以下のSQLコマンドで確認する事が出来ます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>show variables like &#39;max_allowed_packet&#39;;</code></pre></div>



<p>MySQLでの上限サイズを確認する為に、上記のコマンドを実行します。</p>



<figure class="wp-block-table td_to_th_"><table class="has-fixed-layout"><tbody><tr><td>Variable_name</td><td>Value</td></tr><tr><td>max_allowed_packet</td><td>1048576</td></tr></tbody></table><figcaption class="wp-element-caption">mySQLのin句での上限</figcaption></figure>



<p>MySQLでの上限サイズは「1048576バイト」になります。</p>



<h2 class="wp-block-heading">SQLで「in句」の否定系を書く</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/07/pixta_77773496_M-1024x791.jpg" alt="SQLで「in句」の否定系" class="wp-image-3635"/><figcaption class="wp-element-caption">Business person stand on road fork with hard and easy directions. Choice way isometric</figcaption></figure>
</div>


<h3 class="wp-block-heading">SQLの「in句」での否定形構文</h3>



<p>では<strong><span class="swl-bg-color has-swl-deep-02-background-color">SQLの「in句」で否定形</span></strong>を書くにはどうすればよいでしょうか？</p>



<p>答えは以下の構文になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select * from テーブル名 where カラム名 not in (条件1,条件2,条件3,・・・);</code></pre></div>



<p>「in」の前に「not」を記述するだけです。</p>



<h3 class="wp-block-heading">SQLの「in句」否定形を実行してみる</h3>



<p>では<span class="swl-bg-color has-swl-deep-02-background-color">実際に否定形を実行</span>してみましょう！先程のDBに対して以下のSQLコマンドを実行します！</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select `氏名`,`名前`,`年齢` from `人員` where `年齢` not in (23,55,37);</code></pre></div>



<p>結果は以下となりました。</p>



<figure class="wp-block-image size-full is-style-border"><img decoding="async" width="116" height="221" src="https://sugublog.org/wp-content/uploads/2023/10/sql_not_in_table.png" alt="SQLでnot_in句を使用した結果" class="wp-image-5602"/><figcaption class="wp-element-caption">SQLでnot_in句を使用した結果</figcaption></figure>



<p>先程のテーブルで「in句」を用いて出した人物以外の人が抽出されているので成功です。</p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLで「in句」を使用して複数条件を綺麗に書くまとめ</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/06/pixta_75493348_M-min-1024x682.jpg" alt="SQLで「in句」を使用して複数条件を綺麗に書くまとめ" class="wp-image-2884"/></figure>
</div>


<p>今回のまとめです。</p>



<h3 class="wp-block-heading">SQLで「in句」を使用する基礎構文</h3>



<p><strong><span class="swl-bg-color has-swl-deep-01-background-color">SQLで「in句」を使用する時の基礎構文</span></strong>は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select * from テーブル名 where カラム名 in (条件1,条件2,条件3,・・・);</code></pre></div>



<h3 class="wp-block-heading">SQLの「in句」での否定形構文</h3>



<p><strong><span class="swl-bg-color has-swl-deep-02-background-color">SQLの「in句」否定形の基礎構文</span></strong>は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select * from テーブル名 where カラム名 not in (条件1,条件2,条件3,・・・);</code></pre></div>



<h3 class="wp-block-heading">SQLで「in句」を使用する時の上限をまとめる</h3>



<p>SQLで「in句」を使用する時の<span class="swl-marker mark_orange">上限</span>はあるのでしょうか。</p>



<figure class="wp-block-table td_to_th_"><table class="has-fixed-layout"><thead><tr><th>データベースの種類</th><th>SQLで「in句」の上限数</th></tr></thead><tbody><tr><td>mySQL</td><td>上限サイズまで</td></tr><tr><td>PostgreSQL</td><td>2の64乗、一つの条件が2kバイトまで</td></tr><tr><td>Oracle</td><td>1000個</td></tr></tbody></table><figcaption class="wp-element-caption">SQLのin句での上限まとめ表</figcaption></figure>



<p><strong><span class="swl-marker mark_orange">SQLでin句を使用すればorより完結に書ける</span></strong>ことが分かったと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/sql-base-in/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PHP基礎】XサーバでPHPのDB操作をWeb公開用に修正する</title>
		<link>https://sugublog.org/php-base-fix-dbaccess-on-xserver/</link>
					<comments>https://sugublog.org/php-base-fix-dbaccess-on-xserver/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Sun, 14 Nov 2021 12:36:52 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[DB]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=4481</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/Web_site_1114-1024x575.jpg" class="webfeedsFeaturedVisual" /></p>PHPでWebサイト構築する為に、ローカル環境を作成して色々試しています。 ローカル環境を構築するメリットは、気軽に試せる事にあります。 開発中は何度も試すので、本番環境だと試す度にアップロードをしなければなりません。  [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/Web_site_1114-1024x575.jpg" class="webfeedsFeaturedVisual" /></p>
<p>PHPでWebサイト構築する為に、ローカル環境を作成して色々試しています。</p>



<p class="is-style-big_icon_check">ローカル環境を構築するメリットは、気軽に試せる事にあります。</p>



<p>開発中は何度も試すので、本番環境だと試す度にアップロードをしなければなりません。</p>



<p>面倒で時間がかかるので、ローカル環境で行う事は大事になってきます。</p>



<p class="is-style-balloon_box">PHP環境をローカルで作成するには、以下の「パソコン１つでPHP環境を作成する」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/DB0804-5-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-relation-db-and-css/">【php応用】パソコン1つでphp環境を作成する！DBやCSSまで連携</a>
						<span class="p-blogCard__excerpt">php開発環境を作成したい、という事で、パソコン1つで、ローカル環境にphp環境を構築しました。 データベース連携やCSS連携もしました。 テンプレートにもなるので、コ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p class="is-style-big_icon_check">しかし実際にWebサイトに上げる場合、DB連携している場合変更しなければいけない項目が出てきます。</p>



<p>今回は変更しなければいけない箇所と、その作成方法をXサーバ用で試してみようと思います。</p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">XサーバでPHPのDB操作をWeb公開用に修正する</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/11/script_1114-1024x683.jpg" alt="スクリプト" class="wp-image-4504" srcset="https://sugublog.org/wp-content/uploads/2021/11/script_1114-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/script_1114-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/script_1114-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/script_1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<h3 class="wp-block-heading">Web公開用に修正する箇所</h3>



<p>ローカル環境はSAMPPで構築しております。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/01/pc17.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/xampp-install/">【初心者向け】XAMPPをインストールして自端末をサーバーにしてみよう。</a>
						<span class="p-blogCard__excerpt">プログラミングの結果を試すのにサーバーが必要だけど、レンタルサーバー借りるの面倒臭いし勿体無い。自端末をサーバーにしてコード試したいな。 そういった人向けです&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-1-300x172.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/phpmyadmin-base/">DBを簡単作成出来るphpmyadminを使用してテーブル操作する</a>
						<span class="p-blogCard__excerpt">phpなどでDB（データベース）を扱う事が多いですが、DBはコマンドで操作する事が多いです。 しかし、コマンドを覚えるのも大変です。GUIで簡単に作成してサイトやサービ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>その時にDBに接続する構文は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION;
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD,
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION,
 ]);
 echo &#39;DB接続成功&#39;;
 } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<p>DB接続すれば「DB接続成功」、例外があれば「DB接続失敗」の文字列を表示する「例外処理」も施しております。</p>



<p class="is-style-balloon_box">詳しくは以下の「PDOでDBにアクセスする時の構文」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-6-300x204.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-dbaccess/">【php基礎】PDOでDBにアクセスする時の構文とは？例外処理あり</a>
						<span class="p-blogCard__excerpt">phpでDBを使用できると、サービスの幅がとてつもなく広がります。今回はphpでDBと連携をとる時の基礎をやっていきます。 今回行うDBへ連携する時の項目は下記です。 DB&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p class="is-style-balloon_box">ローカル環境からWebにアップする時に変更する箇所は以下です</p>



<ul class="is-style-good_list wp-block-list"><li>データベース名</li><li>ユーザー名とパスワード</li><li>ホスト名</li></ul>



<p>今回はXサーバーで行います。一つずつ作成していきます。</p>



<p>Xサーバーの<a href="https://www.xserver.ne.jp/login_server.php" data-type="URL" data-id="https://www.xserver.ne.jp/login_server.php" target="_blank" rel="noreferrer noopener">管理画面（サーバーパネル）</a>にログインします</p>



<h2 class="wp-block-heading">Xサーバーでデータベースを作成する</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="645" src="https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7-1024x645.jpg" alt="データベース" class="wp-image-4414" srcset="https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7-1024x645.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7-300x189.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7-768x484.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/Server_20211109-7.jpg 1199w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1001" height="892" src="https://sugublog.org/wp-content/uploads/2021/11/1.png" alt="" class="wp-image-4482" srcset="https://sugublog.org/wp-content/uploads/2021/11/1.png 1001w, https://sugublog.org/wp-content/uploads/2021/11/1-300x267.png 300w, https://sugublog.org/wp-content/uploads/2021/11/1-768x684.png 768w" sizes="(max-width: 1001px) 100vw, 1001px" /></figure></div>



<p>「データベース」の中の「MySQL設定」をクリックします。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="999" height="444" src="https://sugublog.org/wp-content/uploads/2021/11/2.png" alt="" class="wp-image-4483" srcset="https://sugublog.org/wp-content/uploads/2021/11/2.png 999w, https://sugublog.org/wp-content/uploads/2021/11/2-300x133.png 300w, https://sugublog.org/wp-content/uploads/2021/11/2-768x341.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></figure></div>



<p>「MySQL追加」タブをクリックし、データベース名を記入して、「確認画面へ進む」をクリックします。</p>



<p class="is-style-icon_pen">文字コードは「UTF-8」のままでOKです。</p>



<p>ここでは「sugublog7_test」というデータベースを作成します。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1000" height="464" src="https://sugublog.org/wp-content/uploads/2021/11/3.png" alt="" class="wp-image-4484" srcset="https://sugublog.org/wp-content/uploads/2021/11/3.png 1000w, https://sugublog.org/wp-content/uploads/2021/11/3-300x139.png 300w, https://sugublog.org/wp-content/uploads/2021/11/3-768x356.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure></div>



<p>作成するデータベース名を確認して「追加する」をクリックします。データベース作成完了です。</p>



<h2 class="wp-block-heading">XサーバーでMySQLユーザとパスワードを作成する</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="682" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-1024x682.jpg" alt="データベース" class="wp-image-4502" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-1024x682.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5-768x511.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-5.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>「MySQL一覧」タブに今回作成した「sugublog7_test」のデータベースが見えました。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="999" height="798" src="https://sugublog.org/wp-content/uploads/2021/11/4.png" alt="" class="wp-image-4485" srcset="https://sugublog.org/wp-content/uploads/2021/11/4.png 999w, https://sugublog.org/wp-content/uploads/2021/11/4-300x240.png 300w, https://sugublog.org/wp-content/uploads/2021/11/4-768x613.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></figure></div>



<p>アクセス権所有ユーザがいないとなっています。データベースにアクセスするユーザが必要です。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="996" height="506" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-1.png" alt="" class="wp-image-4492" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-1.png 996w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-1-300x152.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-1-768x390.png 768w" sizes="(max-width: 996px) 100vw, 996px" /></figure></div>



<p>MySQLのユーザーを作成します。「MySQLユーザ追加」タブにユーザとパスワードを入力します。「確認画面へ進む」をクリックします。今回は以下のようにしました。</p>



<ul class="wp-block-list"><li>ユーザID：「user1」</li><li>パスワード「testuser」</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1001" height="534" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-2.png" alt="" class="wp-image-4491" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-2.png 1001w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-2-300x160.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-2-768x410.png 768w" sizes="(max-width: 1001px) 100vw, 1001px" /></figure></div>



<p>「MySQLユーザ一覧」タブに作成した「sugublog7_user1」ユーザが見えました。</p>



<h2 class="wp-block-heading">ユーザ作成時気を付ける事</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="444" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-1024x444.jpg" alt="データベース" class="wp-image-4503" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-1024x444.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-300x130.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7-768x333.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-7.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<h3 class="wp-block-heading">ユーザ作成時気を付ける事</h3>



<ol class="is-style-num_circle wp-block-list"><li>ユーザIDは半角英数字のみ使用</li><li>ユーザIDは６文字以内にする</li><li>パスワードは半角英数字や利用可能な文字のみ</li><li>パスワードは８文字以上16文字以内</li></ol>



<p>テストしてみます。というかやってエラー出た事をまとめます。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="998" height="468" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_1.png" alt="" class="wp-image-4486" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_1.png 998w, https://sugublog.org/wp-content/uploads/2021/11/user_create_1-300x141.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_1-768x360.png 768w" sizes="(max-width: 998px) 100vw, 998px" /></figure></div>



<p>ここでは「sugublog7_test_user」、パスワードも同じものを記入しました。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1000" height="488" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-3.png" alt="" class="wp-image-4489" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-3.png 1000w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-3-300x146.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-3-768x375.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure></div>



<p>①MySQLユーザは半角英数文字でないとダメです。「_」はダメです。</p>



<p>③MySQLパスワードは利用できない文字があります。 「_」はダメです 。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="999" height="465" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-5.png" alt="" class="wp-image-4490" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-5.png 999w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-5-300x140.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-5-768x357.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></figure></div>



<p>次に「testuser」、パスワードも同じものを記入しました。が</p>



<p>②MySQLユーザは６文字以内でないとダメです。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="996" height="506" src="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1.png" alt="" class="wp-image-4488" srcset="https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1.png 996w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-300x152.png 300w, https://sugublog.org/wp-content/uploads/2021/11/user_create_11-1-768x390.png 768w" sizes="(max-width: 996px) 100vw, 996px" /></figure></div>



<p>次に「user1」、パスワードを同じにしました。</p>



<p>④MySQLのパスワードは「半角8文字以上16文字以内」でないとダメなようです。。</p>



<p class="is-style-balloon_box">このように制限があるので、決まりを抑えておきましょう。もう一度まとめると以下となります。</p>



<ol class="is-style-num_circle wp-block-list"><li>ユーザIDは半角英数字のみ使用</li><li>ユーザIDは６文字以内にする</li><li>パスワードは半角英数字や利用可能な文字のみ</li><li>パスワードは８文字以上16文字以内</li></ol>



<h2 class="wp-block-heading">データベースのアクセス権をユーザに持たせる</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="512" src="https://sugublog.org/wp-content/uploads/2021/11/access1114-1024x512.jpg" alt="user" class="wp-image-4500" srcset="https://sugublog.org/wp-content/uploads/2021/11/access1114-1024x512.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/access1114-300x150.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/access1114-768x384.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/access1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>データベースとユーザが作成できたので、データベースのアクセス権を持つユーザーを割り当てます。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1003" height="603" src="https://sugublog.org/wp-content/uploads/2021/11/5.png" alt="" class="wp-image-4494" srcset="https://sugublog.org/wp-content/uploads/2021/11/5.png 1003w, https://sugublog.org/wp-content/uploads/2021/11/5-300x180.png 300w, https://sugublog.org/wp-content/uploads/2021/11/5-768x462.png 768w" sizes="(max-width: 1003px) 100vw, 1003px" /></figure></div>



<p>「MySQL一覧」タブの該当データベースのアクセス権未所有ユーザで先程作成したユーザを選択し、「追加」をクリックします。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1006" height="633" src="https://sugublog.org/wp-content/uploads/2021/11/6.png" alt="" class="wp-image-4495" srcset="https://sugublog.org/wp-content/uploads/2021/11/6.png 1006w, https://sugublog.org/wp-content/uploads/2021/11/6-300x189.png 300w, https://sugublog.org/wp-content/uploads/2021/11/6-768x483.png 768w" sizes="(max-width: 1006px) 100vw, 1006px" /></figure></div>



<p>アクセス権所有ユーザに、先程追加したユーザが見えれば成功です。</p>



<h2 class="wp-block-heading">XサーバでMySQLのホスト名を探す</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="620" src="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg" alt="user" class="wp-image-4505" srcset="https://sugublog.org/wp-content/uploads/2021/11/user1114-1024x620.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/user1114-300x182.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/user1114-768x465.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/user1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>MySQLサーバのホスト名を探します。データベース作成する時に載っているので、MySQLの項目から探します。</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><img decoding="async" width="1006" height="809" src="https://sugublog.org/wp-content/uploads/2021/11/host.png" alt="" class="wp-image-4497" srcset="https://sugublog.org/wp-content/uploads/2021/11/host.png 1006w, https://sugublog.org/wp-content/uploads/2021/11/host-300x241.png 300w, https://sugublog.org/wp-content/uploads/2021/11/host-768x618.png 768w" sizes="(max-width: 1006px) 100vw, 1006px" /></figure></div>



<p>データベースを作成した画面の下の方に載っています。</p>



<p>MySQLのホスト名がこれにあたります。</p>



<p class="is-style-balloon_box">これでWebサーバで公開する時に変更するパラメータが揃いました。おさらいしておきます。</p>



<ul class="is-style-good_list wp-block-list"><li>データベース名：sugublog7_test</li><li>ユーザー名とパスワード:sugublog7_user1 :testuser</li><li>ホスト名:〇〇（あなたの環境にお合わせ下さい）.xserver.jp</li></ul>



<h2 class="wp-block-heading">PHPをWeb公開用に変更する</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="436" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2-1024x436.jpg" alt="データベース" class="wp-image-4501" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2-1024x436.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2-300x128.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2-768x327.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1114-2.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>では初めに作成したPHPの変更する部分を変更してみましょう。</p>



<p>データベースに接続する構文は以下になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;sugublog7_test&#39;;
 $DB_USERNAME = &#39;sugublog7_user1&#39;;
 $DB_PASSWORD = &#39;testuser&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=〇〇.xserver.jp;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION;
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD,
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION,
 ]);
 echo &#39;DB接続成功&#39;;
 } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<p class="is-style-balloon_box">変更箇所は4つですね。</p>



<ul class="is-style-good_list wp-block-list"><li>DB名を「mydatabase」から「sugublog7_test」に変更しました。</li><li>ユーザ名を「root」から「sugublog7_user1」に変更しました。</li><li>パスワードを「なし」から「testuser」に変更しました。</li><li>ホスト名を「localhost」から「〇〇.xserver.jp」に変更しました。</li></ul>



<p>これでWebサイト用に変更できました。</p>



<p>Xサーバのファイルアップロードでアップして、サイトを見てみましょう。</p>



<p>上手くDB成功と表示されれば成功です。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/php-base-fix-dbaccess-on-xserver/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【PHP】MYSQLでテーブルを作成する！オプション等ご紹介</title>
		<link>https://sugublog.org/php-base-mysql-create-table/</link>
					<comments>https://sugublog.org/php-base-mysql-create-table/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Wed, 03 Nov 2021 00:23:51 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=4320</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-4-1024x678.jpg" class="webfeedsFeaturedVisual" /></p>PHPでデータベースを作成して、テーブルを作成する事がよくあります。オプション等もあり順番に番号を割り振ったり、重複はエラーにしたり出来ます。 データベースは「MYSQL」を使用して、テーブルを作成してみましょう。 また [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-4-1024x678.jpg" class="webfeedsFeaturedVisual" /></p>
<p>PHPでデータベースを作成して、テーブルを作成する事がよくあります。オプション等もあり順番に番号を割り振ったり、重複はエラーにしたり出来ます。</p>



<p>データベースは「MYSQL」を使用して、テーブルを作成してみましょう。</p>



<p>また制御付きのカラムも作成して見ましょう！</p>



<p class="is-style-balloon_box">この記事は5分で読めます。そして下記が理解できます。</p>



<div class="swell-block-capbox cap_box is-style-shadow"><div class="cap_box_ttl"><span>この記事で理解出来る事</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>データベースの中のテーブルを作成するMYSQLの構文</li>



<li>テーブル作成する時のオプションがわかる</li>



<li>PHPで実際にテーブル作成</li>
</ul>
</div></div>


<div class="p-blogParts post_content" data-partsID="5226">
<p>プログラミングにオススメのマウス</p>



<!-- START MoshimoAffiliateEasyLink --><script type="text/javascript">(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;b[a]=b[a]||function(){arguments.currentScript=c.currentScript||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};c.getElementById(a)||(d=c.createElement(f),d.src=g,d.id=a,e=c.getElementsByTagName("body")[0],e.appendChild(d))})(window,document,"script","//dn.msmstatic.com/site/cardlink/bundle.js?20220329","msmaflink");msmaflink({"n":"ロジクール ワイヤレスマウス トラックボール 無線 M575S Bluetooth Unifying 5ボタン トラックボールマウス ワイヤレス マウス windows mac iPad 電池寿命最大24ケ月 M575 ブラック 国内正規品","b":"Logicool(ロジクール)","t":"910-005877","d":"https:\/\/m.media-amazon.com","c_p":"\/images\/I","p":["\/31TYOVsxQTL._SL500_.jpg","\/515oI2uHsFL._SL500_.jpg","\/41CYXNwFrBL._SL500_.jpg","\/513aEl7UqxL._SL500_.jpg","\/41vH6BC5HyL._SL500_.jpg","\/41rQtCWZyjL._SL500_.jpg","\/51XZhfQM7QL._SL500_.jpg","\/41cqXexnCgL._SL500_.jpg","\/41Xk3angwNL._SL500_.jpg","\/310CaQSNWNL._SL500_.jpg"],"u":{"u":"https:\/\/www.amazon.co.jp\/dp\/B08L4ZR79Q","t":"amazon","r_v":""},"v":"2.1","b_l":[{"id":1,"u_tx":"楽天市場で見る","u_bc":"#f76956","u_url":"https:\/\/search.rakuten.co.jp\/search\/mall\/%E3%83%AD%E3%82%B8%E3%82%AF%E3%83%BC%E3%83%AB%20%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%AC%E3%82%B9%E3%83%9E%E3%82%A6%E3%82%B9%20%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9C%E3%83%BC%E3%83%AB%20%E7%84%A1%E7%B7%9A%20M575S%20Bluetooth%20Unifying%205%E3%83%9C%E3%82%BF%E3%83%B3%20%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9C%E3%83%BC%E3%83%AB%E3%83%9E%E3%82%A6%E3%82%B9%20%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%AC%E3%82%B9%20%E3%83%9E%E3%82%A6%E3%82%B9%20windows%20mac%20iPad%20%E9%9B%BB%E6%B1%A0%E5%AF%BF%E5%91%BD%E6%9C%80%E5%A4%A724%E3%82%B1%E6%9C%88%20M575%20%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF%20%E5%9B%BD%E5%86%85%E6%AD%A3%E8%A6%8F%E5%93%81\/","a_id":2515916,"p_id":54,"pl_id":27059,"pc_id":54,"s_n":"rakuten","u_so":1},{"id":2,"u_tx":"Yahoo!ショッピングで見る","u_bc":"#66a7ff","u_url":"https:\/\/shopping.yahoo.co.jp\/search?first=1\u0026p=%E3%83%AD%E3%82%B8%E3%82%AF%E3%83%BC%E3%83%AB%20%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%AC%E3%82%B9%E3%83%9E%E3%82%A6%E3%82%B9%20%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9C%E3%83%BC%E3%83%AB%20%E7%84%A1%E7%B7%9A%20M575S%20Bluetooth%20Unifying%205%E3%83%9C%E3%82%BF%E3%83%B3%20%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9C%E3%83%BC%E3%83%AB%E3%83%9E%E3%82%A6%E3%82%B9%20%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%AC%E3%82%B9%20%E3%83%9E%E3%82%A6%E3%82%B9%20windows%20mac%20iPad%20%E9%9B%BB%E6%B1%A0%E5%AF%BF%E5%91%BD%E6%9C%80%E5%A4%A724%E3%82%B1%E6%9C%88%20M575%20%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF%20%E5%9B%BD%E5%86%85%E6%AD%A3%E8%A6%8F%E5%93%81","a_id":2518881,"p_id":1225,"pl_id":27061,"pc_id":1925,"s_n":"yahoo","u_so":2},{"id":3,"u_tx":"Amazonで見る","u_bc":"#f79256","u_url":"https:\/\/www.amazon.co.jp\/dp\/B08L4ZR79Q","a_id":2518876,"p_id":170,"pl_id":27060,"pc_id":185,"s_n":"amazon","u_so":3}],"eid":"JPkLJ","s":"s"});</script><div id="msmaflink-JPkLJ">リンク</div><!-- MoshimoAffiliateEasyLink END -->



<p>プログラミングにオススメのキーボード</p>



<!-- START MoshimoAffiliateEasyLink --><script type="text/javascript">(function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a;b[a]=b[a]||function(){arguments.currentScript=c.currentScript||c.scripts[c.scripts.length-2];(b[a].q=b[a].q||[]).push(arguments)};c.getElementById(a)||(d=c.createElement(f),d.src=g,d.id=a,e=c.getElementsByTagName("body")[0],e.appendChild(d))})(window,document,"script","//dn.msmstatic.com/site/cardlink/bundle.js?20220329","msmaflink");msmaflink({"n":"Logicool G ロジクール G ゲーミングキーボード 有線 G213r パームレスト 日本語配列 独自のMech-domeスイッチ キーボード 静音 LIGHTSYNC RGB 国内正規品 【 ファイナルファンタジーXIV 推奨周辺機器 】","b":"Logicool G(ロジクール G)","t":"G213r","d":"https:\/\/m.media-amazon.com","c_p":"\/images\/I","p":["\/41aK+GVrl0L._SL500_.jpg","\/51-y6DvrX6L._SL500_.jpg","\/417XXAl-AoL._SL500_.jpg","\/51TV9U1gljL._SL500_.jpg","\/41fWMJQvU6L._SL500_.jpg","\/51yObs5CXXL._SL500_.jpg","\/41QQujtNDkL._SL500_.jpg","\/31DjNMKHpsL._SL500_.jpg"],"u":{"u":"https:\/\/www.amazon.co.jp\/dp\/B09248N9XK","t":"amazon","r_v":""},"v":"2.1","b_l":[{"id":1,"u_tx":"楽天市場で見る","u_bc":"#f76956","u_url":"https:\/\/search.rakuten.co.jp\/search\/mall\/Logicool%20G%20%E3%83%AD%E3%82%B8%E3%82%AF%E3%83%BC%E3%83%AB%20G%20%E3%82%B2%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%20%E6%9C%89%E7%B7%9A%20G213r%20%E3%83%91%E3%83%BC%E3%83%A0%E3%83%AC%E3%82%B9%E3%83%88%20%E6%97%A5%E6%9C%AC%E8%AA%9E%E9%85%8D%E5%88%97%20%E7%8B%AC%E8%87%AA%E3%81%AEMech-dome%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%20%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%20%E9%9D%99%E9%9F%B3%20LIGHTSYNC%20RGB%20%E5%9B%BD%E5%86%85%E6%AD%A3%E8%A6%8F%E5%93%81%20%E3%80%90%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%8A%E3%83%AB%E3%83%95%E3%82%A1%E3%83%B3%E3%82%BF%E3%82%B8%E3%83%BCXIV%20%E6%8E%A8%E5%A5%A8%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8%20%E3%80%91\/","a_id":2515916,"p_id":54,"pl_id":27059,"pc_id":54,"s_n":"rakuten","u_so":1},{"id":2,"u_tx":"Yahoo!ショッピングで見る","u_bc":"#66a7ff","u_url":"https:\/\/shopping.yahoo.co.jp\/search?first=1\u0026p=Logicool%20G%20%E3%83%AD%E3%82%B8%E3%82%AF%E3%83%BC%E3%83%AB%20G%20%E3%82%B2%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%20%E6%9C%89%E7%B7%9A%20G213r%20%E3%83%91%E3%83%BC%E3%83%A0%E3%83%AC%E3%82%B9%E3%83%88%20%E6%97%A5%E6%9C%AC%E8%AA%9E%E9%85%8D%E5%88%97%20%E7%8B%AC%E8%87%AA%E3%81%AEMech-dome%E3%82%B9%E3%82%A4%E3%83%83%E3%83%81%20%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%20%E9%9D%99%E9%9F%B3%20LIGHTSYNC%20RGB%20%E5%9B%BD%E5%86%85%E6%AD%A3%E8%A6%8F%E5%93%81%20%E3%80%90%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%8A%E3%83%AB%E3%83%95%E3%82%A1%E3%83%B3%E3%82%BF%E3%82%B8%E3%83%BCXIV%20%E6%8E%A8%E5%A5%A8%E5%91%A8%E8%BE%BA%E6%A9%9F%E5%99%A8%20%E3%80%91","a_id":2518881,"p_id":1225,"pl_id":27061,"pc_id":1925,"s_n":"yahoo","u_so":2},{"id":3,"u_tx":"Amazonで見る","u_bc":"#f79256","u_url":"https:\/\/www.amazon.co.jp\/dp\/B09248N9XK","a_id":2518876,"p_id":170,"pl_id":27060,"pc_id":185,"s_n":"amazon","u_so":3}],"eid":"E6bQP","s":"s"});</script><div id="msmaflink-E6bQP">リンク</div><!-- MoshimoAffiliateEasyLink END -->
</div>


<h2 class="wp-block-heading">PHP基礎・MYSQLでテーブルを作成する</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-1-1024x576.jpg" alt="テーブル" class="wp-image-4330" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-1-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-1-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-1-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">テーブル作成基礎構文</h3>



<p>データベースは作成しているものとして、該当DBにテーブルを作成する構文はこうなります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table テーブル名 (カラム名1 型名1,カラム名2 型名2,・・・)</code></pre></div>



<p>create tableコマンドの後にテーブル名を入れます。その後は実際に作成するカラム名を順に入力します。</p>



<p>スペースを空けて型名を入力します。型名は沢山ありますが以下の3つがよく使用されます。</p>



<h3 class="wp-block-heading">型名一覧</h3>



<figure class="wp-block-table is-style-regular td_to_th_"><table class="has-fixed-layout"><thead><tr><th> 型名 </th><th> 説明 </th></tr></thead><tbody><tr><td>INT</td><td>数字 が入る </td></tr><tr><td>VARCHAR(数字)</td><td>文字列 が入る ※数字はバイト数</td></tr><tr><td>BOOLEAN</td><td>真か偽が入る</td></tr></tbody></table><figcaption class="wp-element-caption">create tableで使用する型名一覧</figcaption></figure>



<p class="is-style-icon_pen">※VARCHARの後の数字は何バイトまで入るかの指定</p>



<p>大きすぎると容量を余分にとる事になります。小さすぎると入らない可能性があります。程よい数字を入れましょう。</p>



<p class="is-style-icon_book">例：半角で1バイト、全角は2バイト文字なので全角5文字半角2文字までなら7にすればよいです。</p>



<h3 class="wp-block-heading">カラムを複数追加する</h3>



<p>その後に「(」を入れてカラムを追加していきます。複数追加したい場合は「,」を使用して追加していきましょう。</p>



<p>複数のカラムを持ったテーブルが作成されるはずです。</p>



<p>これで簡単なテーブルが作成出来ました。次はテーブルを作成する上で、必要なオプションやエラー回避のオプションを追加します。</p>



<h2 class="wp-block-heading">テーブルが無ければ作成したい</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="586" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-3-1024x586.jpg" alt="テーブル" class="wp-image-4332" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-3-1024x586.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-3-300x172.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-3-768x439.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-3.jpg 1191w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>テーブルが既にある場合は作成しない、ない場合だけ作成したい</p>



<p>なんて事が出来れば更にやりたい事が広がります。</p>



<h3 class="wp-block-heading">テーブルが無ければ作成するオプション</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table if not exists テーブル名 (カラム名1 型名1,カラム名2 型名2,・・・)</code></pre></div>



<p>create tableの後に「if not exists」を入力します。これでテーブルがあれば何もしない、なければ作成する事が可能です。</p>



<p class="is-style-big_icon_caution">※これがないとテーブルが既に存在していれば、エラーになります。</p>



<p>よく使用しますので、覚えておくと良いでしょう。</p>



<h2 class="wp-block-heading">数字を増やしていく</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-2-1024x576.jpg" alt="テーブル" class="wp-image-4331" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-2-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-2-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-2-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-2.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">オプション：AUTO_INCREMENT</h3>



<p>テーブルのカラムに行を追加していきたい場合、数字を勝手に増やしていきたい場合があります。</p>



<p>自動で番号を振りたい場合などに使用します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table if not exists テーブル名 (id INT AUTO_INCREMENT,カラム名2 型名2,・・・)</code></pre></div>



<p>カラムにデータが追加される度に、数字が自動で割り振られるテーブルを作成する事が可能です。</p>



<p>登録するデータにidを振り、id管理する事が出来ます。</p>



<h2 class="wp-block-heading">空白は絶対避けたい</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="575" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-8-1024x575.jpg" alt="テーブル" class="wp-image-4329" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-8-1024x575.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-8-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-8-768x431.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-8.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">オプション：NOT NULL</h3>



<p>カラムはデータによって空白の場合があります。しかしそのデータがないとエラーになるシステムでは絶対データを入れてもらいエラーを回避したいです。</p>



<p>名前などは絶対に記入してほしいですよね。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table if not exists テーブル名 (id INT AUTO_INCREMENT,name varchar(10) NOT NULL,カラム名3 型名3・・・)</code></pre></div>



<p>nameの型名の後に「NOT NULL」を入れています。これでnameのデータなしに追加しようとしたものはエラーが出ます。</p>



<h2 class="wp-block-heading">重複のものは避けたい</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-6-1024x683.jpg" alt="唯一" class="wp-image-4335" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-6-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-6-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-6-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-6.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading">オプション：UNIQUE</h3>



<p>同じデータは避けたい場合もあります。名前などは重複しては判別つかないシステムなどある場合はこのオプションを使用してください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table if not exists テーブル名 (id INT AUTO_INCREMENT,name varchar(10) NOT NULL UNIQUE,カラム名3 型名3・・・)</code></pre></div>



<p>UNIQUEオプションを使用するだけで、重複するカラムのデータを挿入しようとした場合にエラーではじいてくれます。</p>



<p class="is-style-icon_pen">ちなみにオプションを複数使用する場合は、上記のようにスペースを入れて追加していけば大丈夫です。</p>



<h2 class="wp-block-heading">PHPでデータベースにテーブルを作成する場合</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-5-1024x576.jpg" alt="テーブル" class="wp-image-4334" srcset="https://sugublog.org/wp-content/uploads/2021/11/DB_1103-5-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-5-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-5-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/DB_1103-5.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>MYSQLの構文は理解していただけたと思います。</p>



<p>では実際PHPでテーブルを作成します。</p>



<h3 class="wp-block-heading">DBにアクセスするインスタンスを作成</h3>



<p>まずはデータベースにアクセスするインスタンスを作成し、「db」という変数に格納します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION;
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD,
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION,
     PDO::ATTR_DEFAULT_FETCH_MODE =&gt; PDO::FETCH_ASSOC
 ]);
 echo &#39;DB接続成功&#39;;
} catch(PDOException $e){
 echo &#39;DB接続失敗&#39;. $e-&gt;getMessage();
 exit();
};</code></pre></div>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-9330904718533231" data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<ul class="wp-block-list">
<li>「mydatabase」というデータベースを作成している事にします。</li>



<li>データベースのログインIDが「root」とします。</li>



<li>データベースのログインパスが「」（無し）とします。</li>



<li>例外処理でDBがなければエラーを出すようにしています。</li>
</ul>



<p class="is-style-balloon_box">詳しくは以下の「DBにアクセスする時の構文。例外処理あり」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-6-300x204.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-dbaccess/">【php基礎】PDOでDBにアクセスする時の構文とは？例外処理あり</a>
						<span class="p-blogCard__excerpt">phpでDBを使用できると、サービスの幅がとてつもなく広がります。今回はphpでDBと連携をとる時の基礎をやっていきます。 今回行うDBへ連携する時の項目は下記です。 DB&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h3 class="wp-block-heading">DBにテーブルを作成する</h3>



<p>作成したインスタンスの変数「$db」を使用して、テーブルを作成します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$db-&gt;query(&quot;create table if not exists テーブル名 (カラム名1 型名1,カラム名2 型名2,・・・)</code></pre></div>



<p class="is-style-balloon_box">queryでDBにリクエストを送る事が可能です。詳しくは以下の「prepareとquery」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-prepare-and-query/">【PHP基礎】PDOのprepareとqueryでSQL文を変数に格納する</a>
						<span class="p-blogCard__excerpt">PHPでprepareやqueryを使用したいけど、よくわかりません。プレースフォルダーが上手くいきません。 このような悩みも解決します。実例をつけながら丁寧に解説します。 &#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>これでDBにテーブルを作成する事が可能です。オプションを駆使して自分の思い通りのテーブルを作成してください。</p>



<h2 class="wp-block-heading">【PHP】MYSQLでテーブルを作成する！オプション等ご紹介のまとめ</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/10/table_20211010-1-1024x576.jpg" alt="テーブル" class="wp-image-4249" srcset="https://sugublog.org/wp-content/uploads/2021/10/table_20211010-1-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/10/table_20211010-1-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/10/table_20211010-1-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/10/table_20211010-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>テーブル作成する時の基礎構文は以下でした。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>create table テーブル名 (カラム名1 型名1,カラム名2 型名2,・・・)</code></pre></div>



<p>テーブルが存在していない場合のみ作成するのが「if not exists」でした。</p>



<p>数字を自動的に増やしていきたい場合は「AUTO_INCREMENT」でした。</p>



<p>空白を避けたい場合は「NOT NULL」でした。</p>



<p>重複を避けたい場合は「UNIQUE」でした。</p>



<p>PHPで実際行う時はDBのインスタンスを作成し、queryメソッドでMYSQL構文を送る事で可能。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/php-base-mysql-create-table/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【SQL基礎】データベースのカラムの値を初期化したい場合</title>
		<link>https://sugublog.org/sql-base-initialize-column-values/</link>
					<comments>https://sugublog.org/sql-base-initialize-column-values/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Sat, 09 Oct 2021 17:35:36 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=4244</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/10/table_20211010-1-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>PHPでデータベースを操作する事はよくあります。 その時に必要になってくるのがメソッドです。 そのメソッドの中でよく使用するのが、4大命令文というものです。 今回はこのメソッドの一つを使用して、DBのカラム全体を初期化す [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/10/table_20211010-1-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p>PHPでデータベースを操作する事はよくあります。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-5-300x166.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-db-control/">【php基礎】DBの操作！データベースの値を取得して表示する方法</a>
						<span class="p-blogCard__excerpt">phpでDBを操作出来たら、やれる事が大幅に広がります。更にコードが簡素化できて綺麗になります。わかりやすくもなりますので是非phpでDBを操作できる様になりましょう&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>その時に必要になってくるのがメソッドです。</p>



<p>そのメソッドの中でよく使用するのが、4大命令文というものです。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-2-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-4major-commands/">【SQL基礎】4大命令文一覧！insert、update、select、deleteについて</a>
						<span class="p-blogCard__excerpt">SQLでよく使用される命令文があります。SQLの4大命令文です。 SQLでデータベースを操作する時に良く使用されます。しっかりと基礎構文を抑えて、良いサービスを構築しま&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p class="has-border -border02">今回はこのメソッドの一つを使用して、DBのカラム全体を初期化する方法を試してみようと思います。</p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">データベースのカラムの値を初期化したい場合</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="394" src="https://sugublog.org/wp-content/uploads/2021/10/table_20211010-2-1024x394.jpg" alt="テーブル" class="wp-image-4250" srcset="https://sugublog.org/wp-content/uploads/2021/10/table_20211010-2-1024x394.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/10/table_20211010-2-300x116.jpg 300w, https://sugublog.org/wp-content/uploads/2021/10/table_20211010-2-768x296.jpg 768w, https://sugublog.org/wp-content/uploads/2021/10/table_20211010-2.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>初期化するので「delete」メソッドを使用すると思った方もいるかもしれません。</p>



<p>しかし空白で上書きする事とします。つまり「update」メソッドを使用します。</p>



<h3 class="wp-block-heading">updateメソッドの基礎構文</h3>



<p>updateコマンドの基礎構文は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>update テーブル名 set カラム名1=&#39;値&#39;,カラム名2=&#39;値&#39;,・・・・・where 比較演算子　値</code></pre></div>



<p class="is-style-balloon_box">updateメソッドの基礎は、以下の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-7-300x160.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-update/">【SQL基礎】データベースの値を変更するupdateコマンド</a>
						<span class="p-blogCard__excerpt">SQLでデータベースの値を変更したい場合、SQL4大命令文の一つ「update」コマンドを使用します。 一つのサービスでデータを変更する事は、頻繁にあると思います。 きちん&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>ここではすべて初期化するので、条件の「where」以下の指定は不要です。</p>



<h3 class="wp-block-heading">テーブルのカラムを全て初期化する！実践</h3>



<p>以下のテーブルがあると仮定します。</p>



<p class="is-style-balloon_box">テーブル名：users</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td>47</td></tr><tr><td>2</td><td>user_2</td><td>24</td></tr><tr><td>3</td><td>user_3</td><td>33</td></tr></tbody></table><figcaption>usersテーブル</figcaption></figure>



<p>「score」の値を全て空白にして見ましょう。</p>



<h3 class="wp-block-heading">実際に入力するコマンド</h3>



<p>その時の構文は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>update users set score=&#39;&#39;</code></pre></div>



<p>usersテーブルのカラム「score」の値を全て空白（&#8221;）にアップデートするコマンドになります。</p>



<p>では実際に行ってみましょう。</p>



<h3 class="wp-block-heading">実践結果</h3>



<p class="is-style-balloon_box">テーブル名：users</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td></td></tr><tr><td>2</td><td>user_2</td><td></td></tr><tr><td>3</td><td>user_3</td><td></td></tr></tbody></table><figcaption>usersテーブル</figcaption></figure>



<p>scoreの値が全て空白となりました。</p>



<h2 class="wp-block-heading">データベースのカラムの値を全て初期化する方法まとめ</h2>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" width="1024" height="676" src="https://sugublog.org/wp-content/uploads/2021/09/code_0923-1-1024x676.jpg" alt="code" class="wp-image-4185" srcset="https://sugublog.org/wp-content/uploads/2021/09/code_0923-1-1024x676.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/09/code_0923-1-300x198.jpg 300w, https://sugublog.org/wp-content/uploads/2021/09/code_0923-1-768x507.jpg 768w, https://sugublog.org/wp-content/uploads/2021/09/code_0923-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></div>



<p class="has-border -border02">カラムを全て初期化するには「update」メソッドで空白を上書きする。</p>



<p>「delete」メソッドではない。</p>



<p>条件を入力しない、つまりすべてを上書きする。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/sql-base-initialize-column-values/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DBを簡単作成出来るphpmyadminを使用してテーブル操作する</title>
		<link>https://sugublog.org/phpmyadmin-base/</link>
					<comments>https://sugublog.org/phpmyadmin-base/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Mon, 23 Aug 2021 12:16:47 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[DB]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=4051</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-1-1024x585.jpg" class="webfeedsFeaturedVisual" /></p>phpなどでDB（データベース）を扱う事が多いですが、DBはコマンドで操作する事が多いです。 しかし、コマンドを覚えるのも大変です。GUIで簡単に作成してサイトやサービス作成の時間に割きたいものです。 そこでGUIで簡単 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-1-1024x585.jpg" class="webfeedsFeaturedVisual" /></p>
<p>phpなどでDB（データベース）を扱う事が多いですが、DBはコマンドで操作する事が多いです。</p>



<p>しかし、コマンドを覚えるのも大変です。GUIで簡単に作成してサイトやサービス作成の時間に割きたいものです。</p>



<p>そこでGUIで簡単にDB作成や操作可能な、phpmyadminの使用方法を覚書します。</p>



<p>phpmyadminを使用する事で、簡単にデータベース作成が可能になり作業がはかどります。</p>



<h2 class="wp-block-heading">phpmyadminを使用してテーブル操作する</h2>



<h3 class="wp-block-heading">phpmyadminの起動とアクセス</h3>



<p>今回はWebサーバーとDBが一緒に扱えるXAMPPを使用します。</p>



<p>XAMPPのインストール方法は下記の「XAMPPをインストールして自端末をサーバーにしてみよう」の記事を参考にしてください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/01/pc17.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/xampp-install/">【初心者向け】XAMPPをインストールして自端末をサーバーにしてみよう。</a>
						<span class="p-blogCard__excerpt">プログラミングの結果を試すのにサーバーが必要だけど、レンタルサーバー借りるの面倒臭いし勿体無い。自端末をサーバーにしてコード試したいな。 そういった人向けです&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>インストール出来たらXAMPPを起動して、WebサーバーとDBサーバーの「start」ボタンを押して起動します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="670" height="436" src="https://sugublog.org/wp-content/uploads/2021/08/image.png" alt="XAMPPでWebサーバーとDBサーバーを起動する画面" class="wp-image-3810" srcset="https://sugublog.org/wp-content/uploads/2021/08/image.png 670w, https://sugublog.org/wp-content/uploads/2021/08/image-300x195.png 300w" sizes="(max-width: 670px) 100vw, 670px" /></figure>
</div>


<p>「Apache」と「MySQL」が緑背景になっていれば、起動している証拠です。</p>



<h2 class="wp-block-heading">phpmyadminでデータベース作成</h2>



<p>早速MySQLのDBサーバーにアクセスして見ましょう。インターネットエクスプローラーで「127.0.0.1/phpmyadmin」にアクセスしてみます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="293" src="https://sugublog.org/wp-content/uploads/2021/08/image-3-1024x293.png" alt="phpmyadminでデーターベース作成" class="wp-image-3817" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-3-1024x293.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-3-300x86.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-3-768x220.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-3-1536x439.png 1536w, https://sugublog.org/wp-content/uploads/2021/08/image-3.png 1559w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>データベースを作成しましょう！左上の「データベース」をクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="985" height="495" src="https://sugublog.org/wp-content/uploads/2021/08/image-4.png" alt="phpmyadminでデータベース名を決める画面" class="wp-image-3818" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-4.png 985w, https://sugublog.org/wp-content/uploads/2021/08/image-4-300x151.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-4-768x386.png 768w" sizes="(max-width: 985px) 100vw, 985px" /></figure>
</div>


<p>データベースの名前を決めましょう。今回は「mydatabase」にしました。入力して右の「作成」を押します。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="885" height="355" src="https://sugublog.org/wp-content/uploads/2021/08/image-5.png" alt="データベース作成できているかの確認画面" class="wp-image-3819" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-5.png 885w, https://sugublog.org/wp-content/uploads/2021/08/image-5-300x120.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-5-768x308.png 768w" sizes="(max-width: 885px) 100vw, 885px" /></figure>



<p>左に今回作成した「mydatabase」が作成されました。</p>



<h2 class="wp-block-heading">phpmyadminでテーブルを作成</h2>



<p>続いて先に作成した「mydatabase」の中にテーブルを作成します。</p>



<p>左のメニューから、先に作成したデータベース「mydatabase」を選択して、「構造」タブからテーブル作成します。</p>



<p>今回は名前に「users」という名前を入力しました。カラム数は3にしました。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="792" height="232" src="https://sugublog.org/wp-content/uploads/2021/08/image-6.png" alt="テーブル作成画面" class="wp-image-3833" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-6.png 792w, https://sugublog.org/wp-content/uploads/2021/08/image-6-300x88.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-6-768x225.png 768w" sizes="(max-width: 792px) 100vw, 792px" /></figure>



<p>右の方に「実行」ボタンがありますので、クリックしてテーブルを作成します。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="427" src="https://sugublog.org/wp-content/uploads/2021/08/image-7-1024x427.png" alt="テーブルのカラム作成画面" class="wp-image-3834" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-7-1024x427.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-7-300x125.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-7-768x321.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-7.png 1337w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>３つのカラムを作成します。上記の図のように値を入力します。</p>



<p>名前は好きな名前を入力します。</p>



<p>「データ型」は値の種類を選択します。数字であれば「INT」、文字列なら「VARCHAR」にします。</p>



<p>長さはデータの大きさの上限です。</p>



<p>入力できたら右の「保存する」を押して、テーブルを作成します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="352" src="https://sugublog.org/wp-content/uploads/2021/08/image-24-1024x352.png" alt="テーブルのカラム作成確認の画面" class="wp-image-4053" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-24-1024x352.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-24-300x103.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-24-768x264.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-24.png 1033w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>左の「mydatabase」の中に「users」テーブルがあり、その中に「カラム」が3つ作成されています。</p>



<h3 class="wp-block-heading">カラムを好きな箇所に追加する</h3>



<p>テーブルとそれを構成するカラムが作成出来ましたので、好きな箇所にカラムを追記して見ます。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="356" src="https://sugublog.org/wp-content/uploads/2021/08/image-28-1024x356.png" alt="テーブルへカラム追加の画面" class="wp-image-4054" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-28-1024x356.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-28-300x104.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-28-768x267.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-28.png 1036w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>追加する個数を決めます。次にどのカラムの後ろに追加するか決めます。決まれば「実行」を押します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="845" height="323" src="https://sugublog.org/wp-content/uploads/2021/08/image-29.png" alt="テーブルにカラムを追加するステータス画面" class="wp-image-4055" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-29.png 845w, https://sugublog.org/wp-content/uploads/2021/08/image-29-300x115.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-29-768x294.png 768w" sizes="(max-width: 845px) 100vw, 845px" /></figure>
</div>


<p>名前を「room_number」、データ型に「INT」、長さを「10」にして、右の「保存する」をクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="778" height="325" src="https://sugublog.org/wp-content/uploads/2021/08/image-30.png" alt="追加カラム確認メッセージ" class="wp-image-4056" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-30.png 778w, https://sugublog.org/wp-content/uploads/2021/08/image-30-300x125.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-30-768x321.png 768w" sizes="(max-width: 778px) 100vw, 778px" /></figure>
</div>


<p class="is-style-big_icon_check">　「正常に変更されました」のメッセージを確認して、「構造」タブをクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="316" src="https://sugublog.org/wp-content/uploads/2021/08/image-31-1024x316.png" alt="カラム追加確認画面" class="wp-image-4057" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-31-1024x316.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-31-300x93.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-31-768x237.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-31.png 1039w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>先程追加した「room_number」が追加されています。</p>



<h2 class="wp-block-heading">phpmyadminでテーブルのカラムの値を追加する</h2>



<p>カラムの作成が出来ましたので、値を入力していきましょう。</p>



<p>「挿入」タブをクリックして、入力欄を表示します。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="869" height="778" src="https://sugublog.org/wp-content/uploads/2021/08/image-32.png" alt="カラムの値入力画面" class="wp-image-4058" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-32.png 869w, https://sugublog.org/wp-content/uploads/2021/08/image-32-300x269.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-32-768x688.png 768w" sizes="(max-width: 869px) 100vw, 869px" /></figure>



<p>値を入力します。良ければ「実行」をクリックします。</p>



<p class="is-style-icon_info">デフォルトで２行づつ追加できますが、増やす数を増やしたい場合は、左下の数字を変更してください。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="272" src="https://sugublog.org/wp-content/uploads/2021/08/image-33-1024x272.png" alt="カラムの値挿入確認メッセージ" class="wp-image-4059" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-33-1024x272.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-33-300x80.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-33-768x204.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-33.png 1177w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>「挿入しました」となっていれば成功です。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="888" height="445" src="https://sugublog.org/wp-content/uploads/2021/08/image-34.png" alt="カラムの値確認画面" class="wp-image-4060" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-34.png 888w, https://sugublog.org/wp-content/uploads/2021/08/image-34-300x150.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-34-768x385.png 768w" sizes="(max-width: 888px) 100vw, 888px" /></figure>
</div>


<p>「表示」タブをクリックすると、先程入力した値が入っているのがわかります。</p>



<h2 class="wp-block-heading"> phpmyadminでテーブルのカラムの値を削除する </h2>



<p>次は削除していきます。先程入力したカラムの値を全部削除します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="395" src="https://sugublog.org/wp-content/uploads/2021/08/image-35-1024x395.png" alt="カラムの値を削除する画面" class="wp-image-4062" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-35-1024x395.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-35-300x116.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-35-768x296.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-35.png 1078w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>下記の工程をふむ</p>



<ol class="is-style-num_circle wp-block-list">
<li>「users」テーブルを選択する</li>



<li>「SQL」タブをクリックする</li>



<li>「DELETE」ボタンをクリックする</li>



<li>テーブル名「users」以降のSQL文を削除する</li>
</ol>



<p>出来たら右に「実行」ボタンがあるので押します。</p>



<p>「実行しました」のメッセージが出たら成功です。「表示」タブをクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img decoding="async" width="740" height="334" src="https://sugublog.org/wp-content/uploads/2021/08/image-36.png" alt="カラムの値を削除確認画面" class="wp-image-4063" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-36.png 740w, https://sugublog.org/wp-content/uploads/2021/08/image-36-300x135.png 300w" sizes="(max-width: 740px) 100vw, 740px" /></figure>
</div>


<p>カラムの値が無くなっている事が確認できます。</p>



<h2 class="wp-block-heading"> phpmyadminでテーブルのカラムを削除する  </h2>



<p>今度はカラム自体を削除します。「構造」タブをクリックします。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="365" src="https://sugublog.org/wp-content/uploads/2021/08/image-38-1024x365.png" alt="カラム削除画面" class="wp-image-4065" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-38-1024x365.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-38-300x107.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-38-768x274.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-38.png 1119w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>削除したいカラムの横の「削除」ボタンをクリックしたら、個別に削除できます。</p>



<p>複数削除したい場合は、複数にチェックをいれて、下の「削除」をクリックします。</p>



<p>一括削除したい場合は、「すべてチェックする」にチェックを入れて、右の「削除」ボタンをクリックします。</p>



<h3 class="wp-block-heading">カラム全て削除でエラー</h3>



<p>エラーがでました。すべての列は削除できません。とのメッセージです。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="357" src="https://sugublog.org/wp-content/uploads/2021/08/image-39-1024x357.png" alt="カラム全削除エラー画面" class="wp-image-4066" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-39-1024x357.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-39-300x105.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-39-768x268.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-39.png 1100w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h3 class="wp-block-heading"> カラム全て削除 エラーの原因</h3>



<p>すべてのカラムは一括で削除できない。</p>



<h3 class="wp-block-heading"> カラム全て削除するには</h3>



<p>テーブル自体を削除する事で、カラムを全部削除できます。</p>



<h2 class="wp-block-heading"> phpmyadminでテーブルを削除する </h2>



<p>ではテーブル自体を削除します。先程作成したデータベースを左のメニューから選択します。</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="271" src="https://sugublog.org/wp-content/uploads/2021/08/image-37-1024x271.png" alt="テーブル削除画面" class="wp-image-4067" srcset="https://sugublog.org/wp-content/uploads/2021/08/image-37-1024x271.png 1024w, https://sugublog.org/wp-content/uploads/2021/08/image-37-300x79.png 300w, https://sugublog.org/wp-content/uploads/2021/08/image-37-768x203.png 768w, https://sugublog.org/wp-content/uploads/2021/08/image-37.png 1182w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>データベースの中にあるテーブルが表示されますので、削除をクリックします。</p>



<p>確認で「はい」をクリックするとテーブルが削除できました。</p>



<p>phpmyadminで簡単にデータベースを扱ってみましょう！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/phpmyadmin-base/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【php基礎】DBの操作！データベースの値を取得して表示する方法</title>
		<link>https://sugublog.org/php-base-db-control/</link>
					<comments>https://sugublog.org/php-base-db-control/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Tue, 17 Aug 2021 14:28:12 +0000</pubDate>
				<category><![CDATA[php]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[DB]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=3886</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-5-1024x566.jpg" class="webfeedsFeaturedVisual" /></p>phpでDBを操作出来たら、やれる事が大幅に広がります。更にコードが簡素化できて綺麗になります。わかりやすくもなりますので是非phpでDBを操作できる様になりましょう！ 今回はphpでDB操作する基本を押さえておきます。 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-5-1024x566.jpg" class="webfeedsFeaturedVisual" /></p>
<p>phpでDBを操作出来たら、やれる事が大幅に広がります。更にコードが簡素化できて綺麗になります。わかりやすくもなりますので是非phpでDBを操作できる様になりましょう！</p>



<p>今回はphpでDB操作する基本を押さえておきます。実際のコードを見ながら解説しますので比較しながら行ってください。</p>



<p>現在は下記の状態になっているものとします。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>現在の状態</span></div><div class="cap_box_content">
<ol id="block-c831c236-9d2c-4a72-b3ea-7adcf0920bbf" class="is-style-num_circle wp-block-list">
<li>DBやテーブルやカラムを作成している</li>



<li>PDOにてDBに接続出来ている</li>



<li>PDOのインスタンスを$dbという変数に格納しているものとする</li>
</ol>
</div></div>



<p>自分のパソコンをDBにしています。上記3つのコードは下記になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION;
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD,
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION
 ]);
 echo &#39;DB接続成功&#39;;
 } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<p class="is-style-balloon_box">まだDBに接続していない方、DBに接続する方法がわからない方は、下記の「DBにアクセスする時の構文を理解する」を参考にしてください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-6-300x204.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-dbaccess/">【php基礎】PDOでDBにアクセスする時の構文とは？例外処理あり</a>
						<span class="p-blogCard__excerpt">phpでDBを使用できると、サービスの幅がとてつもなく広がります。今回はphpでDBと連携をとる時の基礎をやっていきます。 今回行うDBへ連携する時の項目は下記です。 DB&#8230;</span>					</div>
				</div>
			</div>
		</div>


<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">phpでDBの操作するには</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10-1024x576.jpg" alt="script" class="wp-image-3958" srcset="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/programing_0812-10.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>まずはSQLの構文を変数に格納します。構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$変数 = $PDOインスタンスを格納した変数-&gt;メソッド(&quot;SQL文&quot;);</code></pre></div>



<p>格納する変数を決めます。よく「$stmt」とします。今回もstmt(ステートメント)にします。</p>



<p>「$PDOインスタンスを格納した変数」は$dbとしています。</p>



<p>メソッドは2種類あります。</p>



<ol class="is-style-num_circle -list-under-dashed wp-block-list">
<li>prepare</li>



<li>query</li>
</ol>



<h3 class="wp-block-heading">①prepareは条件とする値が変動する場合に使用します。</h3>



<p>prepareメソッドを使用する場合の、流れは下記です。</p>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li>値をバインドする</li>



<li>実行する</li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<h3 class="wp-block-heading"> ② <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">query</span> は条件とする値が変動しない場合に使用します。 </h3>



<p>queryメソッドを使用する場合の、流れは下記です。 </p>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li><s>値をバインドする</s></li>



<li><s>実行する</s></li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<p>②と③の工程はなくなります。queryは値が変更しない場合なので②の値をバインドする必要がありません。</p>



<p>更に「query」メソッドだけで実行もしてくれる為、③の工程もありません。</p>



<h2 class="wp-block-heading"> ①prepareで条件が変動する構文で、DBから値抽出 </h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-8-1024x576.jpg" alt="スクリプト" class="wp-image-3865" srcset="https://sugublog.org/wp-content/uploads/2021/08/script_0809-8-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-8-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-8-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-8.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="has-border -border02">今回はSQLインジェクションのセキュリティ対策にもなりますので、「prepare」を使用します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt = $db-&gt;prepare(&quot;SQL文&quot;);</code></pre></div>



<p>あとはSQL文だけです。SQLのメソッドは複数ありますが、よく使用されるメソッドは下記の4つです。</p>



<ul class="-list-under-dashed wp-block-list">
<li>DBの値を取得するselect</li>



<li>DBの値を変更するupdate</li>



<li>DBの値を追記するinsert</li>



<li>DBの値を消すdelete</li>
</ul>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-2-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-4major-commands/">【SQL基礎】4大命令文一覧！insert、update、select、deleteについて</a>
						<span class="p-blogCard__excerpt">SQLでよく使用される命令文があります。SQLの4大命令文です。 SQLでデータベースを操作する時に良く使用されます。しっかりと基礎構文を抑えて、良いサービスを構築しま&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>このSQLの文によってDBから値を取得したり、DBを変更したりできます。</p>



<h3 class="wp-block-heading"> <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">DBの値を変更するupdate</span> </h3>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-7-300x160.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-update/">【SQL基礎】データベースの値を変更するupdateコマンド</a>
						<span class="p-blogCard__excerpt">SQLでデータベースの値を変更したい場合、SQL4大命令文の一つ「update」コマンドを使用します。 一つのサービスでデータを変更する事は、頻繁にあると思います。 きちん&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h3 class="wp-block-heading"> <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">DBの値を追記するinsert</span> </h3>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-3-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-insert/">【SQL基礎】insert文でDB（データベース）にデータを挿入する</a>
						<span class="p-blogCard__excerpt">MySQLの4大命令文の中の1つ、insert文について見ていきます。 insert文はデータベースにデータを挿入する事が可能です。 insert文の基礎を学んで、データベースにデータ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h3 class="wp-block-heading"> <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">DBの値を消すdelete</span> </h3>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-8-300x171.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-delete/">【SQL基礎】deleteでデータのレコードを行削除する方法とは？</a>
						<span class="p-blogCard__excerpt">SQLでデータベースからレコードの行の値を削除する方法をご紹介します。 SQLでレコードを削除する事は多いと思いますので、deleteの構文の基礎をしっかり取得しましょう&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h3 class="wp-block-heading">DBから値を抽出するselect</h3>



<p>ここでは値を取得する「select」を使用します。</p>



<p class="is-style-balloon_box">SQLのselect構文の詳しい記事は、select文でDBの値を取得する！の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/DB0804-1-300x225.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/sql-base-select/">【SQL基礎】select文でDBの値を取得する!データ抽出方法</a>
						<span class="p-blogCard__excerpt">SQLのデータベースを使用する時の、構文を忘れる事が多々あるので覚書します。 データベースを扱えるようになれば、業務の幅も広がりますし、コードも少なく綺麗にする&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>mydatabaseに接続しています。そのDBの中に「users」テーブルを作成しています。詳細は下記です。</p>



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><thead><tr><th> id </th><th> name </th><th> score </th></tr></thead><tbody><tr><td>1</td><td>user_1</td><td>47</td></tr><tr><td>2</td><td>user_2</td><td>24</td></tr></tbody></table><figcaption class="wp-element-caption">mydatabaseのusersテーブル</figcaption></figure>



<p>nameの値が変数で、scoreの値を取得するとします。するとSQL文は下記になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>select score from users where name=?;</code></pre></div>



<p class="is-style-icon_pen">条件が変更する箇所を「?」としています。「?」ではなく好きな名前を使用する事も可能です。</p>



<p class="is-style-balloon_box">詳しくは下記の「PDOのprepareとqueryでSQL文を変数に格納する」の記事を参考にしてください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-prepare-and-query/">【PHP基礎】PDOのprepareとqueryでSQL文を変数に格納する</a>
						<span class="p-blogCard__excerpt">PHPでprepareやqueryを使用したいけど、よくわかりません。プレースフォルダーが上手くいきません。 このような悩みも解決します。実例をつけながら丁寧に解説します。 &#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>SQL文も完成しましたので、先程のphpと合わせます。最終的にコードは下記になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt = $db-&gt;prepare(&quot;select score from users where name=?&quot;);</code></pre></div>



<p> これでSQLの構文を変数に格納できました。</p>



<h3 class="wp-block-heading">値をバインドする</h3>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li><strong>値をバインドする</strong>←<strong><span class="has-inline-color has-swl-deep-01-color">次はこの工程</span></strong></li>



<li>実行する</li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<p>先程のSQLの「?」の部分の値を決めます。構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt-&gt;bindValue(id,&#39;値&#39;,定数);</code></pre></div>



<p>再程の変数$stmtから-&gt;bindValueメソッドを呼び出しています。（）の中身は下記です。</p>



<ul class="-list-under-dashed wp-block-list">
<li>id:パラメータIDを指定します・・・「？」が複数ある場合の番号、1つしかなければ1確定</li>



<li>値:実際に入る値を指定します・・・「？」に入る値</li>



<li>オプション:データの型を指定可能です・・・下記</li>
</ul>



<p class="is-style-balloon_box">定数はデータ型を指定できます。種類は下記です。</p>



<ul class="wp-block-list">
<li>PDO::PARAM_STR　・・・デフォルトで文字列型</li>



<li>PDO::PARAM_INT　・・・数値型</li>



<li>PDO::PARAM_BOOL　・・・BOOLERN型</li>



<li>PDO::PARAM_NULL　・・・NULL型</li>



<li>・・・・などなど</li>
</ul>



<p class="is-style-icon_pen">文字列型と数値型が、ほとんどだと思います。</p>



<p class="is-style-balloon_box">prepareやbindに関して、もっと詳しく知りたい方は、「PDOのprepareとqueryでSQL文を変数に格納する」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-prepare-and-query/">【PHP基礎】PDOのprepareとqueryでSQL文を変数に格納する</a>
						<span class="p-blogCard__excerpt">PHPでprepareやqueryを使用したいけど、よくわかりません。プレースフォルダーが上手くいきません。 このような悩みも解決します。実例をつけながら丁寧に解説します。 &#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>以上を踏まえて、今回のコードは下記になりました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt-&gt;bindValue(1,&#39;user_1&#39;,PDO::PARAM_STR);</code></pre></div>



<p>「?」が一つしかないので、idは１</p>



<p>今回はカラム「name」が「user_1」の値の取得</p>



<p>「user_1」なので文字列型を指定して、バインドしようと思います。つまりPDO::PARAM_STRを指定します。</p>



<h3 class="wp-block-heading">実行します</h3>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li>値をバインドする</li>



<li><strong>実行する</strong>←<strong><span class="has-inline-color has-swl-deep-01-color">次はこの工程</span></strong></li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<p>実行する為の、基礎構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$stmt-&gt;execute();</code></pre></div>



<p>これで実行できました。</p>



<h3 class="wp-block-heading"> <span style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">取り出し方を決めて取り出し、配列に格納する</span> </h3>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li>値をバインドする</li>



<li>実行する</li>



<li><strong>取り出し方を決めて取り出し、配列に格納する</strong><span class="has-inline-color has-swl-deep-01-color">←<strong>次はこの工程</strong></span></li>



<li>配列から取り出し、表示する</li>
</ol>



<p>実行したものから、値を取得しましょう。</p>



<p>構文は下記です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$配列 = $変数-&gt;メソッド(オプション);</code></pre></div>



<ul class="-list-under-dashed wp-block-list">
<li>$配列：抽出した値は配列に入ります。</li>



<li>$変数：先程の変数</li>



<li>メソッド：（fetch | fetchAll）</li>



<li>オプション：下記に示す</li>
</ul>



<p class="is-style-balloon_box">オプションは下記があります。</p>



<ul class="wp-block-list">
<li>PDO::FETCH_BOTH　・・・デフォルト</li>



<li>PDO::FETCH_ASSOC</li>



<li>PDO::FETCH_NUM</li>



<li>PDO::FETCH_KEY_PAIR</li>



<li>PDO::FETCH_COLUMN</li>
</ul>



<p>④ <strong style="font-size: revert; background-color: var(--color_content_bg); color: var(--color_text); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;">取り出し方を決めて取り出し、配列に格納する</strong>について詳しく知りたい方は「PDOのfetchやfetchAllで値を抽出する」の記事を参照してください。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-pdo-fetch/">【PHP基礎】PDOのfetchやfetchAllで値を抽出する</a>
						<span class="p-blogCard__excerpt">fetchとはPHPでデータベースにアクセスして、値を抽出する時に使用するメソッドです。 fetchを使用しDBの値を抽出して、利用しましょう。 fetchを使いこなしDBを使用す&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>今回は下記コードにします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>$username = $stmt-&gt;fetch(PDO::FETCH_BOTH);</code></pre></div>



<ul class="-list-under-dashed wp-block-list">
<li>usernameという配列に格納します。</li>



<li>fetchで適応する最初の１つを取り出します</li>



<li>定数でPDO::FETCH_BOTHを指定します。　</li>
</ul>



<h2 class="wp-block-heading">SQLでDBの値を表示する。</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="620" src="https://sugublog.org/wp-content/uploads/2021/07/PC007-8-1024x620.jpg" alt="PC" class="wp-image-3717" srcset="https://sugublog.org/wp-content/uploads/2021/07/PC007-8-1024x620.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/PC007-8-300x182.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/PC007-8-768x465.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/PC007-8.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>最後の工程です。</p>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li>値をバインドする</li>



<li>実行する</li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li><strong>配列から取り出し、表示する</strong><span class="has-inline-color has-swl-deep-01-color">←<strong>次はこの工程</strong></span></li>
</ol>



<p>④で配列に格納した値を見てみます。</p>



<p>print_r($username);を追記して、ページにアクセスしてみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION; #DSN データソースネームmysqlの場合
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD, #接続するにはまずインスタンスを作成
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION
 ]);
 echo &#39;DB接続成功&lt;/br&gt;&#39;;
 $stmt = $db-&gt;prepare(&quot;select name from users where score=?&quot;);
 $stmt-&gt;bindValue(1,44,PDO::PARAM_INT);
 $stmt-&gt;execute();
 $username = $stmt-&gt;fetch(PDO::FETCH_BOTH);
print_r($username);
  } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>DB接続成功
Array ( [name] =&gt; user_3 [0] =&gt; user_3 )</code></pre></div>



<ul class="-list-under-dashed wp-block-list">
<li>配列にKeyがname、値がuser_3が入っています</li>



<li>配列の0番目にuser_3の値が入っています</li>
</ul>



<p>fetch(PDO::FETCH_BOTH)だとこのような配列を取得するのでした。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/programing_0812-3-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/php-base-pdo-fetch/">【PHP基礎】PDOのfetchやfetchAllで値を抽出する</a>
						<span class="p-blogCard__excerpt">fetchとはPHPでデータベースにアクセスして、値を抽出する時に使用するメソッドです。 fetchを使用しDBの値を抽出して、利用しましょう。 fetchを使いこなしDBを使用す&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>では配列から値を表示してみます。下記を追記して、ページにアクセスします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>echo $username[&quot;name&quot;] .&quot;と&quot; . $username[0];</code></pre></div>



<ol class="is-style-num_circle wp-block-list">
<li>変数からKeyがnameの値を取り出しています</li>



<li>間に「と」をくっつける為に「.&#8221;と&#8221;.」を入力しています</li>



<li>変数から０番目の値を取り出しています</li>
</ol>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION; #DSN データソースネームmysqlの場合
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD, #接続するにはまずインスタンスを作成
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION
 ]);
 echo &#39;DB接続成功&lt;/br&gt;&#39;;
 $stmt = $db-&gt;prepare(&quot;select name from users where score=?&quot;);
 $stmt-&gt;bindValue(1,44,PDO::PARAM_INT);
 $stmt-&gt;execute();
 $username = $stmt-&gt;fetch(PDO::FETCH_BOTH);
echo $username[&quot;name&quot;] .&quot;と&quot; . $username[0];
  } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<p>結果は下記になりました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>DB接続成功
user_3とuser_3</code></pre></div>



<h2 class="wp-block-heading"> ②queryで条件が固定の構文で、DBから値抽出 </h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="768" src="https://sugublog.org/wp-content/uploads/2021/07/PC007-1-1024x768.jpg" alt="PC" class="wp-image-3722" srcset="https://sugublog.org/wp-content/uploads/2021/07/PC007-1-1024x768.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/PC007-1-300x225.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/PC007-1-768x576.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/PC007-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>queryの工程は下記でした。</p>



<ol class="is-style-num_circle wp-block-list">
<li>SQLの構文を変数に格納する</li>



<li><s>値をバインドする</s></li>



<li><s>実行する</s></li>



<li>取り出し方を決めて取り出し、配列に格納する</li>



<li>配列から取り出し、表示する</li>
</ol>



<p>②queryは条件の値が同じ場合に使用します。値が変動しないので②値をバインドする必要がありません</p>



<p>③query自体実行してくれますので実行をする必要がありません。</p>



<p>SQL文はそのままSQL文を文字列で記入します。</p>



<p>コードは下記になります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-lang="PHP"><code>&lt;?php
try{
 $DB_DATABASE = &#39;mydatabase&#39;;
 $DB_USERNAME = &#39;root&#39;;
 $DB_PASSWORD = &#39;&#39;;
 $DB_OPTION = &#39;charset=utf8&#39;;
 $PDO_DSN = &quot;mysql:host=localhost;dbname=&quot; . $DB_DATABASE . &quot;;&quot; . $DB_OPTION; #DSN データソースネームmysqlの場合
 $db = new PDO($PDO_DSN, $DB_USERNAME, $DB_PASSWORD, #接続するにはまずインスタンスを作成
 [   PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION
 ]);
 echo &#39;DB接続成功&lt;/br&gt;&#39;;
 $stmt = $db-&gt;query(&quot;select name from users where score=44&quot;);
 $username = $stmt-&gt;fetch(PDO::FETCH_BOTH);
echo $username[&quot;name&quot;] .&quot;と&quot; . $username[0];
  } catch(PDOException $e){
 echo &#39;DB接続失敗&#39;;
}
?&gt;</code></pre></div>



<ul class="-list-under-dashed wp-block-list">
<li>prepareをqueryに変更しています</li>



<li>②③の工程がないので、bindとexecuteの行が無くなっています</li>
</ul>



<p>これでページにアクセスしてみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-html" data-lang="HTML"><code>DB接続成功
user_3とuser_3</code></pre></div>



<p>先程と同じ結果になりました。</p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231" crossorigin="anonymous"></script>
<ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-9330904718533231" data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<p class="is-style-balloon_box">スキルアップするにはプログラミングスクールもオススメです。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/school_08-7-300x200.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/programing-school/">【2024年】プログラミングスクールおすすめランキング！評判と口コミ</a>
						<span class="p-blogCard__excerpt">プログラミングスクールで学習して、スキルを上げて年収を上げたい。フリーランスになるためにプログラミングを習いたい。 こういった願望を抱いている人も沢山います。&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="p-blogParts post_content" data-partsID="6113">
<div class="wp-block-columns">
<div class="wp-block-column">
<a href="https://px.a8.net/svt/ejp?a8mat=3TNJ87+8UIXF6+5EPG+65U41" rel="nofollow">
<img decoding="async" border="0" width="250" height="250" alt="" src="https://www29.a8.net/svt/bgt?aid=231205399535&#038;wid=001&#038;eno=01&#038;mid=s00000025234001035000&#038;mc=1"></a>
<img decoding="async" border="0" width="1" height="1" src="https://www18.a8.net/0.gif?a8mat=3TNJ87+8UIXF6+5EPG+65U41" alt="">
</div>



<div class="wp-block-column">
<a href="https://px.a8.net/svt/ejp?a8mat=3HP27C+14HHWY+3XAE+69P01" rel="nofollow">
<img decoding="async" border="0" width="300" height="250" alt="" src="https://www27.a8.net/svt/bgt?aid=211121256068&#038;wid=001&#038;eno=01&#038;mid=s00000018311001053000&#038;mc=1"></a>
<img decoding="async" border="0" width="1" height="1" src="https://www11.a8.net/0.gif?a8mat=3HP27C+14HHWY+3XAE+69P01" alt="">
</div>
</div>
</div>


<h2 class="wp-block-heading">DBの操作！データベースの値を取得して表示する方法のまとめ</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="655" src="https://sugublog.org/wp-content/uploads/2021/07/PC007-6-1024x655.jpg" alt="PC" class="wp-image-3715" srcset="https://sugublog.org/wp-content/uploads/2021/07/PC007-6-1024x655.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/PC007-6-300x192.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/PC007-6-768x492.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/PC007-6.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>DBの値を取得するにはprepareとqueryを使用する。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span> prepareの特徴 </span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>条件が変動するので、使いまわし可能</li>



<li>SQLと変動する値が別々の構文なので、SQLインジェクション対策になる </li>



<li>値のbindと実行が必要で手間がかかる</li>
</ul>
</div></div>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span> query の特徴</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li> 条件が変動しないので、使いまわしできない </li>



<li>１文で実行まで行うので、手間がかからない</li>



<li>1文のSQLなので、SQLインジェクションに注意が必要</li>
</ul>
</div></div>



<p>fetchでDBの取得した値を配列に入れる。</p>



<p>配列から値を表示して完了。</p>



<p>難しいですが、頑張って学習していきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/php-base-db-control/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
