<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>q_esmeray.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 21 May 2024 05:38:53 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>q_esmeray.log</title>
            <url>https://velog.velcdn.com/images/q_esmeray/profile/d5f09bb2-a1ca-4c9d-a7fa-08be9e5f62f5/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. q_esmeray.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/q_esmeray" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Oracle] SQL JOIN]]></title>
            <link>https://velog.io/@q_esmeray/Oracle-SQL-Developer-JOIN</link>
            <guid>https://velog.io/@q_esmeray/Oracle-SQL-Developer-JOIN</guid>
            <pubDate>Tue, 21 May 2024 05:38:53 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/q_esmeray/post/83cb2bd0-f115-4fcd-a0a7-64933a779c18/image.png" alt=""></p>
<h2 id="join">JOIN</h2>
<blockquote>
<h5 id="여러개의-테이블을-결합시켜-원하는-데이터를-가져오는-것">여러개의 테이블을 결합시켜 원하는 데이터를 가져오는 것</h5>
</blockquote>
<pre><code class="language-sql">SELECT 컬럼명1,컬럼명2,...
FROM 테이블명1,테이블명2
WHERE 조인조건;</code></pre>
<hr>
<h2 id="join의-종류">JOIN의 종류</h2>
<h3 id="inner-join">INNER JOIN</h3>
<p><img src="https://velog.velcdn.com/images/q_esmeray/post/6f62f9a5-f03e-4ceb-8eb2-f61aeeb04a20/image.png" alt=""></p>
<blockquote>
<h4 id="두-개-이상의-테이블-결합에서-일치하는-행만-반환한다">두 개 이상의 테이블 결합에서 일치하는 행만 반환한다.</h4>
</blockquote>
<h3 id="outer-join">OUTER JOIN</h3>
<p><img src="https://velog.velcdn.com/images/q_esmeray/post/bfb5e201-791f-4568-93e5-29a756051861/image.png" alt=""></p>
<blockquote>
<h4 id="두-개-이상의-테이블-결합에서-일치하지-않는-행도-포함하여-반환한다">두 개 이상의 테이블 결합에서 일치하지 않는 행도 포함하여 반환한다.</h4>
</blockquote>
<ul>
<li>LEFT JOIN
왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환한다.</li>
<li>FULL JOIN
두 테이블의 모든 행을 반환한다.</li>
<li>RIGHT JOIN
오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환한다.</li>
</ul>
<hr>
<h2 id="equi-join">EQUI JOIN</h2>
<blockquote>
<h4 id="where절에-공통컬럼들이-동등연산자-에-의해-결합되는-조인">WHERE절에 공통컬럼들이 동등연산자 (=)에 의해 결합되는 조인</h4>
</blockquote>
<h4 id="예시">예시</h4>
<pre><code class="language-sql">SELECT S.SNUM,S.SNAME,G.SUBJECT,G.SCORE
FROM STUDENT S,GRADE G
WHERE S.SNUM=G.SNUM;</code></pre>
<ul>
<li>SNUM(학번) SNAME(이름) SUBJECT(과목) SCORE(점수)</li>
<li>각 테이블명은 STUDENT S 이렇게 뒤에 별명 짓기 가능</li>
<li>공통컬럼이 학번이므로 S.SNUM=G.SNUM 이라는 조건으로 결합</li>
</ul>
<p><strong>USING</strong>
-&gt; 몇 몇개의 컬럼을 지정하여 EQUI JOIN을 하고싶을 때 사용</p>
<pre><code class="language-sql">SELECT *
FROM TABLE1
JOIN TABLE2
USING(EMP_ID)</code></pre>
<hr>
<h2 id="non-equi-join">NON-EQUI JOIN</h2>
<blockquote>
<ul>
<li>공통컬럼이 존재하지 않아도 결합되는 경우의 조인</li>
</ul>
</blockquote>
<ul>
<li>비교연산자에 의해 결합 가능</li>
<li>3개이상의 테이블 조인시 AND로 묶어서 결합 가능</li>
</ul>
<hr>
<h2 id="cross-join">CROSS JOIN</h2>
<blockquote>
<ul>
<li>결합조건이 없는 경우의 조인 (실질적으로 거의 사용 X ) </li>
</ul>
</blockquote>
<hr>
<h2 id="self-join">SELF JOIN</h2>
<blockquote>
<ul>
<li>참조해야 하는 컬럼이 자신의 테이블의 다른 컬럼인 경우 사용되는 조인
이 경우, 똑같은 테이블을 E1,E2로 나눠서 참조한다.</li>
</ul>
</blockquote>
<h4 id="예시-1">예시</h4>
<pre><code class="language-sql">SELECT E1.EMPNO,E1.ENAME,E1.MGR,E2.ENAME
FROM EMP E1,EMP E2
WHERE E1.MGR=E2.EMPNO;</code></pre>
<h4 id="결과">결과</h4>
<pre><code class="language-sql">EMPNO ENAME            MGR ENAME

      7902  FORD             7566 JONES     
      7900  JAMES            7698 BLAKE     
      7844  TURNER           7698 BLAKE     
      7521  WARD             7698 BLAKE     
      7654  MARTIN           7698 BLAKE     
      7499  ALLEN            7698 BLAKE     
      7934  MILLER           7782 CLARK     
      7782  CLARK            7839 KING      
      7566  JONES            7839 KING      
      7698  BLAKE            7839 KING      
      7369  SMITH            7902 FORD   </code></pre>
