[MySQL입문] 수치와 문자열
Categories: DB
인프런에 있는 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 그 순서로 정렬해라
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
따라서 위와같이 그냥 (2021 - birthYear + 1)
로 바꿔주어야 한다.
🔥 사칙 연산
✈ NULL 과는 연산 불가능
SELECT 2021 - NULL;
NULL
을 0 으로 치환하여 연산 가능할 것 같지만 그렇지 않았다.
✈ 나눗셈
여타 C++/C# 같은 언어와 똑같다. 0 으로 나누는 것은 예외 발생이므로 조심하고, 정수끼리 나눗셈하면 그 결과도 정수이기 때문에 몫만 결과로 리턴!
SELECT 3 / 2;
SELECT 3.0 / 2;
SELECT 3 / 0;
🔥 다양한 함수
더 다양한 함수는 SQL Server 문서 참고!
SELECT ROUND(3.141592, 3); -- 셋째 자리에서 반올림
SELECT POWER(2, 3); -- 2의 3승
SELECT COS(0); -- 코싸인 0
🚀 문자열
🔥 문자열 표현 (한글, 영어)
SELECT 'Hello World' -- "Hello World" 값 출력
문자열은 ''
작은 따옴표로 표현한다.
SELECT '안녕하세요'
한글은 영어와 달리 한 문자가 2 byte 이다. 따라서 그냥 작은 따옴표로 한글 문자열 리터럴 값을 출력하려하면 제대로 출력되지 않는다.
SELECT N'안녕하세요'
따라서 이렇게 한글 문자열 리터럴 값을 출력하고자 한다면 N'문자열'
이런 형태로서, N
을 앞에 붙여주어야 한다.
🔥 문자열 힘수
마찬가지로 더 다양한 함수는 SQL Server 문서 참고!
SELECT CONCAT('Hello', 'World')
SELECT 'Hello' + 'World'
다른 여타 언어와 같다. 문자열을 합치려면 CONCAT
함수를 사용하거나 +
연산자를 사용하면 된다.
SELECT nameFirst + ' ' + nameLast
FROM players
WHERE nameFirst IS NOT NULL AND nameLast IS NOT NULL;
nameFirst + ' ' + nameLast
결과 행들의 열 이름이 딱히 없는 상태.
SELECT nameFirst + ' ' + nameLast As fullname
FROM players
WHERE nameFirst IS NOT NULL AND nameLast IS NOT NULL;
nameFirst + ' ' + nameLast
결과 행들의 열 이름에 별칭 fullname
을 붙여준 상태
SELECT SUBSTRING('20210412', 1, 4); -- 첫번째 문자부터 4 번째 문자까지 부분 문자열
SUBSTRING
사용시 주의할 점은, 시작 인덱스가 0 이 아닌 1
이라는 것이다!
SELECT TRIM(' Hello World');
TRIM
은 좌측 공백을 제거한다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
Leave a comment