Smart Student Coders

함수

함수(FUNCTION)는 간단하게 말해서 값을 들어가면 원하는 값으로 변해져서 나오는 기능을 가지는 도구입니다 .

 

SQL에서 함수

 

SQL에서 함수는 여러분들이 아는 함수와 비슷한 기능을 합니다. 

수학에서 함수는 식을 만들고 계산하는 과정이 있지만 데이터베이스에서는 내장 함수(BUILT-IN FUNCTION)라고 미리 만들어진 함수들이 있고 우리는 그것들의 사용법만 익히고 사용하기만 하면됩니다!!

 

이번 파트에서는 그러한 함수들을 소개하고 직접 사용해보는 시간을 가져봅시다!!


함수에 들어가기 앞서

함수의 내용이 쉽고 재밌지만 양이 조금 많아서 여러파트로 나눠서 진행하기로 했습니다!! 오늘 하는 part 1는 비교적 익속하고 쉬운 내용이니 가볍게 봐주세요! 


함수의 기본적인 구조

기본구조
함수명 (칼럼이나 표현식 [인자1, 인자2, 인자3 ...(필요한 만큼)])

엥? 잘모르시겠다구요? 감이 잘 안오신다구요?  아래의 내용을 확인해봅시다!

 

숫자형 함수

 

숫자형 함수는 영어 단어만 알고 있다면 내용을 유추할 수 있습니다!

혹시 모르는 단어가 있다면 이번 기회에 새로운 단어를 배워보는 것은 어떨까요?

 

함수 함수 설명
ABS(숫자) 숫자의 절대값을 보여준다.
SIGN(숫자) 숫자가 양수인지, 음수인지, 0인지를 구별한다.
MOD(숫자1, 숫자2) 숫자1을 수자2로 나누어 나머지 값을 보여준다.
CEIL(숫자) 숫자보다 크거나 같은 최대 정수를 보여준다.
FLOOR(숫자) 숫자보다 작거나 같은 최대 정수를 보여준다.
TRUNC(숫자 , [원하는 자리수]) 숫자를 원하는 자리수에서 잘라서 버린다. 원하는 자리수는 적지 않을 수 있고 생략되면 0으로 입력된다.
ROUND(숫자, [원하는 자리수]) 숫자를 원하는 자리수에서 반올림한다. 원하는 자리수는 적지 않을 수 있고 생략되면 0으로 입력된다.
POWER(숫자1, 숫자2) 숫자1을 숫자2 만큼 제곱한 값을 보여준다.
SQRT(숫자) 숫자를 제곱근한 값을 보여준다.

혹시 모르는 단어가 있나요? 

이번 기회에 배우면 학생 여러분들은 두고두고 쓰기 좋을 겁니다!!

 

함수 예제
ABS

ABS(-5)

ABS(10)

SIGN

SIGN(10)

SIGN(0)

 

SIGN(-10)

CEIL

CEIL(38.1235)

CEIL(-38.1235)

FLOOR

FLOOR(38.1235)

FLOOR(-38.1235)

ROUND

ROUND(38.1235, 3)

ROUND(38.1235, 1)

 

ROUND(38.1235, 0)

 

ROUND(38.1235)

 

TRUNC

TRUNC(38.1235, 3)

TRUNC(38.1235, 1)

 

TRUNC(38.1235, 0)

 

TRUNC(38.1235)

POWER

POWER(2,4)

POWER(3,2)

 

POWER(5,2)

 

SQRT

SQRT(2)

SQRT(3)

 

SQRT(18)

위의 예제들을 직접 실습해보고 결과를 확인해봅시다!!! 

중요한 팁!!!
어떻게 실습을 하나요????

바로 DUAL이라는 것을 사용합니다!! 

DUAL은 가상의 테이블 같은 것입니다. 딱히 테이블이 필요하지 않은 쿼리문같은 곳에서 사용하죠!!

위에 예제를 하나만 같이 풀어볼까요? 

-5의 절대값을 알고 싶을 때 사용하는 "ABS(-5)"를 SQL로 작성하려면 아래와 같이 작성합니다

SELECT ABS(-15) FROM DUAL;

그러면 결과가 나올거에요!!  나머지 실습들도 해봅시다!


 

 

 

'데이터베이스 > SQL의 기본과 활용' 카테고리의 다른 글

[SQL] WHERE (Part 2)  (0) 2019.11.11
[SQL]산술연산자와 합성연산자  (0) 2019.10.21
[SQL] DML(Data Manipulation Language)  (0) 2019.10.13
[SQL] 실습환경  (0) 2019.09.29
[SQL]SQL을 시작하기 앞서  (0) 2019.09.29

