SQL 첫걸음 - Day 2

서은서·2023년 11월 16일
0

MySQL

목록 보기
2/2
post-thumbnail

공부한지 한달이 넘어가는... SQL... 프로그래머스 문제를 풀다보니 예전에 공부했던 개념들을 복습해야겠다는 생각이 들었다....😶

Insert

SQL의 기본이라고 할 수 있는 SELECT 명령은 데이터 검색을 위한 것으로, 질문을 던지면 데이터베이스 서버가 클라이언트로 결과를 반환해 준다. 데이터를 추가할 경우에는 SELECT와는 반대로 클라이언트에서 서버로 데이터를 전송하여 서버가 전송받은 데이터를 데이터베이스에 저장한다.
Insert의 기본적인 명령은 다음과 같다.

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

예를 들어보자.
다음과 같이 sample41 테이블이 있다고 하자

noab
432014-01-25
542014-09-07

이 테이블에 1,'ABC','2014-01-25' 값을 no,a,b에 추가하고싶다면 다음과 같이 명령을 작성하면 된다.

👩🏻‍💻 명령

	INSERT INTO sample41 VALUES(1,'ABC','2014-01-25')

👩🏻‍💻 결과

noab
432014-01-25
542014-09-07
1ABC2014-01-25

이 때 만약 열을 지정해서 지정된 열에만 값을 추가하고 싶다면?
👉🏻 VALUES 앞에 괄호를 통해 열을 지정해주면 된다.

👩🏻‍💻 명령

	INSERT INTO sample41(a, no) VALUES(2,'A')

👩🏻‍💻 결과

noab
432014-01-25
542014-09-07
1ABC2014-01-25
2ANULL

주목할 점은 별도의 값을 지정하지 않았던 b열에는 기본값으로 NULL(b열의 default 값)이 저장된다는 점이다.

기본값(default)이란?

명시적으로 값을 지정하지 않았을 경우 사용하는 초깃값을 말한다.
열을 지정해 행을 추가할 때 지정하지 않은 열은 default 값을 사용하여 저장된다.
ex)

FieldTypeNullKeyDefaultExtra
noint(11)NONULL
dint(11)YES0

-> no 열의 기본값은 NULL
-> d 열의 기본값은 0

+) 기본값을 추가하고 싶다면 별도의 값을 지정하지 않거나 VALUES(DEFAULT)로 지정하면 된다.

⚠️ 만약 특정 열에 NOT NULL 제약이 걸려있다면?

INSERT 명령을 이용해 NULL 값을 추가하려고 하면 에러가 발생한다.
때문에 NULL값을 추가할 때는 주의할 필요가 있다!
ISNULL을 이용해 NULL인지 아닌지 확인을 해야한다.

DELETE

데이터베이스의 테이블에서 행을 삭제하기 위해 DELETE 명령을 사용한다. 기본적인 명령은 다음과 같다.

DELETE FROM 테이블명 WHERE 조건식

예를 들어보자.
다음과 같이 sample41 테이블이 있다고 하자

noab
432014-01-25
542014-09-07
1ABC2014-01-25

이 테이블에서 no=3인 행을 제거하고싶다면 다음과 같이 명령을 작성하면 된다.

👩🏻‍💻 명령

	DELETE FROM sample41 WHERE no=3;

👩🏻‍💻 결과

noab
432014-01-25
542014-09-07

👉🏻 WHERE 뒤에 제거하고 싶은 행의 조건을 적어주면 된다.
👉🏻 주의할점은 조건에 해당되는 모든 행이 삭제된다.

UPDATE

데이블의 셀에 저장되어 있는 값을 갱신 즉, 수정하고 싶다면 UPDATE 명령을 사용하면 된다. 기본적인 명령은 다음과 같다.

UPDATE 테이블명 SET1=1,2=2, .... WHERE 조건식 

예를 들어보자.
다음과 같이 sample41 테이블이 있다고 하자

noab
232013-02-25
432014-01-25
542014-09-07

이 테이블에서 no=2인 행의 b값을 '2014-09-07'로 바꾸고 싶다면 다음과 같이 명령을 작성하면 된다.

👩🏻‍💻 명령

	UPDATE sample41 SET b='2014-09-07' WHERE no=2;

👩🏻‍💻 결과

noab
232014-09-07
432014-01-25
542014-09-07

👉🏻 WHERE 구를 생략한다면 테이블의 모든 행이 갱신된다.
👉🏻 INSERT와 마찬가지로 열의 자료형에 맞는 값을 지정해야 한다.
⚠️ 테이블에 존재하지 않는 열을 지정하면 에러가 발생함으로 SELECT를 통해 값이 있는지 확인하는 것이 중요하다.

UPDATE 활용

1) UPDATE 명령으로 증가 연산을 계산할 수 있다.
다음과 같이 sample41가 있을 때 모든 no에 대해 1씩 증가시키고 싶다면 다음과 같이 코드를 작성할 수 있다.

👩🏻‍💻 명령

	UPDATE sample41 SET no=no+1;

👩🏻‍💻 결과

noab
332014-09-07
532014-01-25
642014-09-07

👉🏻 모든 행의 no 값에 1씩 더해진 것을 알 수 있다.

2) 복수개의 열을 갱신시킬 수 있다.

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

예를 들어 다음과 같이 두개의 명령문을 통해 수행할 UPDATE 명령을 하나의 명령문으로 통합하여 실행할 수 있다.

① 두개의 명령문 이용

UPDATE sample41 SET a='xxx' WHERE no =2;
UPDATE sample41 SET b='2014-01-01' WHERE no=2;

② 하나의 명령문 이용

UPDATE sample41 SET a='xxx', b='2014-01-01' WHERE no =2;

👉🏻 이 때, 주의할 점은 SET 구를 어떤 순서로 갱신 처리를 하는지 알아둘 필요가 있다는 점이다. MySQL에서는 SET구에 기술된 순서로 갱신 처리가 일어나므로 열을 참조할 떄 처리 순서를 고려하여 명령을 작성해야한다.

profile
내일의 나는 오늘보다 더 나아지기를 :D

0개의 댓글