Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL의 SQL Server IDENTITY 열과 동일합니까?

<시간/>

MySQL의 Microsoft SQL Server IDENTITY 열에 해당하는 것은 AUTO_INCREMENT입니다. SQL Server의 IDENTITY는 MySQL의 AUTO_INCREMENT와 같은 역할을 합니다.

구문은 다음과 같습니다 -

CREATE TABLE yourTableName
(
   yourColumnName1 dataType NOT NULL AUTO_INCREMENT,
   yourColumnName2 dataType,
   .
   .
   .
   N,
   PRIMARY KEY(yourColumnName1)
);

MySQL에서 열이 auto_increment이면 기본 키를 사용해야 합니다. 그렇지 않으면 MySQL에서 오류가 발생합니다. 오류를 보십시오 -

mysql> create table EquivalentOfIdentityInMySQL
   -> (
   -> ProductId int NOT NULL AUTO_INCREMENT,
   -> ProductName varchar(30)
   -> );
ERROR 1075 (42000) − Incorrect table definition; there can be only one auto column and it
must be defined as a key

위의 오류를 제거하려면 ProductId를 기본 키로 만들어야 합니다. MySQL AUTO_INCREMENT의 선언은 ProductId를 기본 키로 설정한 다음과 같습니다. -

mysql> create table EquivalentOfIdentityInMySQL
   -> (
   -> ProductId int NOT NULL AUTO_INCREMENT,
   -> ProductName varchar(30)
   -> ,
   -> PRIMARY KEY(ProductId)
   -> );
Query OK, 0 rows affected (0.59 sec)

ProductId 열에 대한 값을 전달하지 않을 경우 MySQL은 1에서 auto_increment를 시작하고 다음 숫자는 기본적으로 1씩 증가합니다.

ProductId 열을 확인하기 위해 insert 명령을 사용하여 테이블에 일부 레코드를 삽입해 보겠습니다. 쿼리는 다음과 같습니다 -

mysql> insert into EquivalentOfIdentityInMySQL(ProductName) values('Product-1');
Query OK, 1 row affected (0.14 sec)

mysql> insert into EquivalentOfIdentityInMySQL(ProductName) values('Product-2');
Query OK, 1 row affected (0.14 sec)

mysql> insert into EquivalentOfIdentityInMySQL(ProductName) values('Product-34');
Query OK, 1 row affected (0.10 sec)

select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from EquivalentOfIdentityInMySQL;

다음은 출력입니다 -

+-----------+-------------+
| ProductId | ProductName |
+-----------+-------------+
|         1 | Product-1   |
|         2 | Product-2   |
|         3 | Product-34  |
+-----------+-------------+
3 rows in set (0.00 sec)

ProductId 열을 보세요. 이 열에 대한 값을 전달하지 않았지만 1에서 시작하는 숫자를 가져오고 다음 숫자는 1씩 증가합니다.