본문 바로가기
개발 및 기타 등등/Database

DataBase(DB) PostgreSQL + DBeaver 실습하기! [Query(쿼리)문 작성해보기 WHERE로 데이터 더 많이 추가해보기, DB처리순서, NULL제약조건]

by 클수저 2026. 7. 19.
728x90
반응형

이전 내용에서는 SELECT,WHERE,INSERT에 대한 간단한 쿼리문을 작성해봤다.

이제는 WHERE문에 대한 조금 심화(?) 버전을 작성해보고자한다.

이전 내용에서는 row 1개만 넣은거라면 이번에는 row에 데이터를 여러줄을 추가해보려한다.


실무에서 가장 많이 사용하는 WHERE

실습 : 먼저 회원 3명을 더 추가해보자.
login_id name status
kim 김철수 ACTIVE
lee 이영희 ACTIVE
admin 관리자 ACTIVE

 

WHERE로 여러개의 row를 추가할때 방법은 크게 2가지이다.

 

1. 한 명씩 입력 (가능하지만 비효율적)

INSERT INTO shopping.users (
    login_id,
    password,
    name,
    email,
    phone
)
VALUES (
    'kim',
    '1234',
    '김철수',
    'kim@test.com',
    '010-1111-1111'
);

INSERT INTO shopping.users (
    login_id,
    password,
    name,
    email,
    phone
)
VALUES (
    'lee',
    '1234',
    '이영희',
    'lee@test.com',
    '010-2222-2222'
);
 

 

 

2. 여러 명을 한 번에 입력 (실무에서 많이 사용) ⭐

INSERT INTO shopping.users (
    login_id,
    password,
    name,
    email,
    phone
)
VALUES
(
    'kim',
    '1234',
    '김철수',
    'kim@test.com',
    '010-1111-1111'
),
(
    'lee',
    '1234',
    '이영희',
    'lee@test.com',
    '010-2222-2222'
),
(
    'admin',
    '1234',
    '관리자',
    'admin@test.com',
    '010-3333-3333'
);
 

여기서 중요한 것은

VALUES
(첫 번째 데이터),
(두 번째 데이터),
(세 번째 데이터);
 

처럼 VALUES는 한 번이고, 괄호 하나가 레코드(행) 하나를 의미한다.


NULL 제약조건

  • 아래와 같이 내용을 작성했지만 오류가 발생했다.
  • 오류는 'null 값이 not null 제약조건을 위반했습니다.'

 

  • 실습 처음에서 테이블을 만든것을 확인해보면, DDL 항목으로 확인이 가능하다.
  • login_id 와 password 는 NOT NULL로 설정을 해뒀기 때문에 NULL 즉, 비어있으면 안된다.
  • 하지만, email, phone 은 NULL로 설정해뒀기 때문에 값이 비어도 값은 NULL로 들어간다.

✅DB 처리순서

위의 오류는 DB의

처리 순서 때문이다.

DB는 대략 이렇게 동작한다.

INSERT 요청
      │
      ▼
DEFAULT 값이 있는가?
      │
   YES → DEFAULT 값 채움
      │
      ▼
NOT NULL 검사
      │
password = '1234'
      │
NULL이 아님
      │
성공
 

즉, DEFAULT가 먼저 적용되고, 그 다음에 NOT NULL을 검사한다.

 

 

❌칼럼갯수에 의한 오류 : "더 많은 표현식"??

이 메시지는 PostgreSQL이 여러 행(VALUES (...) , (...))을 검사하면서 내는 오류라서 조금 헷갈릴 수 있다.

핵심은 이것 하나만 기억하면 된다.

VALUES 안의 모든 행은 컬럼 개수가 동일해야 한다.

예를 들어

VALUES
(1,2,3),
(4,5),
(6,7,8)
 

이건 절대 안 된다. -> 왜냐하면 행의 컬럼이 다르기 때문이다.

VALUES
(1,2,3),
(4,5,6),
(7,8,9)
 

처럼 모든 행의 값 개수가 같아야 한다.


 

  • 이렇게 WHERE문으로 데이터 3개를 더 추가해서 넣어봤다. 

쿼리문을 응용하면서 작성할수록 테이블을 어떻게 구성했는지, 행은 어떻게 되어있는지, 작성되어있는 값들이 올바르게 입력되어있는지 등등 봐야하는 요소들이 점점많아지고있다.

사실상 실무급의 데이터양은 아니지만 그럼에도 재미(?)가 있는 DB 쿼리문 작성실습이다.

728x90
반응형