<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>창작과 기록</title>
    <link>https://sevenhighball.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 5 Apr 2026 22:51:08 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>JesseJeong</managingEditor>
    <image>
      <title>창작과 기록</title>
      <url>https://tistory1.daumcdn.net/tistory/2750831/attach/28db6f875c3a4f1790b29be050aef2b4</url>
      <link>https://sevenhighball.tistory.com</link>
    </image>
    <item>
      <title>SQLD 개념정리 08. 핵심 요약</title>
      <link>https://sevenhighball.tistory.com/49</link>
      <description>&lt;h2 style=&quot;text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;1과목 데이터 모델링의 이해&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1장 데이터 모델링의 이해&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&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;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;li&gt;명확화&lt;/li&gt;
&lt;/ul&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/li&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;p data-ke-size=&quot;size16&quot;&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;/li&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;p data-ke-size=&quot;size16&quot;&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;/li&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;p data-ke-size=&quot;size16&quot;&gt;데이터 모델링 단계 (&lt;span style=&quot;background-color: #9feec3;&quot;&gt;개. 논. 물&lt;/span&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;/li&gt;
&lt;li&gt;논리적 모델링 : 가장 핵심, 정규화, key 속성 관계등 표현, 재사용성 높음&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;p data-ke-size=&quot;size16&quot;&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;/li&gt;
&lt;li&gt;데이터 복잡도&lt;/li&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;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;데이터 독립성 요소&lt;/span&gt; (&lt;span style=&quot;background-color: #9feec3;&quot;&gt;외. 개. 내&lt;/span&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;/li&gt;
&lt;li&gt;개념스키마 : 모든 사용자 관점 통합, 조직 전체 DB, 통합 관점&lt;/li&gt;
&lt;li&gt;내부스키마 : 물리적 저장장치에 실제 저장&lt;/li&gt;
&lt;li&gt;논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마에 영향 X&lt;/li&gt;
&lt;li&gt;물리적 독립성 : 내부 스키마가 변경되어도 개념 스키마에 영향 X, 저장장치의 구조 변경&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;ERD : 피터첸이 만든 데이터 모델 표기법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ERD 작성 순서 : 엔티티 그리기 &amp;rarr; 엔티티 배치 &amp;rarr; 엔티티간 관계 설정 &amp;rarr; 관계명 기술 &amp;rarr; 참여도 기술 &amp;rarr; 필수여부 기술&lt;/p&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;size18&quot;&gt;&lt;b&gt;2. 엔티티&lt;/b&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔티티의 &lt;b&gt;특징&lt;/b&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;/li&gt;
&lt;li&gt;유일한 식별자에 의해 식별가능&lt;/li&gt;
&lt;li&gt;영속적으로 존재하는 인스턴스의 집합 &amp;rarr; 인스턴스가 2개 이상&lt;/li&gt;
&lt;li&gt;업무 프로세스에 의해 이용되어야함&lt;/li&gt;
&lt;li&gt;반드시 속성이 있어야함&lt;/li&gt;
&lt;li&gt;다른 엔티티와 최소 1개 이상의 관계가 있어야함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔티티의 종류, 분류&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1062&quot; data-origin-height=&quot;409&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ISBnm/btsKK36h4XW/vRCiDCORh4Ex2NVeRUwqm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ISBnm/btsKK36h4XW/vRCiDCORh4Ex2NVeRUwqm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ISBnm/btsKK36h4XW/vRCiDCORh4Ex2NVeRUwqm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FISBnm%2FbtsKK36h4XW%2FvRCiDCORh4Ex2NVeRUwqm1%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;1062&quot; height=&quot;409&quot; data-origin-width=&quot;1062&quot; data-origin-height=&quot;409&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;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;유무형&lt;/b&gt;에 따른 분류&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유형 엔티티 : 물리적 형태 O, 안정적이고 지속적 사용 &amp;rarr; ex) 사원, 물품, 강사&lt;/li&gt;
&lt;li&gt;개념 엔티티 : 물리적 형태 X, 관리해야할 개념적 정보 &amp;rarr; ex) 조직, 보험상품&lt;/li&gt;
&lt;li&gt;사건 엔티티 : 업무를 수행함에 따라 발생되는 엔티티 &amp;rarr; ex) 주문, 청구, 미납&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;발생시점&lt;/b&gt;에 따른 분류&lt;/span&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;li&gt;행위 엔티티 : 두개 이상의 부모엔티티로부터 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;엔티티의 &lt;b&gt;명명&lt;/b&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;약어 X&lt;/li&gt;
&lt;li&gt;단수명사&lt;/li&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;size18&quot;&gt;&lt;b&gt;3. 속성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;속성 : 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;최소의 데이터 단위&lt;/span&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;/li&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;속성 &lt;b&gt;분류&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;특성&lt;/b&gt;에 따른 분류&lt;/span&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;span style=&quot;background-color: #9feec3;&quot;&gt;기본속성&lt;/span&gt; : 업무로부터 추출한 모든 속성, 가장 일반적이고 많음&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;설계속성&lt;/span&gt; : 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 규칙화를 위해 새로 만든 속성&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;파생속성&lt;/span&gt; : 계산된 값&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;엔티티 구성방식&lt;/b&gt;에 따른 분류&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PK 속성 / FK 속성 / 일반 속성 &amp;rarr; PK, FK에 해당 안될시&lt;/li&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;속성의 &lt;b&gt;명명&lt;/b&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;/li&gt;
&lt;li&gt;서술식 속성명 사용 X&lt;/li&gt;
&lt;li&gt;약어 사용 X&lt;/li&gt;
&lt;li&gt;전체 데이터모델에서 유일성 확보&lt;/li&gt;
&lt;/ul&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4. 관계&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;관계 분류&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;존재에 의한 관계&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;행위에 의한 관계&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UML 관계&lt;/td&gt;
&lt;td&gt;연관관계 : 항상 이용하는 관계&lt;/td&gt;
&lt;td&gt;의존관계 : 상대방 클래스의 행위에 의해 관계가 형성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;소스코드&lt;/td&gt;
&lt;td&gt;멤버변수&lt;/td&gt;
&lt;td&gt;메소드에서 파라미터&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;클래스 다이어그램에서의 표현&lt;/td&gt;
&lt;td&gt;실선&lt;/td&gt;
&lt;td&gt;점선&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ERD에서는 실선과 점선 구분 X&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관계명 &amp;rarr; 애매한 동사를 피한다, 현재형&lt;/li&gt;
&lt;li&gt;관계차수 : 1대1, 1대M 등..&lt;/li&gt;
&lt;li&gt;관계선택사양 : 필수 / 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관계 &lt;b&gt;체크사항&lt;/b&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;/li&gt;
&lt;li&gt;두 엔티티 사이에 정보의 조합이 발생되는가?&lt;/li&gt;
&lt;li&gt;업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?&lt;/li&gt;
&lt;li&gt;업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;5. 식별자&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식별자의 &lt;b&gt;특징&lt;/b&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;/li&gt;
&lt;li&gt;최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수&lt;/li&gt;
&lt;li&gt;불변성 : 주식별자의 값은 자주 변하지 않는 것이여야 함&lt;/li&gt;
&lt;li&gt;존재성 : 주식별자가 지정이 되면 반드시 값이 들어와야함 &amp;rarr; null X&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;식별자의 &lt;b&gt;분류&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 174px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 13.1007%; height: 21px;&quot;&gt;대표성 여부&lt;/td&gt;
&lt;td style=&quot;width: 15.4264%; height: 21px;&quot;&gt;주식별자&lt;/td&gt;
&lt;td style=&quot;width: 71.4728%; height: 21px;&quot;&gt;각 튜플 구별가능한 구분자, 타 엔티티와 참조 관계 연결가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 13.1007%; height: 21px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 15.4264%; height: 21px;&quot;&gt;보조 식별자&lt;/td&gt;
&lt;td style=&quot;width: 71.4728%; height: 21px;&quot;&gt;각 튜플 구별가능한 구분자이지만 타 엔티티와 참조관계 연결 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 13.1007%; height: 21px;&quot;&gt;생성 방식&lt;/td&gt;
&lt;td style=&quot;width: 15.4264%; height: 21px;&quot;&gt;내부식별자&lt;/td&gt;
&lt;td style=&quot;width: 71.4728%; height: 21px;&quot;&gt;엔티티 내부에서 스스로 만들어짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 39px;&quot;&gt;
&lt;td style=&quot;width: 13.1007%; height: 39px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 15.4264%; height: 39px;&quot;&gt;외부식별자&lt;/td&gt;
&lt;td style=&quot;width: 71.4728%; height: 39px;&quot;&gt;타 엔티티와의 관계를 통하여 타 엔티티로부터 받아오는 식별 ( A.사원번호(PK) 가 B.사원번호(FK) )&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 13.1007%; height: 21px;&quot;&gt;속성의 수&lt;/td&gt;
&lt;td style=&quot;width: 15.4264%; height: 21px;&quot;&gt;단일식별자&lt;/td&gt;
&lt;td style=&quot;width: 71.4728%; height: 21px;&quot;&gt;하나의 속성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.1007%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 15.4264%; height: 17px;&quot;&gt;복합식별자&lt;/td&gt;
&lt;td style=&quot;width: 71.4728%; height: 17px;&quot;&gt;둘 이상의 속성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.1007%; height: 17px;&quot;&gt;대체여부&lt;/td&gt;
&lt;td style=&quot;width: 15.4264%; height: 17px;&quot;&gt;본질식별자&lt;/td&gt;
&lt;td style=&quot;width: 71.4728%; height: 17px;&quot;&gt;실제 업무에 필요하여 만들어짐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 13.1007%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 15.4264%; height: 17px;&quot;&gt;인조식별자&lt;/td&gt;
&lt;td style=&quot;width: 71.4728%; height: 17px;&quot;&gt;관계 구성을 위해 인위적으로 만들어짐&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;span style=&quot;background-color: #f3c000;&quot;&gt;식별자 관계, 비식별자 관계&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 41.9379%;&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;식별자 관계&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 44.845%;&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;비식별자 관계&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;목적&lt;/td&gt;
&lt;td style=&quot;width: 41.9379%;&quot;&gt;강한 연결관계 표현&lt;/td&gt;
&lt;td style=&quot;width: 44.845%;&quot;&gt;약한 연결관계 표현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;자식 주식별자 관계&lt;/td&gt;
&lt;td style=&quot;width: 41.9379%;&quot;&gt;자식 주식별자의 구성에 포함&lt;/td&gt;
&lt;td style=&quot;width: 44.845%;&quot;&gt;자식 일반속성에 포함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;표기법&lt;/td&gt;
&lt;td style=&quot;width: 41.9379%;&quot;&gt;실선&lt;/td&gt;
&lt;td style=&quot;width: 44.845%;&quot;&gt;점선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;기타 고려사항&lt;/td&gt;
&lt;td style=&quot;width: 41.9379%;&quot;&gt;반드시 부모 엔티티에 종속&lt;br /&gt;SQL 조인 최소화&lt;/td&gt;
&lt;td style=&quot;width: 44.845%;&quot;&gt;약한 종속관계&lt;br /&gt;자식 주식별자 구성 독립적&lt;br /&gt;부모쪽의 관계 참여 선택적&lt;br /&gt;부모없이 자식 생성가능&lt;br /&gt;부모가 먼저 소멸할 경우에도 사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2장 데이터 모델과 SQL&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 정규화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;정규화&lt;/span&gt; : 입력/수정/삭제/ 성능은 향상, 조회성능은 향상될수도 저하될수도&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1차 : 모든 속성은 반드시 하나의 값을 가져야함 &amp;rarr; &lt;span style=&quot;background-color: #f3c000;&quot;&gt;원자값&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;2차 : 엔티티의 일반속성은 주식별자 전체에 종속 &amp;rarr; &lt;span style=&quot;background-color: #f3c000;&quot;&gt;완전 종속&lt;/span&gt; = &lt;b&gt;부분 함수 종속 제거&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3차 : 엔티티의 일반속성 간에는 서로 종속 X &amp;rarr; &lt;span style=&quot;background-color: #f3c000;&quot;&gt;이행 종속 제거&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;BCNF&lt;/span&gt; : 결정자 후보키가 아닌 종속 제거&lt;/li&gt;
&lt;li&gt;후보키란 기본키에 속하는 키를 말함 &amp;rarr; 즉, 기본키에 속하지 않는 속성이 다른 속성을 결정하면 안됨&lt;/li&gt;
&lt;li&gt;4차 : 다치 종속 제거&lt;/li&gt;
&lt;li&gt;5차 : 조인 종속 제거&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반정규화 : 정규화된 엔티티, 속성, 관계에 대해 성능향상과 개발운영의 단순화를 위해 중복, 통합 분리 등을 수행하는 기법 &amp;rarr; 조회시 성능 향상&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. NULL 속성의 이해&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;null: 모르는 값 &amp;rarr; &amp;nbsp;0이나 공백과는 다름&lt;/li&gt;
&lt;li&gt;not null, pk로 정의되지 않은 데이터 유형은 null 값 포함 가능&lt;/li&gt;
&lt;li&gt;null + 연산자 결과 &amp;rarr; null&amp;nbsp;&lt;/li&gt;
&lt;li&gt;null 비교 결과 &amp;rarr; unknown 또는 false&lt;/li&gt;
&lt;li&gt;NVL(oracle) = ISNULL(sql server) _같은 의미&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2과목 SQL 기본 및 활용&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1장 SQL 기본&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 관계형 데이터베이스 개요&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;DML 데이터 조작어 : select / insert / update / delete&lt;/li&gt;
&lt;li&gt;DDL 데이터 정의어 : create / alter / drop / rename / truncate&lt;/li&gt;
&lt;li&gt;DCL 데이터 제어어 : grant / revoke&lt;/li&gt;
&lt;li&gt;TCL 트랜잭션 제어어 : commit / rollback&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. SELECT 문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순서 : FROM &amp;rarr; WHERE &amp;rarr; GROUP BY &amp;rarr; HAVING &amp;rarr; ORDER BY&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구문 : SELECT [ALL/DISTINCT] 컬럼 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;뒤에 나오는 WHERE 부터는 선택이나 SELECT, FROM은 필수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT List에 서브쿼리 사용가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;3. 함수(FUNCTION)&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;LOWER : 문자열을 소문자로&lt;/li&gt;
&lt;li&gt;UPPER : 문자열을 대문자로&lt;/li&gt;
&lt;li&gt;ASCII : 문자나 숫자의 ASCII 값 반환&lt;/li&gt;
&lt;li&gt;CHR : ASCII 값에 해당하는 문자 반환&lt;/li&gt;
&lt;li&gt;CONCAT : 문자열1, 2를 연결&lt;/li&gt;
&lt;li&gt;ex) CONCAT(&amp;lsquo;RDBMS&amp;rsquo;,&amp;lsquo; SQL&amp;rsquo;) &amp;rarr; &amp;lsquo;RDBMS SQL&amp;rsquo;&lt;/li&gt;
&lt;li&gt;|| : 문자 연결&amp;nbsp;&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;e.g. A || 2 = A2&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;SUBSTR : 문자열 중 m위치에서 n개의 문자 반환 &amp;rarr; 이때 0부터시작아님 주의!
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;e.g. SUBSTR(&amp;lsquo;SQL Expert&amp;rsquo;,5,3) &amp;rarr; &amp;lsquo;Exp&amp;rsquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LENGTH : 문자열 길이를 숫자 값으로 반환&lt;/li&gt;
&lt;li&gt;LTRIM : 왼쪽부터 확인해서 지정문자 나타나면 제거&lt;/li&gt;
&lt;li&gt;ex) LTRIM(&amp;lsquo;xxxYYZZxYZ&amp;rsquo;,&amp;lsquo;x&amp;rsquo;) &amp;rarr; &amp;lsquo;YYZZxYZ&amp;rsquo;&lt;/li&gt;
&lt;li&gt;TRIM : 양 끝 확인해서 지정문자 나타나면 제거&lt;/li&gt;
&lt;li&gt;ex) (&amp;lsquo;x&amp;rsquo; FROM &amp;lsquo;xxYYZZxYZxx&amp;rsquo;) &amp;rarr; &amp;lsquo;YYZZxYZ&amp;rsquo;&lt;/li&gt;
&lt;li&gt;REPLCAE(문자열, 찾는문자열, [변경할문자열]) : 변경할문자 미입력시 제거&lt;/li&gt;
&lt;li&gt;&amp;lt;&amp;gt; 비교 &amp;rarr; is not 같은 느낌&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;숫자형&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SIGN(숫자) : 숫자가 양수면1 음수면-1 0이면 0 반환&lt;/li&gt;
&lt;li&gt;MOD(숫자1, 숫자2) : 숫자1을 숫자2로 나누어 나머지 반환 &amp;rarr; 숫자2가 0이면 숫자1반환&lt;/li&gt;
&lt;li&gt;CEIL(숫자) : 올림&lt;/li&gt;
&lt;li&gt;FLOOR(숫자) : 내림&lt;/li&gt;
&lt;li&gt;ROUND(38.5235,3) -&amp;gt; 38.524 다음 자리에서 반올림&lt;/li&gt;
&lt;li&gt;TRUNC(38.5235,3) -&amp;gt; 38.523 해당자리까지 남기고 버림&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;날짜형&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SYSDATE : 현재날짜와 시각 출력&lt;/li&gt;
&lt;li&gt;EXTRACT : 날짜에서 데이터 출력&lt;/li&gt;
&lt;li&gt;TO_DATE(&amp;rsquo;날짜&amp;rsquo;, &amp;lsquo;YYYY.MM.DD HH24:MI:SS&amp;rsquo;) &amp;rarr; 문자를 날짜로 변환.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;만약 MM까지만 있거나 하면 뒤는 자동으로 1일, 0시, 0분..이런식으로 바뀜&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000; background-color: #9feec3;&quot;&gt; 1 = 하루, 1/24 = 1시간, 1/24/60 = 1분&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;집계함수&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;COUNT&lt;/li&gt;
&lt;li&gt;SUM&lt;/li&gt;
&lt;li&gt;AVG&lt;/li&gt;
&lt;li&gt;MIN&lt;/li&gt;
&lt;li&gt;MAX&lt;/li&gt;
&lt;li&gt;VARIANCE 분산&lt;/li&gt;
&lt;li&gt;STDDEV 표준편차&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;NULL 함수 및 치환함수&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NVL(인수1, 인수2) : 인수1이 NULL일 경우 인수2반환, 아니면 인수1 &amp;rarr; SQL Sever의 ISNULL과 동일&lt;/li&gt;
&lt;li&gt;NVL2(a,b,c) : a가 null이 아니면 b 맞으면 c 반환&lt;/li&gt;
&lt;li&gt;NULLIF(인수1, 인수2) : 인수1==인수2이면 NULL반환, 아니면 인수1&lt;/li&gt;
&lt;li&gt;COALESCE(인수1, 인수2, 인수3&amp;hellip;) : NULL이 아닌 최초의 인수 반환&lt;/li&gt;
&lt;li&gt;CASE 구문 &amp;amp; WHEN 조건 THEN &amp;amp; ELSE 처리 : 별도의 ELSE가 없으면 NULL이 ELSE의 디폴트가됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[CASE 구문 예시]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CASE WHEN 조건 = &amp;lsquo;a&amp;rsquo; THEN &amp;lsquo;b&amp;rsquo;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;== CASE 조건 WHEN &amp;lsquo;a&amp;rsquo; THEN &amp;lsquo;b&amp;rsquo; (단순표현, =만 있는 경우)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;== DECODE (조건, &amp;lsquo;a&amp;rsquo;, &amp;lsquo;b&amp;rsquo;) : ELSE NULL 생략 &amp;rarr; (값1, 리턴1, 값2, 리턴2&amp;hellip;., ELSE값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;(CASE문에서는 alias 쓸수없음: SELECT 절 이전에 처리되는 부분에서는 alias 사용x)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;4. WHERE 절&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/li&gt;
&lt;li&gt;비교연산자&lt;/li&gt;
&lt;li&gt;문자, 숫자, 표현식&lt;/li&gt;
&lt;li&gt;비교 컬럼명(JOIN 사용시)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특징&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISNULL, IS NOT NULL 사용하여 NULL 비교&lt;/li&gt;
&lt;li&gt;처리 우선순위 : AND &amp;gt; OR&lt;/li&gt;
&lt;li&gt;집계함수 사용 x&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;5. ORDER BY 절&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ORDER BY 절에 칼럼명 대신 alias 나 컬럼 순서 나타내는 정수도 사용 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오름차순(ASC) 기본값으로 적용. DESC 명시하여 내림차순 정렬 처리 가능.&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;c.f. Oracle에서는 NULL을 가장 큰 값으로 취급&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL Server에서는 NULL을 가장 작은 값으로 취급&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;6. GROUP BY, HAVING 절&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP BY 절을 통해 소그룹별 기준을 정한 후, SLECT 절에 집계합수 사용&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;GROUP BY 절에서는 SELECT 절과 달리 ALIAS 사용 불가&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;WHERE절이 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;GROUP BY 절에 의해 그룹화된 데이터 중 HAVING 절 만족하는 내용만 출력&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;WHERE 조건절은 GROUP BY 의 HAVING 조건보다 선행하여 실행한다.&lt;/span&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;7. 조인 (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;일반적인 경우 PK나 FK 값의 연관에 의해 조인 성립 &amp;rarr; 관계가 없어도 조인 성립하는 경우도 존재&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DBMS 옵티마이저는 항상 2개씩 테이블 짝을 지어 조인함 &amp;rarr; ex) A join B joind C는 에러&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N개의 테이블로부터 원하는 데이터를 조회하려면 최소 N-1개의 조인 조건이 필요하다&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;USING 조건절 : JOIN 컬럼에 대해서 ALIAS 나 테이블 이름 붙일 수 없음 &amp;rarr; equi, natural등에서 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;919&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFNvdb/btsKLZ9R3YU/2hFOpQTz110wDqhTfAJt4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFNvdb/btsKLZ9R3YU/2hFOpQTz110wDqhTfAJt4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFNvdb/btsKLZ9R3YU/2hFOpQTz110wDqhTfAJt4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFNvdb%2FbtsKLZ9R3YU%2F2hFOpQTz110wDqhTfAJt4k%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;1280&quot; height=&quot;919&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;919&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;INNER JOIN (EQUI JOIN)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구문:&amp;nbsp; SELECT - FROM - WHERE 테이블1.컬럼1 = 테이블2.컬럼2;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; ANSI/ISO SQL 표준 : SELECT FROM A. INNER JOIN B. ON A.컬럼 = B.컬럼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 테이블의 중복되는 속성이 같은것만 남기는 조인 &amp;rarr; 이때 속성이 두번나오게 되므로 하나를 제거하면 natural 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;&amp;lsquo;=&amp;rsquo; 연산자 이외의 연산자 사용시 모두 NON EQUI 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;&lt;span style=&quot;background-color: #9feec3; color: #333333; text-align: start;&quot;&gt;OUTER JOIN&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LEFT / RIGHT / FULL&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 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;2. RIGHT OUTER JOIN: LEFT OUTER JOIN의 반대로 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. FULL OUTER JOIN: 모든 데이터를 읽어 조인하여 결과 생성&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #9feec3; color: #333333; text-align: start;&quot;&gt;NATURAL JOIN&lt;/span&gt;&lt;/b&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;NATURAL JOIN은 ON절 사용 불가&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;오라클에서는 JOIN, USING으로 NATURAL JOIN 가능 e.g. FROM A JOIN B USING (컬럼1);&lt;/span&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;span style=&quot;color: #333333; text-align: start; background-color: #f3c000;&quot;&gt;[ORACLE, SQL Server 비교]&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;1. ORACLE&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;&amp;nbsp;1) 공백은 null로 인식. ' ' = null&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;&amp;nbsp;2) NVL&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3) 오라클에서는 OUTER JOIN을 (+) 기호로도 처리가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; ANSI 문장으로 변경하려면 left/right 명시와 on절을 추가해줘야함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4) auto commit mode: off&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;where A.ID = B.ID(+)&amp;nbsp; &lt;span style=&quot;color: #9d9d9d;&quot;&gt;-- (+)붙은 반대쪽이 주대상이됨 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AND B.이름(+) = 'K' &lt;span style=&quot;color: #9d9d9d;&quot;&gt;-- (+)가 붙은 조건은 ON절에 포함 &lt;/span&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;FROM A LEFT OUTER JOIN B&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ON (A.ID = B.ID AND B.이름 = 'K')&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;span style=&quot;color: #333333; text-align: start;&quot;&gt;2. SQL Server&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1) 공백 ' ' 은 null x&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2) ISNULL&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3) DML, DDL auto commit 기본값&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 data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DUAL 테이블&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 SYS가 소유하며 모든 사용자가 액세스 가능한 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT ~ FROM ~의 형식을 갖추기위한 일종의 더미 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DUMMY라는 문자열 유형의 칼럼에 &amp;lsquo;x&amp;rsquo;라는 값이 들어있는 행을 1건 포함&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 data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SELECT 문장 실행 순서&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FROM &amp;rarr; WHERE &amp;rarr; GROUP BY &amp;rarr; HAVING &amp;rarr; SELECT &amp;rarr; ORDER BY (ALIAS 사용가능)&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;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2장 SQL 활용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 서브쿼리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;서브 쿼리&lt;/b&gt; : 하나의 SQL문안에 포함되어 있는 또 다른 SQL문, 알려지지 않은 기준을 이용한 검색에 사용.&lt;/p&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;span style=&quot;background-color: #9feec3;&quot;&gt;단일 행 또는 복수 행 비교 연산자와 함께 사용 가능&lt;/span&gt;하다. 단일 행 비교 연산자는 서브쿼리의 결과가 반드시 1건 이하여야 하고 복수행 비교 연산자는 결과 건수와 상관없다.&lt;/li&gt;
&lt;li&gt;서브쿼리에서 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;ORDER BY 사용 불가&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;SELECT, FROM, WHERE, HAVING, ORDER BY, INSERT-VALUES, UPDATE-SET 절에서 사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;스칼라 서브쿼리&lt;/b&gt;&lt;/span&gt; : 컬럼을 반환하는 서브쿼리. 주로 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;SELECT&lt;/span&gt;에서 사용 &amp;rarr; FROM절에는 올수없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;인라인 뷰 (다이나믹 뷰)&lt;/b&gt;&lt;/span&gt; : &lt;span style=&quot;background-color: #9feec3;&quot;&gt;FROM&lt;/span&gt; 절에서 사용되는 서브쿼리 &amp;rarr; 메인쿼리에서 사용가능. 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;중첩 서브 쿼리&lt;/b&gt; &amp;rarr; &lt;span style=&quot;background-color: #9feec3;&quot;&gt;WHERE, HAVING&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;동작 방식에 따른 서브쿼리 분류&lt;/b&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;span style=&quot;background-color: #f3c000;&quot;&gt;비연관 서브쿼리&lt;/span&gt; : 서브쿼리가 메인쿼리 칼럼 안가짐. 메인쿼리에 값 제공 목적&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;연관 서브쿼리&lt;/span&gt; : 서브쿼리가 메인쿼리 칼럼 가짐&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;반환 데이터에 따른 서브쿼리 종류&lt;/b&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;span style=&quot;background-color: #f3c000;&quot;&gt;단일행 서브쿼리&lt;/span&gt; : 실행결과 1건 이하&lt;/li&gt;
&lt;li&gt;&amp;rarr; 단일 행 비교 연산자 : =,&amp;lt;,&amp;gt;,&amp;lt;&amp;gt; 등&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;다중행 서브쿼리&lt;/span&gt; : 실행결과 여러 건
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;WHERE COL1 IN(&amp;rsquo;A&amp;rsquo;, &amp;lsquo;B&amp;rsquo;)는 COL1 = &amp;lsquo;A&amp;rsquo; or COL1 = &amp;lsquo;B&amp;rsquo;를 의미함. 그래서 IN안에 null이 와도 무시됨&lt;/li&gt;
&lt;li&gt;WHERE COL1 NOT IN(a, b) 은 col1 &amp;ne; a and col1 &amp;ne; b의미. 그래서 NULL 포함되면 항상 거짓&lt;/li&gt;
&lt;li&gt;EXIST는 True / False 반환 &amp;rarr; WHERE EXIST (서브쿼리)&lt;/li&gt;
&lt;li&gt;WHERE COL1 = ALL (서브쿼리)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;rarr; 다중 행 비교 연산자 : IN, ALL, ANY, SOME 등 &amp;rarr; 단일 행 비교 연산자로도 사용가능&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;다중컬럼 서브쿼리&lt;/span&gt; : 실행결과 컬럼 여러 개 &amp;rarr; SQL Server에서는 X&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;뷰 View&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뷰는 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;정의만 갖고있으며&lt;/span&gt; 실행 시점에 쿼리 재작성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 데이터를 저장하고 있는 뷰를 생성하는 기능을 지원하는 DBMS도 있다&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;span style=&quot;background-color: #9feec3;&quot;&gt;장점&lt;/span&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;/li&gt;
&lt;li&gt;편리성 : 복잡한 질의를 뷰로 생성하여 질의 단순하게 가능. 또한 해당 SQL 자주 사용시 뷰를 이용하면 편리&lt;/li&gt;
&lt;li&gt;보안성 : 직원의 급여정보같이 숨기고 싶은 정보 빼고 뷰 생성 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. 집합 연산자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UNION: 중복행 제거. 합집합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UNION ALL: 중복행 포함 모든 행 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;INTERSECT: 교집합&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EXCEPT (ORACLE: MINUS): 첫번째 SELECT 문의 결과에서 두번째 SELECT문을 뺀 차집합&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;3. 그룹 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;ROLLUP&lt;/span&gt;: 소계와 총계 생성을 위한 함수. 컬럼 순서에 따라 결과값이 달라질 수 있음. (c.f. cube, grouping set은 순서상관 x)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT&amp;nbsp;COL1,&amp;nbsp;SUM(COL2) &lt;br /&gt;FROM&amp;nbsp;T1 &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;ROLLUP(COL1) &lt;br /&gt;--&amp;nbsp;COL1&amp;nbsp;별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;총계 &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;ROLLUP(COL1,&amp;nbsp;COL2) &lt;br /&gt;--&amp;nbsp;COL1,&amp;nbsp;COL2&amp;nbsp;별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL1별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;총계 &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;ROLLUP(COL1,&amp;nbsp;COL2,&amp;nbsp;COL3) &lt;br /&gt;--&amp;nbsp;COL1,&amp;nbsp;COL2,&amp;nbsp;COL3&amp;nbsp;별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL1,&amp;nbsp;COL2별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL1&amp;nbsp;별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;총계 &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;ROLLUP((COL1,&amp;nbsp;COL2),&amp;nbsp;COL3) &lt;br /&gt;--&amp;nbsp;COL1,&amp;nbsp;COL2,&amp;nbsp;COL3&amp;nbsp;별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL1,&amp;nbsp;COL2별&amp;nbsp;그룹핑&amp;nbsp;+&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;span style=&quot;background-color: #9feec3;&quot;&gt;CUBE&lt;/span&gt;: 모든 경우의 수에 대해 소계와 총계 생성. ROLLUP에 비해 시스템 부하 심함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SELECT&amp;nbsp;COL1,&amp;nbsp;SUM(COL2) &lt;br /&gt;FROM&amp;nbsp;T1 &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;CUBE(COL1) &lt;br /&gt;--&amp;nbsp;COL1&amp;nbsp;별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;총계 &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;ROLLUP(COL1,&amp;nbsp;COL2) &lt;br /&gt;--&amp;nbsp;COL1,&amp;nbsp;COL2&amp;nbsp;별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL1별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL2별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;총계 &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;ROLLUP(COL1,&amp;nbsp;COL2,&amp;nbsp;COL3) &lt;br /&gt;--&amp;nbsp;COL1,&amp;nbsp;COL2,&amp;nbsp;COL3&amp;nbsp;별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL1,&amp;nbsp;COL2별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL2,&amp;nbsp;COL3&amp;nbsp;+&amp;nbsp;COL1,&amp;nbsp;COL3&amp;nbsp;+&amp;nbsp;COL1&amp;nbsp;+&amp;nbsp;COL2&amp;nbsp;+&amp;nbsp;COL3&amp;nbsp;+&amp;nbsp;총.. &lt;br /&gt;GROUP&amp;nbsp;BY&amp;nbsp;ROLLUP((COL1,&amp;nbsp;COL2),&amp;nbsp;COL3) &lt;br /&gt;--&amp;nbsp;COL1,&amp;nbsp;COL2,&amp;nbsp;COL3&amp;nbsp;별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL1,&amp;nbsp;COL2별&amp;nbsp;그룹핑&amp;nbsp;+&amp;nbsp;COL3별&amp;nbsp;그룹핑&amp;nbsp;+&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;span style=&quot;background-color: #9feec3;&quot;&gt;GROUPING SETS&lt;/span&gt;: 각 대상 마다 그룹핑한 결과값 출력 (총계 x)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUPING&amp;nbsp;SETS(COL1)&amp;nbsp;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;--&amp;nbsp;GROUP&amp;nbsp;BY&amp;nbsp;COL1과&amp;nbsp;동일&lt;/span&gt; &lt;br /&gt;GROUPING&amp;nbsp;SETS(COL1,&amp;nbsp;COL2)&amp;nbsp;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;--&amp;nbsp;COL1&amp;nbsp;그룹&amp;nbsp;+&amp;nbsp;COL2&amp;nbsp;그룹&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;GROUPING&amp;nbsp;SETS(COL1,&amp;nbsp;COL2,&amp;nbsp;()) &lt;br /&gt;GROUPING&amp;nbsp;SETS(COL1,&amp;nbsp;ROLLUP(COL2))&amp;nbsp; &lt;br /&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;--&amp;nbsp;위의&amp;nbsp;두개&amp;nbsp;동일 &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;--&amp;nbsp;COL1&amp;nbsp;그룹&amp;nbsp;+&amp;nbsp;COL2&amp;nbsp;그룹&amp;nbsp;+&amp;nbsp;총계&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;GROUPING 함수&lt;/span&gt;: 시행에 참여하지 않은(NULL) 값은 1, 그렇지 않은 경우는 0 으로 치환.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; &lt;span style=&quot;background-color: #f3c000;&quot;&gt;NULL로 되어있는 값들을 소계, 총계로 표시해주기 위한 방안 (CASE문 활용)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;4. 윈도우 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;순위 관련&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RANK : 동일한 값에 대해서는 동일한 순위를 부여 (1,2,2,4)&lt;/li&gt;
&lt;li&gt;DENSE_RANK : 동일한 순위를 하나의 등수로 간주 (1,2,2,3)&lt;/li&gt;
&lt;li&gt;ROW_NUMBER : 그냥 처음 ~ 마지막까지 고유한 순위 부여, 중복 X&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;행 순서 관련&lt;/b&gt; - SQL Server 지원 X&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;FIRST_VALUE : 파티션별 윈도우의 처음 값&lt;/li&gt;
&lt;li&gt;LAST_VALUE : 파티션별 윈도우의 마지막 값&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;LAG&lt;/span&gt; : 파티션별 윈도우에서 이전 몇 번째 행의 값&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;LEAD&lt;/span&gt; : 파티션별 윈도우에서 이후 몇 번째 행의 값&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;비율 관련&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;RATIO_TO_REPORT : 파티션 내 전체 SUM에 대한 행별 칼럼 값의 백분율을 소수점으로 구할 수 있다. &amp;gt;0, &amp;lt;=1&lt;/li&gt;
&lt;li&gt;PERCENT_RANK : 파티션별 윈도우에서 처음 값을 0, 마지막 값을 1로 하여 행의 순서별 백분율을 구한다. 값은 상관 X. 0&amp;gt;=,&amp;lt;=1&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot; data-token-index=&quot;0&quot;&gt;CUME_DIST&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 현재 행보다 작거나 같은 건수에 대한 누적백분율을 구한다. &amp;gt;0, &amp;lt;=1. 이것도 값은 상관 X&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;NTILE : (그룹을 나눠주기 위한 함수) 파티션별 전체 건수를 인수 값으로 N등분한 결과를 구할 수 있다. &amp;rarr; 예를 들어 NTILE(5)이고 전체 행 수가 12개이면 1이 3개, 2가 3개, 3,4,5가 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;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ROWS, RANGE&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ROWS는 행 단위, RANGE는 집합(PARTITON) 단위라고 보면됨&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;493&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUacSO/btsKLrr9LQG/wWCxnKk4K3m7AmLGKAan51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUacSO/btsKLrr9LQG/wWCxnKk4K3m7AmLGKAan51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUacSO/btsKLrr9LQG/wWCxnKk4K3m7AmLGKAan51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUacSO%2FbtsKLrr9LQG%2FwWCxnKk4K3m7AmLGKAan51%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;1280&quot; height=&quot;493&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;493&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RANGE BETWEEN &lt;span style=&quot;background-color: #9feec3;&quot;&gt;start_point&lt;/span&gt; AND &lt;span style=&quot;background-color: #9feec3;&quot;&gt;end_point&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CURRENT ROW 현재행&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;UNBOUUNDED PRECEDING&lt;/span&gt; : 첫번째 행. (end point에서 사용불가)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;UNBOUUNDED FOLLOWING&lt;/span&gt; : 마지막 행. (start point에서 사용불가)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨 처음 행과 맨 마지막 행을 설정하는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*&lt;span style=&quot;background-color: #9feec3;&quot;&gt;기본값&lt;/span&gt;: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW&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;size18&quot;&gt;5. Top N 쿼리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;ROWNUM&lt;/b&gt;&lt;/span&gt;: 번호를 매기는 내장함수.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 저장된 데이터를 그대로 두면서 각 행에 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;u&gt;순차적인&lt;/u&gt;&lt;/span&gt; 번호를 부여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;테이블 첫 행&lt;/span&gt;부터 차례대로 순회. 중간에 건너뛰는것 X&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단, &lt;u&gt;WHERE절에 ROWNUM 사용한 조건식이 FALSE가 되면 순회를 멈추고 결과를 반환&lt;/u&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;e.g. SELECT ROWNUM, EMPNO, ENAME, SAL&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FROM EMP&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WHERE ROWNUM = 5;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 결과값은 아무것도 출력 되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ROWNUM은 1부터 순차적으로 전개되야 하는데, WHERE 조건에 ROWNUM = 5 라고 선언했기 때문.&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;ORDER BY와 ROWNUM와 함께 사용할 때는 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;u&gt;서브쿼리를 사용&lt;/u&gt;&lt;/span&gt;해야 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; ORDER BY가 ROWNUM 실행 이후에 적용되기 때문에 순서가 뒤죽박죽 됨.&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;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;FETCH 절&lt;/b&gt;&lt;/span&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;ORDER BY 절 뒤에 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[구문]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OFFSET: 건너뛸 행의 수 (필수 X)&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;FIRST: OFFSET 쓰지 않았을때 처음부터 N 행 출력 명령&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NEXT: OFFSET 썼을때 제외한 행 다음부터 N개 행 출력&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;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;TOP N 쿼리&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL Server 에서의 상위 N개 행 추출 문법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WITH TIES 사용하여 동순위 함께 출력 -&amp;gt; &lt;span style=&quot;background-color: #9feec3;&quot;&gt;출력 개수가 지정 등수보다 많을 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WITH TIES&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;size18&quot;&gt;6. 계층형 쿼리&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;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;프. 자. 부. 순&lt;/b&gt;&lt;/span&gt;: prior 자식 = 부모 의 경우 순방향 전개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;프. 부. 자. 역&lt;/b&gt;&lt;/span&gt;: prior 부모 = 자식 의 경우 역방향 전개&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;START&amp;nbsp;WITH&lt;/b&gt; -- 계층 구조 전개의 시작 위치 지정. 루트(ROOT) 결정 &lt;br /&gt;&lt;b&gt;CONNECT&amp;nbsp;BY&lt;/b&gt;&amp;nbsp;--&amp;nbsp;다음에&amp;nbsp;전개될&amp;nbsp;자식&amp;nbsp;데이터&amp;nbsp;지정 &lt;br /&gt;&lt;b&gt;PRIOR&amp;nbsp;&lt;/b&gt; &lt;br /&gt;--&amp;nbsp;CONNECT&amp;nbsp;BY&amp;nbsp;절에&amp;nbsp;사용되며,&amp;nbsp;현재&amp;nbsp;읽은&amp;nbsp;칼럼을&amp;nbsp;지정한다.&amp;nbsp; &lt;br /&gt;--&amp;nbsp;PRIOR&amp;nbsp;자식&amp;nbsp;=&amp;nbsp;부모&amp;nbsp;형태를&amp;nbsp;사용하면&amp;nbsp;(부모-&amp;gt;자식)&amp;nbsp;방향으로&amp;nbsp;전개하는&amp;nbsp;순방향&amp;nbsp;전개를한다.&amp;nbsp; &lt;br /&gt;--&amp;nbsp;PRIOR&amp;nbsp;부모&amp;nbsp;=&amp;nbsp;자식은&amp;nbsp;역방향 &lt;br /&gt;--&amp;nbsp;PK항목(not&amp;nbsp;null,&amp;nbsp;유니크)과&amp;nbsp;부모항목(null가능)으로&amp;nbsp;구성됨 &lt;br /&gt;&lt;b&gt;NOCYCLE&lt;/b&gt;&amp;nbsp;--&amp;nbsp;동일한&amp;nbsp;데이터가&amp;nbsp;전개되지&amp;nbsp;않음 &lt;br /&gt;&lt;b&gt;ORDER&amp;nbsp;SIBLINGS&amp;nbsp;BY&lt;/b&gt; -- 형제 노드간의 정렬 수행 순서&lt;br /&gt;&lt;b&gt;WHERE&lt;/b&gt;&amp;nbsp;--&amp;nbsp;모든&amp;nbsp;전개를&amp;nbsp;수행한&amp;nbsp;후에&amp;nbsp;지정된&amp;nbsp;조건을&amp;nbsp;만족하는&amp;nbsp;데이터만&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;7. PIVOT 절과 UNPIVOT 절&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;span style=&quot;background-color: #f3c000;&quot;&gt;PIVOT&lt;/span&gt;&lt;/b&gt;: 행(row, 속성값)을 열(column, 헤더)로 바꾼다. 지정된 컬럼의 각 행 속성값들이 새로운 컬럼 헤더가 되고 이에 맞게 전체 속성값들이 재배치 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;rarr; e.g. &lt;span style=&quot;background-color: #9feec3;&quot;&gt;각 직책이 부서별로 몇 명씩 있는지 etc&amp;nbsp;&lt;/span&gt;&lt;/span&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;FROM (SELECT E.JOB, D.DNAME&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FROM EMP E.DEPTNO = D.DEPTNO)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;PIVOT&lt;/span&gt; (COUNT(*) &lt;span style=&quot;background-color: #9feec3;&quot;&gt;FOR&lt;/span&gt; DNAME &lt;span style=&quot;background-color: #9feec3;&quot;&gt;IN&lt;/span&gt; ('ACCOUNTING' AS ACCOUNTING,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'RESEARCH' AS RESEARCH,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 'SALES' AS SALES));&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;*PIVOT 절은 내부적으로 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;u&gt;첫번째 컬럼에 대하여 GROUP BY 연산을 포함&lt;/u&gt;&lt;/span&gt;하고 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 속성값들이 PIVOT을 거치면 각각의 컬럼으로 지정된다.&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;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;UNPIVOT&lt;/b&gt;&lt;/span&gt;: PIVOT과 반대로 열을 행으로 바꾼다. 컬럼 헤더들이 한 컬럼의 각 행 속성값이 되고 이에 맞게 전체 속성값들이 재배치&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;FROM (SELECT * FROM 평균기온)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;UNPIVOT&lt;/span&gt; (기온 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;FOR&lt;/span&gt; 연도 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;IN&lt;/span&gt; (Y2018 AS '2018년'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y2019 AS '2019년'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y2020 AS '2020년'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y2021 AS '2021년'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Y2022 AS '2022년' ));&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;c.f. IN 연산자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;id IN (1, 2);&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;id = 1 OR id = 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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;8. 정규표현식 (Regular Expression)&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;span style=&quot;background-color: #9feec3;&quot;&gt;문법적인 특별한 의미&lt;/span&gt;로 사&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;&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;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;$ : 문자열 끝 지점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;. : 임의의 한 문자 e.g. a.b: acb, a-b, a1b etc..&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-11-17 012310.png&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3Rn3s/btsKNfcEIdN/hoQKwWCvRQEVKNL4TfIsuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3Rn3s/btsKNfcEIdN/hoQKwWCvRQEVKNL4TfIsuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3Rn3s/btsKNfcEIdN/hoQKwWCvRQEVKNL4TfIsuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3Rn3s%2FbtsKNfcEIdN%2FhoQKwWCvRQEVKNL4TfIsuk%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;693&quot; data-filename=&quot;스크린샷 2024-11-17 012310.png&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-11-17 012535.png&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sTQyZ/btsKL7GSrwu/9BN6qrmfnaZe6GdVaLPuYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sTQyZ/btsKL7GSrwu/9BN6qrmfnaZe6GdVaLPuYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sTQyZ/btsKL7GSrwu/9BN6qrmfnaZe6GdVaLPuYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsTQyZ%2FbtsKL7GSrwu%2F9BN6qrmfnaZe6GdVaLPuYk%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;184&quot; data-filename=&quot;스크린샷 2024-11-17 012535.png&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;3장 관리 구문&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. DML&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt; DELETE / DROP / TRUNCATE 차이점&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;color: #333333; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style8&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.9535%;&quot;&gt;&lt;b&gt;DROP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;&lt;b&gt;TRUNCATE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 32.2093%;&quot;&gt;&lt;b&gt;DELETE&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.9535%;&quot;&gt;DDL&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;DDL&lt;/td&gt;
&lt;td style=&quot;width: 32.2093%;&quot;&gt;DML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.9535%;&quot;&gt;Rollback X&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;Rollback X&lt;/td&gt;
&lt;td style=&quot;width: 32.2093%;&quot;&gt;Rollback O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.9535%;&quot;&gt;Auto Commit&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;Auto Commit&lt;/td&gt;
&lt;td style=&quot;width: 32.2093%;&quot;&gt;사용자 commit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.9535%;&quot;&gt;테이블이 사용했던 Storage 모두 Release&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;최초 테이블 생성시 할당된 Storage만 남기고 Release&lt;/td&gt;
&lt;td style=&quot;width: 32.2093%;&quot;&gt;데이터를 모두 삭제해도 Storage Release 안됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.9535%;&quot;&gt;데이터와 구조 동시 삭제&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;데이터만 초기화&lt;/td&gt;
&lt;td style=&quot;width: 32.2093%;&quot;&gt;데이터 일부 또는 전체 삭제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.9535%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.8605%;&quot;&gt;UNDO 데이터생성X &amp;rarr; 빠름&lt;/td&gt;
&lt;td style=&quot;width: 32.2093%;&quot;&gt;UNDO 데이터생성 &amp;rarr; 느림&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;DISTINCT:&lt;/b&gt;&lt;/span&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;DISTINCT (A || B) : A와 B를 &lt;span style=&quot;background-color: #9feec3;&quot;&gt;중복제거&lt;/span&gt;하여 붙여서 문자열로 만듬 &amp;rarr; 합성 연산자&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DELETE(MODIFY) 액션&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CASCADE : 연쇄&lt;/li&gt;
&lt;li&gt;RESTRICT(디폴트)&lt;/li&gt;
&lt;li&gt;NO ACTION : restrict랑 같음&lt;/li&gt;
&lt;li&gt;SET NULL : 참조하고 있는 테이블 삭제될시 값 Null로&lt;/li&gt;
&lt;li&gt;SET DEFAULT&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;INSERT 액션&lt;/b&gt; : 자식테이블에 FK 입력시 부모테이블에 PK가 없는 경우&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AUTOMATIC : MASTER PK 생성 후 child 입력&lt;/li&gt;
&lt;li&gt;SET NULL : Child 키를 null로&lt;/li&gt;
&lt;li&gt;SET DEFAULT&lt;/li&gt;
&lt;li&gt;DEPENDENT : 부모테이블에 PK가 존재할때만 child 입력허용&lt;/li&gt;
&lt;li&gt;NO ACTION&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. TCL&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;COMMIT, ROLLBACK, SAVEPOINT&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;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;트랜잭션&lt;/b&gt;&lt;/span&gt; : 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기위한 작업의 기본 단위&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Atomicity 원자성 : All or Nothing&lt;/li&gt;
&lt;li&gt;Consistency 일관성 : 트랜잭션 실행전에 DB 내용이 잘못되어있지않으면 실행후에도 잘못된 내용이 있으면 안됨&lt;/li&gt;
&lt;li&gt;Isolation 고립성 : 트랜잭션 실행 도중에 다른 트랜잭션 영향받으면 X&lt;/li&gt;
&lt;li&gt;Durability 영속성 : 트랜잭션이 성공하면 갱신한 내용이 데이터베이스에 영구 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;3. DDL&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CREATE, ALTER, DROP, TRUNCATE, RENAME&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;span style=&quot;background-color: #9feec3;&quot;&gt;참조 무결성&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;782&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwFTjX/btsKKPfY2dX/SosKkB2cG4LLKHvN1ZO3DK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwFTjX/btsKKPfY2dX/SosKkB2cG4LLKHvN1ZO3DK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwFTjX/btsKKPfY2dX/SosKkB2cG4LLKHvN1ZO3DK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwFTjX%2FbtsKKPfY2dX%2FSosKkB2cG4LLKHvN1ZO3DK%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;1192&quot; height=&quot;782&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;782&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;[기타 참고사항]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL 표준 데이터타입&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;VARCHAR, CHAR, VARCHAR2 &amp;rarr; TEXT는 없음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;VARCHAR은 비교시 서로 길이가 다를경우 다른 내용으로 판단&lt;/li&gt;
&lt;li&gt;CAHR은 길이가 다르면 짧은쪽에 공백 추가해서 비교&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;DATE : SYSDATE, &amp;lsquo;20240812&amp;rsquo; (O), 20240812 (X) &amp;rarr; 숫자 입력 불가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 생성 후 복제(CTAS) &amp;rarr; 제약조건 중 NOT NULL만 가져올수있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL : 구조적, 집합적, 선언적 &amp;rarr; 절차적 X&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NULLS LAST : 널값을 가장 큰것으로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;count(*)는 null값도 센다 &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;c.f. count(A.컬럼)의 경우 null 카운트 x&lt;/span&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>SQL</category>
      <category>sql</category>
      <category>sqld #sqld 개념정리</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/49</guid>
      <comments>https://sevenhighball.tistory.com/49#entry49comment</comments>
      <pubDate>Sun, 17 Nov 2024 01:28:42 +0900</pubDate>
    </item>
    <item>
      <title>SQLD 개념정리 07. SQL 기본</title>
      <link>https://sevenhighball.tistory.com/48</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;A. DDL (Data Definition Language)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A.1. CREATE TABLE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 테이블과 컬럼 정의&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 생성된 테이블 구조 확인: DESC 테이블명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A.2. ALTER TABLE 테이블 + 명령어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ADD (컬럼명 데이터유형);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- DROP COLUMN 컬럼명;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- MODIFY (컬럼명1 데이터 유형 DEFAULT_ NOT NULL);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- RENAME COLUMN 컬럼명1 TO 컬럼명2;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- DROP CONSTRAINT 제약조건명;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- ADD CONSTRAINT 제약조건명;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A.3. RENAME TABLE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- RENAME 테이블1 TO 테이블2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A.4. DROP TABLE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- DROP TABLE 테이블;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A.5. TRUMCATE TABLE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- TRUNCATE TABLE 테이블;&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;B. DML (Data Manipulation Language)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B.1. INSERT&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- INSERT INTO 테이블(컬럼명) VALUE (__);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B.2. UPDATE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- UPDATE 테이블 SET 컬럼명 = 값;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B.3. DELETE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- DELETE (FROM) 테이블 WHERE ___;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B.4. SELECT&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- SELECT (DISTINCT) 컬럼명 FROM 테이블;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B.5. 산술연산자, 합성연산자&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;</description>
      <category>SQL</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/48</guid>
      <comments>https://sevenhighball.tistory.com/48#entry48comment</comments>
      <pubDate>Mon, 13 Nov 2023 18:04:24 +0900</pubDate>
    </item>
    <item>
      <title>SQLD 개념정리 06. 정규화/ 반정규화</title>
      <link>https://sevenhighball.tistory.com/47</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;A. 성능 데이터 모델링 정의&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;B. 성능 데이터 모델링 고려사항&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;2. DB 용량 산정&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;4. 용량과 트랜잭션의 유형에 따라 반정규화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 이력모델 조정, PK/ FK 조정, 슈퍼타입/ 서브타입 조정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 성능관점에서 데이터 모델 검증&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;C. 정규화와 성능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 정의: 데이터를 결정하는 결정자에 의해 함수적 종속성을 가지고 있는 일반 속성을 의존자로 하여 입력/ 수정/ 삭제 이상을 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 처리 성능: 조회성능 향상 (반정규화 필요) v.s. 입력/ 수정/ 삭제 성능 향상 (정규화 필요)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;* 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;(e.g. 하나의 속성에 여러 속성값이 배치되어 있는 경우 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;: 함수 종속, 주식별자에 완전종속적이지 않는 속성들 분리. 부분종속 속성들 분리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(e.g. 일부 pk에만 종속되는 속성들은 해당하는 pk와 속성들을 독립적인 엔티티로 분리함)&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;-함수 종속, 일반속성에 종속적인 속성의 분리. 이전종속 속성들 분리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(e.g. 일반 속성들 사이에 종속관계가 있을때는 그 속성들끼리 독립적인 엔티티로 분리)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4MrZe/btsAjPWefMC/2K79O7eM2CtUXBQekyqH6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4MrZe/btsAjPWefMC/2K79O7eM2CtUXBQekyqH6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4MrZe/btsAjPWefMC/2K79O7eM2CtUXBQekyqH6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4MrZe%2FbtsAjPWefMC%2F2K79O7eM2CtUXBQekyqH6k%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;1180&quot; height=&quot;633&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;633&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;D. 반정규화&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;1. 디스크 I/O 양이 많아서 성능이 저하&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&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXrvLn/btsz9yCjwTt/wVpoaPoNCuSjM1sFIBGDaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXrvLn/btsz9yCjwTt/wVpoaPoNCuSjM1sFIBGDaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXrvLn/btsz9yCjwTt/wVpoaPoNCuSjM1sFIBGDaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXrvLn%2Fbtsz9yCjwTt%2FwVpoaPoNCuSjM1sFIBGDaK%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;980&quot; height=&quot;461&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>SQL</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/47</guid>
      <comments>https://sevenhighball.tistory.com/47#entry47comment</comments>
      <pubDate>Mon, 13 Nov 2023 16:39:23 +0900</pubDate>
    </item>
    <item>
      <title>SQLD 개념정리 05. 식별자 (Identifiers)</title>
      <link>https://sevenhighball.tistory.com/46</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;A. 식별자 개념&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;B. 주 식별자, 보조 식별자&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 data-ke-size=&quot;size16&quot;&gt;C. 주 식별자 특징&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 존재성 : 반드시 데이터값이 존재. null 허용x&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 유일성 : &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;주식별자에 의해 모든 인스턴스들이 유일하게 구분되어야 한다.&lt;/span&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;4. 불변성 : 변하지 않는 값이어야 한다.&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;D. 식별자 분류&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;E. 식별자, 비식별자 관계&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-11-10 오후 5.39.38.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHCedO/btsAaGE9f3E/G4745B2ekTjXXaDuISrsU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHCedO/btsAaGE9f3E/G4745B2ekTjXXaDuISrsU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHCedO/btsAaGE9f3E/G4745B2ekTjXXaDuISrsU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHCedO%2FbtsAaGE9f3E%2FG4745B2ekTjXXaDuISrsU0%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;1584&quot; height=&quot;1162&quot; data-filename=&quot;스크린샷 2023-11-10 오후 5.39.38.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;1162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>SQL</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/46</guid>
      <comments>https://sevenhighball.tistory.com/46#entry46comment</comments>
      <pubDate>Fri, 10 Nov 2023 17:40:07 +0900</pubDate>
    </item>
    <item>
      <title>SQLD 개념정리 04. 관계 (Relationship)</title>
      <link>https://sevenhighball.tistory.com/45</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;A. 관계의 개념&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 data-ke-size=&quot;size16&quot;&gt;B. 관계의 분류&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 존재적 관계 = 연관 관계 (e.g. A사원이 개발팀에 소속되어 있다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 행위적 관계 = 의존적 관계 (e.g. A사원이 물품을 주문하여 주문번호를 생성하였다.)&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;C. 관계의 표기법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 관계명 (Membership)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 엔터티가 관계에 참여하는 형태 지칭. 현재형으로 포함. 관계명은 능동/수동 2가지로 표현 (e.g. 포함한다/포함된다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 관계 차수 (Cardinality)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 1:N / 1:1 / N:M&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 관계 선택 사양 (Optionality)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 참여하는 엔터티가 Mandatory(필수참여 관계) 인지, Optional(선택적인 관계) 인지 나타내는 방법.&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;D. 관계의 정의 유의사항&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;- 2개의 엔터티 사이에 정보의 조합이 발생하는가?&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;c.f. 관계 읽기&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;img.png&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;253&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P9B95/btsz9zGtvu0/dDdRVVuquEpo3ZebzJ2jZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P9B95/btsz9zGtvu0/dDdRVVuquEpo3ZebzJ2jZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P9B95/btsz9zGtvu0/dDdRVVuquEpo3ZebzJ2jZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP9B95%2Fbtsz9zGtvu0%2FdDdRVVuquEpo3ZebzJ2jZk%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;501&quot; height=&quot;253&quot; data-filename=&quot;img.png&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;253&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>SQL</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/45</guid>
      <comments>https://sevenhighball.tistory.com/45#entry45comment</comments>
      <pubDate>Fri, 10 Nov 2023 17:19:19 +0900</pubDate>
    </item>
    <item>
      <title>SQLD 개념정리 03. 속성 (Attribute)</title>
      <link>https://sevenhighball.tistory.com/44</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;A. 속성의 개념&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;B. 엔터티, 인스턴스, 속성, 속성값&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;- 1개의 엔터티는 2개 이상의 속성을 갖음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 1개의 속성은 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;C. 속성의 특징&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: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;D. 속성의 분류&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;2. 설계 속성 : 업무상 필요한 데이터외 업무 체계화를 위해 새로만들거나 변형하여 정의하는 속성 (e.g. 부서번호, 부서이름)&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;- 엔터티의 구성방식에 따른 분류&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PK(Primary key), FK(Foreign key), 일반&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;E. 도메인&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;F. 속성의 명명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 해당 업무에서 사용하는 이름 부여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 서술식 속성명 사용X&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;</description>
      <category>SQL</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/44</guid>
      <comments>https://sevenhighball.tistory.com/44#entry44comment</comments>
      <pubDate>Fri, 10 Nov 2023 16:47:32 +0900</pubDate>
    </item>
    <item>
      <title>SQLD 개념정리 02. 엔터티 (Entity)</title>
      <link>https://sevenhighball.tistory.com/43</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;A. 엔터티 개념&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;엔터티 : table&lt;/li&gt;
&lt;li&gt;속성 : column. 업무에서 필요로 하는 인스턴스로 더 이상 분리되지 않는 최소의 데이터 단위.&lt;/li&gt;
&lt;li&gt;인스턴스 : 전체 row = 속성에 대한 value의 집합 = DB에 저장된 데이터 내용의 전체 집합&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B. 엔터티 특징&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;- 유일한 식별자의 의해 식별 가능해야 함. (e.g. 사원번호 O, 사원이름 X : 이름이 식별자일 경우 동명이인 존재시 중복오류발생)&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;- 속성은 필수값이다. (단, 관계 엔터티 제외 e.g. &quot;주문하다&quot;, &quot;결제하다&quot; 등의 관계를 엔터티화 한 것들)&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;C. 관계를 생략해야 하는 경우&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 data-ke-size=&quot;size16&quot;&gt;D. 엔터티 분류&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;1.1. 유형 엔터티 : 물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔터티 (e.g. 사원, 물품, 강사)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.2. 개념 엔터티 : 물리적인 형태X. 관리해야 할 개념적 정보로 구분 (e.g. 조직, 보험상품)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.3. 사건 엔터티 : 업무를 수행함에 따라 발생되는 엔터티. 발생량이 많으며 각종 통계자료에 이용 (e.g. 주문, 청구, 미납)&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;2.1. 기본 엔터티 : Key entity. 해당 업무에 기본적으로 존재하는 엔터티. 다른 엔터티와의 관계에 의해 성성X. 독립적 생성 가능. 타 엔터티의 부모 역할. (e.g. 사원, 부서, 고객)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.2. 중심 엔터티 : 기본 엔터티로부터 발생되고 업무의 중심적인 역할. (e.g. 계약, 접수)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.3. 행위 엔터티 : 2개 이상의 부모 엔터티로부터 발생. 자주 내용이 바뀜. (e.g. 주문내역, 변경이력)&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;E. 엔터티 명명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 현업에서 사용하는 용어 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 약어 사용X&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;</description>
      <category>SQL</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/43</guid>
      <comments>https://sevenhighball.tistory.com/43#entry43comment</comments>
      <pubDate>Fri, 10 Nov 2023 15:59:30 +0900</pubDate>
    </item>
    <item>
      <title>SQLD 개념정리 01. 데이터 모델링의 이해</title>
      <link>https://sevenhighball.tistory.com/42</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;A. 모델링의 이해&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;- 모델링의 특징 3가지&lt;/p&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;li&gt;명확화(정확화) : 애매모호함을 제거하고 누구나 이해가 가능하도록 정확하게 현상을 기술한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 모델링의 관점 3가지&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 관점 : 어떤 데이터와 관계있는지, 데이터간 관계는 무엇인지에 대하여 모델링하는 방법 (data, what)&lt;/li&gt;
&lt;li&gt;프로세스 관점 : 해당 데이터를 가지고 무엇을 해야하는지를 모델링하는 방법 (process, how)&lt;/li&gt;
&lt;li&gt;상관 관점 : 데이터를 가지고하는 일에 따라 데이터가 어떻게 방향을 받고 있는지 모델링하는 방법 (data v.s. process)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B. 데이터 모델의 기본 개념의 이해&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 data-ke-size=&quot;size16&quot;&gt;C. 데이터 모델링의 중요성 및 유의점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 파급효과 (Leverage)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 복잡한 정보요구사항의 간결한 표현 (Conciseness)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터의 품질 (Data quality)&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;D. 데이터 모델링의 3단계 진행&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 data-ke-size=&quot;size16&quot;&gt;E. 프로젝트 생명주기에서 데이터 모델링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 축/ 애플리케이션 축 (Process)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 분석 : 개념적 &amp;amp; 논리적 데이터 모델링 (프로세스 모델링)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 설계 : 물리적 데이터 모델링 (AP 설계)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 개발 : DB 구축 (AP 설계)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 테스트 : DB 튜닝 (AP 테스트)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 전환/ 이행 : DB 전환 (AP 설치)&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;F. 데이터 독립성의 이해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;1. 외부 스키마 : 각 사용자를 의미하는 개인적 DB 구조 (=서브 스키마)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 개념 스키마 : 개인의 뷰(view)가 모인 전체, 종합적인 측면을 나타내는 스키마. (정책, 객체간 관계, 제약조건등 포함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 내부 스키마 : 물리적 저장 장치에 DB가 저장되는 구조, 경로등 세부사항.&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;- 사상 (Mapping)&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;2. 개념적/ 내부적 사상 (물리적 사상) : 개념적 뷰와 저장된 DB의 상호 관련성 정의&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;G. 데이터 모델링의 3가지 요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 엔티티 : DB에서 관리하고자 하는 개별적인 항목 (e.g. Product, Customer)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 속성 : 엔티티의 특성이나 데이터를 설명하는데 사용되는 필드. 각 속성은 DB테이블의 Column에 해당. (ID, Name, Address)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 관계 : 엔티티 간의 연결. (Foreign key, Primary key)&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;H. ERD (Entity Relationship Diagram)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 엔티티와 관계를 중점적으로 표시하는 DB구조를 한 눈에 알아보기 위해 그리는 다이어그램. (=개체 관계도)&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;2. IE 표기법 : 정보공학에서 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Baker 표기법 : 오라클에서 case method로 사용&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;I. 좋은 데이터 모델의 요소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 완전성 (Completeness)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 중복 배제 (Non-Redundancy)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 업무 규칙(Rules)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 재사용 (Data Reusability)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 의소소통 (Communication)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 통합성 (Integration)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/42</guid>
      <comments>https://sevenhighball.tistory.com/42#entry42comment</comments>
      <pubDate>Fri, 10 Nov 2023 13:41:34 +0900</pubDate>
    </item>
    <item>
      <title>HTML 복습01</title>
      <link>https://sevenhighball.tistory.com/41</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;h1&amp;nbsp;tag&amp;nbsp;=&amp;nbsp;header&amp;nbsp;number&amp;nbsp;1&amp;nbsp;(제목태그) &lt;br /&gt;h1,&amp;nbsp;h2,&amp;nbsp;h3,&amp;nbsp;h4,&amp;nbsp;h5,&amp;nbsp;h6 &lt;br /&gt;&lt;br /&gt;list&amp;nbsp;tag&amp;nbsp;의&amp;nbsp;종류 &lt;br /&gt;1.&amp;nbsp;ordered&amp;nbsp;list &lt;br /&gt;2.&amp;nbsp;unordered&amp;nbsp;list &lt;br /&gt;&lt;br /&gt;&amp;lt;ul&amp;gt;&amp;nbsp;=&amp;nbsp;unordered&amp;nbsp;list&amp;nbsp;(dot&amp;nbsp;icon) &lt;br /&gt;도트&amp;nbsp;아이콘&amp;nbsp;사용하여&amp;nbsp;리스트&amp;nbsp;작성을&amp;nbsp;시작. &lt;br /&gt;&amp;lt;li&amp;gt;&amp;nbsp;=&amp;nbsp;list&amp;nbsp;item &lt;br /&gt;목록&amp;nbsp;요소&amp;nbsp;태그 &lt;br /&gt;&amp;lt;ol&amp;gt;&amp;nbsp;=&amp;nbsp;ordered&amp;nbsp;list&amp;nbsp;(numbering) &lt;br /&gt;넘버링되는&amp;nbsp;리스트&amp;nbsp;작성을&amp;nbsp;시작. &lt;br /&gt;&lt;br /&gt;a&amp;nbsp;=&amp;nbsp;anchor를&amp;nbsp;뜻함&amp;nbsp;(link를&amp;nbsp;떠올리면&amp;nbsp;됨)&amp;nbsp;(추가적인&amp;nbsp;정보가&amp;nbsp;필요함) &lt;br /&gt;attributes&amp;nbsp;=&amp;nbsp;태그에&amp;nbsp;추가하는&amp;nbsp;정보 &lt;br /&gt;href&amp;nbsp;=&amp;nbsp;http&amp;nbsp;reference라고&amp;nbsp;함&amp;nbsp;(anchor&amp;nbsp;태그에만&amp;nbsp;추가&amp;nbsp;가능) &lt;br /&gt;target&amp;nbsp;=&amp;nbsp;기본값은&amp;nbsp;self이고,&amp;nbsp;_blank&amp;nbsp;입력&amp;nbsp;시&amp;nbsp;새&amp;nbsp;탭에서&amp;nbsp;링크가&amp;nbsp;열림 &lt;br /&gt;img&amp;nbsp;=&amp;nbsp;self&amp;nbsp;closing&amp;nbsp;tag.&amp;nbsp;다른&amp;nbsp;태그와&amp;nbsp;다르게&amp;nbsp;/로&amp;nbsp;닫는&amp;nbsp;태그가&amp;nbsp;없다&amp;nbsp;(자체&amp;nbsp;닫기&amp;nbsp;태그이기&amp;nbsp;때문) &lt;br /&gt;src&amp;nbsp;=&amp;nbsp;(source의&amp;nbsp;줄임말)&amp;nbsp;img&amp;nbsp;안에&amp;nbsp;사진을&amp;nbsp;집어넣음&amp;nbsp;(img에서&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;**단축키 &lt;br /&gt;ctrl&amp;nbsp;+&amp;nbsp;d&amp;nbsp;=&amp;nbsp;해당&amp;nbsp;테그&amp;nbsp;전체&amp;nbsp;선택&amp;nbsp;및&amp;nbsp;수정(누른상태에서&amp;nbsp;수정) &lt;br /&gt;ctrol&amp;nbsp;+&amp;nbsp;r&amp;nbsp;=&amp;nbsp;새로고침&lt;/p&gt;</description>
      <category>WEB/HTML</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/41</guid>
      <comments>https://sevenhighball.tistory.com/41#entry41comment</comments>
      <pubDate>Thu, 7 Oct 2021 17:53:54 +0900</pubDate>
    </item>
    <item>
      <title>박스 모델</title>
      <link>https://sevenhighball.tistory.com/40</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;e.g.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;style&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin:&amp;nbsp;0;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#active{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:red;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.saw{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:gray;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a&amp;nbsp;{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:black;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-decoration:&amp;nbsp;&amp;nbsp;none;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h1{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font-size:&amp;nbsp;52px;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;text-align:&amp;nbsp;center;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border-bottom:&amp;nbsp;2px&amp;nbsp;solid&amp;nbsp;gray;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin:&amp;nbsp;0;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;20px;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ol{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border-right:&amp;nbsp;2px&amp;nbsp;solid&amp;nbsp;gray;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width:&amp;nbsp;100px;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin:&amp;nbsp;0;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;24px;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/style&amp;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;*보더, 폭(width,hight), 패딩, 마진 값들을 대략적으로 설정해준 후 개발자도구를 계속 살펴보며 수정해 주는 습관이 중요.&lt;/p&gt;</description>
      <category>WEB/CSS</category>
      <author>JesseJeong</author>
      <guid isPermaLink="true">https://sevenhighball.tistory.com/40</guid>
      <comments>https://sevenhighball.tistory.com/40#entry40comment</comments>
      <pubDate>Sat, 28 Aug 2021 17:31:50 +0900</pubDate>
    </item>
  </channel>
</rss>