SQL 첫걸음 4장

나르·2021년 1월 26일
0

RDBMS

목록 보기
6/15
post-thumbnail

🐬 16강 행 추가하기 - INSERT


SELECT는 질의를 하면 DB 서버에서 클라이언트로 결과를 반환하는 검색 명령이다.
반대로 INSERT,UPDATE,DELETE 등 데이터를 변경하는 명령은 클라이언트에서 서버로 데이터를 전송한다.

16-1 INSERT 로 행 추가하기

INSERT [INTO] 테이블 VALUES (값1,값2...);


sample41 저장된 데이터가 없는 테이블이다.
DESC로 조회한 저장가능한 데이터 유형은 위와 같다.

INSERT INTO sample41 VALUES(1,'ABC','2021-01-26');
위 명령으로 sample41 테이블에 데이터를 추가한 후 다시 조회하면 다음과 같은 결과가 나온다.

16-2 값을 저정할 열 지정하기

INSERT [INTO] 테이블(열1,열2...) VALUES (값1,값2...);

INSERT 명령에서 열을 지정하고 행을 추가할 수 있다. 이때 추가하는 값은 지정한 열과 갯수가 동일해야 하고, 값을 받지 못한 열은 기본값을 가지게 된다.

INSERT INTO sample41(a,no) VALUES('XYZ',2);

16-2 NOT NULL 제약

행을 추가할 때 NULL로 값을 지정할 수도 있지만, NULL 값을 허용하지 않는 NOT NULL 제약이 걸린 열에 대해서는 에러가 발생한다.

sample41 테이블의 no열에는 NOT NULL 제약이 걸려있기 때문에 ↓처럼 코딩하면 에러가 발생한다.
↓↓처럼 no열 값에 3을 주고 다시 실행하면 문제 없이 실행된다.
INSERT INTO sample41(no,a,b) VALUES(NULL,NULL,NULL);
INSERT INTO sample41(no,a,b) VALUES(3,NULL,NULL);

16-4 DEFAULT

DESC의 결과에서 Default 항목은 명시적으로 값을 지정하지 않았을 경우 사용하는 초기값을 말한다.
INSERT [INTO] 테이블(열1,열2) VALUES (값1,DEFAULT); 처럼 명시적으로 지정할 수도,
INSERT [INTO] 테이블(열1) VALUES (값1); 처럼 특정 열을 제외하고 INSERT해 암묵적으로 지정할 수도 있다.

🐬 17강 삭제하기 - DELETE


17-1 DELETE로 행 삭제하기

DELETE FROM 테이블 WHERE 조건식

DELETE 명령을 실행하기 전 SELECT 명령으로 기존 테이블의 데이터를 확인하는 것이 좋다.
WHERE구를 따로 지정하지 않고 DELETE하면 테이블의 모든 데이터가 삭제된다.
또한 DELETE는 다른 명령처럼 열을 지정할 수 없어 WHERE 조건에 일치하는 모든 행을 삭제한다.

17-2 DELETE 명령구

MySQL에서는 DELETE명령에서 ORDER BYLIMIT구를 사용해 삭제할 행을 지정할 수 있다.

🐬 18강 데이터 갱신하기 - UPDATE


18-1 UPDATE로 데이터 갱신하기

UPDATE 테이블 SET 열1=값1, 열2=값2... WHERE 조건식;

데이터를 잘못 입력하거나 변경되어 값을 수정해야 하는 경우 UPDATE 명령으로 셀 값을 갱신할 수 있다.

UPDATE sample41 SET a='AAA',b='2021-01-27' WHERE no=3;

18-2 UPDATE로 갱신할 경우 주의사항

SET구에서 =는 비교 연산자가 아닌 대입 연산자이다.
UPDATE sample41 SET no = no+1;
위 명령을 실행하면 WHERE 구가 지정되어 있지 않으므로 테이블의 no열의 모든 행이 no+1로 갱신된다.

18-3 복수열 갱신

UPDATESET구는 ,로 구분하여 갱신할 열을 여러 개 지정할 수 있다. 하지만 이 때엔 SET구의 실행 순서를 알아둘 필요가 있다.

UPDATE sample41 SET no=no+1, a=no;
UPDATE sample41 SET a=no, no=no+1;

위 두 명령을 실행하면 MySQL에서는 다른 값이, Oracle에서는 같은 값이 반환된다.
MySQL은 SET구에 기술된 순서로 갱신이 처리되고, Oracle은 갱신 이전의 값을 기준으로 갱신이 처리되기 때문이다.

18-4 NULL로 갱신하기

UPDATE 명령으로 셀 값을 NULL로 갱신할 수 있고, 이를 NULL 초기화라고 부른다. 다만 NOT NULL제약이 걸린 열에 대해서는 적용되지 않는다.

🐬 19강 물리삭제와 논리삭제


19-1 두 종류의 삭제방법

  • 물리삭제 : DELETE 명령을 사용해 직접 데이터를 삭제하는 방식
  • 논리삭제 : 테이블에 '삭제플래그'와 같은 열을 만들어 UPDATE 명령으로 '삭제플래그' 값을 유효하게 갱신해두는 방식. 실제 데이터는 남아있지만 삭제가 설정된 행을 제외하고 SELECT하는 명령 시행

논리삭제는 실제로 데이터를 삭제하지 않기 때문에 삭제 이전으로 되돌릴 수 있다는 장점이 있다. 하지만 삭제해도 DB의 저장공간이 늘어나지 않고, 오히려 크기가 증가함에 따라 속도가 느려지는 단점이 있다.

19-2 삭제방법 선택하기

두 삭제방법 모두 장단점이 있기 때문에 데이터 특성과 용도에 따라 선택하여 사용해야 한다.
예를 들어 개인정보를 취급하는 테이블은 물리삭제를, 쇼핑 사이트의 주문 취소는 주문통계에는 영향을 미치므로 논리삭제를 주로 사용한다.

profile
💻 + ☕ = </>

0개의 댓글