<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>충분히 쌓여가는</title>
    <link>https://build-enough.tistory.com/</link>
    <description>성공해보려는 나의 일대기
공부, IT, 언어, 도전</description>
    <language>ko</language>
    <pubDate>Sat, 9 May 2026 18:28:09 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>빌드이너프</managingEditor>
    <image>
      <title>충분히 쌓여가는</title>
      <url>https://tistory1.daumcdn.net/tistory/5709705/attach/51b7e73e2cf748d098247619e05bfc41</url>
      <link>https://build-enough.tistory.com</link>
    </image>
    <item>
      <title>스프링 부트 초기 설정 시 DB 연결 문제</title>
      <link>https://build-enough.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-%EC%B4%88%EA%B8%B0-%EC%84%A4%EC%A0%95-%EC%8B%9C-DB-%EC%97%B0%EA%B2%B0-%EB%AC%B8%EC%A0%9C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 부트 설정 시 Dependencies를 추가하게 되는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Dependencies를 추가할 때 내장 DB인 H2 database와 달리 mysql과 같은 DB를 설정했을 때 나오는 문제점&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Dependencies 추가.png&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s4KQy/dJMb99LAIbH/8L0pRjvmfzfm2rky6SkEy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s4KQy/dJMb99LAIbH/8L0pRjvmfzfm2rky6SkEy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s4KQy/dJMb99LAIbH/8L0pRjvmfzfm2rky6SkEy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs4KQy%2FdJMb99LAIbH%2F8L0pRjvmfzfm2rky6SkEy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;430&quot; data-filename=&quot;Dependencies 추가.png&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;Description:&lt;br /&gt;Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.&lt;br /&gt;&lt;br /&gt;Reason: Failed to determine a suitable driver class&lt;br /&gt;&lt;br /&gt;Action:&lt;br /&gt;Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결 방법으로 mysql과 같은 DB을 연결해주면 됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/main/resources/application.properties에서 설정&lt;/p&gt;
&lt;pre id=&quot;code_1764205175368&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ===== DB 연결 설정 =====
spring.datasource.url=jdbc:mysql://localhost:3306/webmark2?serverTimezone=Asia/Seoul&amp;amp;characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=여기 비밀번호
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# ===== JPA 설정 =====
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;url에 webmark2는 mysql에서 만든 DATABASE 이름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;password도 mysql에서 설정한 비밀번호, 없는 경우 공백&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 실행하면 정상적으로 실행되는 것을 확인 가능함&lt;/p&gt;</description>
      <category>프로젝트</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/686</guid>
      <comments>https://build-enough.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B6%80%ED%8A%B8-%EC%B4%88%EA%B8%B0-%EC%84%A4%EC%A0%95-%EC%8B%9C-DB-%EC%97%B0%EA%B2%B0-%EB%AC%B8%EC%A0%9C#entry686comment</comments>
      <pubDate>Thu, 27 Nov 2025 10:03:18 +0900</pubDate>
    </item>
    <item>
      <title>서버의 현재 UTC 날짜, 시간 반환: GETUTCDATE, SYSUTCDATETIME 함수</title>
      <link>https://build-enough.tistory.com/entry/%EC%84%9C%EB%B2%84%EC%9D%98-%ED%98%84%EC%9E%AC-UTC-%EB%82%A0%EC%A7%9C-%EC%8B%9C%EA%B0%84-%EB%B0%98%ED%99%98-GETUTCDATE-SYSUTCDATETIME-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;현재 접속한 데이터베이스의 서버 협정 세계시, 즉 UTC(Universal Time Coorinated) 시간을 확인하려면 GETUTCDATE 함수나 SYSUTCDATETIME 함수를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;국가마다 시간이 다르므로 전 세계가 같은 시간을 기준으로 사용하고자 1972년 1월 1일부터 UTC 시간을 사용했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GETUTCDATE, SYSUTCDATETIME 함수 차이점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UTC라는 글자가 추가된 것뿐, 사용법은 GETDATE 함수, SYSDATETIME 함수와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 함수는 소수점 3자리와 7자리까지 시간을 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서버의 현재 UTC 날짜, 시간 반환: GETUTCDATE, SYSUTCDATETIME 함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734356058235&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT GETDATE(), GETUTCDATE(), SYSUTCDATETIME()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;75&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bextaV/btsLkb3sTcB/bH5TWoTb8LNI8uubR4SNFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bextaV/btsLkb3sTcB/bH5TWoTb8LNI8uubR4SNFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bextaV/btsLkb3sTcB/bH5TWoTb8LNI8uubR4SNFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbextaV%2FbtsLkb3sTcB%2FbH5TWoTb8LNI8uubR4SNFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;505&quot; height=&quot;75&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;75&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(날짜 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/684</guid>
      <comments>https://build-enough.tistory.com/entry/%EC%84%9C%EB%B2%84%EC%9D%98-%ED%98%84%EC%9E%AC-UTC-%EB%82%A0%EC%A7%9C-%EC%8B%9C%EA%B0%84-%EB%B0%98%ED%99%98-GETUTCDATE-SYSUTCDATETIME-%ED%95%A8%EC%88%98#entry684comment</comments>
      <pubDate>Mon, 16 Dec 2024 22:34:59 +0900</pubDate>
    </item>
    <item>
      <title>서버의 현재 날짜, 시간 반환: GETDATE, SYSDATETIME 함수</title>
      <link>https://build-enough.tistory.com/entry/%EC%84%9C%EB%B2%84%EC%9D%98-%ED%98%84%EC%9E%AC-%EB%82%A0%EC%A7%9C-%EC%8B%9C%EA%B0%84-%EB%B0%98%ED%99%98-GETDATE-SYSDATETIME-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;현재 접속 중인 데이터베이스 서버의 시간을 확인하려면 GETDATE 함수 또는 SYSDATETIME 함수를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GETDATE, SYSDATETIME 함수 차이점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GETDATE 함수는 소수점 3자리까지 시간 표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SYSDATETIME 함수는 소수점 7자리까지 시간 표현&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서버의 현재 날짜, 시간 확인: GETDATE, SYSDATETIEM 함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734355782975&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT GETDATE(), SYSDATETIME()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;363&quot; data-origin-height=&quot;73&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBQwKT/btsLkU08YJh/imdWoEliKDVdX2nC0tko6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBQwKT/btsLkU08YJh/imdWoEliKDVdX2nC0tko6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBQwKT/btsLkU08YJh/imdWoEliKDVdX2nC0tko6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBQwKT%2FbtsLkU08YJh%2FimdWoEliKDVdX2nC0tko6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;363&quot; height=&quot;73&quot; data-origin-width=&quot;363&quot; data-origin-height=&quot;73&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(날짜 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/683</guid>
      <comments>https://build-enough.tistory.com/entry/%EC%84%9C%EB%B2%84%EC%9D%98-%ED%98%84%EC%9E%AC-%EB%82%A0%EC%A7%9C-%EC%8B%9C%EA%B0%84-%EB%B0%98%ED%99%98-GETDATE-SYSDATETIME-%ED%95%A8%EC%88%98#entry683comment</comments>
      <pubDate>Mon, 16 Dec 2024 22:30:54 +0900</pubDate>
    </item>
    <item>
      <title>숫자를 문자열로 변환: STR 함수</title>
      <link>https://build-enough.tistory.com/entry/%EC%88%AB%EC%9E%90%EB%A5%BC-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%B3%80%ED%99%98-STR-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;STR 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CAST 함수나 CONVERT 함수처럼 숫자를 문자열로 변환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번째 인자로 전달하는 변환 길잇값이 변경할 문자열 길이보다 짧은 경우 오른쪽 맞춤으로 정렬한다는 것과,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3번째 인자로 전달하는 소수 부분 길이에 맞게 반올림해 표현한다는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;123.45를 길이 6, 소수 부분은 길이 1로 변환하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734355365344&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT STR(123.45, 6, 1)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;146&quot; data-origin-height=&quot;83&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byTKZP/btsLlp0B7X5/keeP7yDkuQ6tV1UPH4M9X0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byTKZP/btsLlp0B7X5/keeP7yDkuQ6tV1UPH4M9X0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byTKZP/btsLlp0B7X5/keeP7yDkuQ6tV1UPH4M9X0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyTKZP%2FbtsLlp0B7X5%2FkeeP7yDkuQ6tV1UPH4M9X0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;146&quot; height=&quot;83&quot; data-origin-width=&quot;146&quot; data-origin-height=&quot;83&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 변환 길잇값이 변경할 문자열 길이보다 짧으면 변환 길잇값만큼 * 문자를 반환한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;변환 길잇값은 2이고, 변경할 문자열의 길이가 5인 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734355528216&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT STR(123.45, 2, 2)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;141&quot; data-origin-height=&quot;74&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgdjT3/btsLjubu9BD/uKKKCIGEAS6EJk5rSKbsm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgdjT3/btsLjubu9BD/uKKKCIGEAS6EJk5rSKbsm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgdjT3/btsLjubu9BD/uKKKCIGEAS6EJk5rSKbsm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgdjT3%2FbtsLjubu9BD%2FuKKKCIGEAS6EJk5rSKbsm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;141&quot; height=&quot;74&quot; data-origin-width=&quot;141&quot; data-origin-height=&quot;74&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/682</guid>
      <comments>https://build-enough.tistory.com/entry/%EC%88%AB%EC%9E%90%EB%A5%BC-%EB%AC%B8%EC%9E%90%EC%97%B4%EB%A1%9C-%EB%B3%80%ED%99%98-STR-%ED%95%A8%EC%88%98#entry682comment</comments>
      <pubDate>Mon, 16 Dec 2024 22:26:18 +0900</pubDate>
    </item>
    <item>
      <title>지정한 범위의 문자열 삭제하고 새 문자열 끼워 넣기: STUFF 함수</title>
      <link>https://build-enough.tistory.com/entry/%EC%A7%80%EC%A0%95%ED%95%9C-%EB%B2%94%EC%9C%84%EC%9D%98-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B3%A0-%EC%83%88-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%81%BC%EC%9B%8C-%EB%84%A3%EA%B8%B0-STUFF-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;STUFF 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지정한 범위의 문자를 삭제하고 새 문자열을 끼워 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자열 7번째 위치부터 문자를 2개만큼 삭제하고 새 문자열을 끼워 넣는다&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734354736255&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT STUFF ('Do it! XX SQL Server', 8, 2, N'마이크로소프트')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;66&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4oQcp/btsLkYPYwil/E76XcG03brxRHcKHzqX5K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4oQcp/btsLkYPYwil/E76XcG03brxRHcKHzqX5K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4oQcp/btsLkYPYwil/E76XcG03brxRHcKHzqX5K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4oQcp%2FbtsLkYPYwil%2FE76XcG03brxRHcKHzqX5K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;247&quot; height=&quot;66&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;66&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;STUFF 함수를 사용해 데이터를 검색할 때는 검색하려는 열 길이보다 긴 문자열을 넣어도 뒷부분이 잘리지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 데이터를 검색한 뒤 결과를 보여줄 때 변환하므로, 실제 저장된 데이터 길이에는 영향을 미치지 않기 때문.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 하지만 검색한 데이터를 다시 저장하려고 할 때는 문자열 길이가 저장할 수 있는 문자열 길이보다 길 경우 뒷부분이 잘리거나 오류가 발생할 수 있다&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/681</guid>
      <comments>https://build-enough.tistory.com/entry/%EC%A7%80%EC%A0%95%ED%95%9C-%EB%B2%94%EC%9C%84%EC%9D%98-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B3%A0-%EC%83%88-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%81%BC%EC%9B%8C-%EB%84%A3%EA%B8%B0-STUFF-%ED%95%A8%EC%88%98#entry681comment</comments>
      <pubDate>Mon, 16 Dec 2024 22:16:45 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 마스터 2일차</title>
      <link>https://build-enough.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A7%88%EC%8A%A4%ED%84%B0-2%EC%9D%BC%EC%B0%A8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;겁나 하기 싫다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 할건 해야지&lt;/p&gt;</description>
      <category>일상생활/일기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/680</guid>
      <comments>https://build-enough.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A7%88%EC%8A%A4%ED%84%B0-2%EC%9D%BC%EC%B0%A8#entry680comment</comments>
      <pubDate>Wed, 11 Dec 2024 22:40:28 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 마스터 1일차</title>
      <link>https://build-enough.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A7%88%EC%8A%A4%ED%84%B0-1%EC%9D%BC%EC%B0%A8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;일 끝나고 자격증 공부하기 너무 싫어&lt;/p&gt;</description>
      <category>일상생활/일기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/679</guid>
      <comments>https://build-enough.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A7%88%EC%8A%A4%ED%84%B0-1%EC%9D%BC%EC%B0%A8#entry679comment</comments>
      <pubDate>Tue, 10 Dec 2024 21:51:18 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 마스터 5일간다</title>
      <link>https://build-enough.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A7%88%EC%8A%A4%ED%84%B0-5%EC%9D%BC%EA%B0%84%EB%8B%A4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;일단 해버린다 얼마안남은 시험&lt;/p&gt;</description>
      <category>일상생활/일기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/678</guid>
      <comments>https://build-enough.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%A7%88%EC%8A%A4%ED%84%B0-5%EC%9D%BC%EA%B0%84%EB%8B%A4#entry678comment</comments>
      <pubDate>Mon, 9 Dec 2024 22:27:10 +0900</pubDate>
    </item>
    <item>
      <title>문자열 역순으로 표시: REVERSE 함수</title>
      <link>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%97%AD%EC%88%9C%EC%9C%BC%EB%A1%9C-%ED%91%9C%EC%8B%9C-REVERSE-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;REVERSE 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 문자열을 거꾸로 정렬하는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자열 역순으로 표시: REVERSE 함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733404505743&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 'Do it! SQL', REVERSE('Do it! SQL')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;107&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFOGsx/btsK7FjNPnX/kn7O9jeipkUExTAVIwbTp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFOGsx/btsK7FjNPnX/kn7O9jeipkUExTAVIwbTp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFOGsx/btsK7FjNPnX/kn7O9jeipkUExTAVIwbTp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFOGsx%2FbtsK7FjNPnX%2Fkn7O9jeipkUExTAVIwbTp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;357&quot; height=&quot;107&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;107&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REVERSE 함수는 CHARINDEX 함수, LEN 함수, SUBSTRING 함수를 조합해 사용하면 유용한 작업을 할 수 있다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자열 역순으로 표시: 여러 함수 조합&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733405656686&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH ip_list (ip)
AS (
	SELECT '192.168.0.1' UNION ALL
	SELECT '10.6.100.99' UNION ALL
	SELECT '8.8.8.8' UNION ALL
	SELECT '192,200.212.113'
)
SELECT ip, SUBSTRING(ip, 1, LEN(ip) - CHARINDEX('.', REVERSE(ip)))
FROM ip_list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ytAo3/btsK8lkJMKd/nSAj6ZAW0Bci6XgUzbE1P0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ytAo3/btsK8lkJMKd/nSAj6ZAW0Bci6XgUzbE1P0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ytAo3/btsK8lkJMKd/nSAj6ZAW0Bci6XgUzbE1P0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FytAo3%2FbtsK8lkJMKd%2FnSAj6ZAW0Bci6XgUzbE1P0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;355&quot; height=&quot;206&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/677</guid>
      <comments>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%97%AD%EC%88%9C%EC%9C%BC%EB%A1%9C-%ED%91%9C%EC%8B%9C-REVERSE-%ED%95%A8%EC%88%98#entry677comment</comments>
      <pubDate>Thu, 5 Dec 2024 22:34:32 +0900</pubDate>
    </item>
    <item>
      <title>공백 문자 반복: SPACE 함수</title>
      <link>https://build-enough.tistory.com/entry/%EA%B3%B5%EB%B0%B1-%EB%AC%B8%EC%9E%90-%EB%B0%98%EB%B3%B5-SPACE-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SPACE 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 공백 문자를 반복한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;symbol 열에 10개의 공백 문자를 붙이는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733404338149&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT symbol + SPACE(10) + company_name FROM nasdaq_company&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ufhby/btsK9eLRvWq/ppjy1GSKksh789WmTLeNY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ufhby/btsK9eLRvWq/ppjy1GSKksh789WmTLeNY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ufhby/btsK9eLRvWq/ppjy1GSKksh789WmTLeNY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fufhby%2FbtsK9eLRvWq%2Fppjy1GSKksh789WmTLeNY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;522&quot; height=&quot;350&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/676</guid>
      <comments>https://build-enough.tistory.com/entry/%EA%B3%B5%EB%B0%B1-%EB%AC%B8%EC%9E%90-%EB%B0%98%EB%B3%B5-SPACE-%ED%95%A8%EC%88%98#entry676comment</comments>
      <pubDate>Thu, 5 Dec 2024 22:13:19 +0900</pubDate>
    </item>
    <item>
      <title>문자 반복: REPLICATE 함수</title>
      <link>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90-%EB%B0%98%EB%B3%B5-REPLICATE-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;REPLICATE 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 지정한 문자를 반복할 때 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지정한 문자를 반복하는 방법: REPLICATE 함수&lt;/p&gt;
&lt;pre id=&quot;code_1733403871782&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;REPLICATE(string_expression, integer_expression)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;0을 10번 반복하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733403895800&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT REPLICATE('0', 10)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;209&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccaQLR/btsK9P5T8cn/Lonk4tuTftxNj2lUYdtaW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccaQLR/btsK9P5T8cn/Lonk4tuTftxNj2lUYdtaW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccaQLR/btsK9P5T8cn/Lonk4tuTftxNj2lUYdtaW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccaQLR%2FbtsK9P5T8cn%2FLonk4tuTftxNj2lUYdtaW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;209&quot; height=&quot;114&quot; data-origin-width=&quot;209&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REPICATE 함수는 REPLACE 함수와 조합해 사용할 수 있다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;A를 C로 바꾸되 10번 반복하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733404220438&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
  REPLACE(symbol, 'A', REPLICATE('C', 10)), symbol
FROM nasdaq_company
WHERE symbol LIKE '%A%'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ehUR9a/btsK8tweIGB/WckSdFOOXYsgzdTt0jyN5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ehUR9a/btsK8tweIGB/WckSdFOOXYsgzdTt0jyN5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ehUR9a/btsK8tweIGB/WckSdFOOXYsgzdTt0jyN5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FehUR9a%2FbtsK8tweIGB%2FWckSdFOOXYsgzdTt0jyN5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;493&quot; height=&quot;350&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/675</guid>
      <comments>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90-%EB%B0%98%EB%B3%B5-REPLICATE-%ED%95%A8%EC%88%98#entry675comment</comments>
      <pubDate>Thu, 5 Dec 2024 22:10:41 +0900</pubDate>
    </item>
    <item>
      <title>특정 문자를 다른 문자로 변경: REPLACE 함수</title>
      <link>https://build-enough.tistory.com/entry/%ED%8A%B9%EC%A0%95-%EB%AC%B8%EC%9E%90%EB%A5%BC-%EB%8B%A4%EB%A5%B8-%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B3%80%EA%B2%BD-REPLACE-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;REPLACE 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 지정 문자를 다른 문자로 대체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 인자: 열 또는 문자 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째 인자: 변경하려는 문자열&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 번째 인자: 변경 문자열을 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특정 문자를 다른 문자로 변경하는 방법: REPLACE 함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733403400194&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;REPLACE(string_expression, string_pattern, string_replacement)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자 A를 C로 대체하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733403511571&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
  REPLACE(symbol, 'A', 'C'), symbol
FROM nasdaq_company
WHERE symbol LIKE '%A%'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YFZsy/btsK8Mvqy1O/yDu3Jfh0aa8hqQlYLBPXzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YFZsy/btsK8Mvqy1O/yDu3Jfh0aa8hqQlYLBPXzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YFZsy/btsK8Mvqy1O/yDu3Jfh0aa8hqQlYLBPXzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYFZsy%2FbtsK8Mvqy1O%2FyDu3Jfh0aa8hqQlYLBPXzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;305&quot; height=&quot;345&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/674</guid>
      <comments>https://build-enough.tistory.com/entry/%ED%8A%B9%EC%A0%95-%EB%AC%B8%EC%9E%90%EB%A5%BC-%EB%8B%A4%EB%A5%B8-%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B3%80%EA%B2%BD-REPLACE-%ED%95%A8%EC%88%98#entry674comment</comments>
      <pubDate>Thu, 5 Dec 2024 21:58:59 +0900</pubDate>
    </item>
    <item>
      <title>지정한 범위의 문자열 반환: SUBSTRING 함수</title>
      <link>https://build-enough.tistory.com/entry/%EC%A7%80%EC%A0%95%ED%95%9C-%EB%B2%94%EC%9C%84%EC%9D%98-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%98%ED%99%98-SUBSTRING-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SUBSTRING 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 지정한 범위의 문자열을 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번째 인자에는 '시작 범위', 3번째 인자에는 '시작 위치로부터 반환한 문자 개수' 입력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4번째 문자부터 2개의 문자를 반환하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733402644505&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 'Do it! SQL', SUBSTRING('Do it! SQL', 4, 2)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1kGPW/btsK9xdlHqv/arAA5xEsiZnu37XuIMgyg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1kGPW/btsK9xdlHqv/arAA5xEsiZnu37XuIMgyg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1kGPW/btsK9xdlHqv/arAA5xEsiZnu37XuIMgyg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1kGPW%2FbtsK9xdlHqv%2FarAA5xEsiZnu37XuIMgyg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;347&quot; height=&quot;111&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SUBSTRING 함수는 열 이름을 전달해 사용할 수도 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;compaany_name 열에서 2번째 문자부터 3개의 문자를 반환하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733402748221&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT SUBSTRING(company_name, 2, 3), company_name FROM nasdaq_company&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;353&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buxooB/btsK8JFvGcP/ZGfoVQFJfdzl7WSwqFCUf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buxooB/btsK8JFvGcP/ZGfoVQFJfdzl7WSwqFCUf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buxooB/btsK8JFvGcP/ZGfoVQFJfdzl7WSwqFCUf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuxooB%2FbtsK8JFvGcP%2FZGfoVQFJfdzl7WSwqFCUf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;590&quot; height=&quot;353&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;353&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SUBSTRING 함수는 CHARINDEX 함수를 조합해 사용하는 경우가 많다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CHARINDEX 함수로 @ 문자 위치를 계산한 다음 그 값을 SUBSTRING 함수에 사용해 @ 문자 바로 앞까지의 문자열을 검색하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733403124204&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT SUBSTRING('email@email.com', 1, CHARINDEX('@', 'email@email@.com')-1)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;216&quot; data-origin-height=&quot;117&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1XqHM/btsK9CZUnRT/mKKtUpJ1UkikxNpdTVaEP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1XqHM/btsK9CZUnRT/mKKtUpJ1UkikxNpdTVaEP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1XqHM/btsK9CZUnRT/mKKtUpJ1UkikxNpdTVaEP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1XqHM%2FbtsK9CZUnRT%2FmKKtUpJ1UkikxNpdTVaEP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;216&quot; height=&quot;117&quot; data-origin-width=&quot;216&quot; data-origin-height=&quot;117&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/673</guid>
      <comments>https://build-enough.tistory.com/entry/%EC%A7%80%EC%A0%95%ED%95%9C-%EB%B2%94%EC%9C%84%EC%9D%98-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%98%ED%99%98-SUBSTRING-%ED%95%A8%EC%88%98#entry673comment</comments>
      <pubDate>Thu, 5 Dec 2024 21:53:50 +0900</pubDate>
    </item>
    <item>
      <title>지정한 길이만큼 문자열 반환: LEFT, RIGHT 함수</title>
      <link>https://build-enough.tistory.com/entry/%EC%A7%80%EC%A0%95%ED%95%9C-%EA%B8%B8%EC%9D%B4%EB%A7%8C%ED%81%BC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%98%ED%99%98-LEFT-RIGHT-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;LEFT 함수와 RIGHT 함수는 문자열 왼쪽 또는 오른쪽에서 시작해 정의한 위치까지 문자열을 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자열 왼쪽과 오른쪽에서 각각 2개의 문자열을 반환하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733402241319&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 'Do it! SQL', LEFT('Do it! SQL', 2), RIGHT('Do it! SQL', 2)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCTewx/btsK9fqqOLP/yJXBn77aJCgr7QSfeMQtr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCTewx/btsK9fqqOLP/yJXBn77aJCgr7QSfeMQtr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCTewx/btsK9fqqOLP/yJXBn77aJCgr7QSfeMQtr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCTewx%2FbtsK9fqqOLP%2FyJXBn77aJCgr7QSfeMQtr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;488&quot; height=&quot;106&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/672</guid>
      <comments>https://build-enough.tistory.com/entry/%EC%A7%80%EC%A0%95%ED%95%9C-%EA%B8%B8%EC%9D%B4%EB%A7%8C%ED%81%BC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B0%98%ED%99%98-LEFT-RIGHT-%ED%95%A8%EC%88%98#entry672comment</comments>
      <pubDate>Thu, 5 Dec 2024 21:37:38 +0900</pubDate>
    </item>
    <item>
      <title>특정 문자까지 문자열 길이 반환하기: CHARINDEX 함수</title>
      <link>https://build-enough.tistory.com/entry/%ED%8A%B9%EC%A0%95-%EB%AC%B8%EC%9E%90%EA%B9%8C%EC%A7%80-%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B8%B8%EC%9D%B4-%EB%B0%98%ED%99%98%ED%95%98%EA%B8%B0-CHARINDEX-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CHARINDEX 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 지정한 특정 문자까지의 길이를 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CHARINDEX 함수는 만약 지정한 문자가 탐색 대상 문자열에 없으면 0을 반환한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지정한 특정 문자까지의 문자열 길이 반환: CHARINDEX 함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733401888658&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 'Do it SQL', CHARINDEX('!', 'Do it!! SQL')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JKOqL/btsK8ZH4HSM/3HsOQFbxUnKxb5LqRw2d4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JKOqL/btsK8ZH4HSM/3HsOQFbxUnKxb5LqRw2d4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JKOqL/btsK8ZH4HSM/3HsOQFbxUnKxb5LqRw2d4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJKOqL%2FbtsK8ZH4HSM%2F3HsOQFbxUnKxb5LqRw2d4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;344&quot; height=&quot;106&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지정한 문자가 탐색 대상 문자열에 없으면 0을 반환&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733402030254&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CHARINDEX('.', company_name), company_name FROM nasdaq_company&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmRDnf/btsK8IfAbpP/vAbDYUY1eXXWfT62JbI3mK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmRDnf/btsK8IfAbpP/vAbDYUY1eXXWfT62JbI3mK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmRDnf/btsK8IfAbpP/vAbDYUY1eXXWfT62JbI3mK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmRDnf%2FbtsK8IfAbpP%2FvAbDYUY1eXXWfT62JbI3mK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;581&quot; height=&quot;350&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/671</guid>
      <comments>https://build-enough.tistory.com/entry/%ED%8A%B9%EC%A0%95-%EB%AC%B8%EC%9E%90%EA%B9%8C%EC%A7%80-%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B8%B8%EC%9D%B4-%EB%B0%98%ED%99%98%ED%95%98%EA%B8%B0-CHARINDEX-%ED%95%A8%EC%88%98#entry671comment</comments>
      <pubDate>Thu, 5 Dec 2024 21:34:11 +0900</pubDate>
    </item>
    <item>
      <title>문자열 길이 반환: LEN 함수</title>
      <link>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B8%B8%EC%9D%B4-%EB%B0%98%ED%99%98-LEN-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;LEN 함수는 문자열의 문자 개수를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LEN 함수의 특징&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 문자 개수를 셀 때 앞의 공백은 포함하지만, 뒤의 공백은 포함하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자열의 문자 개수 반환: LEN 함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733321413860&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT LEN('    Do it! SQL'), LEN('Do it! SQL     ')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QyGRS/btsK6yq7quy/tpdGK2FbRF3uWNVUOV8PHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QyGRS/btsK6yq7quy/tpdGK2FbRF3uWNVUOV8PHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QyGRS/btsK6yq7quy/tpdGK2FbRF3uWNVUOV8PHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQyGRS%2FbtsK6yq7quy%2FtpdGK2FbRF3uWNVUOV8PHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;355&quot; height=&quot;111&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;특정 길이의 문자열 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733321639375&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT LEN(company_name), company_name