<hr>
<h2 id="natural-join">NATURAL JOIN</h2>
<blockquote>
<p>A테이블과 B테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우(데이터 내용이 완전히 동일한 것만 조인됨.) JOIN되는 방식</p>
</blockquote>
<pre><code class="language-sql">select tabe1.column, table2column
  from table1 NATURAL JOIN table2;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Oracle] SQL 그룹함수]]></title>
            <link>https://velog.io/@q_esmeray/Oracle-SQL-Developer-%EA%B7%B8%EB%A3%B9%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@q_esmeray/Oracle-SQL-Developer-%EA%B7%B8%EB%A3%B9%ED%95%A8%EC%88%98</guid>
            <pubDate>Tue, 21 May 2024 03:16:07 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/q_esmeray/post/cdaefb20-7e68-4d12-b258-fab57b524539/image.png" alt=""></p>
<h2 id="그룹함수란">그룹함수란?</h2>
<blockquote>
<h4 id="여러개의-행당-하나의-결과값을-반환하는-함수">여러개의 행당 하나의 결과값을 반환하는 함수</h4>
</blockquote>
<hr>
<h2 id="그룹함수의-종류">그룹함수의 종류</h2>
<table>
<thead>
<tr>
<th>구분</th>
<th align="left">설명</th>
</tr>
</thead>
<tbody><tr>
<td>COUNT</td>
<td align="left">NULL값을 포함하지 않은 전체 행의 갯수 출력</td>
</tr>
<tr>
<td>COUNT(*)</td>
<td align="left">NULL값을 포함한 전체 행의 갯수 출력</td>
</tr>
<tr>
<td>SUM</td>
<td align="left">해당 컬럼의 총합</td>
</tr>
<tr>
<td>AVG</td>
<td align="left">해당 컬럼의 평균</td>
</tr>
<tr>
<td>MIN</td>
<td align="left">최소값</td>
</tr>
<tr>
<td>MAX</td>
<td align="left">최대값</td>
</tr>
</tbody></table>
<h3 id="»-sum">» SUM</h3>
<p>행이 1개 나옴</p>
<pre><code class="language-sql">SELECT EMPNO, SUM(SAL) FROM EMP;</code></pre>
<p>EMPNO의 행은 12개, SUM(SAL)의 행은 1개 나와서 행의 개수가 맞지 않음</p>
<h3 id="»-avg">» AVG</h3>
<pre><code class="language-sql">SELECT AVG(COMM) FROM EMP;</code></pre>
<p>AVG함수는 해당 컬럼에 NULL값이 있으면 그 행은 포함하지 않고 계산하기 때문에, 정확한 평균값이 나오지 않을수도 있다.
그러므로 NULL값을 임의로 0으로 치환하여 모든 행을 포함해서 계산하도록 해야한다. 이때 쓰는 함수가 NVL</p>
<pre><code class="language-sql">SELECT AVG(NVL(COMM,0)) FROM EMP;</code></pre>
<p>이렇게 하면 COMM에 있는 NULL값을 모두 0으로 치환하므로 COMM에 있는 모든 행의 갯수로 나눠서 정확한 평균값을 구할 수 있다.</p>
<hr>
<h2 id="group-by-절">GROUP BY 절</h2>
<blockquote>
<p>GROUP BY (컬럼명)
: 해당 컬럼값을 기준으로 먼저 모은 뒤 SELECT절에 적혀있는 그룹함수를 적용</p>
</blockquote>
<h3 id="예제">예제</h3>
<ul>
<li>Q1. 부서번호가 10번인 사원들의 직업별 급여의 평균을 구하고 평균급여가 높은 순으로 조회하세요.<pre><code class="language-sql">SELECT JOB,AVG(SAL)
FROM EMP
WHERE DEPTNO=10
GROUP BY JOB
ORDER BY AVG(SAL) DESC;
</code></pre>
</li>
</ul>
<p>JOB         AVG(SAL)</p>
<hr>
<p>PRESIDENT       5000
MANAGER         2450
CLERK           1300</p>
<p>--SELECT DEPTNO,JOB,AVG(SAL)
--부서번호를 출력하는게 아니기 때문에 에러발생
--출력하는 컬럼만 SELECT 사용</p>
<pre><code>- Q2. 사원들의 부서별 평균급여를 구하시오. 단 급여평균이 3000이상인 부서만 출력하세요.
```sql
SELECT DEPTNO,AVG(SAL) 평균급여
FROM EMP
WHERE AVG(SAL)&gt;=3000
GROUP BY DEPTNO;

--WHERE절에는 그룹함수를 사용할 수 없음 
--AVG가 그룹함수라서 오류 발생
--=&gt;HAVING 절을 사용하면 됨

SELECT DEPTNO,AVG(SAL) 평균급여
FROM EMP
HAVING AVG(SAL)&gt;=3000
GROUP BY DEPTNO;

    DEPTNO       평균급여
---------- ----------
        42       3200
        60       3500</code></pre><h2 id="having-절">HAVING 절</h2>
<blockquote>
<p>&#39;HAVING&#39; 절은 SQL에서 그룹화된 결과의 조건을 필터링하는 데 사용된다. 주로 &#39;GROUP BY&#39; 절과 함께 사용되며, 집계 함수(&#39;COUNT&#39;, &#39;SUM&#39;, &#39;AVG&#39; 등)를 포함한 조건을 기반으로 결과를 필터링할 때 필요하다.</p>
</blockquote>
<ul>
<li>WHERE 절과의 차이
&#39;WHERE&#39; 절은 그룹화하기 전의 개별 데이터 레코드를 필터링하는 반면, &#39;HAVING&#39; 절은 그룹화한 후의 결과를 필터링한다는 것</li>
</ul>
<h3 id="예제-1">예제</h3>
<ul>
<li>Q1. 평균 급여가 50,000 초과인 부서만 출력하세요.
```sql
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) &gt; 50000;</li>
<li>-&#39;HAVING&#39; 절이 없다면, 모든 부서의 평균 급여가 조회됨<pre><code></code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Oracle] SQL 개념,종류,특징]]></title>
            <link>https://velog.io/@q_esmeray/OracleSql-%EA%B0%9C%EB%85%90%EC%A2%85%EB%A5%98%ED%8A%B9%EC%A7%95</link>
            <guid>https://velog.io/@q_esmeray/OracleSql-%EA%B0%9C%EB%85%90%EC%A2%85%EB%A5%98%ED%8A%B9%EC%A7%95</guid>
            <pubDate>Tue, 21 May 2024 02:45:31 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/q_esmeray/post/73c64092-ff17-4a80-a399-e294ce60613b/image.png" alt=""></p>
