카테고리 없음

SQL 첫걸음 4장_데이터의 추가, 삭제, 갱신

haenaneah 2025. 3. 27. 16:05

16강 행 추가하기 -INSERT

- 데이터를 추가하는 방법

- 데이터베이스의 테이블에 행을 추가하기 위해서 INSERT 명령을 사용

INSERT INTO 테이블명 VALUES( 값 1, 값 2, ... )

 

- 데이터를 추가하는 경우 클라이언트에서 서버로 데이터를 전송하는 형식을 취함.

- 서버 측은 전송받은 데이터를 데이터베이스에 저장.

 

 

1. INSERT로 행 추가하기 

- RDBMS에서는 INSERT 명령을 사용해 테이블의 행 단위로 데이터를 추가.

> 데이터베이스를 생성하면 테이블에는 아무런 데이터도 저장되어 있지 않은 상태가 됨.

> 이후 INSERT 명령으로 데이터를 추가해 데이터베이스를 구축.

INSERT INTO sample41 VALUES (l, ’ ABC’, '2014-01-25’);

 

- 값을 지정할 때는 해당 열의 데이터 형식에 맞도록 지정

- INSERT 명령을 실행해도 처리상태만 표시될 뿐 SELECT 명령을 실행했을 때처럼 결과를 출력하지는 않음.

; SELECT 명령의 경우 실행하면 그 결과가 클라이언트에게 반환되지만 INSERT명령은 데이터가 클라이언트에서 서버로 전송되므로 반환되는 결과가 없는 것.

 

 

2. 값을 저장할 열 지정하기

- INSERT 명령으로 행을 추가할 경우 값을 저장할 열을 지정할 수 있음.

- VALUSE 구에 값을 지정할 경우에는 지정한 열과 동일한 개수로 값을 지정해야 함.

INSERT INTO 테이블명 (열1, 열 2 , . .. ) VALUES( 값1, 값2 ,... )

 

별도의 값을 지정하지 않았던 b 열에는 기본값인 NULL(b 열의 default 값)이 저장된 것을 알 수 있음.

 

 

3. NOT NULL 제약

- 행을 추가할 때 유효한 값이 없는 상태 (NULL) 로 두고 싶을 경우에는 VALUES 구에서 NULL로 값을 지정할 수 있음.

 

앞의 INSERT 명령을 실행하면 에러가 발생. 이는 no 열에 대해 NULL 값을 허용하지 않는 NOTNULL 제약이 걸려있기 때문.

 

- 테이블에 저장히는 데이터를 설정으로 제한하는 것을 통틀어 '제약'이라 부름.

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

 

- NULL의 조건을 비교할 때는 IS NULL을 이용해야 하며 NULL을 포함한 연산 결과는 모두 NULL이 되어버리기도 함.

- NULL을 허용하고 싶지 않다면 NOT NULL 제약을 걸어두는 편이 좋음.

 

 

- DEFAULT

- DESC 명령으로 열 구성을 살펴보면 Default라는 항목을 찾을 있는데, Default는 명시적으로 값을 지정하지 않았을 경우 사용하는 초깃값을 말함.
- Default 값은 테이블을 정의할 때 지정할 수 있음. (열을 지정해 행을 추가할 때 지정하지 않은 열은 Default 값을 사용하여 저장됨)

- 디폴트값을 지정하는 것을 ‘DEFAULT를 명시적으로 지정하는 방법’이라고 함.

 

 

- 암묵적으로 디폴트 저장

- 디폴트값으로 저장할 열을 INSERT 명령문에서 별도 지정하지 않는 것을 말함.

명시적/ 암묵적으로 디폴트 지정


17장 삭제하기 - DELETE

- 데이터를 삭제하는 방법

- 데이터베이스의 테이블에서 행을삭제하기 위해서는 DELETE 명령을 사용.

DELETE FROM 테이블명 WHERE 조건식

 

 

1. DELETE로 행 삭제하기

- RDBMS에서 데이터를 삭제할 경우에는 행 단위로 DELETE 명령을 수행.

DELETE FROM 테이블명 WHERE 조건식

 

- /DELETE 명령에는 WHERE 구를 지정할 수 있으나/ SELECT 명령처럼 WHERE 구를 생략할 경우에는 (모든 행을 대상으
로 동작하기 때문에) 테이블의 모든 데이터가 삭제됨.

- 한편 WHERE 구를 지정한 경우에는 해당 조건식에 맞는 행만 삭제 대상이 됨.

 

- 삭제는 행 단위로 수행 (열을 지정하여 그 열만 삭제할 수 없음)

 

 -DELETE 명령을 실행할 때는 재확인을 위한 대화창 같은 것은 표시되지 않음

; 즉, WHERE 구에서 조건식을 잘못 지정하면 의도하지 않은 데이터마저 삭제되기 때문에, DELETE 명령을 실행할 때는 주의

 

 

2. DELETE 명령 구

- WHERE 구에서 대상이 되는 행을 검색하는 것은 SELECT 명령에서도 DELETE 명령에서도 똑같음.

- SELECT 명령에서는 조건에 맞는 행의 결괏값이 클라이언트로 반환

- DELETE 명령에서는 조건에 맞는 행이 삭제

알아두면 좋은 내용


18강 데이터 갱신하기 - UPDATE

- 테이블의 셀에 저장되어 있는 값을 갱신하려면 UPDATE 명령을 사용.

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

 

- (예시) 실제 시스템에서 '등록'이나 '갱신' 버튼을 클릭하면 데이터 갱신이 이루어짐

 

 

1. UPDATE로 데이터 갱신하기

- RDBMS에서는 UPDATE 명령으로 데이터를 갱신할 수 있음.

- UPDATE 명령은 테이블의 셀 값을 갱신히는 명령.

UPDATE 테이블명 SET 열명 = 값 WHERE 조건식

 

- DELETE와 달리 UPDATE는 셀 단위로 데이터를 갱신할 수 있음.

- WHERE 구에 조건을 지정하면 그에 일치하는 행을 갱신할 수 있음.

- WHERE 구를 생략한 경우에는 DELETE 의 경우와 마찬가지로 테이블의 모든 행이 갱신됨.

 

- UPDATE 명령에서는 SET 구를시용하여 갱신할 열과 값을 지정. 문법은 ‘SET 열명 = 값’. (이때 =은 비교 연산자가 아닌, 값을
대입하는 대입 연산자)

-  테이블에 존재하지 않는 열을 지정하면 에러가 발생하여 UPDATE 명령은 실행되지 않음. 

 

-  값은 상수로 표기. (INSERT 명령과 마찬가지로 자료형에 맞는 값을 지정)

- 갱신해야 할 열과 값이 복수인 경우에는 ‘열 = 값’을 콤마(,)로 구분하여 리스트 형식으로 지정할 수 있음.

- SET 구에 지정한 갱신 내용은 처리 대상이 되는 모든 행에 적용.

 

- UPDATE 명령의 WHERE 조건문 역시 DELETE 명령과 마찬가지로 조건에 일치하는 모든 행이 그 대상이 됨.

- WHERE 구를 생략하면 테이블의 모든 행이 갱신 대상이 됨.

 

 

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

이 명령문에는 WHERE 구가 지정되어 있지 않으므로 갱신 대상은 테이블의 모든 행이 됨. SET구에서는 no 열의 값을 갱신하는데 갱신 후의 값은 본래 값(갱신 전의 값)에서 1을 더한 결과.

 

- 갱신할 값을 열이 포함된 식으로도 표기할 수 있음. 이때 해당 열이 갱신 대상이 되는 열이라 해도 상관없음.

(‘현재의 no 값에 1을 더한 값으로 no 열을 갱신하라’는 의미)

 

 

3. 복수열의 갱신

- UPDATE 명령의 SET구에서는 필요에 따라 콤마(,)로 구분하여 갱신할 열을 여러 개 지정할 수 있음.

 

- SET 구의 실행순서

MySQL에서는 서로 다른 결핏값이 나오지만 Oracle에서는 어느 명령을 실행해도 결과는 같음.

 

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

 

no 열의 값을 a 열에 대입한 후, no 열의 값을 +1. 따라서 a 열의 값은 ‘"no - 1 ’한값이 됨.

 

- Oracleㅇ에서는 SET 구에 기술한 식의 순서가 처리에 영향을 주지 않음. (갱신식의 오른쪽에 위치한 no 열의 값이 항상 갱신 이전의 값을 반환하기 때문)

- MySQL의 경우, 갱신식 안에서 열을 참조할 때는 처리 순서를 고려해야 함.

 

 

4. NULL로 갱신하기

- UPDATE 명령으로 셀 값을 NULL로 갱신할 수 있음. 

NULL로 값을 갱신하는 것을 보통 'NULL 초기화'라 부름

 

- 다만 NOT NULL 제약이 설정되어 있는 열은 NULL이 허용되지 않음. (UPDATE 명령에 있어서도 NOT NULL 제약이 유효하기 때문)


19강 물리삭제와 논리삭제

- 데이터베이스에서 데이터를 삭제하는 방법은 용도에 따라 두 가지로 나뉨.

- 전용 SQL 명령이 따로 존재하지 않음.

 

 

1. 두  종류의 삭제방법

- 물리삭제 : SQL의 DELETE 명령을 사용해 직접 데이터를 삭제하자는 사고 방식

 

- 논리삭제 : 테이블에 '삭제플래그'와 같은 열을 미리 준비해둠

; 즉, 테이블에서 실제로 행을 삭제하는 대신, UPDATE 명령을 이용해 '삭제플레그'의 값ㅇ늘 유효하게 갱신해두자는 발상에 의한 삭제방법

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

- 장점 : 테이터를 삭제하지 않기 때문에 삭제되기 전의 상태로 간단히 되돌릴 수 있음

- 단점 : 삭제해도 데이터베이스의 저장공간이 늘어나지 않음. 데이터베이스의 크기가 증가함에 따라 검색속도가 떨어짐. 애플리케이션 측 프로그램에서는 삭제임에도 불구하고 UPDATE 명령을 실행하므로 혼란을 야기하기도 함.

 

 

2. 삭제방법 선택하기

- 물리삭제 : SNS 서비스처럼 사용자의 개인정보를 다루는 시스템

- 논리삭제 : 쇼핑 사이트의 경우