저번 시간에 이어서 WHERE의 Part 2는 SQL연산자, 부정비교 연산자, 부정 SQL연산자를 포스팅 하겠습니다.

 

혹시 저번 시간에 했던 WHERE의 내용들이 기억이 나지 않으면 아래의 WHERE을 눌러봅시다!!!! 

 


SQL연산자

SQL연산자라니?? 생소하죠? 그렇지만 걱정하지 마세요! 막상보면 간단합니다!!

SQL 전문가 가이드에는 아래와 같이 써있는데 한번 읽어보죠!

 

SQL 연산자는 SQL 문장에서 사용하도록 기본적으로 예약되어 있는 연산자로서 모든 데이터 타입에 대해서 연산이 가능한 4가지 종류가 있다.

바로 

BETWEEN a AND b

IN (list)

LIKE '비교 문자열'

IS NULL

4개인데요. 그럼 아래의 표를 봅시다!

연산자 연산자 의미
BETWEEN a AND b

BETWEEN이니까 사이 라는 뜻이에요 !

a와 b사이에 값들을 찾고 싶을 때 사용해요! 이때 a과 b값을 포함합니다!!

사용예시

SELECT F_NAMEAGE FROM FAMILY WHERE AGE BETWEEN 18 AND 24

나이18 24사이가족구성원들의 이름나이조회한다.

참고! 18살과 24살이 나오는 지 확인해볼까요?

IN (list)

IN은 안에 라는 뜻이에요!

list에 있는 값들중 어느 하나라도 있으면(일치하면) 됩니다! 하나만 존재하면 되는 것이므로 1개를 찾으면 더이상 찾지 않아요!!! 

사용예시

SELECT F_NAME FROM FAMILY WHERE AGE IN 18;

나이 18살인 가족구성원의 이름 조회한다.

LIKE '비교 문자열'

LIKE는 ~와 비슷하다 라는 뜻이에요!

비교 문자열의 같은 값을 찾아 줍니다!! 

아래의 TIP을 참고 하세요!!

사용예시

SELECT * FROM FAMILY WHERE F_NAME LIKE 'H%';

이름 'H'시작하는 가족구성원의 모든 컬럼 조회한다.

 

IS NULL

NULL인가? 

해당 내용이 비었는지 확인하는 연산자에요!!

사용예시

SELECT F_NAME FROM FAMILY WHERE AGE IS NULL;

나이 적혀있지 않은 가족구성원의 이름 조회한다.

참고! 나이가 적혀있지 않은 데이터가 없을 거에요! INSERT를 이용해서 새로운 데이터를 작성하고 실습해봐요!

LIKE는 "와일드카드"라는 문자와 함께 사용합니다!! 

TIP!!

%

(페센트)

어떠한 문자도 올 수 있습니다!

EX) '%철수'

--> 이름이 철수인 사람들 모두를 보입니다.

이름이 4글자인 사람도 볼 수 있습니다!!

_

(언더바)

_의 갯수 만큼 단일 문자를의미합니다!

EX) '_철수'

--> 이름이 철수인 사람들 모두를 보입니다.

이름이 4글자인 사람은 보이지 않습니다!!

 


부정 SQL연산자 

부정 SQL연산자는 위에서 배운 SQL연사들의 부정입니다! 

부정연산자는 LIKE를 제외하고 3개가 있고 생긴것은 동일하고 'NOT'이 붙습니다!!

NOT BETWEEN a AND b

NOT IN (list)

IS NOT NULL

으로 비슷한 형태를 가졌죠? 사용법도 아주 비슷해요!

연산자 연산자의미
NOT BETWEEN a AND b

NOT BETWEEN이니까 사이 없는 데이터 라는 뜻이에요 !

a와 b사이에 값들을 제외한 데이터를 찾을 때 사용해요!

이때 a과 b값은 포함하지 않습니다!!

NOT IN (list)

NOT IN은 없는 데이터 라는 뜻이에요! 즉, 포함하지 않다!

list에 있는 값들중 어느 하나라도 없으면(일치하는게 없으면) 됩니다! 

IS NOT NULL

NULL이 아닌가?  

해당 내용이 비어 있지는않은지 확인하는 연산자에요!!

앗! 이게 뭐지 눌러보고 싶은걸!!!

더보기

이번에는 예시가 없어서 서운했죠?

그럴줄 알고 준비한 깜짝퀴즈!!!

 