<h2 id="sqlstructured-query-language이란">SQL(Structured Query Language)이란?</h2>
<blockquote>
<h5 id="관계형-데이터베이스-시스템rdbms에서-자료를-관리-및-처리하기-위해-설계된-언어이다">관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어이다.</h5>
<h5 id="현재-sql의-표준으로-ansi-sql이-정립되어있다">현재 SQL의 표준으로 ANSI SQL이 정립되어있다.</h5>
</blockquote>
<hr>
<h2 id="sql-기본구조쿼리">SQL 기본구조(쿼리)</h2>
<table>
<thead>
<tr>
<th align="center">작성순서</th>
<th align="left">SQL 구문</th>
<th align="center">실행순서</th>
</tr>
</thead>
<tbody><tr>
<td align="center">1</td>
<td align="left">FROM 테이블명</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">2</td>
<td align="left">WHERE 조건절</td>
<td align="center">2</td>
</tr>
<tr>
<td align="center">3</td>
<td align="left">GROUP BY 컬럼명</td>
<td align="center">3</td>
</tr>
<tr>
<td align="center">4</td>
<td align="left">HAVING 조건절</td>
<td align="center">4</td>
</tr>
<tr>
<td align="center">5</td>
<td align="left">SELECT 컬럼1,컬럼2, . . .</td>
<td align="center">5</td>
</tr>
<tr>
<td align="center">6</td>
<td align="left">ORDER BY 기준컬럼</td>
<td align="center">6</td>
</tr>
</tbody></table>
<hr>
<h2 id="sql의-종류">SQL의 종류</h2>
<h4 id="1-데이터-정의어-ddl-ddl-data-definition-language">1) 데이터 정의어 DDL (DDL, Data Definition Language)</h4>
<p>데이터베이스, 테이블의 스키마를 정의, 수정, 삭제하는 명령어</p>
<table>
<thead>
<tr>
<th>SQL문</th>
<th align="left">내용</th>
</tr>
</thead>
<tbody><tr>
<td>CREATE</td>
<td align="left">데이터베이스 객체 생성</td>
</tr>
<tr>
<td>DROP</td>
<td align="left">데이터베이스 객체 삭제</td>
</tr>
<tr>
<td>ALTER</td>
<td align="left">기존에 존재하는 데이터베이스 객체를 다시 정의</td>
</tr>
</tbody></table>
<h4 id="2-데이터-조작어-dmldata-manipulation-language">2) 데이터 조작어 DML(Data Manipulation Language)</h4>
<p>테이블의 데이터를 조작하는 명령어</p>
<table>
<thead>
<tr>
<th>SQL문</th>
<th align="left">내용</th>
</tr>
</thead>
<tbody><tr>
<td>INSERT</td>
<td align="left">데이터 삽입</td>
</tr>
<tr>
<td>DELETE</td>
<td align="left">데이터 삭제</td>
</tr>
<tr>
<td>UPDATE</td>
<td align="left">데이터 수정</td>
</tr>
<tr>
<td>SELECT</td>
<td align="left">데이터 조회</td>
</tr>
</tbody></table>
<h4 id="3-데이터-제어어-dcldata-control-language">3) 데이터 제어어 DCL(Data Control Language)</h4>
<p>데이터베이스, 테이블의 접근권한이나 CRUD권한을 정의하는 명령어</p>
<table>
<thead>
<tr>
<th>SQL문</th>
<th align="left">내용</th>
</tr>
</thead>
<tbody><tr>
<td>GRANT</td>
<td align="left">데이터베이스 객체에 권한을 부여</td>
</tr>
<tr>
<td>REVOKE</td>
<td align="left">이미 부여된 데이터베이스 객체 권한을 취소</td>
</tr>
<tr>
<td>-------------</td>
<td align="left"></td>
</tr>
</tbody></table>
<h2 id="sql-언어적-특성">SQL 언어적 특성</h2>
<blockquote>
<h4 id="1-대소문자를-가리지-않는다">1. 대소문자를 가리지 않는다.</h4>
<h4 id="2-sql명령은-반드시-세미콜론----으로-끝나야-한다">2. SQL명령은 반드시 세미콜론 ( ; ) 으로 끝나야 한다.</h4>
<h4 id="3-고유의-값은-따옴표-----로-감싸준다">3. 고유의 값은 따옴표 ( &#39; &#39; ) 로 감싸준다.</h4>
<h4 id="4-sql에서-객체를-나타낼-때는-백틱----으로-감싸준다">4. SQL에서 객체를 나타낼 때는 백틱 ( `` ) 으로 감싸준다.</h4>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Oracle] Sql CURD]]></title>
            <link>https://velog.io/@q_esmeray/Oracle-Sql-Developer-CURD</link>
            <guid>https://velog.io/@q_esmeray/Oracle-Sql-Developer-CURD</guid>
            <pubDate>Tue, 21 May 2024 01:53:58 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/q_esmeray/post/8f5f5c62-ca54-4b88-9941-820938786f70/image.png" alt=""></p>
