클리엘
CLIEL LAB
클리엘
전체 방문자
오늘
어제
  • 분류 전체보기 (515) N
    • Mobile (47)
      • Kotlin (47)
    • Web (84)
      • NestJS (9)
      • HTML5 & CSS3 (38)
      • Javascript (20)
      • TypeScript (6)
      • JQuery (11)
    • .NET (302) N
      • C# (85) N
      • ASP.NET (67)
      • Windows API for .NET (128)
    • Server (53)
      • SQL Server (10)
      • MariaDB (18)
      • Windows Server (6)
      • node.js (19)
    • System (12)
      • 작업LOG (12)
    • Review (11)
    • ETC (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 정리

인기 글

태그

  • node.js
  • JavaScript
  • LINQ
  • Kotlin
  • .NET
  • android studio
  • 변수
  • MariaDB
  • asp.net core web api
  • HTML5
  • jQuery
  • android
  • Entity Framework
  • asp.net core
  • NestJS
  • c#
  • CSS3
  • Windows API
  • ASP.NET
  • exception

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
클리엘

CLIEL LAB

Server/MariaDB

[MariaDB] insert

2021. 6. 7. 11:15
728x90

insert는 데이터를 삽입하며 다음과 같이 구현합니다.

insert into tb_user (userNumber, userName, userAge, userAddress, userJoinDate, userUse)
values
('CCC-000003', '홍길영', '35', '대구 광역시', now(), 1);

만약 여러 건(Row)의 데이터를 삽입하는 경우라면 , (콤마)로 각 행의 데이터를 구분하여 추가할 수 있으며

insert into tb_user (userNumber, userName, userAge, userAddress, userJoinDate, userUse)
values
('CCC-000003', '홍길영', '35', '대구 광역시', now(), 1),
('DDD-000004', '홍길석', '40', '광주 광역시', now(), 1);

다른 테이블에 존재하는 데이터를 가져와 추가하는 경우라면 insert into와 select구문을 결합할 수 있습니다.

insert into tb_user (userNumber, userName, userAge, userUse)
select userNumber, userName, userAge, userUse
from tb_user2 ;

여러건의 데이터는 insert구문을 그 만큼 여러개 생성하여 처리하는 경우도 있는데 한꺼번에 모든 insert 구문을 실행하는 경우에는 한건만 오류가 나도 전체 동작이 멈추는 상황이 발생할 수 있습니다. 이럴 때는 insert에 ignore키워드를 붙여주면 됩니다.

insert ignore into tb_user (userNumber, userName, userAge, userUse) values ('CCC-000003', '홍길영', '35', 1);
insert ignore into tb_user (userNumber, userName, userAge, userUse) values ('DDD-000004', '홍길숙', '40', 1);

위와 같이 하면 오류가 나도 그 다음 insert 구문을 그대로 실행할 수 있게 됩니다.

 

추가할 데이터가 테이블의 컬럼과 일치한다면 컬럼명을 생략해 줄 수 있습니다.

insert into tb_user
values
('CCC-000003', '홍길영', '35', '대구 광역시', now(), 1);

하지만 특정 컬럼의 데이터만 삽입하는 경우라면 컬럼명과 데이터의 순서를 맞춰서 추가하여야 하며

insert into tb_user (userNumber, userName, userAge, userUse)
values
('CCC-000003', '홍길영', '35', 1),
('DDD-000004', '홍길석', '40', 1);

테이블에 특정 컬럼이 다음과 같이 자동 증가(AUTO_INCREMENT)를 사용하는 경우

CREATE TABLE `tb_user` (
  `userSeq` int(11) NOT NULL AUTO_INCREMENT,
  `userNumber` varchar(10) NOT NULL,
  `userName` varchar(50) NOT NULL,
  `userAge` int(11) DEFAULT NULL,
  `userAddress` varchar(100) DEFAULT NULL,
  `userJoinDate` datetime DEFAULT NULL,
  `userUse` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`userSeq`,`userNumber`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

자동 증가되는 컬럼은 insert에서 생략하고 데이터를 삽입합니다. 만약 컬럼을 지정해 주는 경우라면 값을 NULL로 지정해야 합니다.

 

현재의 자동증가값을 확인하려면 last_insert_id() 함수를 사용할 수 있습니다.

select last_insert_id(); 

임의로 자동증가값을 지정하고자 한다면 다음과 같이 테이블의 auto_increment값을 조정해 주면 됩니다.

alter table tb_user auto_increment = 10;

자동 증가 값은 통상 1씩 증가되지만 서버 변수인 @@auto_increment_increment값을 변경하면 그만큼 자동 증가되는 값을 조정할 수 있습니다.

set @@auto_increment_increment = 1;

insert 구문이 수행되는 경우 주어진 값이 이미 존재하는 동일한 키값인 경우 해당 조건에 따라 데이터를 update시키는 것도 가능합니다.

insert into tb_user (userSeq, userNumber, userName, userAge, userUse) values (3, 'CCC-000003', '홍길영', '35', 1)
on duplicate key update userName = '홍길숙', userAge = 27;

만약 위 예제에서 userSeq가 키이고 이미 userSeq에 3이라는 값이 존재하는 경우 데이터를 insert 시키는 대신 하위에주어진 update 구문을 실행하게 됩니다.

728x90
저작자표시 비영리 변경금지 (새창열림)

'Server > MariaDB' 카테고리의 다른 글

[MairaDB] delete  (0) 2021.06.07
[MariaDB] update  (0) 2021.06.07
DML, DDL, DCL  (0) 2021.06.07
[MariaBD] select  (0) 2021.05.31
[MariaDB] 실행 쿼리 모니터링  (0) 2021.05.17
    'Server/MariaDB' 카테고리의 다른 글
    • [MairaDB] delete
    • [MariaDB] update
    • DML, DDL, DCL
    • [MariaBD] select
    클리엘
    클리엘
    누구냐 넌?

    티스토리툴바