FROM nasdaq_company&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UyKry/btsK8IMjW1P/G9p8ZCTC3fd2RJr2cqWYQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UyKry/btsK8IMjW1P/G9p8ZCTC3fd2RJr2cqWYQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UyKry/btsK8IMjW1P/G9p8ZCTC3fd2RJr2cqWYQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUyKry%2FbtsK8IMjW1P%2FG9p8ZCTC3fd2RJr2cqWYQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;350&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/670</guid>
      <comments>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B8%B8%EC%9D%B4-%EB%B0%98%ED%99%98-LEN-%ED%95%A8%EC%88%98#entry670comment</comments>
      <pubDate>Wed, 4 Dec 2024 23:14:27 +0900</pubDate>
    </item>
    <item>
      <title>문자열 공백 제거: LTRIM, RTRIM, TRIM 함수</title>
      <link>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B3%B5%EB%B0%B1-%EC%A0%9C%EA%B1%B0-LTRIM-RTRIM-TRIM-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 어떤 데이터를 입력할 때 의도치 않게 공백을 입력하거나, 반대로 의도해 공백을 입력하는 경우가 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 관리하는 입장에서 공백은 문제를 일으킬 수 있으므로 관리 대상이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 공백을 제거하는 작업이 필요한데 그럴 때 공백 제거 함수를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LTRIM 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 왼쪽 공백 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RTRIM 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 오른쪽 공백 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TRIM 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 양쪽 공백 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자열의 앞, 뒤, 양쪽 공백을 제거: LTRIM, RTRIM, TRIM 함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733321224345&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 
	'   Do it! SQL', LTRIM('    Do it! SQL'),
	'Do it! SQL   ', RTRIM('Do it! SQL    '),
	' Do it! SQL  ', TRIM( 'Do it! SQL    ')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BeW0G/btsK8mCKrZI/5HeLDAP1kzIm2O8LxaIF40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BeW0G/btsK8mCKrZI/5HeLDAP1kzIm2O8LxaIF40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BeW0G/btsK8mCKrZI/5HeLDAP1kzIm2O8LxaIF40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBeW0G%2FbtsK8mCKrZI%2F5HeLDAP1kzIm2O8LxaIF40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;902&quot; height=&quot;109&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/669</guid>
      <comments>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90%EC%97%B4-%EA%B3%B5%EB%B0%B1-%EC%A0%9C%EA%B1%B0-LTRIM-RTRIM-TRIM-%ED%95%A8%EC%88%98#entry669comment</comments>
      <pubDate>Wed, 4 Dec 2024 23:07:58 +0900</pubDate>
    </item>
    <item>
      <title>문자열을 소문자나 대문자로 변경: LOWER, UPPER 함수</title>
      <link>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%86%8C%EB%AC%B8%EC%9E%90%EB%82%98-%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B3%80%EA%B2%BD-LOWER-UPPER-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;LOWER 함수와 UPPER 함수는 각각 문자열을 소문자와 대문자로 변경한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자열을 소문자나 대문자로 변경&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733320673311&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 'Do it! SQL', LOWER('Do it! SQL'), UPPER('Do it! SQL')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;72&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boMsiH/btsK8pzrRBJ/APBSr4Vq3PQi5YQRBIfq80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boMsiH/btsK8pzrRBJ/APBSr4Vq3PQi5YQRBIfq80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boMsiH/btsK8pzrRBJ/APBSr4Vq3PQi5YQRBIfq80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboMsiH%2FbtsK8pzrRBJ%2FAPBSr4Vq3PQi5YQRBIfq80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;477&quot; height=&quot;72&quot; data-origin-width=&quot;477&quot; data-origin-height=&quot;72&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/668</guid>
      <comments>https://build-enough.tistory.com/entry/%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84-%EC%86%8C%EB%AC%B8%EC%9E%90%EB%82%98-%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B3%80%EA%B2%BD-LOWER-UPPER-%ED%95%A8%EC%88%98#entry668comment</comments>
      <pubDate>Wed, 4 Dec 2024 22:58:22 +0900</pubDate>
    </item>
    <item>
      <title>NULL과 문자열 연결: ISNULL, COALESCE 함수</title>
      <link>https://build-enough.tistory.com/entry/NULL%EA%B3%BC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%97%B0%EA%B2%B0-ISNULL-COALESCE-%ED%95%A8%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;만약 문자열과 연결하려는 값이 NULL이면 결과는 NULL로 반환된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 테이블에 NULL이 있다면 문자열 또는 숫자로 자료형을 변환해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NULL은 ISNULL 함수나 COALESCE 함수로 자료형을 변환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ISNULL함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인자로 (열 이름, 대체할 값)과 같이 전달하면 해당 이름의 NULL을 대체할 값으로 변환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;ISNULL 함수의 형 변환 기본 형식&lt;/p&gt;
&lt;pre id=&quot;code_1733232573619&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ISNULL(check_expression, replacement_value)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sector 열의 값이 NULL이면 공백 ''으로 대체&lt;/p&gt;
&lt;pre id=&quot;code_1733232795079&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT symbol, ISNULL(sector, ''), industry, open_price FROM nasdaq_company
WHERE symbol = 'DBA'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mbwnk/btsK6aiNAlu/mXFyFx262f4ReewtRmvWB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mbwnk/btsK6aiNAlu/mXFyFx262f4ReewtRmvWB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mbwnk/btsK6aiNAlu/mXFyFx262f4ReewtRmvWB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmbwnk%2FbtsK6aiNAlu%2FmXFyFx262f4ReewtRmvWB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;543&quot; height=&quot;113&quot; data-origin-width=&quot;543&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sector 열의 값이 NULL이면 'industry'로 대체&lt;/p&gt;
&lt;pre id=&quot;code_1733232895474&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECt symbol, ISNULL(sector, industry), industry, open_price FROM nasdaq_company
WHERE symbol = 'DBA'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xDk7a/btsK4wtnPT6/Xk2fR5CgPNZKG6zoXba1xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xDk7a/btsK4wtnPT6/Xk2fR5CgPNZKG6zoXba1xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xDk7a/btsK4wtnPT6/Xk2fR5CgPNZKG6zoXba1xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxDk7a%2FbtsK4wtnPT6%2FXk2fR5CgPNZKG6zoXba1xK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;547&quot; height=&quot;108&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;COALESCE 함수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(열 이름 1, 열 이름 2, ...)와 같이 여러 열 이름을 인자로 전달한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 인자로 전달한 값이 NULL일 때 이후 쉼표로 구분해 입력한 N개의 인자를 순차 대입한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sector 값이 NULL일 떄, 다음 인자인 industry가 NULL이면 그다음 인자인 open_price를 확인해 대입하는 식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733320496594&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT symbol, COALESCE(sector, industry, open_price), industry, open_price
FROM nasdaq_company
WHERE symbol = 'DBA'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;576&quot; data-origin-height=&quot;114&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnrjoq/btsK50BCH52/UHsSfRITEJqML1KwoVxxP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnrjoq/btsK50BCH52/UHsSfRITEJqML1KwoVxxP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnrjoq/btsK50BCH52/UHsSfRITEJqML1KwoVxxP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbnrjoq%2FbtsK50BCH52%2FUHsSfRITEJqML1KwoVxxP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;576&quot; height=&quot;114&quot; data-origin-width=&quot;576&quot; data-origin-height=&quot;114&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/667</guid>
      <comments>https://build-enough.tistory.com/entry/NULL%EA%B3%BC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%97%B0%EA%B2%B0-ISNULL-COALESCE-%ED%95%A8%EC%88%98#entry667comment</comments>
      <pubDate>Wed, 4 Dec 2024 22:55:50 +0900</pubDate>
    </item>
    <item>
      <title>CAST, CONVERT 함수(문자열과 숫자 또는 날짜 연결)</title>
      <link>https://build-enough.tistory.com/entry/CAST-CONVERT-%ED%95%A8%EC%88%98%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EC%88%AB%EC%9E%90-%EB%98%90%EB%8A%94-%EB%82%A0%EC%A7%9C-%EC%97%B0%EA%B2%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;실무를 하다 보면 문자열이 아닌 값을 문자열에 연결해야 할 때가 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자나 날짜 등의 값을 문자열로 변환해 연결하려면 어떻게 해야할까? -&amp;gt; CAST와 CONVERT 함수 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;숫자형 ipo_year 열과 open_price 열에 어떤 값이 있는지 확인하는 쿼리와, 이들 두 열을 연결하고자 +를 사용하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;숫자형 데이터를 +로 연결: 오류 발생&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730034175735&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT ipo_year, open_price FROM nasdaq_company
WHERE symbol = 'MSFT'

