SQL 첫걸음 - 2

연꽃·2021년 12월 22일
0

컴퓨터 서적

목록 보기
6/14
post-thumbnail

3장 정렬과 연산

🏀 정렬 - ORDER BY

SELECT 명령의 ORDER BY 구를 사용하여 검색결과이 행 순서를 바꿀 수 있다. 행 순서를 정렬하는 방법은 오름차순과 내림차순이 있는데 기본적으로 오름차순으로 정렬이 되고, 내림차순으로 정렬을 하고 싶을 때는 DESC를 붙여 내림차순으로 정렬할 수 있다.

nonamesexage
1박상엽남성34
2박은빈여성28
3이형태null32

위 데이터베이스에서 나이가 많은 순서대로 정렬을 하고 싶다고 가정해보자. 그렇다면 내림차순으로 정렬을 해야하기 때문에 다음과 같은 쿼리문을 작성해야한다.

SELECT * FROM member ORDER BY age DESC;

이 쿼리문을 통해 다음과 같은 데이터가 출력될 것이다.

nonamesexage
1박상엽남성34
2이형태null32
3박은빈여성28

주의할 점은 데이터의 형식 중에서 문자열형 데이터의 대소관계는 사전식 순서에 의해 결정된다는 점이다. 당연한 이야기처럼 보이지만 문자열형 데이터에 숫자 1,2,10이 들어있다고 가정해보자. 이를 오름차순으로 정렬해주면 1,10,2의 순서로 정렬이 된다. 이는 사전식 순서로는 10이 2보다 앞에 있기 때문이다.

추가적으로 ORDER BY는 테이블에 영향을 주지 않는다. 즉, 우리가 쿼리문을 통해 출력되는 데이터를 정렬해서 볼 뿐이지 데이터베이스에 있는 데이터 자체의 순서를 변경하는 것은 아니라는 이야기이다.

🏀 CASE 문으로 데이터 변환하기

CASE문을 이용하여 데이터를 변환할 수 있다. 예를들어 NULL 값을 0으로 간주하여 정보를 확인하거나 계산을 해주고 싶은 경우가 있을 수 있다. CASE 문을 쓰는 방법은 기본적으로 다음과 같다.

CASE WHEN 조건식 THEN 식1
ELSE 식2
END

그렇다면 구체적으로 알아보자. 아래의 테이블에서 sex열이 null인 경우에는 남성이라고 출력을 하고 싶다고 가정을 해보자.

nonamesexage
1박상엽남성34
2박은빈여성28
3이형태null32

이러한 경우에는 다음과 같은 쿼리문을 작성해주면 될 것이다.

SELECT * CASE WHEN sex IS NULL THEN '남성' ELSE sex END 
FROM member;

그렇다면 다음과 같은 데이터가 출력될 것이다.

nonamesexage
1박상엽남성34
2박은빈여성28
3이형태남성32

추가적으로 NULL 값을 변환하는 경우에는 COALESCE 함수를 사용하는 편이 더 간단하다. 위의 쿼리문을 다음과 같이 간단하게 바꿀 수 있다.

SELECT *,COALESCE(sex,'남성') FROM member;

이 쿼리문은 sex가 NULL 값이 아니면 그대로 sex값을 출력하고 그렇지 않으면 '남성'을 출력한다.

4장 데이터의 추가, 삭제, 갱신

🏀 행 추가하기 - INSERT

행을 추가하는 경우에는 INSERT 명령어를 사용하고 기본적으로 다음과 같은 쿼리문을 통해 수행한다.

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

위 예시에서 새로운 데이터를 추가해보자.

INSERT INTO member VALUES ('우정잉','여성',28);

위 쿼리문을 통해 다음과 같은 결과가 출력될 것이다.

nonamesexage
1박상엽남성34
2박은빈여성28
3이형태null32
4우정잉여성28

🏀 삭제하기 - DELETE

테이블의 행을 삭제하고 싶은 경우에는 DELETE 명령어를 사용한다.

DELETE FROM 테이블명 WHERE 조건식

위의 예시에서 추가한 우정잉이라는 데이터를 삭제하고 싶다면 다음과 같은 쿼리문을 통해 가능할 것이다.

DELETE FROM member WHERE name = '우정잉';

위 쿼리문을 실행하면 다음과 같은 결과가 출력될 것이다.

nonamesexage
1박상엽남성34
2박은빈여성28
3이형태null32

참고 : SQL 첫걸음

profile
우물에서 자라나는 중

1개의 댓글

comment-user-thumbnail
2023년 11월 9일

예민하네 화났네

답글 달기