SQL 첫걸음 16-18강 정리
13 Jan 2020책을 보면서 공부한 내용 복습 및 정리
기본설정
- Mysql 서버 켜기
- Mysql 실행하기
- sample database 사용 설정하기
$ mysql.server start
$ sudo mysql
mysql> use sample;
16강
RDBMS에서 행을 추가할 때는 INSERT
명령어를 사용한다. 현재 sample41 테이블은 데이터가 없고 각 컬럼의 유형은 아래와 같다.
데이터를 추가할 때는 INSERT INTO {table} VALUES ({data}..);
형식으로 명령문을 작성하면 된다. 여기서 주의할 점은 VALUES 다음의 데이터를 형식에 맞도록 지정해야 한다는 것이다.
위의 명령어를 사용할 때는 테이블의 컬럼 순서에 맞춰서 데이터를 지정했다. 내가 데이터를 추가하고 싶은 열만 지정할 때는 테이블 뒤에 해당 열을 지정하면 된다. 아래 예제에서는 날짜에 해당되는 b 열에는 값을 지정하지 않았으므로 b의 default인 NULL이 저장된 것을 알 수 있다.
sample41 테이블 정보를 확인했을 때 no 열은 NULL을 허용하지 않았다. 이럴 경우 NULL 값을 넣을 경우 에러가 발생한다.
DESC
명령어로 테이블 정보를 확인했을 때 Default 항목이 있었다. INSERT 문에서 값을 설정하지 않았을 경우 초기값으로 지정한 값이 DEFAULT
이다. sample411은 d 열의 기본값이 0으로 설정되어 있다. INSERT 문을 하나는 DEFAULT를 명시적으로 지정하였고 다른 하나는 별도로 지정하지 않았다. 둘 다 결과는 기본값인 0이 저장되었다.
17강
INSERT로 추가한 데이터는 DELETE
로 삭제할 수 있다. DELETE FROM {table};
이라고 할 때는 해당 테이블의 모든 테이터를 삭제하게 되며 WHERE 구를 추가하여 삭제할 행의 조건을 지정할 수 있다.
18강
데이터를 갱신할 때는 UPDATE
를 사용한다. UPDATE는 테이블의 셀 값을 갱신하는 명령어로 DELETE와 다르게 셀 단위로 데이터를 갱신할 수 있다. UPDATE {table} SET {culumn} = {value} WHERE ..;
형식으로 이루어져 있으며 SET에서 갱신할 데이터와 열을 설정한다. INSERT 문에서 해당 열에 맞는 자료형을 설정한 것처럼 UPDATE에서도 맞는 자료형을 지정해야 한다.
아래 예에서는 no가 2인 행의 b 값을 갱신했다. 여기서 WHERE 조건을 설정하지 않을 경우 테이블의 모든 행이 갱신 대상이 되므로 WHERE 조건을 지정할 때 주의해야 한다.
아래 예는 기존의 no에 1을 더한 값으로 갱신한다. 이처럼 열 자체가 갱신 대상이 될 수도 있다.
여러 개의 열을 갱신할 때는 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 열에 저장한다.
a 열이 먼저 지정된 경우는 no열 값을 a 열에 저장한 후에 no 열 값에 1을 더한 값을 no 열에 저장한다. MySQL에서는 SET에 지정한 순서대로 갱신하게 된다.
해당 열이 NOT NULL 제약이 설정되어 있지 않다면 UPDATE 명령으로 NULL 초기화를 할 수도 있다.