SELECT ipo_year + open_price FROM nasdaq_company
WHERE symbol = 'MSFT'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pCFrX/btsKkiQwVKt/nfOGTQVxJmanwWwA8YiJe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pCFrX/btsKkiQwVKt/nfOGTQVxJmanwWwA8YiJe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pCFrX/btsKkiQwVKt/nfOGTQVxJmanwWwA8YiJe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpCFrX%2FbtsKkiQwVKt%2FnfOGTQVxJmanwWwA8YiJe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1144&quot; height=&quot;230&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ipo_year + open_price의 결과는 문자열을 더한 값이 아니라 숫자형인 2324.51...이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CAST 또는 CONVERT 함수는 숫자형이나 날짜형 등의 데이터를 문자열과 같은 자료형으로 변환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CAST 함수 사용 방법&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730034406070&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CAST(expression AS datetype(length))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;숫자형 데이터를 문자열로 연결: CAST 함수로 자료형 변환&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730034508711&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	CAST(ipo_year AS nvarchar(50)) + ' ' + CAST(open_price AS nvarchar(50))
FROM nasdaq_company
WHERE symbol = 'MSFT'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;143&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lHcMd/btsKkmrRXlP/mSZ0hCrau1MhY5fJZBUJnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lHcMd/btsKkmrRXlP/mSZ0hCrau1MhY5fJZBUJnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lHcMd/btsKkmrRXlP/mSZ0hCrau1MhY5fJZBUJnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlHcMd%2FbtsKkmrRXlP%2FmSZ0hCrau1MhY5fJZBUJnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;143&quot; height=&quot;71&quot; data-origin-width=&quot;143&quot; data-origin-height=&quot;71&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CONVERT 함수 사용 방법&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730035192158&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CONVERT (data_type [(length)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;숫자형 데이터를 문자열로 연결: CONVERT 함수로 자료형 변환&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733230468037&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	CONVERT(nvarchar(50), ipo_year) +
	' ' + 
	CONVERT(nvarchar(50), open_price)
FROM nasdaq_company
WHERE symbol = 'MSFT'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzHRHt/btsK7czUHrP/HZMQPQUjQZr0A5kI9ZhnWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzHRHt/btsK7czUHrP/HZMQPQUjQZr0A5kI9ZhnWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzHRHt/btsK7czUHrP/HZMQPQUjQZr0A5kI9ZhnWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzHRHt%2FbtsK7czUHrP%2FHZMQPQUjQZr0A5kI9ZhnWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;177&quot; height=&quot;89&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CAST나 CONVERT 함수를 사용할 때 AS nvarchar(50) 또는 nvarchar(50)과 같이 문자열의 길이를 지정할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;=&amp;gt; 문자열을 변환할 때 nvarchar에 지정한 값이 실제 변환할 문자열의 길이보다 작으면 문자열이 잘린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;'2021-01-01 23:59:59.999'를 문자열로 변환하되, 문자열 크기를 5byte로 지정한 것&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733230699025&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONVERT (NVARCHAR(5), '2021-01-01 23:59:59.999')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;181&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwiRlD/btsK6rqKmle/CbxjrowGQodh07zpncv3iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwiRlD/btsK6rqKmle/CbxjrowGQodh07zpncv3iK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwiRlD/btsK6rqKmle/CbxjrowGQodh07zpncv3iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwiRlD%2FbtsK6rqKmle%2FCbxjrowGQodh07zpncv3iK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;181&quot; height=&quot;94&quot; data-origin-width=&quot;181&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;'2021-01-01 23:59:59.999'를 문자열로 변환하되, 문자열 크기를 15byte로 지정한 것&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1733230732539&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONVERT (NVARCHAR(15), '2021-01-01 23:59:59.999')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;194&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vAJ0R/btsK660LVkx/AvkQUugmz2vSekOxKNjMb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vAJ0R/btsK660LVkx/AvkQUugmz2vSekOxKNjMb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vAJ0R/btsK660LVkx/AvkQUugmz2vSekOxKNjMb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvAJ0R%2FbtsK660LVkx%2FAvkQUugmz2vSekOxKNjMb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;194&quot; height=&quot;89&quot; data-origin-width=&quot;194&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자형을 문자열로 변환하되 문자열 크기를 작게 지정하는 경우에는 산술오버플로 오류가 발생한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;10자리 숫자를 5자리 문자열로 변환하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;할당한 공간의 크기가 5가 변환할 대상의 크기 10보다 작아서 산술오버플로 오류가 발생하는 것을 알 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1733231339752&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONVERT (NVARCHAR(5), 1234567890)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eGH9Xb/btsK5PlFNK5/0loqUJepNkH8hNQ5xcsqz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eGH9Xb/btsK5PlFNK5/0loqUJepNkH8hNQ5xcsqz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eGH9Xb/btsK5PlFNK5/0loqUJepNkH8hNQ5xcsqz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeGH9Xb%2FbtsK5PlFNK5%2F0loqUJepNkH8hNQ5xcsqz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;945&quot; height=&quot;137&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 숫자에서 앞의 5자지를 문자열로 반환받고 싶다면 숫자 앞뒤로 ''를 추가해 문자열로 인식시킨 다음 5자리를 잘라내야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1733231424859&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONVERT (NVARCHAR(5), '1234567890')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;85&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/peQp4/btsK6thPFPS/dgMFHpK28vRwBNKHHFZZfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/peQp4/btsK6thPFPS/dgMFHpK28vRwBNKHHFZZfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/peQp4/btsK6thPFPS/dgMFHpK28vRwBNKHHFZZfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpeQp4%2FbtsK6thPFPS%2FdgMFHpK28vRwBNKHHFZZfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;177&quot; height=&quot;85&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;85&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/666</guid>
      <comments>https://build-enough.tistory.com/entry/CAST-CONVERT-%ED%95%A8%EC%88%98%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EC%88%AB%EC%9E%90-%EB%98%90%EB%8A%94-%EB%82%A0%EC%A7%9C-%EC%97%B0%EA%B2%B0#entry666comment</comments>
      <pubDate>Tue, 3 Dec 2024 22:12:47 +0900</pubDate>
    </item>
    <item>
      <title>7. jQuery 사용법</title>
      <link>https://build-enough.tistory.com/entry/7-jQuery-%EC%82%AC%EC%9A%A9%EB%B2%95</link>
      <description>&lt;h1&gt;jQuery&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자바스크립트의 특징은 코드가 매우 길고 더럽다&lt;/li&gt;
&lt;li&gt;따라서 html 조작을 쉽게 바꿔주는 라이브러리를 사용할 수 있다
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;React&lt;/code&gt;, &lt;code&gt;Vue&lt;/code&gt;, &lt;code&gt;jQuery&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jQuery&lt;/code&gt;는 자바스크립트의 &lt;code&gt;querySelectorAll&lt;/code&gt;, &lt;code&gt;addEventListener&lt;/code&gt;, &lt;code&gt;classList.add&lt;/code&gt; 등을 이름만 짧게 바꿔주는 라이브러리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;jQuery 설치&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Google에 jQuery cdn 검색&lt;/li&gt;
&lt;li&gt;jQuery 3.x 버전 &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; 태그를 html 파일에 복붙&lt;/li&gt;
&lt;li&gt;jQuery 설치한 부분의 하단부터 jQuery 문법 사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;jQuery로 html 변경&lt;/h1&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;

&amp;lt;script&amp;gt;
  $('.hello').html('바보'); 
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;$&lt;/code&gt;은 &lt;code&gt;querySelector&lt;/code&gt;와 동일하게 사용하면 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;jQuery로 스타일 변경&lt;/h1&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;

&amp;lt;script&amp;gt;
  $('.hello').css('color', 'red');
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;jQuery 주의사항&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;html 셀럭터로 찾으면 html 함수들을 뒤에 붙이고&lt;br /&gt;jQuery 셀렉터로 찾으면 jQuery 함수들을 뒤에 붙여야 한다&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$('').innerHtml&lt;/code&gt;은 안됨(jQuery와 html 셀렉터 섞여있음)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;jQuery로 class 탈부착&lt;/h1&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;

&amp;lt;script&amp;gt;
  $('.hello').addClass('클래스명');
  $('.hello').removeClass('클래스명');
  $('.hello').toggleClass('클래스명');
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;html 여러 개 바꾸기&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;javaScript&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;

&amp;lt;script&amp;gt;
  document.querySelectorAll('.hello')[0].innerHTML = '바보';
  document.querySelectorAll('.hello')[1].innerHTML = '바보';
  document.querySelectorAll('.hello')[2].innerHTML = '바보';
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jQuery&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;

&amp;lt;script&amp;gt;
  $('.hello').html('바보');
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;$()&lt;/code&gt; 셀렉터는 &lt;code&gt;querySelectorAll&lt;/code&gt;처럼 여러 개가 있으면 전부 찾아준다&lt;/li&gt;
&lt;li&gt;[0]과 같이 순서를 지정해 줄 필요 없다&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.html()&lt;/code&gt;을 붙이면 셀렉터로 찾은 모든 요소를 한 번에 조작하고 변경할 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;jQuery 이벤트 리스너&lt;/h1&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;
&amp;lt;button class=&quot;test-btn&quot;&amp;gt;버튼&amp;lt;/button&amp;gt;

&amp;lt;script&amp;gt;
  $('.test-btn').on('click', function(){
    어쩌구~
  });
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;on&lt;/code&gt;을 &lt;code&gt;addEventListener&lt;/code&gt; 대신 사용&lt;/li&gt;
&lt;li&gt;&lt;code&gt;on&lt;/code&gt;은 &lt;code&gt;$()&lt;/code&gt;으로 찾은 것들에만 붙일 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;jQuery UI 애니메이션&lt;/h1&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;p class=&quot;hello&quot;&amp;gt;안녕&amp;lt;/p&amp;gt;
&amp;lt;button class=&quot;test-btn&quot;&amp;gt;버튼&amp;lt;/button&amp;gt;

&amp;lt;script&amp;gt;
  $('.test-btn').on('click', function(){
    $('.hello').fadeOut();
  });
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;.hide()&lt;/code&gt;: 사라지게&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.fadeOut()&lt;/code&gt;: 서서히 사라지게&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.slideUp()&lt;/code&gt;: 줄어들며 사라지게&lt;/li&gt;
&lt;li&gt;애니메이션을 반대로 주고 싶으면 &lt;code&gt;show()&lt;/code&gt;, &lt;code&gt;fadeIn()&lt;/code&gt;, &lt;code&gt;slideDown()&lt;/code&gt;이 있다&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>JavaScript/Level1</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/665</guid>
      <comments>https://build-enough.tistory.com/entry/7-jQuery-%EC%82%AC%EC%9A%A9%EB%B2%95#entry665comment</comments>
      <pubDate>Wed, 13 Nov 2024 22:40:50 +0900</pubDate>
    </item>
    <item>
      <title>6. 서브메뉴 만들어보기와 classList 다루기</title>
      <link>https://build-enough.tistory.com/entry/6-%EC%84%9C%EB%B8%8C%EB%A9%94%EB%89%B4-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EA%B8%B0%EC%99%80-classList-%EB%8B%A4%EB%A3%A8%EA%B8%B0</link>
      <description>&lt;h1&gt;Bootstrap&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구글에 Bootstrap 검색&lt;/li&gt;
&lt;li&gt;get started 버튼 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;css 파일은 &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;태그 안&lt;/li&gt;
&lt;li&gt;js 파일은 &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; 태그 끝나기 전에 넣기&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;잘 모르겠으면 &lt;a href=&quot;https://getbootstrap.com/docs/5.3/getting-started/introduction/&quot;&gt;starter template&lt;/a&gt; 항목에 있는 예제코드로 html 내용 넣기&lt;/li&gt;
&lt;li&gt;기존에 만들어 놨던 css 파일도 &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt;태그로 넣기&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Navbar 만들기&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Bootstrap 설치 해놨다는 가정&lt;/li&gt;
&lt;li&gt;Bootstrap 사이트에서 원하는 UI 검색 후 복사 붙여넣기&lt;/li&gt;
&lt;li&gt;일단 Navbar 코드
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;&amp;lt;nav class=&quot;navbar navbar-light bg-light&quot;&amp;gt;
&amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
  &amp;lt;span class=&quot;navbar-brand&quot;&amp;gt;Navbar&amp;lt;/span&amp;gt;
  &amp;lt;button class=&quot;navbar-toggler&quot; type=&quot;button&quot;&amp;gt;
    &amp;lt;span class=&quot;navbar-toggler-icon&quot;&amp;gt;&amp;lt;/span&amp;gt;
  &amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/nav&amp;gt; &lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;누르면 등장하는 서브메뉴 만들기&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;1. 미리 html, css로 디자인 만들고 숨기기
2. 버튼 누르면 보여주기&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Bootstrap 사이트에서 &lt;code&gt;list group&lt;/code&gt; 검색 후 &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;밑에 붙여넣기
&lt;pre class=&quot;stata&quot;&gt;&lt;code&gt;&amp;lt;ul class=&quot;list-group&quot;&amp;gt;
&amp;lt;li class=&quot;list-group-item&quot;&amp;gt;An item&amp;lt;/li&amp;gt;
&amp;lt;li class=&quot;list-group-item&quot;&amp;gt;A second item&amp;lt;/li&amp;gt;
&amp;lt;li class=&quot;list-group-item&quot;&amp;gt;A third item&amp;lt;/li&amp;gt;
&amp;lt;li class=&quot;list-group-item&quot;&amp;gt;A fourth item&amp;lt;/li&amp;gt;
&amp;lt;li class=&quot;list-group-item&quot;&amp;gt;And a fifth one&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt; &lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;class 탈부착식으로 버튼을 누르면 보여주기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;css 파일에 평소 &lt;code&gt;.list-group&lt;/code&gt;가 붙은 요소는 숨겨두기&lt;/li&gt;
&lt;li&gt;&lt;code&gt;show&lt;/code&gt;라는 클래스를 부착하면 보여주는 것으로 개발
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;.list-group {
display : none
}
.show {
display : block
}&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;버튼 누르면 &lt;code&gt;&amp;lt;ul class=&quot;list-group&quot;&amp;gt;&lt;/code&gt; &lt;code&gt;&amp;lt;ul class=&quot;list-group&quot; show&amp;gt;&lt;/code&gt;와 같이 클래스를 탈부착하는 방식&lt;/li&gt;
&lt;li&gt;탈부착 하는 이유는 &lt;code&gt;display: block;&lt;/code&gt;말고 다른 스타일도 동시에 주고 싶을 경우 유용함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;버튼 클릭시 클래스명 추가&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버튼을 눌렀을때 &lt;code&gt;show&lt;/code&gt;라는 클래스를 추가&lt;/li&gt;
&lt;li&gt;class 명을 원하는 요소에 추가하는 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;셀럭터로찾은요소.classList.add('클래스명')&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;class 명을 원하는 요소에서 제거하는 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;셀렉터로찾은요소.classList.remove('클래스명')&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;document.getElementsByClassName('navbar-toggler')[0].addEventListener('click', function(){
  document.getElementsByClassName('list-group')[0].classList.add('show');
});&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;class=&quot;navbar-toggler&lt;/code&gt;을 가진 요소를 클릭하면&lt;br /&gt;&lt;code&gt;class=&quot;list-group&quot;&lt;/code&gt;인 요소에 &lt;code&gt;show&lt;/code&gt;라는 클래스명을 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;버튼 한 번 더 누르면 숨기기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버튼 한 번 더 누르면 &lt;code&gt;show&lt;/code&gt;클래스 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;document.getElementsByClassName('navbar-toggler')[0].addEventListener('click', function(){
  document.getElementsByClassName('list-group')[0].classList.toggle('show');
});&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;.classList.toggle()&lt;/code&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래스명이 있으면 제거&lt;/li&gt;
&lt;li&gt;클래스명이 없으면 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;querySelector&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;getElementById()&lt;/code&gt;, &lt;code&gt;getElementsByClassName()&lt;/code&gt;말고 다른 방식으로 html 요소를 찾아주는 셀렉터&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;test1&quot;&amp;gt;안녕하세요&amp;lt;/div&amp;gt;
&amp;lt;div id=&quot;test2&quot;&amp;gt;안녕하세요&amp;lt;/div&amp;gt;

&amp;lt;script&amp;gt;
  document.querySelector('.test1').innerHTML = '안녕';
  document.querySelector('#test2').innerHTML = '안녕';
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;querySelector()&lt;/code&gt;는 맨 위의 한 개 요소만 선택해준다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;test1&quot;&amp;gt;안녕하세요&amp;lt;/div&amp;gt;
&amp;lt;div class=&quot;test1&quot;&amp;gt;안녕하세요&amp;lt;/div&amp;gt;

&amp;lt;script&amp;gt;
  document.querySelectorAll('.test1')[1].innerHTML = '안녕';
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;querySelectorAll()&lt;/code&gt;은 해당하는 걸 다 찾아서 []안에 담아준다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;querySelector&lt;/code&gt;로 바꾸기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!doctype html&amp;gt;
&amp;lt;html lang=&quot;en&quot;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;utf-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&amp;gt;
    &amp;lt;title&amp;gt;Bootstrap demo&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot; integrity=&quot;sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN&quot; crossorigin=&quot;anonymous&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;

    &amp;lt;nav class=&quot;navbar navbar-light bg-light&quot;&amp;gt;
        &amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
          &amp;lt;span class=&quot;navbar-brand&quot;&amp;gt;Navbar&amp;lt;/span&amp;gt;
          &amp;lt;button  class=&quot;navbar-toggler&quot; type=&quot;button&quot;&amp;gt;
            &amp;lt;span class=&quot;navbar-toggler-icon&quot;&amp;gt;&amp;lt;/span&amp;gt;
          &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/nav&amp;gt; 

    &amp;lt;ul class=&quot;list-group&quot; id=&quot;test1&quot;&amp;gt;
        &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;An item&amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;A second item&amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;A third item&amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;A fourth item&amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;And a fifth one&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;

    &amp;lt;script&amp;gt;

        document.querySelector('.navbar-toggler').addEventListener('click', function() {
            document.querySelector('.list-group').classList.toggle('show');
        });

        // document.getElementsByClassName('navbar-toggler')[0].addEventListener('click', function() {
        //     document.getElementsByClassName('list-group')[0].classList.toggle('show');
        // });
    &amp;lt;/script&amp;gt;

    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js&quot; integrity=&quot;sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL&quot; crossorigin=&quot;anonymous&quot;&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>JavaScript/Level1</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/664</guid>
      <comments>https://build-enough.tistory.com/entry/6-%EC%84%9C%EB%B8%8C%EB%A9%94%EB%89%B4-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EA%B8%B0%EC%99%80-classList-%EB%8B%A4%EB%A3%A8%EA%B8%B0#entry664comment</comments>
      <pubDate>Tue, 12 Nov 2024 23:24:48 +0900</pubDate>
    </item>
    <item>
      <title>5. 이벤트리스너</title>
      <link>https://build-enough.tistory.com/entry/5-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EB%A6%AC%EC%8A%A4%EB%84%88</link>
      <description>&lt;h1&gt;getElementByClassName 셀렉터&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 html 요소를 찾고 변경할 때 &lt;code&gt;id&lt;/code&gt;로 찾았는데 &lt;code&gt;class&lt;/code&gt;로 찾을 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;p class=&quot;title1&quot;&amp;gt; 테스트1 &amp;lt;/p&amp;gt;
&amp;lt;p class=&quot;title2&quot;&amp;gt; 테스트2 &amp;lt;/p&amp;gt;

&amp;lt;script&amp;gt;
    document.getElementsByClassName('title1')[0].innerHTML = '안녕';
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;처음 &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; 태그의 내용이 안녕으로 바뀐다&lt;/li&gt;
&lt;li&gt;&lt;code&gt;getElementsByClassName('클래스명')[순서]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[0]과 같이 순서를 넣는 이유는 getElementsByClassName 셀렉터는 일치하는 class가 들어있는 모든 html 요소를 찾아주기 때문이다&lt;br /&gt;그래서 몇 번째 요소를 바꿀지 [순서]를 붙여줘야 한다&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;이벤트 리스너&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버튼의 &lt;code&gt;onclick=&quot;&quot;&lt;/code&gt; 안에 자바스크립트를 짰지만 이벤트 리스너 문법을 사용해도 된다
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;document.getElementById('id요소').addEventListener('click', function(){
          // 실행할 코드
      });&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

    &amp;lt;div class=&quot;alert-box&quot; id=&quot;alert&quot;&amp;gt;
        &amp;lt;p id=&quot;title&quot;&amp;gt;알림창임&amp;lt;/p&amp;gt;
        &amp;lt;button id=&quot;close&quot;&amp;gt;닫기&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;

    &amp;lt;button onclick=&quot;alertId()&quot;&amp;gt;버튼1&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;alertPassward();&quot;&amp;gt;버튼2&amp;lt;/button&amp;gt;

    &amp;lt;script&amp;gt;
        document.getElementById('close').addEventListener('click', function() {
            document.getElementById('alert').style.display = 'none';
        });

        function alertId() {
            document.getElementById('title').innerHTML = '아이디를 입력하세요';
            document.getElementById('alert').style.display = 'block';
        }

        function alertPassward() {
            document.getElementById('title').innerHTML = '비밀번호를 입력하세요';
            document.getElementById('alert').style.display = 'block';
        }

    &amp;lt;/script&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;event&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이벤트 리스너에서 &lt;code&gt;event&lt;/code&gt;는&lt;br /&gt;유저가 웹페이지에 접속해서 스크롤, 키보드 입력, 드래그 등을 하는 것을 의미함&lt;/li&gt;
&lt;li&gt;click 이벤트: 어떤 요소 클릭&lt;/li&gt;
&lt;li&gt;scroll 이벤트: 스크롤&lt;/li&gt;
&lt;li&gt;mouseover 이벤트: 마우스 갖다대기&lt;/li&gt;
&lt;li&gt;keydown 이벤트: 키 입력&lt;/li&gt;
&lt;li&gt;등등..&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;event가 일어나길 기다리는 것이 &lt;code&gt;이벤트 리스너&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;이벤트 리스너는 이벤트가 일어나면 내부 코드를 실행해주는 문법&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;셀렉터로찾은요소.addEventListener('mouseover', function(){ 
  실행할코드
});&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;셀렉터로 찾은 요소에 마우스를 갖다대면 코드 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;셀렉터로찾은요소.addEventListener('scroll', function(){ 
  실행할코드
});&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;셀렉터로 찾은 요소가 스크롤되면 특정 코드를 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;셀렉터로찾은요소.addEventListener('keydown', function(){ 
  실행할코드
});&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;셀렉터로 찾은 요소에 키보드로 글자를 입력하면 특정 코드를 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/Events&quot;&gt;이벤트 목록&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;콜백 함수&lt;/h1&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;셀렉터로찾은요소.addEventListener('scroll', function(){} );&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소괄호 붙으면 함수라고 볼 수 있다&lt;/li&gt;
&lt;li&gt;&lt;code&gt;addEventListener()&lt;/code&gt; 함수에는 파라미터 자리에 2개의 자료를 집어 넣는다
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여기서 두 번째 파라미터로 함수가 들어간다&lt;/li&gt;
&lt;li&gt;&lt;b&gt;함수 파라미터 자리에 들어가는 함수&lt;/b&gt;를 &lt;code&gt;콜백함수&lt;/code&gt;라고 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;콜백함수&lt;/code&gt;는 순차적으로 실행하고 싶을 때 많이 보이는 함수형태&lt;/li&gt;
&lt;li&gt;함수 안에 함수 넣으면 &lt;code&gt;콜백함수&lt;/code&gt;라고 생각하면 됨&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>JavaScript/Level1</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/663</guid>
      <comments>https://build-enough.tistory.com/entry/5-%EC%9D%B4%EB%B2%A4%ED%8A%B8%EB%A6%AC%EC%8A%A4%EB%84%88#entry663comment</comments>
      <pubDate>Thu, 7 Nov 2024 23:50:49 +0900</pubDate>
    </item>
    <item>
      <title>4. function의 parameter 문법</title>
      <link>https://build-enough.tistory.com/entry/4-function%EC%9D%98-parameter-%EB%AC%B8%EB%B2%95</link>
      <description>&lt;h1&gt;function에 사용 가능한 parameter 문법&lt;/h1&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function alert(parameter) {
    document.getElementById('alert').style.display = 'parameter';
}&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;() 소괄호 내에 문자 입력&lt;/li&gt;
&lt;li&gt;{} 중괄호 내에도 () 소괄호에 입력한 같은 문자 입력&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;parater 사용 예시&lt;/h1&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

    &amp;lt;div class=&quot;alert-box&quot; id=&quot;alert&quot;&amp;gt;알림창
        &amp;lt;button onclick=&quot;alertColse()&quot;&amp;gt;알림창 닫기&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button onclick=&quot;alertOpen()&quot;&amp;gt;알림창 열기&amp;lt;/button&amp;gt;

    &amp;lt;script&amp;gt;
        function alertColse() {
            document.getElementById('alert').style.display = 'none';
        }

        function alertOpen() {
            document.getElementById('alert').style.display = 'block';
        }
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;alert&lt;/code&gt;라는 곳에서 function을 2번 사용&lt;/li&gt;
&lt;li&gt;만약 parameter 문법을 사용한다면 function을 1번만 사용해도 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

    &amp;lt;div class=&quot;alert-box&quot; id=&quot;alert&quot;&amp;gt;알림창
        &amp;lt;button onclick=&quot;alert('none')&quot;&amp;gt;알림창 닫기&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button onclick=&quot;alert('block')&quot;&amp;gt;알림창 열기&amp;lt;/button&amp;gt;

    &amp;lt;script&amp;gt;
        function alert(parameter) {
            document.getElementById('alert').style.display = parameter;
        }
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;function 하나로 여러 기능 실행 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;parameter 문법 특징&lt;/h1&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;파라미터는 자유롭게 작명 가능&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-javascript&quot;&gt;function plus(a) {
 2 + a
}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;파라미터는 2개 이상 사용가능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;,(콤마)로 구분
&lt;pre class=&quot;delphi&quot;&gt;&lt;code&gt;function plus(a, b) {
a + b
}
plus(2, 2);&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;문제&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 코드를 버튼1을 누르면 &lt;code&gt;아이디를 입력하세요&lt;/code&gt;&lt;br /&gt;버튼2를 누르면 &lt;code&gt;비밀번호를 입력하세요&lt;/code&gt;로 나오게 바꾸기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 코드&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

    &amp;lt;div class=&quot;alert-box&quot; id=&quot;alert&quot;&amp;gt;
        &amp;lt;p&amp;gt;알림창임&amp;lt;/p&amp;gt;
        &amp;lt;button onclick=&quot;alert('none');&quot;&amp;gt;닫기&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button onclick=&quot;alert('block');&quot;&amp;gt;버튼1&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;alert('block');&quot;&amp;gt;버튼2&amp;lt;/button&amp;gt;

    &amp;lt;script&amp;gt;
        function alert(parameter) {
            document.getElementById('alert').style.display = parameter;
        }
    &amp;lt;/script&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변경된코드&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

    &amp;lt;div class=&quot;alert-box&quot; id=&quot;alert&quot;&amp;gt;
        &amp;lt;p id=&quot;title&quot;&amp;gt;알림창임&amp;lt;/p&amp;gt;
        &amp;lt;button onclick=&quot;alert('none');&quot;&amp;gt;닫기&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button onclick=&quot;alertId('아이디를 입력하세요', 'block');&quot;&amp;gt;버튼1&amp;lt;/button&amp;gt;
    &amp;lt;button onclick=&quot;alertId('비밀번호를 입력하세요', 'block');&quot;&amp;gt;버튼2&amp;lt;/button&amp;gt;

    &amp;lt;script&amp;gt;
        function alert(parameter) {
            document.getElementById('alert').style.display = parameter;
        }

        function alertId(parameter1, parameter2) {
            document.getElementById('title').innerHTML = parameter1;
            document.getElementById('alert').style.display = parameter2;
        }
    &amp;lt;/script&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>JavaScript/Level1</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/662</guid>
      <comments>https://build-enough.tistory.com/entry/4-function%EC%9D%98-parameter-%EB%AC%B8%EB%B2%95#entry662comment</comments>
      <pubDate>Wed, 6 Nov 2024 23:07:49 +0900</pubDate>
    </item>
    <item>
      <title>3. function 사용법</title>
      <link>https://build-enough.tistory.com/entry/3-function-%EC%82%AC%EC%9A%A9%EB%B2%95</link>
      <description>&lt;h1&gt;function 문법&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수는 길고 더러운 코드를 한 단어로 축약하고 싶을 때 사용하는 문법&lt;/li&gt;
&lt;li&gt;특정 기능을 다음에도 쓰기 위해 모듈화해놓는 문법&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;function 함수이름() {
    코드
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Alert 코드 function으로 축약&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존코드&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class=&quot;alert-box&quot; id=&quot;alert&quot;&amp;gt;알림창
        &amp;lt;button onclick=&quot;document.getElementById('alert').style.display = 'none';&quot;&amp;gt;닫기&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button onclick=&quot;document.getElementById('alert').style.display = 'block';&quot;&amp;gt;열기&amp;lt;/button&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;function 사용&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;

    &amp;lt;div class=&quot;alert-box&quot; id=&quot;alert&quot;&amp;gt;알림창
        &amp;lt;button onclick=&quot;alertColse()&quot;&amp;gt;알림창 닫기&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button onclick=&quot;alertOpen()&quot;&amp;gt;알림창 열기&amp;lt;/button&amp;gt;

    &amp;lt;script&amp;gt;
        function alertColse() {
            document.getElementById('alert').style.display = 'none';
        }

        function alertOpen() {
            document.getElementById('alert').style.display = 'block';
        }
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;자주 겪는 에러&lt;/h1&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;JavaScript 코드는 html 코드 밑에 생성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JavaScript는 html을 조작하는 언어&lt;/li&gt;
&lt;li&gt;컴퓨터가 html 파일을 읽을 때 위에서 부터 읽기 때문에 html을 미리 읽어야 JavaScript 조작 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;오타 주의
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예를 들어 &lt;code&gt;getElementById&lt;/code&gt;를 getelementById나 getElementByid와 같이 대문자를 소문자로 입력하는 오타 주의&lt;/li&gt;
&lt;li&gt;에러 발생 했을 시 &lt;code&gt;개발자 도구&lt;/code&gt;에서 &lt;code&gt;Console&lt;/code&gt;탭에서 확인하기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>JavaScript/Level1</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/661</guid>
      <comments>https://build-enough.tistory.com/entry/3-function-%EC%82%AC%EC%9A%A9%EB%B2%95#entry661comment</comments>
      <pubDate>Wed, 6 Nov 2024 22:12:44 +0900</pubDate>
    </item>
    <item>
      <title>2. UI 만드는 법칙, 동적 UI 만들기(Alert 박스)</title>
      <link>https://build-enough.tistory.com/entry/2-UI-%EB%A7%8C%EB%93%9C%EB%8A%94-%EB%B2%95%EC%B9%99-%EB%8F%99%EC%A0%81-UI-%EB%A7%8C%EB%93%A4%EA%B8%B0Alert-%EB%B0%95%EC%8A%A4</link>
      <description>&lt;h1&gt;UI 만드는 법칙&lt;/h1&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;HTML CSS로 미리 UI 디자인을 해놓고 필요하면 평소에 숨긴다&lt;/li&gt;
&lt;li&gt;버튼을 누르거나할 경우 UI를 보여달라고(필요할 때 보여달라고) 자바스크립트 코드 만들기&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;1. Alert UI 디자인&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;작업 폴더에 &lt;code&gt;main.css&lt;/code&gt; 만든 후&lt;/li&gt;
&lt;li&gt;&lt;code&gt;index.html&lt;/code&gt; 태그 안에
&lt;div&gt;&lt;code&gt;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;&lt;/code&gt;&lt;/div&gt;
입력 하면 css 사용 가능&lt;/li&gt;
&lt;li&gt;html 파일의태그 안
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;  &amp;lt;div class=&quot;alert-box&quot;&amp;gt;알림창&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;main.css 파일
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;  .alert-box {
      background-color: skyblue;
      padding: 20px;
      color: white;
      border-radius: 5px;
      display: none;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;display: none&lt;/code&gt;: UI 숨기기&lt;/li&gt;
&lt;li&gt;&lt;code&gt;display: block&lt;/code&gt;: UI 보여주기&lt;/li&gt;
&lt;li&gt;&lt;code&gt;visibility : hidden&lt;/code&gt;: UI 숨기기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; start=&quot;2&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;버튼 누르면 Alert UI 보여주기&lt;/li&gt;
&lt;/ol&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;거의 모든 html 태그 안에 &lt;code&gt;onclick&lt;/code&gt;이라는 속성 사용 가능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 html을 클릭시 &lt;code&gt;onclick&lt;/code&gt; 안의 자바스크립트를 실행해 줌
&lt;pre class=&quot;hsp&quot;&gt;&lt;code&gt;&amp;lt;button onclick=&quot;자바스크립트 코드&quot;&amp;gt;버튼&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;html 코드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1730730399755&quot; class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;main.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class=&quot;alert-box&quot; id=&quot;alert&quot;&amp;gt;알림창
        &amp;lt;button onclick=&quot;document.getElementById('alert').style.display = 'none';&quot;&amp;gt;닫기&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button onclick=&quot;document.getElementById('alert').style.display = 'block';&quot;&amp;gt;열기&amp;lt;/button&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>JavaScript/Level1</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/660</guid>
      <comments>https://build-enough.tistory.com/entry/2-UI-%EB%A7%8C%EB%93%9C%EB%8A%94-%EB%B2%95%EC%B9%99-%EB%8F%99%EC%A0%81-UI-%EB%A7%8C%EB%93%A4%EA%B8%B0Alert-%EB%B0%95%EC%8A%A4#entry660comment</comments>
      <pubDate>Mon, 4 Nov 2024 23:27:30 +0900</pubDate>
    </item>
    <item>
      <title>1. 자바스크립트 근본</title>
      <link>https://build-enough.tistory.com/entry/1-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B7%BC%EB%B3%B8</link>
      <description>&lt;h1&gt;개발환경 세팅&lt;/h1&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;editor 설치
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Visual Studio Code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;작업 폴더 생성&lt;/li&gt;
&lt;li&gt;&lt;code&gt;index.html&lt;/code&gt; 파일 생성&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-html&quot;&gt; &amp;lt;!DOCTYPE html&amp;gt;
 &amp;lt;head&amp;gt;
     &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
     &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;

 &amp;lt;/body&amp;gt;
 &amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;html&lt;/code&gt; 파일 미리보기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Visual Studio Code 왼쪽 Extensions 메뉴에서 &lt;code&gt;Live Server&lt;/code&gt; 설치 후 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;자바스크립트는 HTML 조작을 위해 사용&lt;/h1&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;html 파일 안에서 html 조작과 변경을 담당하는 언어
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자바스크립트 코드를 잘 짜면 html을 원하는대로 조작 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;조작하는 이유&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;tab, modal 등 웹페이지 UI 생성 가능&lt;/li&gt;
&lt;li&gt;유저가 입력한 데이터를 검사할 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;html 조작&lt;/h3&gt;
&lt;pre class=&quot;csharp&quot; data-ke-language=&quot;csharp&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;h1 id=&quot;hello&quot;&amp;gt;안녕하세여&amp;lt;/h1&amp;gt;

    &amp;lt;script&amp;gt;
        document.getElementById('hello').innerHTML = '안녕!';
        document.getElementById('hello').style.color = 'red';
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uaBnl/btsKws5gdf7/HRKp0Fd4l1nspYt6SuveAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uaBnl/btsKws5gdf7/HRKp0Fd4l1nspYt6SuveAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uaBnl/btsKws5gdf7/HRKp0Fd4l1nspYt6SuveAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuaBnl%2FbtsKws5gdf7%2FHRKp0Fd4l1nspYt6SuveAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;408&quot; height=&quot;159&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;159&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자바스크립트 코드는 &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt;태그 안에 작성&lt;/li&gt;
&lt;li&gt;&lt;code&gt;document&lt;/code&gt;: html 웹문서&lt;/li&gt;
&lt;li&gt;&lt;code&gt;마침표&lt;/code&gt;: ~의&lt;/li&gt;
&lt;li&gt;&lt;code&gt;getElementById(~)&lt;/code&gt;: 아이디가 ~인 html 요소 찾기&lt;/li&gt;
&lt;li&gt;&lt;code&gt;innerHTML&lt;/code&gt;: HTML 내부&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;정리&lt;/h1&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;document.getElementById('???').??? = '???';&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;???&lt;/code&gt; 부분만 변경하면 변경 및 조작 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;code&gt;.getElementById()&lt;/code&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;셀렉터&lt;/code&gt;라고 부름&lt;/li&gt;
&lt;li&gt;html 요소를 찾기 위해 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;code&gt;.innerHtml | .style | .color&lt;/code&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;.&lt;/code&gt;있는데 괄호 없는 것은 &lt;code&gt;메소드(함수)&lt;/code&gt;라고 부름&lt;/li&gt;
&lt;li&gt;html 요소의 어떤 속성을 변경할지 결정하기 위해 사용&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>JavaScript/Level1</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/659</guid>
      <comments>https://build-enough.tistory.com/entry/1-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B7%BC%EB%B3%B8#entry659comment</comments>
      <pubDate>Mon, 4 Nov 2024 21:45:26 +0900</pubDate>
    </item>
    <item>
      <title>01 CONCAT 함수(문자열과 문자열 연결)</title>
      <link>https://build-enough.tistory.com/entry/CONCAT-%ED%95%A8%EC%88%98%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%97%B0%EA%B2%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;연결 연산자 +로 문자열을 연결하는 방법&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730025455400&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT symbol + ' : ' + company_name FROM nasdaq_company;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/benrxK/btsKlmLn4Ap/GUySR1muTLhYAQfweO2FRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/benrxK/btsKlmLn4Ap/GUySR1muTLhYAQfweO2FRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/benrxK/btsKlmLn4Ap/GUySR1muTLhYAQfweO2FRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbenrxK%2FbtsKlmLn4Ap%2FGUySR1muTLhYAQfweO2FRk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1164&quot; height=&quot;450&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CONCAT 함수로 &lt;b&gt;문자열과 문자열 연결하는 방법&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;문자열과 문자열은 연결 연산자 +를 사용해 쉽게 연결할 수 있다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;함수의 인자로 연결할 문자열을 쉼표로 구분해 나열한다.&lt;/p&gt;
&lt;pre id=&quot;code_1730025620979&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONCAT ('I', 'Love', 'SQL')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;148&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXM5Od/btsKk7noKnZ/lE1sTOmTVTxHklROHddVKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXM5Od/btsKk7noKnZ/lE1sTOmTVTxHklROHddVKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXM5Od/btsKk7noKnZ/lE1sTOmTVTxHklROHddVKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXM5Od%2FbtsKk7noKnZ%2FlE1sTOmTVTxHklROHddVKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;148&quot; height=&quot;71&quot; data-origin-width=&quot;148&quot; data-origin-height=&quot;71&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CONCAT 함수로 열 이름과 문자열 연결&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1730025720026&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONCAT (symbol, ' : ' , company_name)
FROM nasdaq_company&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eiHC9B/btsKk9yLPgJ/TvgB32cnyP76jxH7k8OzQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eiHC9B/btsKk9yLPgJ/TvgB32cnyP76jxH7k8OzQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eiHC9B/btsKk9yLPgJ/TvgB32cnyP76jxH7k8OzQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeiHC9B%2FbtsKk9yLPgJ%2FTvgB32cnyP76jxH7k8OzQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;443&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;443&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/다양한 SQL 함수 사용(문자열 함수)</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/658</guid>
      <comments>https://build-enough.tistory.com/entry/CONCAT-%ED%95%A8%EC%88%98%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%97%B0%EA%B2%B0#entry658comment</comments>
      <pubDate>Sun, 27 Oct 2024 19:42:31 +0900</pubDate>
    </item>
    <item>
      <title>11 공통 테이블 식, CTE</title>
      <link>https://build-enough.tistory.com/entry/11-%EA%B3%B5%ED%86%B5-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%8B%9D-CTE</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;공통 테이블 식(Common Table Expression, CTE)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 데이터베이스에 없는 테이블을 필요할 때 사용하며, 바로 다음에 실행할 SELECT 문에만 사용해야 한다는 특징이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공통 테이블 식은 목적에 따라 '일반 공통 테이블 식'과 '재귀 공통 테이블 식'으로 나뉜다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;일반 CTE&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CTE 안에서 UNION 문, UNION ALL 문, INTERSECT 문, EXCEPT 문을 사용해 여러 개의 일반 CTE 쿼리를 결합할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 CTE는 복잡한 쿼리를 단순하게 만들 때 사용하기 좋다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CTE의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729167139790&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH [CTE_테이블 이름] (열 이름 1, 열 이름 2, ...)
AS
(
  &amp;lt;SELECT 문&amp;gt;
)
SELECT [열 이름] FROM [CTE_테이블 이름];&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CTE 사용 방법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WITH 문을 입력 한 후 CTE_테이블 이름과 같이 사용할 테이블의 이름을 지정하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(열 이름 1, 열 이름 2, ...)와 같이 열 목록을 정의한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열 목록에 입력할 열 이름들은 AS(...)에 포함한 &amp;lt;SELECT 문&amp;gt;이 반환하는 열을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CTE를 WITH cte_stock_price (date, symbol, price)로 정의하고&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SELECT 문에서 SELECT * FROM cte_stock_price WHERE symbol = 'MSFT'와 같이 CTE 테이블을 참조해 데이터를 검색하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729167640336&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH cte_stock_price (date, symbol, price)
AS
(
	SELECT date, symbol, [close] FROM stock
	WHERE date &amp;gt;= '2021-01-01' AND date &amp;lt;= '2021-01-10'
)
SELECT * FROM cte_stock_price WHERE symbol = 'MSFT'

-- 같은 값 나오는 쿼리
SELECT date, symbol, [close] AS price FROM stock
WHERE symbol = 'MSFT' and date &amp;gt;= '2021-01-01' AND date &amp;lt;= '2021-01-10'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qVTtI/btsKaKESS00/11yBx8LGslrq40AJ26qbZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qVTtI/btsKaKESS00/11yBx8LGslrq40AJ26qbZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qVTtI/btsKaKESS00/11yBx8LGslrq40AJ26qbZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqVTtI%2FbtsKaKESS00%2F11yBx8LGslrq40AJ26qbZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;362&quot; height=&quot;162&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CTE에서 정의한 열 개수와 CTE의 SELECT 문에서 얻은 열 목록이 다르면 오류가 발생한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오류 발생하는 쿼리: CTE 열 목록(date, symbol, price) 정의하고 SELECT 문에서는 date, symbol, [open], [close]를 사용해 열 개수가 맞지 않아 오류가 발생한 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729168030554&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH cte_stock_price (date, symbol, price)
AS
(
	SELECT date, symbol, [open], [close] FROM stock
	WHERE date &amp;gt;= '2021-01-01' AND date &amp;lt;= '2021-01-10'
)
SELECT * FROM cte_stock_price WHERE symbol = 'MSFT'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/df894Z/btsKapnFblD/a0vAlKxeee9hkoSxFECLk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/df894Z/btsKapnFblD/a0vAlKxeee9hkoSxFECLk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/df894Z/btsKapnFblD/a0vAlKxeee9hkoSxFECLk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdf894Z%2FbtsKapnFblD%2Fa0vAlKxeee9hkoSxFECLk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;869&quot; height=&quot;149&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;149&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UNION 문과 UNION ALL 문으로 CTE 결합하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UNION 문과 UNION ALL 문의 차이점: 중복을 제거한 행 포함 여부&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UNION ALL 문으로 CTE 결합&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729168480806&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH cte_stock_price (date, symbol, price)
AS
(
	SELECT date, symbol, [close] FROM stock
	WHERE date &amp;gt;= '2021-01-01' AND date &amp;lt;= '2021-01-10'
	UNION ALL
	SELECT date, symbol, [close] FROM stock
	WHERE date &amp;gt;= '2021-02-01' AND date &amp;lt;= '2021-02-07'
)
SELECT * FROM cte_stock_price WHERE symbol = 'MSFT'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;269&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tTys7/btsKaOmYY1j/bYpDJau4bbXZFxY1bEh890/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tTys7/btsKaOmYY1j/bYpDJau4bbXZFxY1bEh890/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tTys7/btsKaOmYY1j/bYpDJau4bbXZFxY1bEh890/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtTys7%2FbtsKaOmYY1j%2FbYpDJau4bbXZFxY1bEh890%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;373&quot; height=&quot;269&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;269&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UNION 과 UNION ALL 문&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중복 데이터를 제거하는 연산을 포함하는 UNION 문 대신 UNION ALL 문을 사용하는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UNION 문은 성능 문제를 일으키기 쉬우므로 꼭 필요한 경우가 아니라면 사용하지 않는 것이 좋다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INTERSECT 문으로 CTE 결합하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CTE에서 INTERSECT 문을 사용하는 방법은 내부 조인과 비슷하지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부 조인의 경우 테이블 사이의 조인 조건에 맞는 데이터를 반환하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INTERSECT 문은 각 쿼리에서 반환한 결과와 중복 결과를 걸래 내 반환한다는 차이점이 있다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;366&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdoKLm/btsKauCfYCr/9ZUL0d0SNW6kXPX8ZpY2bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdoKLm/btsKauCfYCr/9ZUL0d0SNW6kXPX8ZpY2bk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdoKLm/btsKauCfYCr/9ZUL0d0SNW6kXPX8ZpY2bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdoKLm%2FbtsKauCfYCr%2F9ZUL0d0SNW6kXPX8ZpY2bk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;366&quot; height=&quot;244&quot; data-origin-width=&quot;366&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INTERSECT 문을 사용해 CTE에 정의한 2개의 SELECT 문 결과에서 중복 결과를 검색하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729169504675&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH cte_stock_price (date, symbol, price)
AS 
(
	SELECT date, symbol, [close] FROM stock
	WHERE date &amp;gt;= '2021-01-01' AND date &amp;lt;= '2021-01-10'
	INTERSECT
	SELECT date, symbol, [close] FROM stock
	WHERE date &amp;gt;= '2021-01-07' AND date &amp;lt;= '2021-01-20'
)
SELECT * FROM cte_stock_price WHERE symbol = 'MSFT'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;356&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uKua8/btsKavBdku0/t1QpKTskKPgYBM5KibObZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uKua8/btsKavBdku0/t1QpKTskKPgYBM5KibObZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uKua8/btsKavBdku0/t1QpKTskKPgYBM5KibObZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuKua8%2FbtsKavBdku0%2Ft1QpKTskKPgYBM5KibObZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;356&quot; height=&quot;98&quot; data-origin-width=&quot;356&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1월 7일부터 1월 10일까지의 데이터가 중복하는 구간이 있으며 CTE는 중복된 결과를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 SELECT에서 CTE 결과 중에 symbol이 'MSFT'인 결과만 검색한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 테이블을 사용했지만&amp;nbsp; 서로 다른 테이블을 사용할 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 지역 A와 지역 B에서 주식 테이블을 따로 관리하는 상황이라면 INTERSECT 문과 CTE로 풀기 복합한 쿼리를 쉽게 해결할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INTERSECT 문과 CTE를 사용하면 각 SELECT 문에서 지역 데이터를 검색한 다음 결과에서 중복된 데이터만 검색할 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;EXCEPT 문으로 CTE 결합하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EXCEPT 문으로 CTE를 결합하는 방식은 NOT IN 문과 비슷하지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EXCEPT 문은 결괏값에서 중복을 제거한 유일한 행을 반환하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NOT IN 문은 중복을 제거하지 않고 반환하는 점이 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 CTE에서 먼저 작성한 쿼리 기준으로, 그 다음 작성한 SELECT 문 쿼리와 중복되지 않는 데이터를 반환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2번째 쿼리는 1번째 쿼리에서 CTE에 정의한 SELECT 문의 순서를 변경한 것&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729170474578&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;--2021-01-01부터 2021-01-06까지의 데이터 출력
WITH cte_stock_price (date, symbol, price)
AS
(
	SELECT date, symbol, [close] FROM stock
	WHERE date &amp;gt;= '2021-01-01' AND date &amp;lt;= '2021-01-10'
	EXCEPT
	SELECT date, symbol, [close] FROM stock
	WHERE date &amp;gt;= '2021-01-07' AND date &amp;lt;= '2021-01-20'
)
SELECT * FROM cte_stock_price WHERE symbol = 'MSFT';


-- CTE 내부의 SELECT 순서 변경
-- 2021-01-01부터 2021-01-06과 2021-01-11부터 2021-01-20까지의 데이터가 포함
WITH cte_stock_price (date, symbol, price)
AS
(
	SELECT date, symbol, [close] FROM stock
	WHERE date &amp;gt;= '2021-01-01' AND date &amp;lt;= '2021-01-20'
	EXCEPT
	SELECT date, symbol, [close] FROM stock
	WHERE date &amp;gt;= '2021-01-07' AND date &amp;lt;= '2021-01-10'
)
SELECT * FROM cte_stock_price WHERE symbol = 'MSFT';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;447&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u3EPW/btsKaPMXOUg/eGCEudcTiaoLbZ3JXZWTO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u3EPW/btsKaPMXOUg/eGCEudcTiaoLbZ3JXZWTO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u3EPW/btsKaPMXOUg/eGCEudcTiaoLbZ3JXZWTO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu3EPW%2FbtsKaPMXOUg%2FeGCEudcTiaoLbZ3JXZWTO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;447&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;447&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;재귀 CTE&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CTE 결과를 CTE 내부의 쿼리에서 재사용함으로써 반복 실행하는 쿼리 구조를 갖는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 계층 데이터를 검색할 때 많이 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;재귀 CTE의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729170849261&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH [CTE_테이블 이름] (열 이름 1, 열 이름 2, ...)
AS(
	&amp;lt;SELECT * FROM 테이블 A&amp;gt; -- (쿼리 1)앵커 멤버: 자기 자신 CTE를 참조하지 않는 멤버
    UNION ALL
    &amp;lt;SELECt * FROM 테이블 B JOIN CTE_테이블 이름&amp;gt; -- (쿼리 2)재귀 멤버
)
SELECT * FROM [CTE_테이블 이름];&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재귀 CTE는 적어도 2개의 CTE 쿼리가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 쿼리는 '앵커 멤버', '재귀 멤버'를 포함해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주의사항으로 앵커 멤버는 1번째 재귀 멤버 앞에 있어야 하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재귀 멤버의 열 자료형은 반드시 앵커 멤버의 열 자료형과 일치해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앵커 멤버과 재귀 멤버는 여러 개 정의할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;재귀 CTE의 실행순서&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 최조의 쿼리 1을 실행한다. 이때 쿼리 2의 기본값은 0으로 초기화한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이어 쿼리 2를 실행한다. 쿼리 2의 기본값은 1만큼 증가한다. 쿼리 1의 결과 행 수만큼 쿼리 2에서 CTE_테이블 이름을 재귀 호출하고, 쿼리 2의 기본값이 1씩 증가하면서 쿼리 1의 결과 수행까지 도달해 결과가 더 없다면 재귀 호출을 중단한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 외부 SELECT 문에서 과정 1, 2를 통해 만든 CTE 누적 결과를 검색한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;재귀 CTE 실습 테이블 생성과 데이터 입력&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729171721985&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;IF OBJECT_ID('doit_cte_recursive', 'U') IS NOT NULL
DROP TABLE dbo.doit_cte_recursive
GO -- GO문을 기준으로 각각 독립된 쿼리처럼 실행된다
CREATE TABLE dbo.doit_CTE_recursive
(
	EmployeeID int NOT NULL PRIMARY KEY,
	FirstName varchar(50) NOT NULL,
	LastName varchar(50) NOT NULL,
	ManagerID int NULL
)
GO
INSERT INTO doit_CTE_recursive VALUES (101, 'ken', 'Sanchez', NULL)
INSERT INTO doit_CTE_recursive VALUES (102, 'Terri', 'Duffy', 101)
INSERT INTO doit_CTE_recursive VALUES (103, 'Roberto', 'Tamburello', 101)
INSERT INTO doit_CTE_recursive VALUES (104, 'Rob', 'Walters', 102)
INSERT INTO doit_CTE_recursive VALUES (105, 'Gail', 'Erickson', 102)
INSERT INTO doit_CTE_recursive VALUES (106, 'Jossef', 'Goldberg', 103)

SELECT * FROM doit_CTE_recursive&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwSBh5/btsJ82fYrAV/DbBk2PoTHAkD6eqpkGobf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwSBh5/btsJ82fYrAV/DbBk2PoTHAkD6eqpkGobf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwSBh5/btsJ82fYrAV/DbBk2PoTHAkD6eqpkGobf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwSBh5%2FbtsJ82fYrAV%2FDbBk2PoTHAkD6eqpkGobf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;365&quot; height=&quot;186&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;생성한 doit_cte_recursive 테이블에서 EmployeeID, ManagerID 값을 확인해 EmpLevel을 구하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1729172873486&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WITH
	cte_recursive (EmpID, FirstName, LastName, MgrID, EmpLevel)
	AS
	(
	SELECT EmployeeID, FirstName, LastName, ManagerID, 1
	FROM doit_CTE_recursive WHERE ManagerID IS NULL

	UNION ALL

	SELECT e.EmployeeID, e.FirstName, e.LastName, e.ManagerID, r.EmpLevel + 1
	FROM doit_CTE_recursive AS e 
		INNER JOIN cte_recursive AS r ON e.ManagerID = r.EmpID
	)
SELECT
	FirstName + ' ' + LastName AS FullName, EmpLevel,
	(SELECT FirstName + ' ' + LastName From doit_CTE_recursive
	WHERE EmployeeID = cte_recursive.MgrID) AS Manager
FROM cte_recursive
ORDER BY EmpLevel, MgrID&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mDKmC/btsJ9nKS6QE/Kp5zNK2KM7NOr8uIZ0LLo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mDKmC/btsJ9nKS6QE/Kp5zNK2KM7NOr8uIZ0LLo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mDKmC/btsJ9nKS6QE/Kp5zNK2KM7NOr8uIZ0LLo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmDKmC%2FbtsJ9nKS6QE%2FKp5zNK2KM7NOr8uIZ0LLo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;369&quot; height=&quot;178&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번째 SELECT 문: SELECT EmployeeID, FirstName, LastName, ManagerID를 보면 최상위 직원을 검색해 EmpLevel 1로 지정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;2번째 SELECT 문:&lt;span&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;1번째 SELECT 문이 반환한 값을 doit_cte_recursive 테이블과 조인하면서 바로 앞 행의 EmpLevel에 1을 더하며 재귀 호출한다&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;이때 ManagerID와 EmpID가 같은 값을 조인 조건으로 사용해 매니저가 같으면 같은 EmpLevel을 지정한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;마지막 SELECT 문: cte_recursive 테이블을 검색한다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/657</guid>
      <comments>https://build-enough.tistory.com/entry/11-%EA%B3%B5%ED%86%B5-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%8B%9D-CTE#entry657comment</comments>
      <pubDate>Thu, 17 Oct 2024 22:51:08 +0900</pubDate>
    </item>
    <item>
      <title>10 SELECT 문에 서브 쿼리 사용하기</title>
      <link>https://build-enough.tistory.com/entry/10-SELECT-%EB%AC%B8%EC%97%90-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT 문에 사용하는 서브 쿼리는 반드시 1개의 행을 반환해야 하므로 SUM, COUNT, MIN, MAX 등의 집계 함수와 함께 사용하는 경우가 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 성능 문제가 생기기 쉬우므로 SELECT 문에서는 서브 쿼리의 집계 함수와 함께 사용하지 않는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스칼라 서브 쿼리(Scalar Subquery)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT 문에 사용된 서브 쿼리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스칼라 서브 쿼리는 1개 이상 사용할 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스칼라 서브 쿼리의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728910615369&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT [열 이름],
	(SELECT &amp;lt;집계 함수&amp;gt; [열 이름] FROM [테이블 2]
    WHERE [테이블 2.열] = [테이블 1.열]) as Alias
FROM [테이블 1]
WHERE [조건]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스칼라 서브 쿼리 사용&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728910823026&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 테이블 조인
SELECT
	a.symbol, a.company_name, a.ipo_year, a.sector, a.industry,
	b.date, b.[open], b.[high], b.[low], b.[close], b.adj_close, b.volume
FROM nasdaq_company AS a
	INNER JOIN stock AS b ON a.symbol = b.symbol
WHERE a.symbol = 'MSFT'
	AND b.date &amp;gt;= '2021-10-01'
	AND b.date &amp;gt;= '2021-11-01'

-- 서브쿼리
SELECT
	a.symbol,
	(SELECT company_name FROM nasdaq_company AS b WHERE b.symbol = a.symbol) AS company_name,
	(SELECT ipo_year FROM nasdaq_company AS b WHERE b.symbol = a.symbol) AS ipo_year,
	(SELECT sector FROM nasdaq_company AS b WHERE b.symbol = a.symbol) AS sector,
	(SELECT industry FROM nasdaq_company AS b WHERE b.symbol = a.symbol) AS industry,
	a.date, a.[open], a.[high], a.[low], a.[close], a.adj_close, a.volume
		FROM stock AS a
		WHERE symbol = 'MSFT'
			AND date &amp;gt;= '2021-10-01'
			AND date &amp;lt; '2021-11-01'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJTbvJ/btsJ6df3tun/qmBQZO0x0bTn3PivOo1tXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJTbvJ/btsJ6df3tun/qmBQZO0x0bTn3PivOo1tXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJTbvJ/btsJ6df3tun/qmBQZO0x0bTn3PivOo1tXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJTbvJ%2FbtsJ6df3tun%2FqmBQZO0x0bTn3PivOo1tXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1146&quot; height=&quot;438&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/656</guid>
      <comments>https://build-enough.tistory.com/entry/10-SELECT-%EB%AC%B8%EC%97%90-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0#entry656comment</comments>
      <pubDate>Mon, 14 Oct 2024 22:00:46 +0900</pubDate>
    </item>
    <item>
      <title>09 FROM 문에 서브 쿼리 사용</title>
      <link>https://build-enough.tistory.com/entry/09-FROM-%EB%AC%B8%EC%97%90-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC-%EC%82%AC%EC%9A%A9</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; 인라인뷰(Inline View) &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FROM 문에 사용하는 서브 쿼리 결과는 조인할 수 있으므로 쿼리를 논리적으로 격리할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;FROM 문에 사용하는 서브 쿼리의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728564833049&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT [열 이름]
FROM [테이블] AS a
INNER JOIN (SELECT [열] FROM [테이블] WHERE [열] = [값]) AS b ON [a.열] = [b.열]
WHERE [열] = [값];&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인라인뷰에 INNER JOIN을 활용한 서브 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728909800610&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 테이블 조인
SELECT
	a.symbol, a.company_name, a.ipo_year, a.sector, a.industry,
	b.date, b.[open], b.[high], b.[low], b.[close], b.adj_close, b.volume
FROM nasdaq_company AS a
	INNER JOIN stock AS b ON a.symbol = b.symbol
WHERE a.symbol = 'MSFT'
	AND b.date &amp;gt;= '2021-10-01'
	AND b.date &amp;gt;= '2021-11-01'

-- 서브쿼리
SELECT
	a.symbol, a.company_name, a.ipo_year, a.sector, a.industry,
	b.date, b.[open], b.[high], b.[low], b.[close], b.adj_close, b.volume
FROM nasdaq_company AS a
	INNER JOIN (SELECT symbol, date, [open], [high], [low], [close], adj_close, volume
		FROM stock
		WHERE symbol = 'MSFT'
			AND date &amp;gt;= '2021-10-01'
			AND date &amp;lt; '2021-11-01'
		) AS b ON a.symbol = b.symbol&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpzsOa/btsJ4M4Zs1Y/R1yWh0bCtiUwrev3yeskWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpzsOa/btsJ4M4Zs1Y/R1yWh0bCtiUwrev3yeskWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpzsOa/btsJ4M4Zs1Y/R1yWh0bCtiUwrev3yeskWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpzsOa%2FbtsJ4M4Zs1Y%2FR1yWh0bCtiUwrev3yeskWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1156&quot; height=&quot;440&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/655</guid>
      <comments>https://build-enough.tistory.com/entry/09-FROM-%EB%AC%B8%EC%97%90-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC-%EC%82%AC%EC%9A%A9#entry655comment</comments>
      <pubDate>Mon, 14 Oct 2024 21:43:42 +0900</pubDate>
    </item>
    <item>
      <title>08 다중 행 서브 쿼리</title>
      <link>https://build-enough.tistory.com/entry/08-%EB%8B%A4%EC%A4%91-%ED%96%89-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다중 행 서브 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 쿼리에서 반환되는 결과가 2행 이상인 경우&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IN 문&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WHERE 절에 있는 IN 문의 소괄호가 서브 쿼리를 안고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;WHERE 문에 사용하는 다중 행 서브 쿼리의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728462505023&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECt [열 이름]
FROM [테이블]
WHERE [열] IN (SELECT [열] FROM [테이블])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단일 행 서브 쿼리와 다중 행 서브 쿼리 비교&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728462683493&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE symbol IN ('MSFT', 'AMD', 'AMZN');

SELECT * FROM nasdaq_company
WHERE symbol IN (SELECT symbol FROM nasdaq_company WHERE symbol IN ('MSFT', 'AMD', 'AMZN'));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;329&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJogyb/btsJYFym8YD/98XwMCOuR8uHcHa9c2txQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJogyb/btsJYFym8YD/98XwMCOuR8uHcHa9c2txQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJogyb/btsJYFym8YD/98XwMCOuR8uHcHa9c2txQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJogyb%2FbtsJYFym8YD%2F98XwMCOuR8uHcHa9c2txQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1151&quot; height=&quot;329&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;329&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 쿼리에서 검색된 3개의 행이 메인 쿼리의 조건으로 사용된 것을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3개의 테이블을 사용해 조인하는 쿼리를 IN 문 서브 쿼리를 사용해 변경한 것(IN 사용)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WHERE 문에 사용한 서브 쿼리 안에서 2개의 테이블을 조인한 결과 행을 IN 문에 적용&lt;/p&gt;
&lt;pre id=&quot;code_1728463216303&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 3개 테이블 조인
SELECT
	a.industry,
	c.symbol,
	c.company_name,
	c.ipo_year,
	c.sector
FROM industry_group AS a
	INNER JOIN industry_group_symbol AS b ON a.num = b.num
	INNER JOIN nasdaq_company AS c ON b.symbol = c.symbol
WHERE a.industry = N'자동차'
ORDER BY symbol;

-- IN 문 서브 쿼리
SELECT
*
FROM nasdaq_company
WHERE symbol IN (
	SELECT symbol FROM industry_group AS a
		INNER JOIN industry_group_symbol AS b ON a.num = b.num
	WHERE a.industry = N'자동차');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC4pD8/btsJZpIdNvi/POPlnT225ShYCAgyHJxkCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC4pD8/btsJZpIdNvi/POPlnT225ShYCAgyHJxkCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC4pD8/btsJZpIdNvi/POPlnT225ShYCAgyHJxkCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC4pD8%2FbtsJZpIdNvi%2FPOPlnT225ShYCAgyHJxkCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;560&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WHERE 문에 사용한 IN 문에 NOT 연산자를 추가해 다른 테이블의 값과 일치하지 않는 행을 찾을 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;NOT IN 문으로 industry 그룹이 '자동차'가 아닌 행을 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728463497284&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- NOT IN 문 서브 쿼리
SELECT
*
FROM nasdaq_company
WHERE symbol NOT IN (
	SELECT symbol FROM industry_group AS a
		INNER JOIN industry_group_symbol AS b ON a.num = b.num
	WHERE a.industry = N'자동차');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdgpW5/btsJZUufXuX/6KcXvOqsXv9zrMYxPWSnlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdgpW5/btsJZUufXuX/6KcXvOqsXv9zrMYxPWSnlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdgpW5/btsJZUufXuX/6KcXvOqsXv9zrMYxPWSnlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdgpW5%2FbtsJZUufXuX%2F6KcXvOqsXv9zrMYxPWSnlk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;287&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ANY 문&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 쿼리 결과에서 값이 하나라도 만족하는 조건을 검색한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교 연산자가 잘못 쓰인 듯 보일 수도 있지만, ANY 문을 함께 사용했으므로 서브 쿼리의 결괏값이 여러 개여도 일치하는 모든 행을 주 쿼리에서 검색해 반환할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;= ANY의 형태로 서브 쿼리 결괏값과 비교해 값은 값을 반환&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728561505171&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE symbol = ANY (
	SELECT symbol FROM nasdaq_company
	WHERE symbol IN ('MSFT', 'AMD', 'AMZN')
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0a1c1/btsJ2uVW5IX/0qhlvIqNkM8KkM328lUoVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0a1c1/btsJ2uVW5IX/0qhlvIqNkM8KkM328lUoVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0a1c1/btsJ2uVW5IX/0qhlvIqNkM8KkM328lUoVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0a1c1%2FbtsJ2uVW5IX%2F0qhlvIqNkM8KkM328lUoVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1146&quot; height=&quot;256&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt; ANY 형태로 서브 쿼리 결과와 비교해 최솟값을 반환&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728561605042&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE symbol &amp;lt; ANY (
	SELECT symbol FROM nasdaq_company
	WHERE symbol IN ('MSFT', 'LTCH', 'ZY')
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;411&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWy3U5/btsJZTjfWny/hXXd1oeevPZkDk1YdFR3u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWy3U5/btsJZTjfWny/hXXd1oeevPZkDk1YdFR3u1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWy3U5/btsJZTjfWny/hXXd1oeevPZkDk1YdFR3u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWy3U5%2FbtsJZTjfWny%2FhXXd1oeevPZkDk1YdFR3u1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1146&quot; height=&quot;411&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;411&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;gt; ANY 형태로 서브 쿼리 결과와 비교해 최댓값을 반환&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728561966128&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE symbol &amp;gt; ANY (
	SELECT symbol FROM nasdaq_company
	WHERE symbol IN ('MSFT', 'LTCH', 'ZY')
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7aVu0/btsJ0rtabKE/vxbmMDWdhTNzvUIs6pbWg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7aVu0/btsJ0rtabKE/vxbmMDWdhTNzvUIs6pbWg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7aVu0/btsJ0rtabKE/vxbmMDWdhTNzvUIs6pbWg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7aVu0%2FbtsJ0rtabKE%2FvxbmMDWdhTNzvUIs6pbWg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1145&quot; height=&quot;402&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;EXIST 문&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건의 결과값이 있는지 없는지를 확인해 1행이라도 있으면 TRUE, 없으면 FALSE를 반환한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;WHERE 문에 EXISTS 문을 사용해 서브 쿼리의 결괏값이 1행이라도 있으면 TRUE가 되어 메인 쿼리를 실행하고, 메인 쿼리가 작성된 전체 데이터를 검색하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728563190423&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE EXISTS (
	SELECT symbol FROM nasdaq_company
	WHERE symbol IN ('MSFT', 'AMD', 'AMZN')
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;409&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcBv9F/btsJZTjgQ3H/IV2H7Duke5GDkVFhK94k3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcBv9F/btsJZTjgQ3H/IV2H7Duke5GDkVFhK94k3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcBv9F/btsJZTjgQ3H/IV2H7Duke5GDkVFhK94k3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcBv9F%2FbtsJZTjgQ3H%2FIV2H7Duke5GDkVFhK94k3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;409&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;409&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서브 쿼리의 결괏값이 0건 반환되면 FALSE이므로 메인 쿼리가 실행되지 않고 아무것도 나타나지 않을 것&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728563882710&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE EXISTS (
	SELECT symbol FROM nasdaq_company
	WHERE symbol IN ('123', '456', '789')
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuCfzH/btsJ06a1zVF/2AszVkThGH1McS9JsWwHB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuCfzH/btsJ06a1zVF/2AszVkThGH1McS9JsWwHB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuCfzH/btsJ06a1zVF/2AszVkThGH1McS9JsWwHB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuCfzH%2FbtsJ06a1zVF%2F2AszVkThGH1McS9JsWwHB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1151&quot; height=&quot;412&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;NOT EXISTS&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EXISTS와 반대로 작동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다중 행 서브 쿼리: NOT EXISTS 문의 결괏값이 TRUE 일 때&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728563994850&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE NOT EXISTS (
	SELECT symbol FROM nasdaq_company
	WHERE symbol IN ('123', '456', '789')
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eJgRyc/btsJ2u9vAPK/EW6eJJlWfU6KPQy1yejX9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eJgRyc/btsJ2u9vAPK/EW6eJJlWfU6KPQy1yejX9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eJgRyc/btsJ2u9vAPK/EW6eJJlWfU6KPQy1yejX9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeJgRyc%2FbtsJ2u9vAPK%2FEW6eJJlWfU6KPQy1yejX9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1151&quot; height=&quot;405&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ALL 문&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 쿼리 결괏값에 있는 모든 값을 만족하는 조건을 주 쿼리에서 검색해 결과를 반환.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다중 행 서브 쿼리: ALL 문 사용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 쿼리의 결괏값 모두를 만족하는 결과가 주 쿼리의 결괏값에 없으므로 아무것도 나오지 않는다.&lt;/p&gt;
&lt;pre id=&quot;code_1728564391879&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE symbol = ALL (
	SELECT symbol FROM nasdaq_company
	WHERE symbol IN ('MSFT', 'AMD', 'AMZN')
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biTtHi/btsJ0ScNJme/o3vrYgdOVHHiUmfII6m7mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biTtHi/btsJ0ScNJme/o3vrYgdOVHHiUmfII6m7mk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biTtHi/btsJ0ScNJme/o3vrYgdOVHHiUmfII6m7mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiTtHi%2FbtsJ0ScNJme%2Fo3vrYgdOVHHiUmfII6m7mk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1150&quot; height=&quot;150&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다중 행 서브 쿼리: ALL 문 사용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브쿼리에 만족하는 결과 출력됨&lt;/p&gt;
&lt;pre id=&quot;code_1728564466443&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE symbol = ALL (
	SELECT symbol FROM nasdaq_company
	WHERE symbol IN ('MSFT')
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyquyH/btsJ2oVQAhh/ook9kSJnq3QotUtv4nvpc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyquyH/btsJ2oVQAhh/ook9kSJnq3QotUtv4nvpc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyquyH/btsJ2oVQAhh/ook9kSJnq3QotUtv4nvpc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyquyH%2FbtsJ2oVQAhh%2Fook9kSJnq3QotUtv4nvpc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1147&quot; height=&quot;143&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;143&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/654</guid>
      <comments>https://build-enough.tistory.com/entry/08-%EB%8B%A4%EC%A4%91-%ED%96%89-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC#entry654comment</comments>
      <pubDate>Thu, 10 Oct 2024 21:48:05 +0900</pubDate>
    </item>
    <item>
      <title>07 단일 행 서브 쿼리</title>
      <link>https://build-enough.tistory.com/entry/07-%EB%8B%A8%EC%9D%BC-%ED%96%89-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단일 행 서브 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 쿼리의 결과가 1행만 반환되는 쿼리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;WHERE 문에 사용하는 단일 행 서브 쿼리의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728461877460&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT [열 이름]
FROM [테이블]
WHERE [열] = (SELECT [열] FROM [테이블])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;WHERE 문에 사용한 서브 쿼리가 한 행을 반환해 최종으로 1건의 데이터만 검색하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728461989398&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE symbol = (SELECT symbol FROM nasdaq_company WHERE symbol IN ('MSFT'));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;209&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VkTDf/btsJYE7flXj/PlkaqVikkOvJ04I0hRM9B0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VkTDf/btsJYE7flXj/PlkaqVikkOvJ04I0hRM9B0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VkTDf/btsJYE7flXj/PlkaqVikkOvJ04I0hRM9B0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVkTDf%2FbtsJYE7flXj%2FPlkaqVikkOvJ04I0hRM9B0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1147&quot; height=&quot;209&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;209&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 WHERE 문에 사용한 서브 쿼리가 다중 행을 반환하면 비교 연산자 규칙에 어긋나므로 오류가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;단일 행 서브 쿼리: 비교 연산자 규칙에 어긋나 오류 발생&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728462092293&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM nasdaq_company
WHERE symbol = (SELECT symbol FROM nasdaq_company WHERE symbol IN ('MSFT', 'AMD', 'AMZN'));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsKubI/btsJZNhP0Oq/89SXsU4R6gfsnlWSuCVqHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsKubI/btsJZNhP0Oq/89SXsU4R6gfsnlWSuCVqHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsKubI/btsJZNhP0Oq/89SXsU4R6gfsnlWSuCVqHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsKubI%2FbtsJZNhP0Oq%2F89SXsU4R6gfsnlWSuCVqHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;207&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;207&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/653</guid>
      <comments>https://build-enough.tistory.com/entry/07-%EB%8B%A8%EC%9D%BC-%ED%96%89-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC#entry653comment</comments>
      <pubDate>Wed, 9 Oct 2024 17:24:01 +0900</pubDate>
    </item>
    <item>
      <title>06 서브 쿼리</title>
      <link>https://build-enough.tistory.com/entry/06-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서브 쿼리(SubQuery)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿼리 안에 포함되는 또 다른 쿼리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 쿼리는 조인하지 않은 상태에서 다른 테이블과 일치하는 행을 찾거나, 조인 결과를 다시 조인할 때 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서브 쿼리의 특징&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반드시 소괄호로 감싸 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주 쿼리를 실행하기 전에 1번만 실행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비교 연산자에 서브 쿼리를 사용하는 경우 서브 쿼리를 오른쪽에 기술해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부에는 정렬 구문인 ORDER BY 문을 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;WHERE 문에 서브쿼리 사용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 쿼리 중에서도 WHERE 문에 사용하는 서브 쿼리를 중첩 서브 쿼리(nested subquery)라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중첩 서브 쿼리는 조건문의 일부로 사용한다 = 또 다른 SELECT 문을 사용한 결과를 주 쿼리의 조건값으로 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서브 쿼리를 비교 연산자 =, &amp;lt;, &amp;lt;=, &amp;gt;, &amp;gt;=, &amp;lt;&amp;gt;와 함께 사용할 때는 반드시 서브 쿼리의 반환 결과가 1건 이하여야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 서브 쿼리의 반환 결과가 2건 이상인 경우에는 비교 연산자가 아닌 다중 행 연산자를 사용해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다중 행 연산자 종류&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b86ilA/btsJYI9y9Oo/vpGpeinfj1QVFKvl6aDeCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b86ilA/btsJYI9y9Oo/vpGpeinfj1QVFKvl6aDeCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b86ilA/btsJYI9y9Oo/vpGpeinfj1QVFKvl6aDeCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb86ilA%2FbtsJYI9y9Oo%2FvpGpeinfj1QVFKvl6aDeCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;671&quot; height=&quot;192&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/652</guid>
      <comments>https://build-enough.tistory.com/entry/06-%EC%84%9C%EB%B8%8C-%EC%BF%BC%EB%A6%AC#entry652comment</comments>
      <pubDate>Wed, 9 Oct 2024 17:16:44 +0900</pubDate>
    </item>
    <item>
      <title>05 셀프 조인</title>
      <link>https://build-enough.tistory.com/entry/05-%EC%85%80%ED%94%84-%EC%A1%B0%EC%9D%B8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;셀프 조인(SELF JOIN)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 테이블을 사용하는 특수한 조인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;셀프 조인 주의사항!!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반드시 별칭을 사용해야 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별칭을 사용하지 않으면 오류가 발생한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;별칭을 사용해 SELF JOIN 한 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의미 없이 셀프 조인의 실행 결과를 보려고 작성한 쿼리&lt;/p&gt;
&lt;pre id=&quot;code_1728458575910&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.symbol, b.company_name
FROM nasdaq_company AS a
	INNER JOIN nasdaq_company AS b
ON a.symbol = b.symbol;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1139&quot; data-origin-height=&quot;355&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mbexn/btsJYGcRka3/BJ0wZbJRgg5uFF143tfDz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mbexn/btsJYGcRka3/BJ0wZbJRgg5uFF143tfDz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mbexn/btsJYGcRka3/BJ0wZbJRgg5uFF143tfDz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmbexn%2FbtsJYGcRka3%2FBJ0wZbJRgg5uFF143tfDz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1139&quot; height=&quot;355&quot; data-origin-width=&quot;1139&quot; data-origin-height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;stock 테이블에서 symbol이 'MSFT'인 주식의 일별 가격이 전일 대비 얼마나 올랐는지 확인하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728458869033&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.[date] AS a_date,
	a.[close] AS a_close,
	b.[date] AS b_date,
	b.[close] AS b_close,
	b.[close] - a.[close] AS diff_close
FROM stock AS a
	LEFT OUTER JOIN stock AS b ON a.date = dateadd(day, -1, b.date)
WHERE a.symbol = 'MSFT' AND b.symbol = 'MSFT'
	AND a.date &amp;gt;= '2021-10-01' AND a.date &amp;lt; '2021-11-01'
	AND b.date &amp;gt;= '2021-10-01' AND b.date &amp;lt; '2021-11-01'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cW9LIK/btsJZ8sqfeO/ArphYO0hfNcoW3ukpsV4n0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cW9LIK/btsJZ8sqfeO/ArphYO0hfNcoW3ukpsV4n0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cW9LIK/btsJZ8sqfeO/ArphYO0hfNcoW3ukpsV4n0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcW9LIK%2FbtsJZ8sqfeO%2FArphYO0hfNcoW3ukpsV4n0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;357&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stock 테이블을 2번 사용하는 것이므로 별칭을 사용해 테이블을 구분했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ON 문을 보면 a.date = dateadd(day, -1, b.date)으로 왼쪽 테이블의 날짜와 오른쪽 테이블의 하루 뒤의 날짜를 나열했고, a주가와 b주가의 차이를 계산했다.&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/651</guid>
      <comments>https://build-enough.tistory.com/entry/05-%EC%85%80%ED%94%84-%EC%A1%B0%EC%9D%B8#entry651comment</comments>
      <pubDate>Wed, 9 Oct 2024 16:31:12 +0900</pubDate>
    </item>
    <item>
      <title>04 교차 조인</title>
      <link>https://build-enough.tistory.com/entry/04-%EA%B5%90%EC%B0%A8-%EC%A1%B0%EC%9D%B8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;교차 조인(CROSS JOIN)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자주 사용하는건 아니지만, 각 테이블의 모든 경우의 수를 조합한 데이터가 필요할 경우 교차 조인을 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카르테시안 곱(cartesian product)라고도 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;교차 조인의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728440154438&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT [열 이름]
FROM [테이블 1]
	CROSS JOIN [테이블 2]
WHERE [검색 조건]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FROM 문에 조인 조건이 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 테이블에 저장된 모든 행이 다른 테이블의 행을 조인하므로 조인 조건이 필요 없다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFAzYN/btsJY6a34V6/cgAYknc5hMtJ3RNa0IPxQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFAzYN/btsJY6a34V6/cgAYknc5hMtJ3RNa0IPxQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFAzYN/btsJY6a34V6/cgAYknc5hMtJ3RNa0IPxQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFAzYN%2FbtsJY6a34V6%2FcgAYknc5hMtJ3RNa0IPxQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;423&quot; height=&quot;197&quot; data-origin-width=&quot;423&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;두 테이블의 교차 조인하는 과정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJc47z/btsJ0u9Co9Q/qdXKgC3hIAT9Xy4uBgoYjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJc47z/btsJ0u9Co9Q/qdXKgC3hIAT9Xy4uBgoYjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJc47z/btsJ0u9Co9Q/qdXKgC3hIAT9Xy4uBgoYjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJc47z%2FbtsJ0u9Co9Q%2FqdXKgC3hIAT9Xy4uBgoYjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;677&quot; height=&quot;685&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 A와 테이블 B의 데이터를 서로 조합해 총 9건의 결과가 출력되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CROSS JOIN은 사용할 일이 많지는 않지만, 샘플 데이터를 만들거나 각 행에 같은 숫자의 데이터를 만들어야 할 때 활용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CROSS JOIN을 위한 샘플 데이터 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728458090098&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE doit_cross1(num INT);
CREATE TABLE doit_cross2(name NVARCHAR(10));
INSERT INTO doit_cross1 VALUES (1), (2), (3);
INSERT INTO doit_cross2 VALUES ('Do'), ('It'), ('SQL');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CROSS JOIN 쿼리 실행&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728458168813&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.num, b.name
FROM doit_cross1 AS a
	CROSS JOIN doit_cross2 AS b&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1153&quot; data-origin-height=&quot;443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1SQ6Y/btsJZoidaKC/0WlNUoPtwknY2an7SkkWyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1SQ6Y/btsJZoidaKC/0WlNUoPtwknY2an7SkkWyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1SQ6Y/btsJZoidaKC/0WlNUoPtwknY2an7SkkWyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1SQ6Y%2FbtsJZoidaKC%2F0WlNUoPtwknY2an7SkkWyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1153&quot; height=&quot;443&quot; data-origin-width=&quot;1153&quot; data-origin-height=&quot;443&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CROSS JOIN에 WHERE 문 사용&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728458213455&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.num, b.name
FROM doit_cross1 AS a
	CROSS JOIN doit_cross2 AS b
WHERE a.num = 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yOLw1/btsJ0eMIr4C/5MeiVuoVn09PKgHaEisunk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yOLw1/btsJ0eMIr4C/5MeiVuoVn09PKgHaEisunk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yOLw1/btsJ0eMIr4C/5MeiVuoVn09PKgHaEisunk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyOLw1%2FbtsJ0eMIr4C%2F5MeiVuoVn09PKgHaEisunk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1147&quot; height=&quot;164&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;164&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 실습을 위한 테이블 삭제&lt;/p&gt;
&lt;pre id=&quot;code_1728458278746&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DROP TABLE doit_cross1;
DROP TABLE doit_cross2;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/650</guid>
      <comments>https://build-enough.tistory.com/entry/04-%EA%B5%90%EC%B0%A8-%EC%A1%B0%EC%9D%B8#entry650comment</comments>
      <pubDate>Wed, 9 Oct 2024 16:18:12 +0900</pubDate>
    </item>
    <item>
      <title>03 외부 조인</title>
      <link>https://build-enough.tistory.com/entry/03-%EC%99%B8%EB%B6%80-%EC%A1%B0%EC%9D%B8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;INNER JOIN은 두 테이블은 조인해 조인 조건으로 사용한 열에 있는 같은 값을 조합해 검색했다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 다른 테이블에 있는 행에서 일치 항목이 아닌 행을 조합해 검색해야 할 때도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 경우 외부 조인(OUTER JOIN)을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외부 조인은 열의 일치 항목을 고려하지 않고, 한쪽 테이블을 다른 쪽 테이블에 조합할 때 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;외부 조인의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728437639233&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT [열 이름]
FROM [테이블 1]
&amp;lt;LEFT, RIGHT, FULL&amp;gt; OUTER JOIN [테이블 2] ON [테이블 1.열] = [테이블 2.열]
WHERE [검색 조건]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LEFT OUTER JOIN&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A, B 테이블이 좌우에 있다고 생각했을 때 A 테이블을 기준으로 B 테이블을 조인하고 싶다면 LEFT를 사용하고, B 테이블을 기준으로 A 테이블을 조인하고 싶다면 RIGHT를 사용한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;236&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BxrvA/btsJY2mlY40/4o6LkgFMiQFZsxrNKM40rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BxrvA/btsJY2mlY40/4o6LkgFMiQFZsxrNKM40rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BxrvA/btsJY2mlY40/4o6LkgFMiQFZsxrNKM40rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBxrvA%2FbtsJY2mlY40%2F4o6LkgFMiQFZsxrNKM40rk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;236&quot; height=&quot;156&quot; data-origin-width=&quot;236&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실제 OUTER JOIN 실습 테이블&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;610&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ns8JR/btsJYCan0Dz/GWd070X3O4KmzVk1Ahwc40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ns8JR/btsJYCan0Dz/GWd070X3O4KmzVk1Ahwc40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ns8JR/btsJYCan0Dz/GWd070X3O4KmzVk1Ahwc40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNs8JR%2FbtsJYCan0Dz%2FGWd070X3O4KmzVk1Ahwc40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;610&quot; height=&quot;430&quot; data-origin-width=&quot;610&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽: 고객 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽: 주문 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LEFT OUTER JOIN에서 고객 테이블은 우선 결과에 포함한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 다음 고객 테이블의 [고객 번호]와 주문 테이블의 [고객 번호]를 비교해 고객 테이블에 있는 [고객 번호]만 주문 테이블에서 골라 결과에 포함시키고, 없는 것은 NULL 처리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과를 보면 고객 테이블의 데이터는 모두 표시가 된 상태이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[고객 번호]가 1, 3인 행은 표시되었고 2인 행은 주문 테이블에 없으므로 NULL 표시했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이처럼 LEFT OUTER JOIN은 왼쪽 테이블 기준으로 모든 행을 표시하고, 오른쪽 테이블에 존재하지 않는 데이터는 NULL로 표시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;nasdaq_company 테이블과 industry_group_symbol 테이블을 LEFT OUTER JOIN한 것&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728438237156&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.symbol AS a_symbol,
	b.symbol AS b_symbol
FROM nasdaq_company AS a
	LEFT OUTER JOIN industry_group_symbol AS b ON a.symbol = b.symbol;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;437&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqNb0v/btsJX8AC21d/InKnG0dJQlulaqFKDYxm4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqNb0v/btsJX8AC21d/InKnG0dJQlulaqFKDYxm4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqNb0v/btsJX8AC21d/InKnG0dJQlulaqFKDYxm4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqNb0v%2FbtsJX8AC21d%2FInKnG0dJQlulaqFKDYxm4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1143&quot; height=&quot;437&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;437&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 nasdaq_company 테이블이 기준이 된다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LEFT OUTER JOIN에서 기준 테이블의 데이터만 추출&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 기준 테이블에 있는 데이터만 추출하려면 LEFT OUTER JOIN 결과에서 NULL 결과 데이터만 추출하면 된다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;236&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/epjfQT/btsJZLxsz3R/zckkPnAecszLVTFhExrH5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/epjfQT/btsJZLxsz3R/zckkPnAecszLVTFhExrH5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/epjfQT/btsJZLxsz3R/zckkPnAecszLVTFhExrH5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FepjfQT%2FbtsJZLxsz3R%2FzckkPnAecszLVTFhExrH5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;236&quot; height=&quot;156&quot; data-origin-width=&quot;236&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;nasdaq_company 테이블과 industry_group_symbol 테이블을 LEFT OUTER JOIN한 다음 nasdaq_company 테이블에 있는 데이터만 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728438514622&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.symbol AS a_symbol,
	b.symbol AS b_symbol
FROM nasdaq_company AS a
	LEFT OUTER JOIN industry_group_symbol AS b ON a.symbol = b.symbol
WHERE b.symbol IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIEDyr/btsJZNa0SRi/Mk5699zuj2KSq0OLB6U0Wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIEDyr/btsJZNa0SRi/Mk5699zuj2KSq0OLB6U0Wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIEDyr/btsJZNa0SRi/Mk5699zuj2KSq0OLB6U0Wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIEDyr%2FbtsJZNa0SRi%2FMk5699zuj2KSq0OLB6U0Wk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;443&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;443&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RIGHT OUTER JOIN&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LEFT OUTER JOIN과 원리는 같고 방향만 다르다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS1heM/btsJZ6nJwkS/XiuKdz1NvKKdGSAGRUzS7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS1heM/btsJZ6nJwkS/XiuKdz1NvKKdGSAGRUzS7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS1heM/btsJZ6nJwkS/XiuKdz1NvKKdGSAGRUzS7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS1heM%2FbtsJZ6nJwkS%2FXiuKdz1NvKKdGSAGRUzS7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;232&quot; height=&quot;160&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고객 테이블과 주문 테이블의 RIGHT OUTER JOIN&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/05kOX/btsJZTou7Ap/8vfJUHZqKddgaLXQxcqqu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/05kOX/btsJZTou7Ap/8vfJUHZqKddgaLXQxcqqu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/05kOX/btsJZTou7Ap/8vfJUHZqKddgaLXQxcqqu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F05kOX%2FbtsJZTou7Ap%2F8vfJUHZqKddgaLXQxcqqu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;608&quot; height=&quot;435&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽: 고객 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽: 주문 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주문 테이블에서 고객 번호가 일치한 주문 테이블의 데이터만 표시되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주문 테이블에는 있지만 고객 테이블에 없는 데이터는 NULL로 표시되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;nasdaq_company 테이블과 industry_group_symbol 테이블을 RIGHT OUTER JOIN한 것&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728439052269&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.symbol AS a_symbol,
	b.symbol AS b_symbol
FROM industry_group_symbol AS a
	 RIGHT OUTER JOIN nasdaq_company AS b ON a.symbol = b.symbol&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sLS5A/btsJ0DyFYOe/oFEUVIQp4a6zVNKZ2A8Kf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sLS5A/btsJ0DyFYOe/oFEUVIQp4a6zVNKZ2A8Kf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sLS5A/btsJ0DyFYOe/oFEUVIQp4a6zVNKZ2A8Kf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsLS5A%2FbtsJ0DyFYOe%2FoFEUVIQp4a6zVNKZ2A8Kf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1151&quot; height=&quot;441&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;RIGHT OUTER JOIN에서 기준 테이블의 데이터만 추출&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;233&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qYiXq/btsJ0rdXPgc/3GKkQ6dqiU05cgrpkYnEB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qYiXq/btsJ0rdXPgc/3GKkQ6dqiU05cgrpkYnEB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qYiXq/btsJ0rdXPgc/3GKkQ6dqiU05cgrpkYnEB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqYiXq%2FbtsJ0rdXPgc%2F3GKkQ6dqiU05cgrpkYnEB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;233&quot; height=&quot;158&quot; data-origin-width=&quot;233&quot; data-origin-height=&quot;158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;nasdaq_company 테이블과 industry_group_symbol 테이블을 RIGHT OUTER JOIN한 다음 nasdaq_company 테이블에 있는 데이터만 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728439148635&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.symbol AS a_symbol,
	b.symbol AS b_symbol
FROM industry_group_symbol AS a
	 RIGHT OUTER JOIN nasdaq_company AS b ON a.symbol = b.symbol
WHERE a.symbol IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GNdIb/btsJZWlcTiY/oYKVPSXrJ5DovkwoH87prk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GNdIb/btsJZWlcTiY/oYKVPSXrJ5DovkwoH87prk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GNdIb/btsJZWlcTiY/oYKVPSXrJ5DovkwoH87prk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGNdIb%2FbtsJZWlcTiY%2FoYKVPSXrJ5DovkwoH87prk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1145&quot; height=&quot;440&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;FULL OUTER JOIN&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FULL OUTER JOIN은 LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합친 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FULL OUTER JOIN의 경우 양쪽 테이블의 일치하지 않는 행도 모두 검색.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 조인 조건에 일치하지 않는 항목과 일치하는 항목 모두가 표시된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SAtDv/btsJZP0PXsZ/cDh7u7uVSrVzxfnkIKqQjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SAtDv/btsJZP0PXsZ/cDh7u7uVSrVzxfnkIKqQjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SAtDv/btsJZP0PXsZ/cDh7u7uVSrVzxfnkIKqQjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSAtDv%2FbtsJZP0PXsZ%2FcDh7u7uVSrVzxfnkIKqQjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;232&quot; height=&quot;156&quot; data-origin-width=&quot;232&quot; data-origin-height=&quot;156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;FULL OUTER JOIN 사용시기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FULL OUTER JOIN을 실제로 사용하는 일은 드물다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가끔 데이터베이스 디자인이나 데이터에 몇 가지 문제가 있을 때, 또는 데이터의 누락이나 오류를 찾아낼 때 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 고객 번호로 주문 내역이 기록된 것이 없는지 확인하고 싶다면 FULL OUTER JOIN이 적절하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고객 번호를 조인 조건으로 FULL OUTER JOIN하는 과정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객 테이블과 주문 테이블을 표시하고 각 테이블에서 존재하지 않는 데이터는 NULL로 표시한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;468&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxUkH1/btsJZRxyRcE/CHYGkMOIVakDuS7lB9MEVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxUkH1/btsJZRxyRcE/CHYGkMOIVakDuS7lB9MEVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxUkH1/btsJZRxyRcE/CHYGkMOIVakDuS7lB9MEVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxUkH1%2FbtsJZRxyRcE%2FCHYGkMOIVakDuS7lB9MEVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;612&quot; height=&quot;468&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2개의 테이블을 FULL OUTER JOIN(기준: nasdaq_company)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728439765244&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.symbol AS a_symbol,
	b.symbol AS b_symbol
FROM industry_group_symbol AS a
	 FULL OUTER JOIN nasdaq_company AS b ON a.symbol = b.symbol;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVyneg/btsJX6W8Dg0/TCcAOe4Fe4s7U0qS5doH0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVyneg/btsJX6W8Dg0/TCcAOe4Fe4s7U0qS5doH0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVyneg/btsJX6W8Dg0/TCcAOe4Fe4s7U0qS5doH0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVyneg%2FbtsJX6W8Dg0%2FTCcAOe4Fe4s7U0qS5doH0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1144&quot; height=&quot;440&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2개 테이블을 FULL OUTER JOIN하고 각 테이블의 데이터만 추출: NULL 필터링&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FULL OUTER JOIN을 사용해 LEFT 테이블과 RIGHT 테이블에 있는 데이터만 추출하려면 NULL 데이터를 필터링해 원하는 결과를 얻을 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1728440004931&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.symbol AS a_symbol,
	b.symbol AS b_symbol
FROM nasdaq_company AS a
	 FULL OUTER JOIN industry_group_symbol AS b ON a.symbol = b.symbol
WHERE a.symbol IS NULL
	OR b.symbol IS NULL;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tLeuI/btsJX97kR4e/QUHJBwKGIp2XxuiqXXIMB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tLeuI/btsJX97kR4e/QUHJBwKGIp2XxuiqXXIMB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tLeuI/btsJX97kR4e/QUHJBwKGIp2XxuiqXXIMB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtLeuI%2FbtsJX97kR4e%2FQUHJBwKGIp2XxuiqXXIMB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;444&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/649</guid>
      <comments>https://build-enough.tistory.com/entry/03-%EC%99%B8%EB%B6%80-%EC%A1%B0%EC%9D%B8#entry649comment</comments>
      <pubDate>Wed, 9 Oct 2024 11:13:57 +0900</pubDate>
    </item>
    <item>
      <title>02 내부 조인</title>
      <link>https://build-enough.tistory.com/entry/02-%EB%82%B4%EB%B6%80-%EC%A1%B0%EC%9D%B8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;조인은 상황에 따라 여러 종류로 구분해 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 많이 사용하는 조인인 내부 조인(Inner Join)으로 보통 조인이라고 하면 내부 조인을 가리킬 만큼 널리 쓰이는 형태.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부 조인은 조인키에 해당하는 각 테이블의 열값을 비교해 조건에 맞는 값을 검색한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;내부 조인의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728302749520&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT [열 이름]
FROM [테이블 1]
INNER JOIN [테이블 2] ON [테이블 1.열] = [테이블2.열]
WHERE [검색 조건]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INNER JOIN 문의 기본 개념&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;231&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oJc4P/btsJXupo9hB/cPWmY6pHzqTcKF9caYmXEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oJc4P/btsJXupo9hB/cPWmY6pHzqTcKF9caYmXEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oJc4P/btsJXupo9hB/cPWmY6pHzqTcKF9caYmXEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoJc4P%2FbtsJXupo9hB%2FcPWmY6pHzqTcKF9caYmXEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;231&quot; height=&quot;155&quot; data-origin-width=&quot;231&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테이블 구조&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객 테이블과 주문 테이블&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;161&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Lu7km/btsJW2GHjNV/qimuoVWKYdyoTAI5RG9vJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Lu7km/btsJW2GHjNV/qimuoVWKYdyoTAI5RG9vJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Lu7km/btsJW2GHjNV/qimuoVWKYdyoTAI5RG9vJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLu7km%2FbtsJW2GHjNV%2FqimuoVWKYdyoTAI5RG9vJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;508&quot; height=&quot;161&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;만약 고객의 주문 내역을 모두 확인하고 싶다면?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객 테이블과 주문 테이블을 조인하되&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객 번호를 조인 조건으로 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고객 테이블과 주문 테이블의 Inner Join&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rf3PD/btsJWgZWu2G/O6JOcogrOVs2Mj0US2vzl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rf3PD/btsJWgZWu2G/O6JOcogrOVs2Mj0US2vzl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rf3PD/btsJWgZWu2G/O6JOcogrOVs2Mj0US2vzl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frf3PD%2FbtsJWgZWu2G%2FO6JOcogrOVs2Mj0US2vzl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;508&quot; height=&quot;332&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;332&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INNER JOIN으로 두 테이블을 종합해 총 2건의 데이터를 검색했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 두 테이블의 고객 번호가 같은 0001과 0002에 해당하는 데이터만 조합해 검색했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INNER JOIN 문 사용(2개 테이블 조인)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조인은 2개 이상의 테이블을 전제로 하며, 실제 쿼리를 작성할 때는 SELECT 문에 다른 문을 추가하는 것이 아니라&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FROM 문에 조인할 테이블을 나열한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;nasdaq_company 테이블과 stock 테이블을 INNER JOIN 문으로 조인해 symbol이 'MSFT'인 기업 정보와 해당 기업의 2021년 10월 일별 주가 데이터를 검색한 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728304377252&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 
	a.symbol,
	a.company_name,
	a.ipo_year,
	a.sector,
	a.industry,
	b.date,
	b.[open],
	b.[high],
	b.[low],
	b.[close],
	b.adj_close,
	b.volume
FROM nasdaq_company AS a INNER JOIN stock AS b
ON a.symbol = b.symbol
WHERE a.symbol = 'MSFT'
	AND b.date &amp;gt;= '2021-10-01'
	AND b.date &amp;lt; '2021-11-01';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5oExL/btsJW1Vh4RH/E8TOLXslCG9B9wdxVENnvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5oExL/btsJW1Vh4RH/E8TOLXslCG9B9wdxVENnvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5oExL/btsJW1Vh4RH/E8TOLXslCG9B9wdxVENnvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5oExL%2FbtsJW1Vh4RH%2FE8TOLXslCG9B9wdxVENnvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1150&quot; height=&quot;441&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT 문에는 각 테이블에 검색할 열을 나열.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FROM 문에는 조인할 테이블 이름을 입력.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ON 문은 테이블을 조인할 때 조인 조건으로 사용할 열을 지정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nasdaq_company 테이블 뒤에 AS a라고 별칭을 붙였다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; nasdaq_company 테이블을 a라고 부른다라는 뜻.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블의 열 이름이 유일하다면 별칭(AS)를 사용하지 않아도 되지만, 두 테이블에 같은 이름의 열이 있으므로 별칭을 사용함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별칭을 사용하지 않는다면 데이터베이스 엔진은 어떤 테이블의 열을 검색할지 판단할 수 없어 오류가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별칭은 테이블 이름이 길거나 중복될 경우 대체해 사용하기 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ON문과 WHERE 문의 차이&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ON 조인할 때 조인 조건을 위해 사용하며, WHERE 문은 조인을 완료한 상태에서 조건에 맞는 값을 가져오고자 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 ON 문에 조건을 다양하게 부여해 WHERE 문과 같은 효과를 내게 할 수도 있지만 조인 조건을 만족하는 데이터 매칭 과정에서 오차가 발생하므로 그렇게 해선 안된다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INNER JOIN 문 사용하기(2개 이상의 조건 적용)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조인 조건으로 2개 이상의 열을 사용할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건은 AND, OR 등을 사용해 여러 조건을 조합할 수도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;각 테이블의 symbol 열과 date, last_crawel_date 열이라는 두 쌍의 열을 조건으로 사용한 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(조건: 사용한 열값이 같은 데이터를 INNER JOIN해서 사용)&lt;/p&gt;
&lt;pre id=&quot;code_1728305423814&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.symbol,
	a.last_crawel_date,
	b.date
FROM nasdaq_company AS a INNER JOIN stock AS b
	ON a.symbol = b.symbol AND a.last_crawel_date = b.date
WHERE a.symbol = 'MSFT';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWbzRD/btsJWyF1vYx/c2O8opZnfcmkilxv6bmru0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWbzRD/btsJWyF1vYx/c2O8opZnfcmkilxv6bmru0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWbzRD/btsJWyF1vYx/c2O8opZnfcmkilxv6bmru0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWbzRD%2FbtsJWyF1vYx%2Fc2O8opZnfcmkilxv6bmru0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1151&quot; height=&quot;152&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조인 조건의 열이 달라도 상관없음을 알 수 있다(a.last_crawel_date = b.date).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 비교를 위해 데이터 형이 같아야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 조인 조건은 비교할 열을 지정하는 것이므로, 다른 열을 사용한다면 다른 데이터가 검색될 수 있는 만큼 비교 열을 정확히 구분할 수 있도록 한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INNER JOIN 문 사용(3개 이상의 테이블 조인)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3개 이상의 테이블을 조인할 때는 두 테이블의 관계가 다대다 관계인 경우가 많다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;다대다 관계인 테이블&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbhXch/btsJYDMqPme/3TobuV60aBdlV7gc913TQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbhXch/btsJYDMqPme/3TobuV60aBdlV7gc913TQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbhXch/btsJYDMqPme/3TobuV60aBdlV7gc913TQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbhXch%2FbtsJYDMqPme%2F3TobuV60aBdlV7gc913TQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;514&quot; height=&quot;376&quot; data-origin-width=&quot;514&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nasdaq_company 테이블의 다양한 symbol 정보를 본인의 관심 분야에 따라 편하게 검색하려고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;industry_group 테이블과 industry_symbol 테이블의 정보를 별도 테이블에 저장하는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;industry_group 테이블:관심 분야에 따른 industry 정보를 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;industry_group_symbol 테이블: 관심 종목의 symbol 정보를 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3개 이상의 테이블 INNER JOIN 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728306198429&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT [열 이름]
FROM [테이블 1]
INNER JOIN [테이블 2] ON [테이블1.열] = [테이블2.열]
INNER JOIN [테이블 3] ON [테이블2.열] = [테이블3.열]
WHERE [검색 조건]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;industry_group 테이블에서 industry가 '자동차'인 그룹에 어떠한 symbol이 포함되며 해당 symbol의 company_name, ipo_year, sector는 무엇인지 검색하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728306955606&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT
	a.industry,
	c.symbol,
	c.company_name,
	c.ipo_year,
	c.sector
FROM industry_group AS a
	INNER JOIN industry_group_symbol AS b ON a.num = b.num
	INNER JOIN nasdaq_company AS c ON b.symbol = c.symbol
WHERE a.industry = N'자동차'
ORDER BY symbol;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1153&quot; data-origin-height=&quot;335&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FtCrV/btsJWUaYY1N/ISeWEEmf9QKnr32PUBVvr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FtCrV/btsJWUaYY1N/ISeWEEmf9QKnr32PUBVvr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FtCrV/btsJWUaYY1N/ISeWEEmf9QKnr32PUBVvr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFtCrV%2FbtsJWUaYY1N%2FISeWEEmf9QKnr32PUBVvr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1153&quot; height=&quot;335&quot; data-origin-width=&quot;1153&quot; data-origin-height=&quot;335&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT 문의 industry 열은 industry_group 테이블과 nasdaq_company 테이블이 공통으로 가지며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;symbol 열은 industry_group_symbol 테이블과 nasdaq_company 테이블이 공통으로 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 현재는 3개 이상의 테이블이 짝지어 조인할 때 서로 열이 중복된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INNER JOIN은 조건에 맞는 데이터만 검색하므로 NULL 데이터가 발생하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 열이 중복된 상태에서 고려할 부분은 '성능'이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성능을 높이려면 인덱스가 형성된 열을 우선 사용하는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 industry 열이 인덱스가 형성되어 있다면 이 열로 우선 INNER JOIN을 하고 symbol 열로 INNER JOIN을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스란 데이터베이스에서 데이터 검색 성능을 높일 때 사용하는 것으로 책의 차례와 같다고 보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 데이터양이 적은 열을 조인 조건으로 우선 사용하는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 쿼리를 실행했을 때 데이터가 처리되는 순서는 쿼리에 작성된 순서가 아닌, 데이터베이스 엔진에서 판단한 순서이다.&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/648</guid>
      <comments>https://build-enough.tistory.com/entry/02-%EB%82%B4%EB%B6%80-%EC%A1%B0%EC%9D%B8#entry648comment</comments>
      <pubDate>Mon, 7 Oct 2024 22:49:35 +0900</pubDate>
    </item>
    <item>
      <title>01 조인 JOIN</title>
      <link>https://build-enough.tistory.com/entry/01-%EC%A1%B0%EC%9D%B8-JOIN</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;조인 JOIN&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2개 이상의 테이블에서 쿼리를 작성하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테이블을 2개 이상 조인한다는 의미&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 잘 설계한 관계형 데이터베이스의 테이블은 1가지 이상의 엔티티(entity)를 포함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ERD 구성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWXPNe/btsJYBODbss/USksJXMEPwGksATkfGMEp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWXPNe/btsJYBODbss/USksJXMEPwGksATkfGMEp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWXPNe/btsJYBODbss/USksJXMEPwGksATkfGMEp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWXPNe%2FbtsJYBODbss%2FUSksJXMEPwGksATkfGMEp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;380&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nasdaq_company 테이블에는 기업의 종목 코드(symbol)나 기업 이름(company_name) 등의 정보가 저장되어 있고,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stock 테이블에는 symbol에 따른 일별 가격 정보가 저장되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;일별 거래가를 검색할 때 기업 이름을 함께 표시하려면?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 테이블이 분리된 상황이므로 테이블의 데이터를 조합해야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VjuuF/btsJW6I2BZn/h0KmLOFxzmJ0iPD7ePRsik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VjuuF/btsJW6I2BZn/h0KmLOFxzmJ0iPD7ePRsik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VjuuF/btsJW6I2BZn/h0KmLOFxzmJ0iPD7ePRsik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVjuuF%2FbtsJW6I2BZn%2Fh0KmLOFxzmJ0iPD7ePRsik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;720&quot; height=&quot;153&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;153&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이럴 때 사용하는 것이 조인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조인은 테이블 A의 열과 테이블 B의 정보를 포함해 검색할 수 있게 만들어 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;왜? 테이블을 처음 만들 때부터 stock 테이블에 company_name 열을 만들지 않는걸까?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 만들면 stock 테이블과 nasdaq_company 테이블 둘 다 company_name이 있기 때문에 데이터가 중복 저장되는 문제가 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 중복 저장하면 저장할 공간이 더 필요한 문제와, 중복 저장한 열 데이터를 수정할 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 열을 가진 테이블의 데이터를 모두 찾아 수정해야 하는 문제가 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 데이터 중복을 최소화하는 설계는 피할 수 없으므로, 조인을 사용해 2개 이상의 테이블을 조합한 결과를 검색하는 방식이 효율적이다(데이터 중복 없이 구성한 데이터 구조를 정규화 2단계라고 한다).&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;데이터 모델링과 정규화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 모델링(Data Modeling)이란 주어진 상황에서 논리 데이터 모델을 구성하는 작업.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 모델링이 끝나면 논리 데이터 모델을 물리 데이터 모델로 바꾼 다음 실제 데이터베이스에 반영하는 작업을 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규화는 논리 데이터 모델의 중복을 제거해 일관성 있고 안정적인 자료구조를 만드는 단계.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규화는 1 정규형부터 5차 정규형, BCNF 정규형을 포함하는데 일반적으로는 3차 정규형을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3차 정규형은 데이터 모델이 적절한 일관성을 유지하면서도 중복이 없는 논리 데이터 모델을 구성하는 것을 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/테이블을 서로 통합하는 조인</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/647</guid>
      <comments>https://build-enough.tistory.com/entry/01-%EC%A1%B0%EC%9D%B8-JOIN#entry647comment</comments>
      <pubDate>Mon, 7 Oct 2024 21:03:25 +0900</pubDate>
    </item>
    <item>
      <title>18 SQL Server에서 다루는 자료형 정리</title>
      <link>https://build-enough.tistory.com/entry/18-SQL-Server%EC%97%90%EC%84%9C-%EB%8B%A4%EB%A3%A8%EB%8A%94-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%A0%95%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 삽입을 하면서 삽입하려는 데이터의 자료형이 열에 지정한 자료형과 맞지 않으면 오류가 발생.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL Server는 숫자형, 문자형, 날짜형, 지리형, 공간형 등 다양한 자료형을 제공.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;숫자형&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자형은 정수, 실수 등의 숫자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SQL Server가 제공하는 숫자형 정보&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AlPpm/btsJViQOoIc/I33l2YdE2o980kFdL56THk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AlPpm/btsJViQOoIc/I33l2YdE2o980kFdL56THk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AlPpm/btsJViQOoIc/I33l2YdE2o980kFdL56THk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAlPpm%2FbtsJViQOoIc%2FI33l2YdE2o980kFdL56THk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;778&quot; height=&quot;517&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;517&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;숫자형 데이터 사용 시 주의사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;형 변환(type casting)에 주의해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;암시적 형변환&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 자료형을 변경하지 않아도 실행 환경에서 자동으로 자료형을 변경하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) 10/3 -&amp;gt; 3이 반환되지만 10/3.0 -&amp;gt; 3.33333이 반환(암시적 형변환)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연산 대상의 자료형이 다를 경우 데이터 우선순위에 따라 시스템이 상위 자료형으로 변경하므로 오류나 성능에 문제가 발생하기 쉬운만큼 주의해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;명시적 형변환&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 직접 자료형을 변경하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CATST, CONVERT 등의 함수를 사용해 자료형을 변환하는 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;숫자형 데이터의 형변환: 정수, 실수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728189511351&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 10/3;

SELECT 10/3.0;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9l1aQ/btsJVUPiMTg/pVlzJqzKkEGo2K0kZptWgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9l1aQ/btsJVUPiMTg/pVlzJqzKkEGo2K0kZptWgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9l1aQ/btsJVUPiMTg/pVlzJqzKkEGo2K0kZptWgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9l1aQ%2FbtsJVUPiMTg%2FpVlzJqzKkEGo2K0kZptWgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;439&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일치하지 않는 자료형은 SQL Server에서 호환할 수 있는 형식으로 암시적으로 변환되는데, 우선순위가 정의된 프로세스에 따라 수행된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선순위가 낮은 자료형은 우선순위가 높은 자료형으로 변환된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;자료형 우선순위&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;409&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYKDzx/btsJW35kbi9/5WxvOhKtIUyijMkMpesPb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYKDzx/btsJW35kbi9/5WxvOhKtIUyijMkMpesPb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYKDzx/btsJW35kbi9/5WxvOhKtIUyijMkMpesPb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYKDzx%2FbtsJW35kbi9%2F5WxvOhKtIUyijMkMpesPb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;409&quot; height=&quot;702&quot; data-origin-width=&quot;409&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자형 데이터는 합, 평균, 나누기 등 다양한 집계 함수에서 자주 사용한다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자형&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다양한 문자를 저장할 수 있는 자료형&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'고정 길이'와 '가변 길이'로 구분할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고정 길이&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실젯값을 입력하지 않아도 지정한 만큼의 저장공간 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;가변 길이&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 입력한 값의 크기만큼만 저장 공간 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;유니코드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글이나 특수 문자 등을 저장할 때 사용하며, 한 글자에 2바이트라서 자료형에서 지정한 데이터 크기의 50% 정도만 저장할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SQL Server가 제공하는 문자형 정보&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S9dWq/btsJVDN0WFj/y3zr0PyHkj6F4QXM8waSVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S9dWq/btsJVDN0WFj/y3zr0PyHkj6F4QXM8waSVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S9dWq/btsJVDN0WFj/y3zr0PyHkj6F4QXM8waSVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS9dWq%2FbtsJVDN0WFj%2Fy3zr0PyHkj6F4QXM8waSVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;706&quot; height=&quot;382&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;'고정 길이 문자열'과 '가변 길이 문자열', '유니코드 고정 길이 문자열'과 '유니코드 가변 길이 문자열' 속성을 가진 테이블에 A라는 문자를 삽입한 뒤 실제로 사용하는 저장 공간의 크기를 확인하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728191812670&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE char_table (
col_1 char(50),
col_2 varchar(50),
col_3 nchar(50),
col_4 nvarchar(50)
)
GO

INSERT INTO char_table VALUES ('A', 'A', N'A', N'A')
Go

SELECT
	col_1, LEN(col_1) AS char_length, DATALENGTH(col_1) AS data_length,
	col_2, LEN(col_2) AS char_length, DATALENGTH(col_2) AS data_length,
	col_3, LEN(col_3) AS char_length, DATALENGTH(col_3) AS data_length,
	col_4, LEN(col_4) AS char_length, DATALENGTH(col_4) AS data_length
FROM char_table;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dZirFW/btsJWRKPuS2/ovzVejApj45h2Zjie1IL51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dZirFW/btsJWRKPuS2/ovzVejApj45h2Zjie1IL51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dZirFW/btsJWRKPuS2/ovzVejApj45h2Zjie1IL51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdZirFW%2FbtsJWRKPuS2%2FovzVejApj45h2Zjie1IL51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1142&quot; height=&quot;435&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LEN: 문자열 길이를 확인하는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DATALENGTH: 문자열 크기를 확인하는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과를 보면 삽입된 글자의 길이는 모두 1이지만 실제 저장 공간에 사용한 데이터의 길이는 다르다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;유니코드를 사용하지 않았을 때 글자가 깨지는 것을 확인하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728192088537&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;use DoItSQL
GO

CREATE TABLE unicode_table(
col_1 varchar(50),
col_2 nvarchar(50)
)
GO

INSERT INTO unicode_table VALUES ('가', N'가')
GO
SELECT * FROM unicode_table;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p3fEz/btsJW9Lc7PN/gQxCSnSWv1AXiVAj14Y6ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p3fEz/btsJW9Lc7PN/gQxCSnSWv1AXiVAj14Y6ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p3fEz/btsJW9Lc7PN/gQxCSnSWv1AXiVAj14Y6ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp3fEz%2FbtsJW9Lc7PN%2FgQxCSnSWv1AXiVAj14Y6ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;440&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DoItSQL 데이터베이스의 기본 데이터 정렬 속성은 영어이므로, 유니코드를 사용하지 않을 경우 화면의 글자가 ?로 깨져 보이는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;유니코드란&lt;/b&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;국자마다 고유의 언어와 문자가 있듯이, 문자 형식의 데이터를 저장하고 관리할 때 국가별 코드 페이지가 달라서 서로 호환하지 않는 문제가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국어 데이터베이스에 한국어만 사용하고, 영어 데이터베이스에 영어만 사용할 경우에는 큰 문제가 발생하지 않지만, 하나의 데이터베이스에 영어, 한국어, 중국어 등 여러 나라의 언어를 함께 사용할 때는 코드에 따른 문자가 서로 달라 문제가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 문제점을 해결하고자 유니코드 형식을 사용하는데 전 세계에서 사용되는 대부분의 문자에서 단일 인코딩하는 방법을 정의한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유니코드 문자열을 저장하려면 한 글자당 2바이트 공간이 필요하다. 그래서 CHAR(4)는 4바이트이지만 NCHAR(4)는 8바이트의 공간이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유니코드로 저장하려면 자료형도 유니코드 형태여야 하지만, 데이터를 입력할 때 유니코드라는 것을 알려주고 문자열 앞에 반드시 대문자 N을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유니코드는 문자에만 해당되므로 숫자나 날짜 등에는 해당되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;유니코드 형식의 열과 그렇지 않은 열에 데이터 삽입&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728192443917&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 테이블 생성
CREATE TABLE doit_unicode (
col_1 varchar(50),
col_2 nvarchar(50)
)

-- 데이터 입력
INSERT doit_unicode VALUES('ABC', 'ABC')
INSERT doit_unicode VALUES('가나다', '가나다')
INSERT doit_unicode VALUES('가나다', N'가나다')

-- 데이터 검색
SELECT * FROM doit_unicode&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;133&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpsESz/btsJVpbcsDq/ZKMlHGwEiBd7gZgR7ZkWkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpsESz/btsJVpbcsDq/ZKMlHGwEiBd7gZgR7ZkWkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpsESz/btsJVpbcsDq/ZKMlHGwEiBd7gZgR7ZkWkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpsESz%2FbtsJVpbcsDq%2FZKMlHGwEiBd7gZgR7ZkWkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;133&quot; height=&quot;118&quot; data-origin-width=&quot;133&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre id=&quot;code_1728192625756&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 테이블 삭제
DROP TABLE doit_unicode&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유니코드 형식이 아닌 열에 한글을 입력했을 경우 글자가 깨진다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유니코드 형식의 열인데도 유니코드라는 것을 가리키는 대문자 N을 생략하면 한글이 깨지는 것을 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유니코드 자료형의 경우에도 N을 지칭하지 않으면 일반 코드로 입력되는 것을 알 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;날짜형과 시간형&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;날짜와 시간 자료형에는 날짜 또는 시간만 저장하는 타입도 있고, 날짜와 시간을 함께 저장하는 타입도 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확도에 다라 데이터 크기와 형식이 조금씩 다르다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SQL Server가 제공하는 날짜형/시간형 정보&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs4lAR/btsJWfyEOc7/SSKlYDzbOKYjoVp2cXuqmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs4lAR/btsJWfyEOc7/SSKlYDzbOKYjoVp2cXuqmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs4lAR/btsJWfyEOc7/SSKlYDzbOKYjoVp2cXuqmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs4lAR%2FbtsJWfyEOc7%2FSSKlYDzbOKYjoVp2cXuqmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;776&quot; height=&quot;406&quot; data-origin-width=&quot;776&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;날짜 형식의 테이블을 생성한 다음, 현재 시간을 각 열에 같게 입력해 데이터가 어떻게 저장되는지 확인&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728193490531&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE date_table(
JustDate date,
JustTime time,
JustDateTime datetime,
JustDateTime2 datetime2);

INSERT INTO date_table
VALUES (SYSDATETIME(), SYSDATETIME(), SYSDATETIME(), SYSDATETIME());

SELECT * FROm date_table;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uMxf5/btsJW5hN3Sz/NOuQMLQcNvqUs9CTEoJ7Dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uMxf5/btsJW5hN3Sz/NOuQMLQcNvqUs9CTEoJ7Dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uMxf5/btsJW5hN3Sz/NOuQMLQcNvqUs9CTEoJ7Dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuMxf5%2FbtsJW5hN3Sz%2FNOuQMLQcNvqUs9CTEoJ7Dk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;232&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확도에 따라 초 단위에서 소수점 자릿수가 다른 것을 알 수 있다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자 형 변환을 할 수 있는 데이터 유형을 나타낸 표&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자와 날짜 형식도 형 변환을 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czFhKc/btsJWooLz9j/ksaXz2yxycLaXvoT3QUek1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czFhKc/btsJWooLz9j/ksaXz2yxycLaXvoT3QUek1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czFhKc/btsJWooLz9j/ksaXz2yxycLaXvoT3QUek1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczFhKc%2FbtsJWooLz9j%2FksaXz2yxycLaXvoT3QUek1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;779&quot; height=&quot;308&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행의 각 자료형이 열의 자료형으로 변환할 수 있는지 나타낸다&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/646</guid>
      <comments>https://build-enough.tistory.com/entry/18-SQL-Server%EC%97%90%EC%84%9C-%EB%8B%A4%EB%A3%A8%EB%8A%94-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%A0%95%EB%A6%AC#entry646comment</comments>
      <pubDate>Sun, 6 Oct 2024 14:47:23 +0900</pubDate>
    </item>
    <item>
      <title>17 새 테이블 생성하며 검색 결과 입력</title>
      <link>https://build-enough.tistory.com/entry/17-%EC%83%88-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%83%9D%EC%84%B1%ED%95%98%EB%A9%B0-%EA%B2%80%EC%83%89-%EA%B2%B0%EA%B3%BC-%EC%9E%85%EB%A0%A5</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;검색 결과가 여러 테이블에서 조인한 것이고 열의 개수가 많으면, 매번 자료형을 확인하고 테이블을 생성한 다음 검색 결과를 입력하기가 쉽지 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블의 데이터를 복사할 때 자주 사용하는 방법으로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT 문으로 검색한 데이터를 입력할 때 사용자가 정의한 테이블 이름으로 테이블을 자동으로 생성하고 데이터를 입력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SELECT ... INTO 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728188626453&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 열 INTO 새로운 테이블 FROM 기존 테이블&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;stock 테이블에서 symbol이 'MSFT'이면서 2021년 1월 1일부터 2021년 1월 31일까지의 데이터를, doit_stock2 테이블을 자동으로 생성한 뒤 저장&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728188829122&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 테이블 생성하며 검색한 데이터 입력
SELECT * INTO doit_stock2 FROM stock
WHERE symbol = 'MSFT'
	and date &amp;gt;= '2021-01-01' and date &amp;lt; '2021-02-01';

-- 데이터 확인
SELECT * FROM doit_stock2;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P7l6Y/btsJWhDeEhY/rlpa9YDEUNkVl3LryOmbw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P7l6Y/btsJWhDeEhY/rlpa9YDEUNkVl3LryOmbw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P7l6Y/btsJWhDeEhY/rlpa9YDEUNkVl3LryOmbw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP7l6Y%2FbtsJWhDeEhY%2Frlpa9YDEUNkVl3LryOmbw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;440&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1728188848251&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 테이블 삭제
DROP TABLE doit_stock2;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/645</guid>
      <comments>https://build-enough.tistory.com/entry/17-%EC%83%88-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%83%9D%EC%84%B1%ED%95%98%EB%A9%B0-%EA%B2%80%EC%83%89-%EA%B2%B0%EA%B3%BC-%EC%9E%85%EB%A0%A5#entry645comment</comments>
      <pubDate>Sun, 6 Oct 2024 13:27:37 +0900</pubDate>
    </item>
    <item>
      <title>16 다른 테이블에 검색 결과 입력하기</title>
      <link>https://build-enough.tistory.com/entry/16-%EB%8B%A4%EB%A5%B8-%ED%85%8C%EC%9D%B4%EB%B8%94%EC%97%90-%EA%B2%80%EC%83%89-%EA%B2%B0%EA%B3%BC-%EC%9E%85%EB%A0%A5%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 다루다 보면 검색 결과를 다른 테이블에 입력하고 싶을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INSERT ... SELECT 문을 조합하면 검색 결과를 다른 테이블에 입력할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INSERT ... SELECT 문의 기본형식&lt;/p&gt;
&lt;pre id=&quot;code_1728187156370&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT 대상 테이블
SELECT 열 FROM 기존 테이블&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;stock 테이블에서 symbol이 'MSFT'이면서 2021년 1월 1일부터 2021년 1월 31일까지의 데이터를 doit_stock 테이블에 저장하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728188037080&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 데이터를 저장할 테이블 생성
CREATE TABLE doit_stock (
date DATETIME,
symbol NVARCHAR(255),
[open] FLOAT,
[high] FLOAT,
[low] FLOAT,
[close] FLOAT,
adj_close FLOAT,
volume bigint
);

-- 검색된 데이터 입력
INSERT doit_stock
SELECT * FROM stock
WHERE symbol = 'MSFT'
	and date &amp;gt;= '2021-01-01' and date &amp;lt; '2021-02-01';

-- 데이터 확인
SELECT * FROM doit_stock;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcOp0q/btsJV0aRwIZ/iEsal1CWhPDQTdvQ20WaHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcOp0q/btsJV0aRwIZ/iEsal1CWhPDQTdvQ20WaHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcOp0q/btsJV0aRwIZ/iEsal1CWhPDQTdvQ20WaHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcOp0q%2FbtsJV0aRwIZ%2FiEsal1CWhPDQTdvQ20WaHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;438&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1728188070893&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 테이블 삭제
DROP TABLE doit_stock;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INSERT ... SELECT 문으로 데이터를 입력할 때 주의할 점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열 개수와 자료형이 일치해야 한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 입력할 때 특정 열 데이터만 입력하려면 INSERT 문에도 열 이름을 명시하고, SELECT 문에도 INSERT 문에 나열한 열 이름과 같은 순서로 열을 사용해야 한다.&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/644</guid>
      <comments>https://build-enough.tistory.com/entry/16-%EB%8B%A4%EB%A5%B8-%ED%85%8C%EC%9D%B4%EB%B8%94%EC%97%90-%EA%B2%80%EC%83%89-%EA%B2%B0%EA%B3%BC-%EC%9E%85%EB%A0%A5%ED%95%98%EA%B8%B0#entry644comment</comments>
      <pubDate>Sun, 6 Oct 2024 13:18:39 +0900</pubDate>
    </item>
    <item>
      <title>15 외래키로 연결된 데이터 입력, 삭제하기</title>
      <link>https://build-enough.tistory.com/entry/%EC%99%B8%EB%9E%98%ED%82%A4%EB%A1%9C-%EC%97%B0%EA%B2%B0%EB%90%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9E%85%EB%A0%A5-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;관계형 데이터베이스는 데이터의 무결성을 유지해야 하므로 부모 테이블에 없는 데이터를 자식 테이블이 가지면 안되는 것이 원칙이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 원칙을 유지하면 데이터가 잘못 입력되거나 삭제되는 것을 방지할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테이블의 종속 관계가 있을 때 외래키가 지정된 상황을 가정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vpJXB/btsJUPVARcX/Y74uL8Pr7UcvKjyTVoFFFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vpJXB/btsJUPVARcX/Y74uL8Pr7UcvKjyTVoFFFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vpJXB/btsJUPVARcX/Y74uL8Pr7UcvKjyTVoFFFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvpJXB%2FbtsJUPVARcX%2FY74uL8Pr7UcvKjyTVoFFFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;676&quot; height=&quot;223&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외래키는 테이블이 관게를 구성할 때 참조하는 열을 의미하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[회원] 테이블의 (회원 번호) 열이 기본키(Pirmary Key, PK)이고 [주문] 테이블의 (회원 번호) 열이 외래키(Foreign Key, FK)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실습을 위해 2개의 테이블 생성&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728081493882&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE doit_parent (col_1 INT PRIMARY KEY);
CREATE TABLE doit_child (col_1 INT);

ALTER TABLE doit_child
ADD FOREIGN KEY (col_1) REFERENCES doit_parent(col_1);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;자식 테이블에 데이터 입력: 실패&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728081861088&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO doit_child VALUES (1);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7bxtK/btsJVB3qIP0/LTgVZQ5qTAiKeDnE1VYHp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7bxtK/btsJVB3qIP0/LTgVZQ5qTAiKeDnE1VYHp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7bxtK/btsJVB3qIP0/LTgVZQ5qTAiKeDnE1VYHp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7bxtK%2FbtsJVB3qIP0%2FLTgVZQ5qTAiKeDnE1VYHp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;446&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자식 테이블에 데이터를 입력할 때 부모 테이블에 해당 데이터가 없는 상태라서 오류가 발생해 데이터 입력에 실패하는 쿼리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;부모 테이블에 데이터를 입력한 뒤, 자식 테이블에 같은 데이터 입력: 성공&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728081977833&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO doit_parent VALUES (1);
INSERT INTO doit_child VALUES (1);&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1728082003131&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_parent;
SELECT * FROM doit_child;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MFOgn/btsJVMjmPXN/OVQWrxUAJLyixUT57ZKZP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MFOgn/btsJVMjmPXN/OVQWrxUAJLyixUT57ZKZP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MFOgn/btsJVMjmPXN/OVQWrxUAJLyixUT57ZKZP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMFOgn%2FbtsJVMjmPXN%2FOVQWrxUAJLyixUT57ZKZP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1151&quot; height=&quot;440&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모 테이블에 데이터 입력 후, 같은 데이터를 자식 테이블에 입력하면 정상적으로 데이터를 입력할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;부모 테이블의 데이터 삭제: 실패&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728082095998&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DELETE doit_parent WHERE col_1 = 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LN8O8/btsJV358wpF/sjEk58svqHvlhTCLwpQKk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LN8O8/btsJV358wpF/sjEk58svqHvlhTCLwpQKk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LN8O8/btsJV358wpF/sjEk58svqHvlhTCLwpQKk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLN8O8%2FbtsJV358wpF%2FsjEk58svqHvlhTCLwpQKk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1146&quot; height=&quot;438&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;자식 테이블에서 데이터 삭제한 뒤, 부모 테이블의 데이터 삭제: 성공&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728082157512&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DELETE doit_child WHERE col_1 = 1;
DELETE doit_parent WHERE col_1 = 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NGo9Z/btsJVsZLIRP/NRd600o4QNf0oPgxk4rgMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NGo9Z/btsJVsZLIRP/NRd600o4QNf0oPgxk4rgMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NGo9Z/btsJVsZLIRP/NRd600o4QNf0oPgxk4rgMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNGo9Z%2FbtsJVsZLIRP%2FNRd600o4QNf0oPgxk4rgMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1151&quot; height=&quot;441&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외래키가 설정된 테이블을 삭제하려면 자식 테이블, 부모 테이블 순서로 삭제해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 자식 테이블의 데이터는 유지하면서 부모 테이블을 삭제하고 싶다면 제약 조건을 제거해 테이블 삭제를 진행하는 방법도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제약 조건을 삭제하는 명령어는 DROP CONSTRAINT를 사용하는데 이때 제약 조건의 이름을 명시해야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1728084894280&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-- 제약 조건을 가진 테이블 다시 생성
CREATE TABLE doit_parent (col_1 INT PRIMARY KEY);
CREATE TABLE doit_child (col_1 INT);

ALTER TABLE doit_child
ADD FOREIGN KEY (col_1) REFERENCES doit_parent(col_1);

-- 제약 조건을 제거한 뒤, 부모 테이블 삭제
ALTER TABLE doit_child
DROP CONSTRAINT FK__doit_chil__col_1__2A164134;

DROP TABLE doit_parent;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제약 조건과 제약 이름을 확인하고 싶다면 sp_help [테이블 이름]을 입력하거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[테이블 이름]을 드래그한 상태에서 Alt + F1을 눌러 실행하면 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1728084856386&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sp_help doit_child;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;433&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WsexN/btsJVgFgb6o/iOBn7gDTHQTV9Ar2GXyIAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WsexN/btsJVgFgb6o/iOBn7gDTHQTV9Ar2GXyIAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WsexN/btsJVgFgb6o/iOBn7gDTHQTV9Ar2GXyIAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWsexN%2FbtsJVgFgb6o%2FiOBn7gDTHQTV9Ar2GXyIAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;433&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;433&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/643</guid>
      <comments>https://build-enough.tistory.com/entry/%EC%99%B8%EB%9E%98%ED%82%A4%EB%A1%9C-%EC%97%B0%EA%B2%B0%EB%90%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9E%85%EB%A0%A5-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0#entry643comment</comments>
      <pubDate>Sat, 5 Oct 2024 08:35:40 +0900</pubDate>
    </item>
    <item>
      <title>14 DELETE 문으로 데이터 삭제하기</title>
      <link>https://build-enough.tistory.com/entry/14-DELETE-%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DELETE 문으로 데이터 삭제하기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728080650185&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DELETE [테이블 이름] WHERE [열] = [조건]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; DELETE 문의 주의사항으로 WHERE 문의 조건이 누락되면 전체 데이터를 삭제하므로 주의해야 한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;col_1이 14인 데이터만 삭제하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728080773179&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DELETE doit_dml WHERE col_1 = 14;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1728080781015&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/latjX/btsJUOblEX1/TT1LYkZqDsqSt7Al3uWN8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/latjX/btsJUOblEX1/TT1LYkZqDsqSt7Al3uWN8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/latjX/btsJUOblEX1/TT1LYkZqDsqSt7Al3uWN8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlatjX%2FbtsJUOblEX1%2FTT1LYkZqDsqSt7Al3uWN8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;440&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블에 있는 전체 데이터를 삭제하려면 WHERE 문의 조건을 제거하고 쿼리를 실행한다&lt;/p&gt;
&lt;pre id=&quot;code_1728080901615&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DELETE doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1728080909933&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjsKT9/btsJWn396Z7/q3YRLf0HC8Yg7j9poKcV40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjsKT9/btsJWn396Z7/q3YRLf0HC8Yg7j9poKcV40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjsKT9/btsJWn396Z7/q3YRLf0HC8Yg7j9poKcV40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjsKT9%2FbtsJWn396Z7%2Fq3YRLf0HC8Yg7j9poKcV40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1147&quot; height=&quot;439&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테이블 완전 삭제&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728080959135&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DROP TABLE doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1728080977326&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coenDf/btsJV5W4VdX/kYo5508083nxaL7GEq8n9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coenDf/btsJV5W4VdX/kYo5508083nxaL7GEq8n9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coenDf/btsJV5W4VdX/kYo5508083nxaL7GEq8n9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoenDf%2FbtsJV5W4VdX%2FkYo5508083nxaL7GEq8n9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1143&quot; height=&quot;446&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/642</guid>
      <comments>https://build-enough.tistory.com/entry/14-DELETE-%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0#entry642comment</comments>
      <pubDate>Sat, 5 Oct 2024 07:29:53 +0900</pubDate>
    </item>
    <item>
      <title>13 UPDATE 문으로 데이터 수정하기</title>
      <link>https://build-enough.tistory.com/entry/13-UPDATE-%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;UPDATE 문의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727877129090&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UPDATE [테이블 이름] SET [열1 = 값1, 열2 = 값2, ...]
WHERE [열] = [조건]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UPDATE 문은 사용 방법이 매우 간단하며 WHERE 문을 생략할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;!!!WHERE 문의 조건을 누락하면 테이블의 전체 데이터를 수정하므로 사용할 떄 항상 주의해야 한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;col_1이 4인 행의 col_2 열 값을 변경하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1728080384648&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UPDATE doit_dml SET col_2 = N'데이터 수정'
WHERE col_1 = 4;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1728080496571&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYuYHS/btsJV6az6dm/24hbN5bB6PbRLrFfEZ4WJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYuYHS/btsJV6az6dm/24hbN5bB6PbRLrFfEZ4WJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYuYHS/btsJV6az6dm/24hbN5bB6PbRLrFfEZ4WJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYuYHS%2FbtsJV6az6dm%2F24hbN5bB6PbRLrFfEZ4WJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;440&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UPDATE 문으로 전체 열 데이터 수정하기: WHERE 문 생략&lt;/p&gt;
&lt;pre id=&quot;code_1728080564447&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UPDATE doit_dml SET col_1 = col_1 + 10;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1728080574620&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x8Wf4/btsJUMkiJNH/VidwnSQxGkEJyNkn6k2aL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x8Wf4/btsJUMkiJNH/VidwnSQxGkEJyNkn6k2aL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x8Wf4/btsJUMkiJNH/VidwnSQxGkEJyNkn6k2aL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx8Wf4%2FbtsJUMkiJNH%2FVidwnSQxGkEJyNkn6k2aL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;440&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/641</guid>
      <comments>https://build-enough.tistory.com/entry/13-UPDATE-%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0#entry641comment</comments>
      <pubDate>Sat, 5 Oct 2024 07:23:18 +0900</pubDate>
    </item>
    <item>
      <title>12 INSERT 문으로 데이터 삽입하기</title>
      <link>https://build-enough.tistory.com/entry/12-INSERT-%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%BD%EC%9E%85%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INSERT 문으로 데이터 삽입하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 삽입하려면 INSERT 문으로 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INSERT 문의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727789386277&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO 테이블 [열1, 열2, ...] VALUES [값1, 값2, ...];&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 삽입, 수정, 삭제하려면 테이블이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;doit_dml이라는 이름의 테이블을 생성하고 각 열에 데이터를 입력하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727871615767&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;USE DoItSQL;
CREATE TABLE doit_dml (
col_1 INT,
col_2 NVARCHAR(50),
col_3 DATETIME
)
GO

INSERT INTO doit_dml(col_1, col_2, col_3)
VALUES (1, 'DoItSQL', '2021-01-01')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JAjgb/btsJSFSYfPV/ppTBuZsUogqfQ2l8l90tlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JAjgb/btsJSFSYfPV/ppTBuZsUogqfQ2l8l90tlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JAjgb/btsJSFSYfPV/ppTBuZsUogqfQ2l8l90tlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJAjgb%2FbtsJSFSYfPV%2FppTBuZsUogqfQ2l8l90tlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;389&quot; height=&quot;420&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테이블에 삽입한 데이터 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727871739095&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SJC8w/btsJUEYZ7CM/kWJ3beBkYS6FbAfBxLdvC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SJC8w/btsJUEYZ7CM/kWJ3beBkYS6FbAfBxLdvC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SJC8w/btsJUEYZ7CM/kWJ3beBkYS6FbAfBxLdvC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSJC8w%2FbtsJUEYZ7CM%2FkWJ3beBkYS6FbAfBxLdvC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;441&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INSERT 문의 특이사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블에 데이터를 삽입할 때 열 이름을 생략할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 열 이름을 생략하려면 VALUES 문 뒤에 테이블의 열 순서와 개수에 맞춰 데이터를 채워야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;열 이름을 생략하고 테이블에 데이터 삽입&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727871872347&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO doit_dml
VALUES (2, N'열 이름 생략', '2021-01-02');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테이블에 삽입한 데이터 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727871909895&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB0irv/btsJUi28mIn/hi307816p82akqofExK721/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB0irv/btsJUi28mIn/hi307816p82akqofExK721/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB0irv/btsJUi28mIn/hi307816p82akqofExK721/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB0irv%2FbtsJUi28mIn%2Fhi307816p82akqofExK721%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1142&quot; height=&quot;444&quot; data-origin-width=&quot;1142&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;만약 col_3 위치에 해당하는 값을 입력하지 않으면 테이블의 열 개수와 입력한 값의 개수가 일치하지 않아 오류가 발생한다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727872234161&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO doit_dml
VALUES (2, N'col_3 값 생략');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNk8QI/btsJTz5CVJS/buYAtwWi6Yzz6lkkjiMRS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNk8QI/btsJTz5CVJS/buYAtwWi6Yzz6lkkjiMRS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNk8QI/btsJTz5CVJS/buYAtwWi6Yzz6lkkjiMRS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNk8QI%2FbtsJTz5CVJS%2FbuYAtwWi6Yzz6lkkjiMRS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1147&quot; height=&quot;444&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;col_1, col_2 열에만 데이터를 삽입하는 방법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 이름 다음에 삽입 대상 열만 소괄호로 나열한다.&lt;/p&gt;
&lt;pre id=&quot;code_1727872313592&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO doit_dml(col_1, col_2)
VALUES (2, N'col_3 값 생략');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테이블에 삽입한 데이터 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727872358200&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CkWjK/btsJUiPyhvk/vF18Rfkzt2mZAQ98Neorp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CkWjK/btsJUiPyhvk/vF18Rfkzt2mZAQ98Neorp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CkWjK/btsJUiPyhvk/vF18Rfkzt2mZAQ98Neorp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCkWjK%2FbtsJUiPyhvk%2FvF18Rfkzt2mZAQ98Neorp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1151&quot; height=&quot;440&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;삽입하려는 데이터의 순서 변경&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727872467270&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO doit_dml(col_1, col_3, col_2)
VALUES (4, '2021-01-03', N'열 순서 변경');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;br /&gt;테이블에 삽입한 데이터 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727872490321&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;437&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nbc5U/btsJUMJp79w/2WCnlrGoLevMZ0MLk7bK9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nbc5U/btsJUMJp79w/2WCnlrGoLevMZ0MLk7bK9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nbc5U/btsJUMJp79w/2WCnlrGoLevMZ0MLk7bK9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNbc5U%2FbtsJUMJp79w%2F2WCnlrGoLevMZ0MLk7bK9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1150&quot; height=&quot;437&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;437&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;여러 데이터 한 번에 삽입&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INSERT 문을 여러 번 작성하거나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삽입할 값을 소괄호로 묶어 쉼표로 구분하는 방법이 효율적이다.&lt;/p&gt;
&lt;pre id=&quot;code_1727873372102&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO doit_dml(col_1, col_2, col_3)
VALUES (5, N'데이터 입력5', '2021-01-03'), (6, N'데이터 입력6', '2021-01-03'), (7, N'데이터 입력7', '2021-01-03');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;테이블에 삽입한 데이터 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727873390412&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM doit_dml;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ARhSi/btsJTn5jVtw/RQEj2PYSImTsABJnIKBJMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ARhSi/btsJTn5jVtw/RQEj2PYSImTsABJnIKBJMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ARhSi/btsJTn5jVtw/RQEj2PYSImTsABJnIKBJMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FARhSi%2FbtsJTn5jVtw%2FRQEj2PYSImTsABJnIKBJMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;440&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 삽입할 때 자료형과 맞지 않으면 오류가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;숫자형 열에 문자형을 삽입해 오류가 발생하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727873914169&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;INSERT INTO doit_dml(col_1) VALUES (N'문자입력');&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0u95A/btsJUovoSOu/juWCBOQxmtKlS9iNWGcUb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0u95A/btsJUovoSOu/juWCBOQxmtKlS9iNWGcUb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0u95A/btsJUovoSOu/juWCBOQxmtKlS9iNWGcUb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0u95A%2FbtsJUovoSOu%2FjuWCBOQxmtKlS9iNWGcUb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;439&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;NULL을 허용하지 않도록 테이블 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NULL은 어떠한 값도 정의되지 않은 상태이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블에 NULL이 생성된 이유는 '테이블을 생성할 때 NULL을 허용했기 때문'이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 NULL을 허용하지 않도록 열을 정의하면 NULL을 삽입할 때 오류가 발생한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;col_2에 NULL을 허용하지 않도록 설정하고 col_2에 NULl을 삽입해 오류를 발생시키는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727876891274&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE doit_notnull (
col_1 INT,
col_2 NVARCHAR(50) NOT NULL
)
GO

INSERT INTO doit_noutnull (col_1) VALUES (1);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TzMG1/btsJUYpq3Eh/FxCfQiM4PoIji8Zewk8iwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TzMG1/btsJUYpq3Eh/FxCfQiM4PoIji8Zewk8iwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TzMG1/btsJUYpq3Eh/FxCfQiM4PoIji8Zewk8iwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTzMG1%2FbtsJUYpq3Eh%2FFxCfQiM4PoIji8Zewk8iwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;446&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/640</guid>
      <comments>https://build-enough.tistory.com/entry/12-INSERT-%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%BD%EC%9E%85%ED%95%98%EA%B8%B0#entry640comment</comments>
      <pubDate>Wed, 2 Oct 2024 22:49:02 +0900</pubDate>
    </item>
    <item>
      <title>11 테이블 생성하고 삭제하기</title>
      <link>https://build-enough.tistory.com/entry/11-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%83%9D%EC%84%B1%ED%95%98%EA%B3%A0-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;테이블을 생성하려면 CREATE 문을 사용하지만, 테이블은 데이터베이스 내부에 생성해야 하므로 반드시 테이블이 위치할 데이터베이스를 먼저 선택해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DoItSQL 데이터베이스를 선택할 것이기 때문에 DoItSQL 데이터베이스를 선택하면 된다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DoItSQL 데이터베이스 선택&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727788759069&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;USE DoItSQL;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;doit_create_table라는 이름의 테이블을 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열 이름은 col_1 ~ col_3까지 3개의 열을 생성하며 각 열의 자료형은 숫자, 문자, 날짜형이다.&lt;/p&gt;
&lt;pre id=&quot;code_1727788882363&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE TABLE doit_create_table (
col_1 INT,
col_2 NVARCHAR(50),
col_3 DATETIME
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;386&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbHGwt/btsJSdanSmB/x0gdkJsWSiKQKwmPPjluWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbHGwt/btsJSdanSmB/x0gdkJsWSiKQKwmPPjluWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbHGwt/btsJSdanSmB/x0gdkJsWSiKQKwmPPjluWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbHGwt%2FbtsJSdanSmB%2Fx0gdkJsWSiKQKwmPPjluWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;386&quot; height=&quot;417&quot; data-origin-width=&quot;386&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DROP 문으로 테이블 삭제하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 삭제는 DROP 문을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 삭제의 경우 데이터베이스 삭제와 다르게 즉시 실행되므로 주의해야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1727789195088&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DROP TABLE doit_create_table&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pymGy/btsJTpADAPI/k57i4N9ySC8LdSbE1kKK4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pymGy/btsJTpADAPI/k57i4N9ySC8LdSbE1kKK4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pymGy/btsJTpADAPI/k57i4N9ySC8LdSbE1kKK4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpymGy%2FbtsJTpADAPI%2Fk57i4N9ySC8LdSbE1kKK4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;397&quot; height=&quot;402&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가끔 테이블이 삭제되지 않는 경우가 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 삭제하려는 테이블이 다른 테이블과 종속 관계이면서 부모 테이블인 경우 삭제에 실패한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모 테이블을 삭제하고 싶다면 자식 테이블과의 종속 관계를 제거한 뒤 자식 테이블을 모두 삭제해야 한다.&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/639</guid>
      <comments>https://build-enough.tistory.com/entry/11-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%83%9D%EC%84%B1%ED%95%98%EA%B3%A0-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0#entry639comment</comments>
      <pubDate>Tue, 1 Oct 2024 22:28:38 +0900</pubDate>
    </item>
    <item>
      <title>10 USE 문으로 데이터베이스 선택</title>
      <link>https://build-enough.tistory.com/entry/10-USE-%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%84%A0%ED%83%9D</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;USE&amp;nbsp;문으로&amp;nbsp;데이터베이스&amp;nbsp;선택&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스는 SSMS에서 드롭다운 메뉴를 이용해 선택할 수도 있지만 USE 문을 사용해도 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1727788641292&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;USE master;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;899&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P7yjI/btsJRyzmZTH/Luq84yDO9wBF0CJhtvaNNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P7yjI/btsJRyzmZTH/Luq84yDO9wBF0CJhtvaNNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P7yjI/btsJRyzmZTH/Luq84yDO9wBF0CJhtvaNNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP7yjI%2FbtsJRyzmZTH%2FLuq84yDO9wBF0CJhtvaNNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;899&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;899&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/638</guid>
      <comments>https://build-enough.tistory.com/entry/10-USE-%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%84%A0%ED%83%9D#entry638comment</comments>
      <pubDate>Tue, 1 Oct 2024 22:17:24 +0900</pubDate>
    </item>
    <item>
      <title>09 테이블 생성하고 삭제하기</title>
      <link>https://build-enough.tistory.com/entry/%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%83%9D%EC%84%B1%ED%95%98%EA%B3%A0-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 조작 언어(DML)는 테이블에 데이터를 검색(SELECT), 삽입(INSERT), 수정(UPDATE), 삭제(DELETE)하는데 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DML의 대상은 테이블이므로 DML을 사용하려면 반드시 테이블이 있어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 그 테이블을 조작하는 언어를 데이터 정의 언어(DDL)이라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DDL&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스, 테이블, 뷰, 인덱스 등의 개체를 생성(CREATE), 삭제(DROP), 변경(ALTER)한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;데이터베이스 생성 및 삭제하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스를 생성하려면 CREATE 문을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CREATE 문의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727787970908&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE DATABASE [데이터베이스 이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CREATE 문으로 데이터베이스 생성하기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727787999571&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE DATABASE TestDB&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿼리가 잘 실행되었다면 [개체 탐색기]에서 &amp;lt;새로 고침&amp;gt;을 클릭하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;422&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bL1Sb3/btsJSskuR8P/iv2qR25V79GnbD4DYrcuj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL1Sb3/btsJSskuR8P/iv2qR25V79GnbD4DYrcuj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL1Sb3/btsJSskuR8P/iv2qR25V79GnbD4DYrcuj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL1Sb3%2FbtsJSskuR8P%2Fiv2qR25V79GnbD4DYrcuj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;422&quot; height=&quot;312&quot; data-origin-width=&quot;422&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DROP 문으로 데이터베이스 삭제: TestDB&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727788190591&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DROP DATABASE TestDB;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DROP DATABASE TestDB 명령어가 실행되지 않는다면?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;누군가 데이터베이스를 사용한다면 데이터베이스를 삭제할 수 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SSMS에서 TestDB가 선택된 상태에서 TestDB를 삭제하려고 해 오류 발생한 화면&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;625&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F0Piw/btsJRbK7vyw/6F3L7xpXhr6SnlbEhRVLj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F0Piw/btsJRbK7vyw/6F3L7xpXhr6SnlbEhRVLj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F0Piw/btsJRbK7vyw/6F3L7xpXhr6SnlbEhRVLj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF0Piw%2FbtsJRbK7vyw%2F6F3L7xpXhr6SnlbEhRVLj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;625&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;625&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우 SSMS의 다른 쿼리 창에서 TestDB를 사용하는지 확인하고 해당 쿼리 창을 종료하거나,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 쿼리 창에 지정한 데이터베이스를 다른 것으로 바꾼 뒤 실행하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;581&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPQBR3/btsJSh4MHW5/1nUta8uj2MYljYzGSEX59K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPQBR3/btsJSh4MHW5/1nUta8uj2MYljYzGSEX59K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPQBR3/btsJSh4MHW5/1nUta8uj2MYljYzGSEX59K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPQBR3%2FbtsJSh4MHW5%2F1nUta8uj2MYljYzGSEX59K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;581&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;581&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/637</guid>
      <comments>https://build-enough.tistory.com/entry/%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%83%9D%EC%84%B1%ED%95%98%EA%B3%A0-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0#entry637comment</comments>
      <pubDate>Tue, 1 Oct 2024 22:15:31 +0900</pubDate>
    </item>
    <item>
      <title>08 데이터 그룹화 다루기</title>
      <link>https://build-enough.tistory.com/entry/08-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B7%B8%EB%A3%B9%ED%99%94-%EB%8B%A4%EB%A3%A8%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 검색할 때 공통 그룹의 정보를 확인해야 할 때가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹의 특정 조건을 필터링해 해당 그룹의 데이터만 검색해야 하는 경우도 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 데이터를 그룹화할 때 GROUP BY 문을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 그룹을 필터링할 때는 HAVING 문을 사용한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GROUP BY 문과 HAVING 문의 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727784565442&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT [열] FROM [테이블] WHERE [열] = [조건값] GROUP BY [열] HAVING [열] = [조건값]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GROUP BY 문으로 데이터 그룹화하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP BY 문은 지정한 열에 있는 데이터를 그룹화한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1개 열 기준으로 그룹화&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 그룹화할 때는 반드시 그룹화할 기준 열을 지정해야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sector로 그룹화&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727784774788&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector FROM nasdaq_company
GROUP BY sector;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brch9I/btsJSm5Vye6/Ta7IbfYngjKYk72rowAEQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brch9I/btsJSm5Vye6/Ta7IbfYngjKYk72rowAEQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brch9I/btsJSm5Vye6/Ta7IbfYngjKYk72rowAEQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrch9I%2FbtsJSm5Vye6%2FTa7IbfYngjKYk72rowAEQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1145&quot; height=&quot;439&quot; data-origin-width=&quot;1145&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;industry로 그룹화&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727784811753&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT industry FROM nasdaq_company
GROUP BY industry;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djPQBE/btsJSoCu4Lg/dmOpXaIcA8eZOI4sJxspiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djPQBE/btsJSoCu4Lg/dmOpXaIcA8eZOI4sJxspiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djPQBE/btsJSoCu4Lg/dmOpXaIcA8eZOI4sJxspiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjPQBE%2FbtsJSoCu4Lg%2FdmOpXaIcA8eZOI4sJxspiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1144&quot; height=&quot;435&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2개 이상의 열 기준으로 그룹화하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열을 2개 이상 지정해 그룹화하는 경우에는 GROUP BY에 나열한 열 순서대로 데이터를 그룹화할 뿐이고 전체 결과는 달라지지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 sector, industry 열 순서로 그룹화하면 sector 열로 우선 그룹화한 다음 industry 열로 그룹화한 결과를 출력한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sector, industry 열 순서로 그룹화&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727785052733&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector, industry FROM nasdaq_company
GROUP BY sector, industry;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yEixE/btsJRbj186C/x6FHBDUBG29C1kRCYTqkX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yEixE/btsJRbj186C/x6FHBDUBG29C1kRCYTqkX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yEixE/btsJRbj186C/x6FHBDUBG29C1kRCYTqkX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyEixE%2FbtsJRbj186C%2Fx6FHBDUBG29C1kRCYTqkX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1144&quot; height=&quot;441&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;industry, &lt;b&gt;sector &lt;/b&gt;열 순서로 그룹화&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727785129736&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector, industry FROM nasdaq_company
GROUP BY industry, sector;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NA7fy/btsJRe8VMnm/RN3qUpgVgnVdZZGvDbBKy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NA7fy/btsJRe8VMnm/RN3qUpgVgnVdZZGvDbBKy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NA7fy/btsJRe8VMnm/RN3qUpgVgnVdZZGvDbBKy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNA7fy%2FbtsJRe8VMnm%2FRN3qUpgVgnVdZZGvDbBKy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1147&quot; height=&quot;440&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;집계 함수 COUNT로 그룹화한 열의 데이터 개수 확인하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP BY 문은 집계 함수와 함께 사용하는 경우가 많다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sector 열을 기준으로 그룹화한 다음 COUNT 함수로 그룹화한 각 행이 몇 개인지 검색하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727785354155&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector, COUNT(*) AS cnt FROM nasdaq_company
GROUP BY sector;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/drlkkF/btsJTohrbBF/n0RuX5235LS8p1fMK1Mtnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/drlkkF/btsJTohrbBF/n0RuX5235LS8p1fMK1Mtnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/drlkkF/btsJTohrbBF/n0RuX5235LS8p1fMK1Mtnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdrlkkF%2FbtsJTohrbBF%2Fn0RuX5235LS8p1fMK1Mtnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;444&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sector, industry 열 기준으로 그룹화한 각 행의 개수 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727785457593&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector, industry, COUNT(*) AS cnt FROM nasdaq_company
GROUP BY sector, industry
ORDER BY sector, industry;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5qMiN/btsJSsZamql/21gK62L7gsFkK2w86WlQU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5qMiN/btsJSsZamql/21gK62L7gsFkK2w86WlQU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5qMiN/btsJSsZamql/21gK62L7gsFkK2w86WlQU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5qMiN%2FbtsJSsZamql%2F21gK62L7gsFkK2w86WlQU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1147&quot; height=&quot;438&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GROUP BY 사용시 주의 사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP BY 문에 사용한 열 이름이 SELECT 문에 그대로 사용되어야 오류가 발생하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 그룹화할 때는 그룹 기준이 되는 열이 필요하기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;HAVING 문으로 그룹화한 데이터 필터링하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹화한 데이터에서 데이터를 필터링하려면 HAVING 문을 사용해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HAVING 문은 WHERE 문과 비슷하지만, WHERE 문은 데이터에 있는 열에 적용하는 것이라면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HAVING 문은 SELECT문이나 GROUP BY 문에 사용한 열에만 적용할 수 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sector, industry 열을 기준으로 그룹화한 데이터에서 industry가 'Advertising'인 데이터만 검색&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727786031008&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector, industry FROM nasdaq_company
GROUP BY sector, industry
HAVING industry = 'Advertising';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;437&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n1zs7/btsJRYdiMER/osXeK2QKQIkK8aX2MIX7kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n1zs7/btsJRYdiMER/osXeK2QKQIkK8aX2MIX7kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n1zs7/btsJRYdiMER/osXeK2QKQIkK8aX2MIX7kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn1zs7%2FbtsJRYdiMER%2FosXeK2QKQIkK8aX2MIX7kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1150&quot; height=&quot;437&quot; data-origin-width=&quot;1150&quot; data-origin-height=&quot;437&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그룹화한 데이터의 개수가 1000보다 큰 그룹만 필터링&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727786104513&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector, COUNT(*) AS cnt FROM nasdaq_company
GROUP BY sector
HAVING COUNT(*) &amp;gt; 1000;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Mmjl8/btsJSez7TIQ/BhXij3HvZCwJJLZcLjJk10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Mmjl8/btsJSez7TIQ/BhXij3HvZCwJJLZcLjJk10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Mmjl8/btsJSez7TIQ/BhXij3HvZCwJJLZcLjJk10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMmjl8%2FbtsJSez7TIQ%2FBhXij3HvZCwJJLZcLjJk10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;438&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;만약 그룹화에 사용하지 않은 열을 HAVING 문에 사용하면 오류가 발생한다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727786193462&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector, COUNT(*) AS cnt FROM nasdaq_company
GROUP BY sector
HAVING industry = 'Advertising';&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbN6nW/btsJTBHHv9m/pTSH4yz7iFzcmBOERytaw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbN6nW/btsJTBHHv9m/pTSH4yz7iFzcmBOERytaw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbN6nW/btsJTBHHv9m/pTSH4yz7iFzcmBOERytaw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbN6nW%2FbtsJTBHHv9m%2FpTSH4yz7iFzcmBOERytaw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1156&quot; height=&quot;443&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;443&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오류를 고치기 위해 HAVING 문에 사용한 열을 SELECT 문, GROUP BY 문에 추가한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 COUNT 함수로 생신 열 별칭(AS)을 HAVING 문에 사용하면 오류가 발생한다, cnt는 실제 데이터 열이 아닌 별칭이기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP BY 문과 HAVING 문은 실제 테이블에 있는 열 이름만 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1727786274001&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector, industry, COUNT(*) AS cnt FROM nasdaq_company
GROUP BY sector, industry
HAVING industry = 'Advertising' AND COUNT(*) &amp;gt; 10;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1141&quot; data-origin-height=&quot;436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YsaFQ/btsJRslBwau/QdKoMa8aKSmyS9d1YBWU00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YsaFQ/btsJRslBwau/QdKoMa8aKSmyS9d1YBWU00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YsaFQ/btsJRslBwau/QdKoMa8aKSmyS9d1YBWU00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYsaFQ%2FbtsJRslBwau%2FQdKoMa8aKSmyS9d1YBWU00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1141&quot; height=&quot;436&quot; data-origin-width=&quot;1141&quot; data-origin-height=&quot;436&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DISTINCT 문으로 중복 데이터 제거하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP BY 문을 사용하지 않고 중복 데이터를 제거하고 싶다면 DISTINCT 문을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DISTINCT 문 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727786427040&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT DISTINCT [열 이름] FROM [테이블 이름]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DISTINCT 문은 지정한 열의 중복 데이터를 제거한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;sector, industry 열의 중복을 제거하는 쿼리&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과를 보면 GROUP BY 문으로 얻은 결과와 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1727786688273&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT DISTINCT sector, industry
FROM nasdaq_company;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1727786757936&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT sector, industry
FROM nasdaq_company
GROUP BY sector, industry;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGLoIt/btsJRSqMKCR/KAySKWOVF0sS8pB0cuzHx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGLoIt/btsJRSqMKCR/KAySKWOVF0sS8pB0cuzHx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGLoIt/btsJRSqMKCR/KAySKWOVF0sS8pB0cuzHx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGLoIt%2FbtsJRSqMKCR%2FKAySKWOVF0sS8pB0cuzHx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1147&quot; height=&quot;440&quot; data-origin-width=&quot;1147&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;GROUP BY 문과 DISTINCT 문 차이&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP BY 문과 DISTINCT 문이 결과가 같지만 DISTINCT 문은 중복을 제거할 뿐이지 집계하거나 계산을 할 수 없다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DISTINCT 문에 COUNT 함수를 사용: 오류 발생&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1727786861750&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT DISTINCT sector, industry, COUNT(*)
FROM nasdaq_company;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpIyGJ/btsJSivPEcl/fMDMLkT2kG0hz32dBaK4p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpIyGJ/btsJSivPEcl/fMDMLkT2kG0hz32dBaK4p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpIyGJ/btsJSivPEcl/fMDMLkT2kG0hz32dBaK4p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpIyGJ%2FbtsJSivPEcl%2FfMDMLkT2kG0hz32dBaK4p0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1143&quot; height=&quot;434&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>MSSQL/SQL 시작하기</category>
      <author>빌드이너프</author>
      <guid isPermaLink="true">https://build-enough.tistory.com/636</guid>
      <comments>https://build-enough.tistory.com/entry/08-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B7%B8%EB%A3%B9%ED%99%94-%EB%8B%A4%EB%A3%A8%EA%B8%B0#entry636comment</comments>
      <pubDate>Tue, 1 Oct 2024 21:47:59 +0900</pubDate>
    </item>
  </channel>
</rss>