<h3 id="테이블-생성-create">테이블 생성 (CREATE)</h3>
<pre><code class="language-sql">CREATE TABLE DEPT(
    컬럼명 자료형 제약조건
    DEP_NO NUMBER,
    DEP_NAME VARCHAR2(30) NOT NULL UNIQUE,
    LOC VARCHAR2(3) NOT NULL,
    CONSTRAINT PK_NAME PRIMARY KEY(DEP_NO)
);</code></pre>
<hr>
<h3 id="테이블-수정-alter-table">테이블 수정 (ALTER TABLE)</h3>
<pre><code class="language-sql">ALTER TABLE TOPIC ADD PRIMARY KEY(TOPIC_NO); --제약조건 추가

ALTER TABLE emp RENAME COLUMN editid TO edit_id; -- 컬럼명 변경

ALTER TABLE EMPLOYEE MODIFY EMP_NAME NOT NULL; --데이터타입,길이변경</code></pre>
<hr>
<h3 id="데이터-입력하기-insert">데이터 입력하기 (INSERT)</h3>
<pre><code class="language-sql">INSERT INTO 테이블명 
(컬럼1, 컬럼2, 컬럼3) 

VALUES 
(값1, 값2, 값3)

--테이블에 있는 컬럼에 순서대로 전부 값을 입력하면 컬럼명은 생략이 가능하다.
INSERT INTO 테이블명 

