[MySQL입문] 수치와 문자열

Date:     Updated:

카테고리:

태그:

인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click

🚀 수치

단순 특정 열들을 가진 행을 조회하는 것이 아닌, 그냥 어떤 연산된 결과를 SELECT하면 그 값만 ‘열 없이’ 출력할 수 있는 듯 하다. 대신 여기서도 AS를 사용하면 열의 이름을 붙여줄 수 있다.

🔥 실행 순서

SELECT 2021 - birthYear + 1 AS koreanAge
FROM players
WHERE deathYear IS NULL AND birthYear IS NOT NULL AND koreanAge <= 89 -- 에러
ORDER BY koreanAge

-- FROM 책상에서
-- WHERE 빨간색 공을
-- SELECT 갖고 오고
-- ORDER BY 그 순서로 정렬해라

image

ORDER BY 에서는 koreanAge를 인지를 잘 했는데 왜 WHERE에서는 koreanAge가 유효하지 못할까?

WHERE 에서는 koreanAge 가 ‘아직’ 뭔지 모르기 때문이다! 쿼리 순서는 SELECT 👉 FROM 👉 WHEHR 👉 ORDER BY 이지만 실행되는 순서는 FROM 👉 WEHERE 👉 SELECT 👉 ORDER BY 이기 때문이다. 즉, WHERE 는 SELECT 보다 앞에서 실행되므로 SELECT 에서 (2021 - birthYear + 1)의 별칭으로 정의해준 koreanAge가 뭔지 모르는 것이다.

FROM 책상에서 WHERE 빨간색 공을 SELECT 갖고 오고 ORDER BY 그 순서로 정렬해라

위 실행 순서를 기억하자.

SELECT 2021 - birthYear + 1 AS koreanAge
FROM players
WHERE deathYear IS NULL AND birthYear IS NOT NULL AND (2021 - birthYear + 1) <= 89
ORDER BY koreanAge

image

따라서 위와같이 그냥 (2021 - birthYear + 1)로 바꿔주어야 한다.


🔥 사칙 연산

✈ NULL 과는 연산 불가능

SELECT 2021 - NULL;

image

NULL을 0 으로 치환하여 연산 가능할 것 같지만 그렇지 않았다.


✈ 나눗셈

여타 C++/C# 같은 언어와 똑같다. 0 으로 나누는 것은 예외 발생이므로 조심하고, 정수끼리 나눗셈하면 그 결과도 정수이기 때문에 몫만 결과로 리턴!

SELECT 3 / 2;

image

SELECT 3.0 / 2;

image

SELECT 3 / 0;

image


🔥 다양한 함수

더 다양한 함수는 SQL Server 문서 참고!

SELECT ROUND(3.141592, 3); -- 셋째 자리에서 반올림

image

SELECT POWER(2, 3); -- 2의 3승

image

SELECT COS(0); -- 코싸인 0

image


🚀 문자열

🔥 문자열 표현 (한글, 영어)

SELECT 'Hello World' -- "Hello World" 값 출력

image

문자열은 '' 작은 따옴표로 표현한다.

SELECT '안녕하세요'

image

한글은 영어와 달리 한 문자가 2 byte 이다. 따라서 그냥 작은 따옴표로 한글 문자열 리터럴 값을 출력하려하면 제대로 출력되지 않는다.

SELECT N'안녕하세요'

image

따라서 이렇게 한글 문자열 리터럴 값을 출력하고자 한다면 N'문자열' 이런 형태로서, N을 앞에 붙여주어야 한다.


🔥 문자열 힘수

마찬가지로 더 다양한 함수는 SQL Server 문서 참고!

SELECT CONCAT('Hello', 'World')

image

SELECT 'Hello' + 'World'

image

다른 여타 언어와 같다. 문자열을 합치려면 CONCAT 함수를 사용하거나 + 연산자를 사용하면 된다.

SELECT nameFirst + ' ' + nameLast
FROM players
WHERE nameFirst IS NOT NULL AND nameLast IS NOT NULL;

image

nameFirst + ' ' + nameLast 결과 행들의 열 이름이 딱히 없는 상태.

SELECT nameFirst + ' ' + nameLast As fullname
FROM players
WHERE nameFirst IS NOT NULL AND nameLast IS NOT NULL;

image

nameFirst + ' ' + nameLast 결과 행들의 열 이름에 별칭 fullname을 붙여준 상태


SELECT SUBSTRING('20210412', 1, 4); -- 첫번째 문자부터 4 번째 문자까지 부분 문자열

image

SUBSTRING 사용시 주의할 점은, 시작 인덱스가 0 이 아닌 1 이라는 것이다!

SELECT TRIM('       Hello World');

image

TRIM은 좌측 공백을 제거한다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

DB 카테고리 내 다른 글 보러가기

댓글 남기기