LIKE

LIKE서칭으로는 특정 구(phrase)가 포함된 값을 찾을 수 있다.

위 예시에서는 MovieTitle열에서 "LOVE"가 포함된 값을 서치하고있다.

LIKE 서칭에서는 어떻게 비교할것인지 와일드카드로 명시해야한다.

문자열에 LOVE가 어디에든 포함되어있는 값을 찾으려면 %LOVE%,

LOVE로 시작하는 값을 찾으려면 LOVE%, LOVE로 끝나는 값을 찾으려면 %LOVE를 사용하면 된다.

와일드카드

%외에도 와일드카드는 _ [] [^]등이 존재한다.

언더바(_)는 해당 자리에 단 하나의 문자만을 허용한다. 언더바는 자릿수만큼 연속해서 사용할수 있다.(__RY, ___Y 등)

 []는 괄호 안의 문자중 하나로 시작하고, 이후 문자열로 끝나는 행을 선택한다.

[^CM]ARY의 경우에는 C나M으로 시작하지 않고 ARY로 끝나는 행을 선택하게 된다.

 

와일드카드로 인해 생기는 약간의 문제가 있다. 데이터에 와일드카드로 지정되어있는 특수기호가 들어있는 경우엔 어떻게 될까?

위처럼 [로 시작하는 값을 불러오려 했지만 아무것도 불러오지 못했다.

'['를 포함한 값을 불러오려면 [를 []와일드카드로 한번 더 감싸주어야한다.

하지만 닫는괄호(])에는 해당사항이 없다. LastName의 'problem]'은 따로 []로 감싸주지 않아도 정상적으로 값을 호출한다.

따라서 불러오려는 값에 여는 대괄호가 들어가는 경우에 이런 문제가 발생하는것을 알 수 있다.

 

'DB > 관계형 DB' 카테고리의 다른 글

검색형 CASE  (0) 2021.04.15
CASE  (0) 2021.04.15
선택 기준 (WHERE, TOP)  (0) 2021.04.08
데이터 정렬(ORDER BY)  (0) 2021.04.08
숫자함수(ROUND,RAND,PI,POWER)/변환함수(CAST)  (0) 2021.04.08

WHERE

WHERE절은 if문과 유사하다.

해당 절의 내용이 true인 행만 선별해서 가져올 수 있다.

이에 사용되는 등호/부등호 연산자는 다음과 같다.

= 같다.
<> 같지 않다.
> 좌항이 우항보다 크다.
< 우항이 좌항보다 크다.
>= 좌항이 우항보다 크거나 같다.
<= 우항이 좌항보다 크거나 같다.

 

TOP

TOP절은 데이터베이스에 저장된 테이블의 상위 n개의 행의 데이터를 가져온다.

사용 예는 다음과 같다.

기본적으로 데이터베이스에 데이터가 어떤 방식으로 저장되어있는지 모르는 경우에 TOP절은 그냥 무작위 행을 골라오는것이나 마찬가지이다. 따라서 정렬을 통해 어떤 행을 가져올지를 결정할 수 있다.

ORDER BY를 통해 판매량 수를 기준으로 내림차순으로 정렬한 후, TOP을 이용하면 판매량 상위 3개 책을 가져올 수 있다.

'DB > 관계형 DB' 카테고리의 다른 글

CASE  (0) 2021.04.15
패턴 매칭(Like)/ 와일드카드  (0) 2021.04.14
데이터 정렬(ORDER BY)  (0) 2021.04.08
숫자함수(ROUND,RAND,PI,POWER)/변환함수(CAST)  (0) 2021.04.08
날짜/시간 함수  (0) 2021.03.31

데이터 정렬은 ORDER BY절을 이용한다.

LastName을 기준으로 정렬한 예시이다. 기본적으로 A-Z 오름차순 순서로 정렬된다.

ORDER BY LastName의 뒤에 ASC를 붙여 오름차순임을 명시적으로 표현할 수 있다. (내림차순은 DSC다.)

 

같은 열에 같은 데이터를 가진 항목이 존재하면, 이차 정렬을 해줄 수 있다.

같은 BROWN 성을 가진 사람이 있어 FirstName으로 이차정렬을 해주었다.

먼젓번의 예시와 다르게 Carla가 Gregory의 위로 올라왔다.

위와 같이 별칭으로 묶은 열도 별칭을 사용해 바로 정렬이 가능하다.

 

모든 데이터베이스는 사용자가 데이터 정렬 설정을 바꿀 수 있다.

데이터베이스마다 다르지만, 기본적으로 공통되는 사항이 있다.

1. 데이터가 오름차순 정렬되면 NULL값이 가장 먼저 나타난다.

2. 대소문자 구별이 없다.

3. 값을 구성하는 각각의 문자는 왼쪽에서부터 오른쪽으로 평가한다.

 

'DB > 관계형 DB' 카테고리의 다른 글

패턴 매칭(Like)/ 와일드카드  (0) 2021.04.14
선택 기준 (WHERE, TOP)  (0) 2021.04.08
숫자함수(ROUND,RAND,PI,POWER)/변환함수(CAST)  (0) 2021.04.08
날짜/시간 함수  (0) 2021.03.31
함수  (0) 2021.03.31

ROUND

ROUND 함수는 숫자는 반올림하는 함수다.

ROUND(숫자, 반올림할 자리수)가 기본적인 형태이다.

ROUND(123.456, 3) => 123.456

ROUND(123.456, 2) => 123.460

ROUND(123.456, 1) => 123.500

ROUND(123.456, 0) => 124.000

ROUND(123.456, -1) => 120.000

ROUND(123.456, -2) => 100.000

이런 식으로 음수라면 소수점자리 왼쪽의 자릿수, 양수라면 소수점자리 오른쪽의 자릿수를 반올림한다.

 

RAND

RAND(시드)의 형태를 가지고있다. (기본적으로 0-1사이의 float를 return)

다른 언어와 마찬가지로 완벽한 랜덤의 개념은 아니고, 사용법은 같다.

ex) 5이상 10 이하의 숫자 -> RAND() * 5 + 5

 