VALUES 
(값1, 값2, 값3)

--날짜데이터는 들어갈 때 날짜데이터 타입으로 바꿔줘야한다.
INSERT INTO 테이블명(컬럼명) VALUES(TO_DATE(&#39;19970808&#39;,&#39;YYYYMMDD&#39;));</code></pre>
<hr>
<h3 id="데이터-읽기-select">데이터 읽기 (SELECT)</h3>
<pre><code class="language-sql">SELECT * FROM 테이블명 WHERE 조건식 ORDER BY 컬럼명 [ASC|DESC]

SELECT 내가보고싶은정보 AS &quot;별칭&quot;
FROM 어디테이블에서?
WHERE 조건식을 걸어 꺼내고싶은 부분만
ORDER BY 정렬상태 바꾸기

&lt;주의&gt; WHERE절과 ORDER BY가 같이 있으면 WHERE절이 먼저와야한다.
ASC : 작은숫자가먼저(오름차순,생략가능) , DESC : 큰숫자가먼저(내림차순)

이중정렬
ORDER BY 이후에 SORT 하고 싶은 컬럼명을 왼쪽부터 순서대로 콤마 다음으로 나열해주면 된다.
SELECT * FROM EMPLOYEE ORDER BY DEP_NO ASC, SALARY DESC;</code></pre>
<hr>
<h3 id="데이터-수정-update">데이터 수정 (UPDATE)</h3>
<pre><code class="language-sql">UPDATE 테이블명 SET 수정할 컬럼명 = &#39;데이터&#39; WHERE ID=3;
업데이트에서는 WHERE절이 꼭있어야한다. 수정이 끝나고 COMMIT해야지 반영됨</code></pre>
<hr>
<h3 id="데이터-삭제-delete">데이터 삭제 (DELETE)</h3>
<pre><code class="language-sql">DELETE FROM TOPIC WHERE ID=3;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Oracle] SQL 기초]]></title>
            <link>https://velog.io/@q_esmeray/Oracle-SQL-Developer</link>
            <guid>https://velog.io/@q_esmeray/Oracle-SQL-Developer</guid>
            <pubDate>Tue, 21 May 2024 01:02:22 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/q_esmeray/post/21f35fb7-2aae-468b-b735-2ac16cbefa87/image.png" alt=""></p>