1) 나이20살과29사이의 나이가 아닌가족구성원들의이름나이조회

2)나이18살이 아닌 가족구성원의이름조회

3) 나이정보가 있는가족구성원의이름조회한다.

SQL연산자의 예시를 바탕으로 위의 예시를 만들어봅시다!!!

답보기↓

 

더보기

답!!!

SELECT F_NAME, AGE FROM FAMILY WHERE AGE NOT BETWEEN 20 AND 29; 
SELECT F_NAME FROM FAMILY WHERE AGE NOT IN 18;
SELECT F_NAME FROM FAMILY WHERE AGE IS NOT NULL;

 

'데이터베이스 > SQL의 기본과 활용' 카테고리의 다른 글

[SQL] 함수(Part 1)  (0) 2019.11.18
[SQL]산술연산자와 합성연산자  (0) 2019.10.21
[SQL] DML(Data Manipulation Language)  (0) 2019.10.13
[SQL] 실습환경  (0) 2019.09.29
[SQL]SQL을 시작하기 앞서  (0) 2019.09.29

산술연산자? 합성연산자? 그게 뭐야??


산술연산자

 

 ✏산술연산자는 수학에서 배웠던 사칙연산과 매우 비슷한 구조에요! 더하기, 빼기, 곱하기, 나누기와 우선순위 설정을 위한 괄호까지 우리가 배웠던 수학이랑 매우 비슷합니다!

 

합성연산자

 

 ✏합성연산자는 문자와 문자합성해주는 연산입니다! 이게 전부 에요! 간단하죠?

TIP!!

일반적으로 산술연산을 하게되면 컬럼의 라벨(이름)이 길어지고 기존에 컬럼에 연산을 진행하여 새로운 의미를 부여한 것이므로 적절한 ALIAS(별명)을 새롭게 부여하는 것이 좋아요! 


이제 본격적으로 산술연산자합성연산자에 대해 알아볼까요?

 

산술연산자

위에서도 설명한것 처럼 산술연산자는 우리가 아는 수학이랑 매우 비슷해요 간단하게 아래의 표를 확인해볼까요?

산술 연산자 설명
( ) 연산자의 우선순위를 변경하기 위한 괄호
* 곱하기
/ 나누기
+ 더하기
- 빼기

이거 어디서 많이 보던 것들 아니던가요? 맞아요 여러분이 알고 있는 기호들이에요!

곱하기를 X대신 *로 나누기를 ÷대신 /로 사용하는 것 말고는 다른게 없어요!! 그렇다면 사용법은 다를까요? 아니요!

아래 예제를 통해서 확인해봅시다!

SELECT F_NAME AS 이름, WEIGHT/((HEIGHT/100)*(HEIGHT/100)) AS "BMI 비만지수" FROM FAMILY 

SELECT로 선택합니다! F_NAME인 가족의 이름몸무게/((나누기100)곱하기(/100)) 이런식으로 계산된 "BMI 비만지수" 라는 이름 총2개의 컬럼을 선택합니다! FAMILY 라는 테이블에서!

직접 실습해보기

☞ SELECT문의 구조가 기억이 안난다면 클릭 ☜

 


합성연산자

위에서는 합성연산자를 문자와 문자를 합성해주는 연산으로만 소개했었죠. 맞아요 그게 전부에요 간단해요!! 하지만 아주 다양하게 쓰입니다!! 바로 확인해볼까요?

사용방법!
'문자' || '문자'
컬럼명 || '문자'

어때요? 너무쉽죠?

|(수직바)는 enter위에 \이 써있는 키를 shift를 누르고 쓰면 써져요!

내맘대로 넣고 싶은 문자에는 ''(작은 따음표)를 사이에 넣어서 문자라는 것을 알려주면되요!

컬럼으로만 나오니까 너무 딱딱해요! 아래 처럼 근사하게 나오면 좋겠어요!
아빠의 키는 175cm이고 몸무게는 68kg이고 나이는 48살 입니다!
SELECT F_NAME || '의 키는 ' || HEIGHT || 'cm이고 몸무게는' || WEIGHT || 'kg입니다!' FROM FAMILY
☞ 테이블을 만들거나 컬럼을 추가/변경하는 DDL이 기억이 안난다면 클릭 ☜

 

'데이터베이스 > SQL의 기본과 활용' 카테고리의 다른 글

