SQL 첫걸음 16-18강 정리

책을 보면서 공부한 내용 복습 및 정리
기본설정
  1. Mysql 서버 켜기
  2. Mysql 실행하기
  3. sample database 사용 설정하기
$ mysql.server start
$ sudo mysql
mysql> use sample;

16강

RDBMS에서 행을 추가할 때는 INSERT 명령어를 사용한다. 현재 sample41 테이블은 데이터가 없고 각 컬럼의 유형은 아래와 같다.

insert_1

데이터를 추가할 때는 INSERT INTO {table} VALUES ({data}..); 형식으로 명령문을 작성하면 된다. 여기서 주의할 점은 VALUES 다음의 데이터를 형식에 맞도록 지정해야 한다는 것이다.

insert_2

위의 명령어를 사용할 때는 테이블의 컬럼 순서에 맞춰서 데이터를 지정했다. 내가 데이터를 추가하고 싶은 열만 지정할 때는 테이블 뒤에 해당 열을 지정하면 된다. 아래 예제에서는 날짜에 해당되는 b 열에는 값을 지정하지 않았으므로 b의 default인 NULL이 저장된 것을 알 수 있다.

insert_3

sample41 테이블 정보를 확인했을 때 no 열은 NULL을 허용하지 않았다. 이럴 경우 NULL 값을 넣을 경우 에러가 발생한다.

insert_4

DESC 명령어로 테이블 정보를 확인했을 때 Default 항목이 있었다. INSERT 문에서 값을 설정하지 않았을 경우 초기값으로 지정한 값이 DEFAULT 이다. sample411은 d 열의 기본값이 0으로 설정되어 있다. INSERT 문을 하나는 DEFAULT를 명시적으로 지정하였고 다른 하나는 별도로 지정하지 않았다. 둘 다 결과는 기본값인 0이 저장되었다.

insert_5 insert_6

17강

INSERT로 추가한 데이터는 DELETE로 삭제할 수 있다. DELETE FROM {table}; 이라고 할 때는 해당 테이블의 모든 테이터를 삭제하게 되며 WHERE 구를 추가하여 삭제할 행의 조건을 지정할 수 있다.

delete_1

18강

데이터를 갱신할 때는 UPDATE를 사용한다. UPDATE는 테이블의 셀 값을 갱신하는 명령어로 DELETE와 다르게 셀 단위로 데이터를 갱신할 수 있다. UPDATE {table} SET {culumn} = {value} WHERE ..; 형식으로 이루어져 있으며 SET에서 갱신할 데이터와 열을 설정한다. INSERT 문에서 해당 열에 맞는 자료형을 설정한 것처럼 UPDATE에서도 맞는 자료형을 지정해야 한다.

아래 예에서는 no가 2인 행의 b 값을 갱신했다. 여기서 WHERE 조건을 설정하지 않을 경우 테이블의 모든 행이 갱신 대상이 되므로 WHERE 조건을 지정할 때 주의해야 한다.

update_1

아래 예는 기존의 no에 1을 더한 값으로 갱신한다. 이처럼 열 자체가 갱신 대상이 될 수도 있다.

update_2

여러 개의 열을 갱신할 때는 UPDATE {table} SET {cul1}={val1}, {cul2}={val2} WHERE .. ;식으로 쓸 수 있다. SET에서 여러 열을 한 번에 갱신할 때 처리 순서는 각 데이터베이스마다 다르다. 아래 두 명령어는 Oracle에서는 결과가 같지만 MySQL에서는 다르게나온다.

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

no 열이 먼저 지정된 명령어를 실행한 경우 no 열에 1을 더한 값을 no 열에 저장하고 그 후에 그 값을 a 열에 저장한다.

update_3

a 열이 먼저 지정된 경우는 no열 값을 a 열에 저장한 후에 no 열 값에 1을 더한 값을 no 열에 저장한다. MySQL에서는 SET에 지정한 순서대로 갱신하게 된다.

update_4

해당 열이 NOT NULL 제약이 설정되어 있지 않다면 UPDATE 명령으로 NULL 초기화를 할 수도 있다.

update_5