<h2 id="oracle">oracle</h2>
<p>오라클은 관계형 데이터베이스의 한 종류이다.</p>
<hr>
<h2 id="데이터-베이스">데이터 베이스</h2>
<blockquote>
<h5 id="검색에-용이하도록-일정한-기준에-맞춰-자료를-분류하여">검색에 용이하도록 일정한 기준에 맞춰 자료를 분류하여</h5>
<h5 id="정리해-놓은-자료의-집합을-말한다">정리해 놓은 자료의 집합을 말한다.</h5>
</blockquote>
<hr>
<h2 id="테이블-생성">테이블 생성</h2>
<blockquote>
<h5 id="테이블이란-">테이블이란 ?</h5>
<h5 id="1-관계형데이터베이스에서-데이터가-실질적으로-저장되는-장소를-말한다">1. 관계형데이터베이스에서 데이터가 실질적으로 저장되는 장소를 말한다.</h5>
<h5 id="2-테이블은-이름을-가지고-저장되는-객체의-한-종류이다">2. 테이블은 이름을 가지고 저장되는 객체의 한 종류이다.</h5>
</blockquote>
<pre><code class="language-sql">CREATE TABLE 테이블명(
    컬럼명 자료형 제약조건
    emp_no number not null
);</code></pre>
<ul>
<li>컬럼명은 중복될 수 없다.</li>
</ul>
<hr>
<h2 id="자료형">자료형</h2>
<p>테이블 컬럼에 입력되는 데이터 유형을 말한다.
문자형,숫자형,날짜형 등이 있다.</p>
<h4 id="문자형-데이터-타입">문자형 데이터 타입</h4>
<pre><code class="language-sql">CHAR(N) : 고정형 문자열을 저장하고 N은 byte수를 의미하고 최대크기는 2000byte이다.
설정한 크기보다 입력 문자 크기가 작으면 공백으로 남는다.
&lt;예&gt; CHAR(4)는 문자4byte 까지 입력가능하다. 즉 영문4개, 한글2개까지 가능

VARCHAR2(N) : 가변길이 문자열을 저장하고 N은 byte수를 의미하고 최대크기는 4000byte이다.
설정 크기보다 입력 문자크기가 작으면 크기가 자동으로 줄어든다. 마찬가지로 크면 입력되지않음.</code></pre>
<h4 id="숫자형-데이터-타입">숫자형 데이터 타입</h4>
<pre><code class="language-sql">NUMBER(P,S) 가변길이 숫자 저장, P는 전체자리수 1~38, S는 소수점이하 자리수(-84~127) 최대22byte
P와 S를 입력하지 않으면 가변숫자이므로 저장데이터의 크기에 맞게 자동조절</code></pre>
<h4 id="날짜형-데이터-타입">날짜형 데이터 타입</h4>
<pre><code class="language-sql">DATE : [년, 월, 일, 시, 분, 초] 날짜 및 시간을 저장한다.
저장 범위는 BC 4712년 1월 1일 ~ 9999년 12월 31일.</code></pre>
<hr>
<h2 id="제약조건">제약조건</h2>
<p>입력되는 데이터의 입력, 수정 가능조건을 말한다.
제약조건에 위배될 경우 입력, 수정이 불가능하다.
입력의 경우 행 자체가 입력이 안되고 수정의 경우 셀 수정이 안된다.</p>
<pre><code class="language-sql">NOT NULL : NULL과 공백문자열 허용X, 즉 반드시 데이터 입력

UNIQUE : 중복된 데이터를 값으로 가질 수 없다.
         NULL값은 예외적으로 여러 개 입력 가능하다.

DEFAULT : 데이터를 입력하지 않으면 디폴트로 설정한 값이 입력된다.

CHECK : 지정한 데이터만 입력 가능하다. 입력되는값이 미리 지정한 조건에 맞지 않으면 오류 반환
        특정값이나 범위를 지정해주면 해당 안에 입력 값이 맞는지 확인

PRIMARY KEY(PK/기본키) : 테이블당 하나만 가질 수 있는 키
                        NOT NULL, UNIQUE 성질을 가지고있다. 
                        차후에 FOREIGN KEY에 의해 참조 당할 수 있다.

FOREIGN KEY(FK/외래키) : PRIMARY KEY에 존재하는 데이터만 삽입될 수 있다.
                        PRIMARY KEY를 참조하는 KEY다. 하나의 테이블에 0~N개까지 사용가능.
&lt;주의&gt; 예외적으로 NULL값이 입력 가능하다. 즉, 데이터가 입력되지 않을 수 있다.</code></pre>
<h4 id="테이블명-칼럼명-제작-규칙">테이블명, 칼럼명 제작 규칙</h4>
<ol>
<li>영문자, 1~9, $, #, _ 로 구성되고 반드시 영문자로 시작해야 한다. (0은안됨)</li>
<li>30자를 초과할 수 없다.</li>
<li>SQL 예약어는 사용할 수 없다.</li>
<li>하나의 계정이 만든 테이블명은 유일해야하고 하나의 테이블 안에서 컬럼명은 유일해야한다.</li>
<li>테이블명, 컬럼명, 제약조건명을 &quot;&quot;로 감싸거나 생략해서 써도 된다.</li>
</ol>
]]></description>
        </item>
    </channel>
</rss>