<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>JuVVann_Y6XZ.log</title>
        <link>https://velog.io/</link>
        <description>자꾸 아이디를 고치래</description>
        <lastBuildDate>Mon, 06 Mar 2023 05:58:05 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. JuVVann_Y6XZ.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/juvvan_y6xz" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[IDENTITY, SEQUENCE를 알아보자]]></title>
            <link>https://velog.io/@juvvan_y6xz/IDENTITY-SEQUENCE%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@juvvan_y6xz/IDENTITY-SEQUENCE%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Mon, 06 Mar 2023 05:58:05 GMT</pubDate>
            <description><![CDATA[<p>자료를 입력할 때 INSERT를 이용하여 1,2,3,4... 이렇게 입력할 것입니다. 하지만 많은 데이터를 입력할 땐 숫자를 입력하지 않고 입력할 수도 있고, 뛰어 넘어 빈 공간을 만들수도 있습니다.</p>
<p>그래서 사용 가능한 SQL 기능이 IDENTITY와 SEQUENCE입니다.</p>
<h2 id="identity">IDENTITY</h2>
<p>먼저 IDENTITY를 배워보겠습니다. 먼저 가상의 TEST라는 테이블을 만들어 볼게요.</p>
<blockquote>
<p>CREATE TABLE TEST
(
TESTNO        INT,
TESTNAME    VARCHAR(20),
TESTINFO    NVARCHAR(MAX),
TESTTIME    DATETIME,
PRIMARY KEY(TESTNO)
);</p>
</blockquote>
<p>다른 튜플들과 비교할 수 있는 기본키를 TESTNO로 지정하였습니다. TESTNO에 INSERT로 값을 넣어도 되지만, 한번 자동완성 기능을 하는 IDENTITY를 입력해보도록 하죠. IDENTITY는 CREATE 할때 같이 입력합니다.</p>
<blockquote>
<p>CREATE TABLE TEST
(
TESTNO INT IDENTITY(1,1), <code>(시작값,증가값)</code>
TESTNAME VARCHAR(20),
TESTINFO NVARCHAR(MAX),
TESTTIME DATETIME,
PRIMARY KEY(TESTNO)
);</p>
</blockquote>
<p>이렇게 테이블을 만들고 INSERT로 테이블을 채워봅니다.</p>
<blockquote>
<p>INSERT INTO TEST
(
TESTNAME,
TESTINFO,
TESTTIME
)
VALUES
(
&#39;TEST001&#39;,
N&#39;첫번째 테스트&#39;,
GETDATE()
);</p>
</blockquote>
<p>실행을 하게 되면 이러한 결과를 얻게 됩니다.</p>
<p><img src="https://velog.velcdn.com/images/juvvan_y6xz/post/56081688-0c2c-4599-8bbf-d38b4e63290c/image.png" alt=""></p>
<p>여러번 반복하여 실행하면 TESTNO이 1씩 숫자가 추가됩니다.</p>
<p>좋은 기능으로 보이는 IDENTITY지만 문제점이 존재합니다. 테이블에 종속되어 있기 때문에 수정할 때 곤란한 일이 생길 수 있고, 데이터를 삭제하고 다시 채울때 어렵다는 것입니다.</p>
<p>이를 해결하기 위해 SEQUENCE를 사용하게 됩니다.</p>
<h2 id="sequence">SEQUENCE</h2>
<p>기존에 사용했던 TEST TABLE 을 삭제하고 처음에 사용했던 테이블을 만들어보겠습니다.</p>
<blockquote>
<p>CREATE TABLE TEST
(
TESTNO        INT,
TESTNAME    VARCHAR(20),
TESTINFO    NVARCHAR(MAX),
TESTTIME    DATETIME,
PRIMARY KEY(TESTNO)
);</p>
</blockquote>
<p>이제 이 테이블에 적용 가능한 SEQUENCE를 만들어 보겠습니다.
SEQUENCE는 CREATE에 넣지 않습니다. 그렇기 때문에 테이블에 종속되지 않고, 다른 곳에서도 사용이 가능하다는 장점이 있습니다.</p>
<blockquote>
<p>CREATE SEQUENCE TESTSEQ
AS INT 
START WITH 1 <code>시작값</code>
INCREMENT BY 1 <code>증가값</code>
MINVALUE 1 <code>최소값</code>
MAXVALUE 10000 <code>최대값</code>
NO CYCLE <code>순환여부</code></p>
</blockquote>
<p>이렇게 하면 개체탐색기 - DB - 프로그래밍 기능 - 시퀸스에 TESTSEQ가 저장됩니다.</p>
<p>이제 INSERT로 TESTSEQ를 작동해보겠습니다.</p>
<blockquote>
<p>INSERT INTO TEST
(
TESTNO,
TESTNAME,
TESTINFO,
TESTTIME
)
VALUES
(
<strong>NEXT VALUE FOR</strong> TESTSEQ,
&#39;TEST001&#39;,
N&#39;첫번째 테스트&#39;,
GETDATE()
);</p>
</blockquote>
<p>실행하면 다음과 같은 값을 얻게 됩니다.
<img src="https://velog.velcdn.com/images/juvvan_y6xz/post/23f394d4-bb24-45a1-8ecf-12dfd617064d/image.png" alt=""></p>
<p>다른 DB에서도 사용 가능하기 SEQUENCE 사용이 권장됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[가입이 참 어려웠습니다.]]></title>
            <link>https://velog.io/@juvvan_y6xz/%EA%B0%80%EC%9E%85%EC%9D%B4-%EC%B0%B8-%EC%96%B4%EB%A0%A4%EC%9B%A0%EC%8A%B5%EB%8B%88%EB%8B%A4</link>
            <guid>https://velog.io/@juvvan_y6xz/%EA%B0%80%EC%9E%85%EC%9D%B4-%EC%B0%B8-%EC%96%B4%EB%A0%A4%EC%9B%A0%EC%8A%B5%EB%8B%88%EB%8B%A4</guid>
            <pubDate>Thu, 12 Jan 2023 08:05:10 GMT</pubDate>
            <description><![CDATA[<p>아이디 만들때 대문자를 넣지 말라고 하던가 너무너무 화나는 가입이었습니다.</p>
]]></description>
        </item>
    </channel>
</rss>