백엔드/SQL 첫걸음

4. 데이터의 추가, 삭제, 갱신

smallsilver_west 2024. 10. 5. 21:22

16. 행 추가하기

 

INSERT

행을 추가하는 함수

mysql> INSERT INTO t1 VALUES (1,'ABC','2024-10-05');
mysql> INSERT INTO t1 (a,b) VALUES ('XYZ',2); // a,b열만 지정해 행 추가

 

NOT NULL 제약

NOT NULL 제약이 걸려있는 열은 NULL 값을 허용하지 않음

 

DAFUALT

명시적으로 값을 지정하지 않은 경우 사용하는 초기값을 의미

테이블을 정의할 때 지정할 수 있으며 열을 지정해 행을 추가할 때 지정하지 않은 열은 Deafult 값을 사용하여 저장

mysql> INSERT INTO t1 (a,b) VALUES(2,DEFAULT); // 명시적으로 DEFAULT를 지정해 INSERT

 

17. 삭제하기

 

DELETE

DELETE FROM [table name] WHERE [조건식];

: WHERE 조건에 일치하는 모든 행을 삭제하며 삭제는 행 단위로 수행, 열을 지정하여 삭제는 불가

DELETE FROM t1 WHERE a=1 OR a=2; // 삭제 대상 행을 지정

 

18. 데이터 갱신하기

 

UPDATE

UPDATE [table name] SET [row name = value] WHERE [조건 식];

mysql> UPDATE t1 SET a='2024-10-05' WHERE b=2;

 

주의사항

갱신은 행 단위로 처리되므로 현재 선택한 행은 갱신되기 전의 값에 해당

mysql> SELECT * FROM t1
mysql> UPDATE t1 SET c=c+1;

* 모든 행의 c 값에 1씩 더해 반환

 

복수열 갱신

UPDATE [table name] SET [row name1 = value1, row name2 = value2] WHERE [조건식];

 

SET 구문

데이터베이스 제품에 따라 그 처리 방식이 상이

mysql> UPDATE t1 SET a=a+1, b=a;

: a열의 값에 1을 더하여 다시 a열에 저장한 뒤, 그 값을 b열에 대입

mysql> UPDATE t1 SET b=a, a=a+1;

: a열의 값을 b에 대입한 후 해당 값에 1을 더하여 반환

 

위의 경우 Oracle에서는 1, 2 명령이 동일하게 처리되어 b열의 값이 항상 (a열 값 - 1)로 반환

단, MySQL에서는 SET 구문에 기술된 순서로 갱신 처리되어 a열의 값은 갱신 이후의 값을 반환

 

NULL 갱신

- NULL 초기화: UPDATE [table name] SET [row name = NULL];

단, NOT NULL 제약이 있는 열은 갱신하지 않음

 

19. 물리삭제와 논리삭제

 

물리삭제

SQL의 DELETE 명령을 사용해 직접 데이터를 삭제하는 사고방식으로 테이블에서 데이터를 삭제

 

논리삭제

테이블에서 실제로 삭제하는 대신, UPDATE 명령을 이용해 '삭제플래그'의 값을 유효하게 갱신하는 사고방식으로 데이터가 삭제된 것처럼 가장하는 방법

실제 테이블 안에 데이터는 남아있지만, 참조할 때 '삭제플래그'가 삭제로 설정된 행을 제외하고 SELECT 명령 실행

 

| pros: 데이터를 실제로 삭제하지 않아 삭제 이전의 상태로 쉽게 되돌릴 수 있음

 

| cons: 삭제해도 데이터 베이스의 저장공간을 확보할 수 없음

 

 

'백엔드 > SQL 첫걸음' 카테고리의 다른 글

6. 데이터베이스 객체 작성과 삭제  (0) 2024.10.12
5. 집계와 서브쿼리  (0) 2024.10.11
3. 정렬과 연산  (1) 2024.10.05
2. 테이블에서 데이터 검색  (4) 2024.09.25
1. 데이터베이스와 SQL  (2) 2024.09.25