SQL AUTO INCREMENT 필드
자동 증가는 새로운 레코드가 테이블에 삽입될 때 독립적인 숫자를 생성합니다.
AUTO INCREMENT 필드
우리는 일반적으로 새로운 레코드를 삽입할 때마다 자동으로 주키 필드의 값을 생성하고자 합니다.
테이블에서 auto-increment 필드를 생성할 수 있습니다.
MySQL에 대한 문법
아래 SQL 문은 "Persons" 테이블의 "P_Id" 열을 auto-increment 주키로 정의합니다:
CREATE TABLE Persons ( P_Id int NOT NULL AUTO_INCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), PRIMARY KEY (P_Id) )
MySQL은 AUTO_INCREMENT 키워드를 사용하여 auto-increment 작업을 수행합니다.
기본적으로, AUTO_INCREMENT의 시작 값은 1이며, 새로운 레코드마다 1씩 증가합니다.
AUTO_INCREMENT 시퀀스가 다른 값으로 시작하려면, 다음 SQL 문법을 사용하세요:
ALTER TABLE Persons AUTO_INCREMENT=100
"Persons" 테이블에 새로운 레코드를 삽입하려면, "P_Id" 열에 값을 지정하지 않아도 됩니다.(자동으로 독일적인 값이 추가됩니다):
INSERT INTO Persons (FirstName, LastName) VALUES ('Bill', 'Gates')
위의 SQL 문은 "Persons" 테이블에 새로운 레코드를 삽입합니다. "P_Id"는 독립적인 값을 부여받습니다. "FirstName"은 "Bill"로 설정되고, "LastName" 열은 "Gates"로 설정됩니다.
SQL Server에 대한 문법
아래 SQL 문은 "Persons" 테이블의 "P_Id" 열을 auto-increment 주키로 정의합니다:
CREATE TABLE Persons ( P_Id int PRIMARY KEY IDENTITY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
MS SQL은 IDENTITY 키워드를 사용하여 auto-increment 작업을 수행합니다.
기본적으로, IDENTITY의 시작 값은 1이며, 새로운 레코드마다 1씩 증가합니다.
"P_Id" 열이 20부터 시작하고 10씩 증가하도록 설정하려면, identity를 IDENTITY(20,10)으로 변경하세요:
"Persons" 테이블에 새로운 레코드를 삽입하려면, "P_Id" 열에 값을 지정하지 않아도 됩니다.(자동으로 독일적인 값이 추가됩니다):
INSERT INTO Persons (FirstName, LastName) VALUES ('Bill', 'Gates')
위의 SQL 문은 "Persons" 테이블에 새로운 레코드를 삽입합니다. "P_Id"는 독립적인 값을 부여받습니다. "FirstName"은 "Bill"로 설정되고, "LastName" 열은 "Gates"로 설정됩니다.
Access에 대한 문법
아래 SQL 문은 "Persons" 테이블의 "P_Id" 열을 auto-increment 주키로 정의합니다:
CREATE TABLE Persons ( P_Id int PRIMARY KEY AUTOINCREMENT, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )
MS Access는 AUTOINCREMENT 키워드를 사용하여 auto-increment 작업을 수행합니다.
기본적으로, AUTOINCREMENT의 시작 값은 1이며, 새로운 레코드마다 1씩 증가합니다.
"P_Id" 열이 20부터 시작하고 10씩 증가하도록 설정하려면, autoincrement을 AUTOINCREMENT(20,10)으로 변경하세요:
"Persons" 테이블에 새로운 레코드를 삽입하려면, "P_Id" 열에 값을 지정하지 않아도 됩니다.(자동으로 독일적인 값이 추가됩니다):
INSERT INTO Persons (FirstName, LastName) VALUES ('Bill', 'Gates')
위의 SQL 문은 "Persons" 테이블에 새로운 레코드를 삽입합니다. "P_Id"는 독립적인 값을 부여받습니다. "FirstName"은 "Bill"로 설정되고, "LastName" 열은 "Gates"로 설정됩니다.
Oracle에 사용되는 문법
Oracle에서는 코드가 조금 복잡합니다.
자동 증가 필드를 생성하려면 sequence을 통해 생성해야 합니다(이 객체는 숫자 시퀀스를 생성합니다).
아래의 CREATE SEQUENCE 문법을 사용해야 합니다:
CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
위의 코드는 이름이 seq_person인 시퀀스 객체를 생성하며, 1에서 시작하여 1로 증가합니다. 이 객체는 성능을 향상시키기 위해 10개의 값을 캐시합니다. CACHE 옵션은 접근 속도를 향상시키기 위해 얼마나 많은 시퀀스 값을 저장할지 정의합니다.
"Persons" 테이블에 새로운 레코드를 삽입하려면 nextval 함수(이 함수는 seq_person 시퀀스에서 다음 값을 가져옵니다)를 사용해야 합니다:
INSERT INTO Persons (P_Id, FirstName, LastName) VALUES (seq_person.nextval, 'Lars', 'Monsen')
위의 SQL 문은 "Persons" 테이블에 새로운 레코드를 삽입합니다. "P_Id"의 할당은 seq_person 시퀀스의 다음 숫자입니다. "FirstName"은 "Bill"로 설정되고, "LastName" 열은 "Gates"로 설정됩니다.