study/sql

데이터 추가, 삭제, 갱신

올스왑 2021. 5. 20. 11:22

SQL 첫걸음이란 책을 읽으면서 정리중.

 

SELECT 명령으로는 데이터를 검색한다. 데이터를 추가하는 경우에는 INSERT 명령을 사용한다.

INSERT 명령은 테이블의 행 단위로 데이터를 추가한다. 데이터를 추가하기 전 'DESC 테이블명;' 명령을 통해 각 컬럼의 정보를 알고 데이터를 추가할 수 있다.

 

예를 들어 INT(11), VARCHAR(30), DATE 타입의 컬럼들이 있을 때, 데이터를 추가하려면 다음과 같이 명령문을 사용한다.

 

INSERT INTO sample VALUES(1, 'ABC', '2021-05-20'); -> sample 테이블에 VALUES 괄호 안에 있는 데이터들을 삽입한다. 각 데이터의 순서는 테이블 컬럼의 순서와 맞아야 한다.

INSERT INTO sample(no, name) VALUES(2, 'GGG'); -> 컬럼을 지정해서 데이터를 넣을 수도 있다. 값을 지정하지 않은 속성에 대해서는 기본값이 부여된다.

 

테이블 컬럼의 속성 중에는 NOT NULL 제약이 있다. 이 설정이 걸려있으면 NULL값을 허용하지 않는다.NOT NULL 제약이 걸려있어도 Default 값이 설정되어 있다면, 값을 추가하지 않아도 데이터를 삽입할 수 있다.(암묵적 지정) -> 명시적으로 'DEFAULT'라는 값으로 넣어도 된다.(명시적 지정)암묵적 지정 : 'INSERT INTO sample(no) VALUES(3);'명시적 지정 : 'INSERT INTO sample(no, name) VALUES(3, DEFAULT);'


데이터 삭제하기 - DELETE

 

DELETE 명령은 조건과 맞는 모든 데이터를 삭제한다.

DELETE FROM sample; -> sample의 모든 데이터(행) 삭제.

DELETE FROM sample WHERE no=5; -> no가 5인 모든 데이터 삭제.

 

MySQL의 경우, ORDER BY와 LIMIT 구를 사용해 삭제할 데이터를 지정할 수 있다.


데이터 갱신하기 - UPDATE

 

UPDATE는 셀 단위로 값을 갱신할 수 있다. WHERE 구를 사용해 조건을 지정하고, 조건에 맞는 모든 행을 갱신할 수 있다. WHERE 구를 생략하면 모든 행을 갱신한다.

갱신할 셀은 SET 구를 사용해 지정한다. 대입 연산자를 사용한다. 값은 상수로 표기한다.

 

UPDATE sample SET update='2021-11-11' WHERE no>10; -> no가 10 초과이면, update를 '2021-11-11'로 갱신한다.

UPDATE sample SET office='seoul' WHERE no=10; -> no가 10이면, office를 '서울'로 갱신한다.

UPDATE sample SET office=NULL -> 모든 행에서, office를 NULL로 갱신한다.

UPDATE sample SET age=age+1; -> 모든 행에서, age를 1씩 더한다.

UPDATE sample SET office='seoul', age=20 WHERE no=37; -> no=37인 경우, office를 '서울'로, age를 20으로 갱신한다.(복수열 갱신)

 

복수열 갱신의 경우, 데이터베이스마다 명령의 실행 순서가 다르다.

UPDATE sample SET no=no+1, a=no; 이 명령어의 경우, oracle과 MySQL의 결과값이 다르게 출력된다.

MySQL의 경우, no에 1을 더하고, 1 더한 no를 a에 대입한다. -> 기술 순서가 반영된다.

oracle의 경우, no에 1을 더하고, 1을 더하지 않은 no를 a에 대입한다. -> 기술 순서가 반영되지 않는다.


데이터베이스에서 데이터를 삭제할 때는, 실제로 데이터를 삭제하는 방법이 있고(물리 삭재), 삭제헀다고 표시하는 방법이 있다.(논리 삭제) -> 삭제 플래그 열을 만들어 사용한다. 이 경우 UPDATE 문을 사용해 삭제 플래그 값을 바꾼다.

 

논리 삭제를 사용하면 실제 데이터를 지우는 것이 아니기 때문에, 삭제 이전 상태로 돌아갈 수 있다.