[SQL] 함수(Part 1)  (0) 2019.11.18
[SQL] WHERE (Part 2)  (0) 2019.11.11
[SQL] DML(Data Manipulation Language)  (0) 2019.10.13
[SQL] 실습환경  (0) 2019.09.29
[SQL]SQL을 시작하기 앞서  (0) 2019.09.29

Data Manipulation Language(데이터조작어)

저번 시간에는 데이터 유형(Data type)들을 알아보고 테이블을 생성(CREATE)하고 테이블의 구조를 변경(ALTER)하고 테이블을 삭제(DROP)하거나 테이블의 내용을 삭제(TRUCATE)해봤다. 저번 시간에 실습한 내용들을 ORACLE Live SQL 에 저장했다면 실습했던 기록들이 남아있을 것이다! 혹시 기억이 안난다면 지난 게시물을 다시 보고 오자

이번에는 만든 테이블에 관리를 위한 내용으로 자료들의 , 수정, 삭제, 조회하는 DML사용법을 알아보자!

 

 

DML - INSERT

"데이터의 내용을 테이블에 넣어주는 INSERT"

값을 INSERT 해줄때는 해당 칼럼의 데이터 유형이 CHAR나 VARCHAR2 등 문자 유형일 경우 『 ' 』로 입력할 값을 입력한다. 숫자일 경우 『 ' 』을 붙이지 않아야 한다.

CHAR , VARCHAR 'SSC', 'Daniel', 'Park'
NUMBER 3, 5.4, 4450

기본형식 1(컬럼의 리스트를 지정해주는 경우)

INSERT INTO 테이블이름 (컬럼이름1, 컬럼이름2, 컬럼이름3.....) VALUES (컬럼1의 데이터, , 컬럼2의 데이터, 컬럼3의 데이터.....);

즉 

 

INSERT INTO 테이블이름 (컬럼들의 리스트) VALUES (값들);

이다.

실습 예제(가족 테이블과 자신의 가족 데이터 넣어보기)

 

기본형식 2(테이블의 모든 컬럼을 대상으로 할 때)

INSERT INTO 테이블이름 VALUES (전체 컬럼들의 값들);

 

주의사항 

모든 컬럼의 순서대로 빠짐없이 데이터가 입력되어야 한다.

이번 실습은 위에 실습예제를 응용해봐요!!
TIP!
기본형식 1번을 사용하면 넣지 않는 데이터는 어떻게 되나요?

정의하지 않은 칼럼은 기본값으로 NULL 값이 입력됩니다!

 

 

DML - UPDATE

"입력된 데이터의 내용을 수정해주는 UPDATE"

기본형식

UPDATE 테이블명 SET 수정하고 싶은 칼럼명 = 새로운 값;

 

간단하죠?? 조금만 더 배우면 원하는 부분만 변경할 수도 있어요!! 

실습 예제

 

 

DML - DELETE

"입력된 데이터의 내용을 삭제해주는 DELETE"

기본형식

DELETE FROM 삭제를 원하는 정보가 들어있는 테이블명;

 

아직은 원하는 정보가 아닌 전체를 지우지만 조금만 더 배우면 원하는 정보를 지울 수 있어요!

실습 예제

 

DML = SELECT

"입력된 데이터의 내용을 조회해주는 SELECT"

SELECT는 SQL에서 가장 많이 사용할 예정이에요!! 그만큼 중요하겠죠?

기본예제

SELECT 원하는 컬럼1, 원하는 컬럼2, ...... FROM 테이블이름;

 

원하는 컬럼들을 나열하고 어떤 테이블에 있는지만 입력하면 모든 정보들이 다 나옵니다!

몰론 조금만 더 공부하면 원하는 내용들만 조회할 수 있게됩니다. 힘내요!

실습 예제

TIP!
모든 컬럼이 너무 많을 때 사용하는 『 *』

SELECT * FROM FAMILY;

*을 사용함으로 모든 정보를 쉽게 조회할 수 있다!

별칭을 만들 때 사용하는 ALIAS

AS라고 사용한다.

SELECT AGE AS 나이, F_NAME AS 이름 FROM FAMILY;

컬럼명이 아닌 AS 뒤에 있는 별칭으로 결과가 조회된다.

 

 

 

'데이터베이스 > SQL의 기본과 활용' 카테고리의 다른 글

[SQL] 함수(Part 1)  (0) 2019.11.18
[SQL] WHERE (Part 2)  (0) 2019.11.11
[SQL]산술연산자와 합성연산자  (0) 2019.10.21
[SQL] 실습환경  (0) 2019.09.29
[SQL]SQL을 시작하기 앞서  (0) 2019.09.29