PI

PI()는 말 그대로 파이의 값을 리턴한다.(3.141592...)

 

POWER

POWER는 지수를 포함하 숫자값을 명시하기 위해 사용된다.

POWER(숫자, 지수)가 기본적인 형태이다.

POWER(5, 2)는 5^2, 25를 리턴한다.

POWER(25, .5)를 입력하면 5를 리턴한다. 

 

CAST

CAST는 데이터 형식을 다른 데이터 형식으로 변환한다.

CAST(Expression AS DataType) 의 형태를 가진다.

문자열을 DATETIME형으로 변환하는 예이다.

날짜 형식은 일반적으로 사용하는 날짜 표기 형식은 대부분 변환 가능하다.(2017/04/11, 04/11/2017, 04.11.2017 등)

 

ISNULL

ISNULL은 첫번째 인자가 NULL일 경우, 두번째 인자를 리턴한다.

형식은 ISNULL(첫번째 인자, 두번째 인자)이다.

ISNULL을 이용해 Weight열의 NULL값을 가진 항목을 UNKNOWN으로 치환해주었다.

Weight열은 int형이기때문에 'UNKNOWN'을 넣어주려면 CAST로 VARCHAR로 형변환을 해주어야한다.

'DB > 관계형 DB' 카테고리의 다른 글

선택 기준 (WHERE, TOP)  (0) 2021.04.08
데이터 정렬(ORDER BY)  (0) 2021.04.08
날짜/시간 함수  (0) 2021.03.31
함수  (0) 2021.03.31
계산영역과 별칭  (0) 2021.03.25

GETDATE()

현재 날짜와 시간을 가진 표현을 반환한다.

반환형은 datetime이다.

DATEPART(datepart, datevalue)

datevalue의 datepart에 해당하는 값을 반환한다.

weekday는 일요일부터 세어 해당 날짜가 몇번째 요일인지 반환한다.

DATEDIFF(datePart, startDate, endDate)

두 datetime간 날짜 차이를 반환하는 함수이다.

 

'DB > 관계형 DB' 카테고리의 다른 글

데이터 정렬(ORDER BY)  (0) 2021.04.08
숫자함수(ROUND,RAND,PI,POWER)/변환함수(CAST)  (0) 2021.04.08
함수  (0) 2021.03.31
계산영역과 별칭  (0) 2021.03.25
SELECT  (0) 2021.03.25

RIGHT(string, number) / LEFT(string, number)

해당 string의 오른쪽/왼쪽에서 number번째까지의 문자열을 출력한다.

첫번째 인자에는 직접 문자열을 넣을 수도 있고, 열 이름을 넣을 수도 있다.

유의할 점은, 문자열의 첫번째를 1부터 센다. 그리고 빈 칸도 포함되어 세어진다.

SUBSTRING(string, startPosition, number)

해당 string의 중간에 있는 데이터를 선택할 수 있다.

startPosition에 있는 문자부터 number만큼 선택한다.

마찬가지로 첫번째 인자에 열의 이름을 넣을수도 있다.

UPPER(string)/LOWER(string)

소문자를 대문자로(UPPER) 대문자를 소문자로(LOWER)만들어주는 함수이다.

합성 함수

다른 언어에서 함수를 사용하듯이 sql에서도 함수 안에 함수를 합해서 사용할 수 있다.

함수의 실행 순서는 안쪽의 함수부터 실행된다.

이 경우에는 LTRIM(UPPER('    thewhitegoat)) -> LTRIM('    THEWHITEGOAT') -> 'THEWHITEGOAT' 순으로 실행되었다.

'DB > 관계형 DB' 카테고리의 다른 글

숫자함수(ROUND,RAND,PI,POWER)/변환함수(CAST)  (0) 2021.04.08
날짜/시간 함수  (0) 2021.03.31
계산영역과 별칭  (0) 2021.03.25
SELECT  (0) 2021.03.25
데이터 형식  (0) 2021.03.24

+ Recent posts