ToBe끝판왕

[ SQL ] SELECT문 ( WHERE / LIKE / IS NULL / IN / BETWEEN / .. 등 ) , 단일행함수, 그룹함수, Group by절 본문

■ 프로그래밍 SKILLS/SQL

[ SQL ] SELECT문 ( WHERE / LIKE / IS NULL / IN / BETWEEN / .. 등 ) , 단일행함수, 그룹함수, Group by절

업그레이드중 2022. 5. 12. 16:40
반응형

 


 

SQL 언어

 

▶  mairaDB 접속

•  클라이언트가 서버에 명령을 내리는 언어가 SQL이다.

•  접속하는 동시에 데이터베이스 사용하는 방법

-  mysql -u 사용자명 -p 데이터베이스명

 

 


 

DML ( SELECT문 연습 )

1) between 시작값 and 끝값

salary가 1000과 2000사이인 직원번호, 직원이름, 월급을 출력

 

2) in ( 목록 ) => or 이랑 같지만 더 간단하다.

여러조건을 간편하게 검색할수 있다.

부서번호가 10 혹은 20인 직원번호, 직원이름, 월급, 부서번호 출력

 

3)

NULL 을 검색할때는 IS를 사용한다.

NULL이 아닌것 을 검색할때는 IS NOT 을 사용한다.

 

※ NULL은 사용할수 없고, 지정되지 않고, 적용할수 없는 값으로, 0 또는 Space 와는

다른 개념입니다.

 

comm이 Null인 직원번호, 직원이름, 월급, comm 출력

 

4) Like 연산자 로 비슷한것들 찾기

▶ 부분문자열

· ~ 시작하는

· ~ 을 포함한

· ~로 끝나는

% : 글자수는 제한 없고 ( 0개 포함 ) , 글자종류도 상관 X

_ (underscore) : 글자수는 한글자만 올수 있고, 글자종류는 상관 X

ex) K 로 시작하는 직원번호, 직원이름 출력

 

 

ex) r 로 끝나는 직원번호, 직원이름 출력

 

 

ex) a로 시작, 중간에 3글자 s로 끝나는 직원번호, 직원 이름 출력

 

 

ex) 고용일이 2011로 시작하는 직원번호, 직원이름, 고용일, 월급 출력

 

5) orderby(정렬) 사용하기

( 기본은 오름차순으로 되있음 )

▶ 오름차순으로 보기: asc ; ( 안붙여도 오름차순으로 보임 )

▶ 내림차순으로 보기 : desc ;

▶ 상위 몇개만 보기 : limit ( limit 2, 3 => 시작부터 몇개 , 지정가능 )

ex) 월급을 오름차순으로 정렬

 

 

ex) 월급을 내림차순으로 정렬

 

 

ex) 월급을 내림차순으로 정렬하고 상위 3개만 출력

 

 

ex) 월급을 내림차순으로 정렬하고 2번째부터 3개만 출력 ( 첫행은 0번째로 본다.)

 


 

내장함수 ( 데이터의 가공 )

▶  기능

  • 데이터의 계산을 수행
  • 개별 데이터의 항목을 수정
  • 표시할 날짜 및 숫자형식을 지정
  • 열 데이터의 유형을 변환
  • 기본적인 Query문을 더욱 강력하게 해줌

아래 사이트에는 사용가능한 내장함수들이 적혀있다.

https://mariadb.com/kb/en/built-in-functions/

 

Built-in Functions

 

mariadb.com

 

▶  종류

•  단일 행 함수 - 한번에 한건씩 처리하는 함수

•  복수 행 함수 - 여러건의 데이터를 동시에 입력 받아서 한꺼번에 처리(결과값 1건)

단일행 함수 종류

 

단일행 함수 종류별 설명

 

단일 행 함수

1) Information function

접속 사용자 : select user();

현재 내가 있는 데이터베이스 : select databases();

mariaDB의 버전정보 : select version();

 

2) 숫자함수( Numeric Function )

▶ round(숫자 [ , m ] )

▶ trunc(숫자 , [ , m ] )

• m > 0 이면 소수점 아래 m-1 자리에서 반올림, 버림

• 생략 시 정수 이하 반올림, 버림(소수점 첫 자리 반올림, 버림)

• m < 0 이면 m번째 자리에서 반올림, 버림

 

▶ floor(n) : 주어진 값보다 작거나 같은 최대 정수를 구하는 함수(내림)

▶ ceil(n) : 주어진 값보다는 크지만 가장 근접하는 최소값을 구하는 함수(올림)

 

▶ mod(m,n) : m을 n으로 나누어 남은 값 반환

 

▶ abs(n) : n의 절대값을 계산하여 반환한다.

 

▶ pow(a,b), power(a,b) : a의 b승

3) 문자함수( String Function )

▶ 가변인자 , 붙이기

concat ( a, b )

 

▶ 문자열 삽입하기

insert()

 

▶ 왼쪽, 오른쪽, 가운데 부터 몇글자 보이게 하기

left(a, b) , right( a,b )

 

▶ 오른쪽/ 왼쪽 여백 채우기

lpad( 왼쪽 여백 채우기) , rpad( 오른쪽 여백 채우기)

 

▶ 문자열에서 원하는 문자 추출( 지정한 위치(m) 에서 지정한길이(n) 만큼 문자추출 )

substr( '문자열' 또는 컬럼명 , m , [,n] )

 

▶ 문자열에서 특정단어를 다른 단어로 변환

replace(‘문자열’ 또는 컬럼명 , ‘문자1’ , ’문자2’)

 

▶ 대문자 / 소문자로

• 대문자 : upper( 문자열 혹은 컬럼명) , ucase( 문자열 혹은 컬럼명)

• 소문자 : loser( 문자열 혹은 컬럼명) , lcase( 문자열 혹은 컬럼명)

 

▶ 문자열 길이구하기

length( 컬럼 또는 문자열) / char_length( 컬럼 또는 문자열)

※ char_length 는 한글을 셀수 있다.

 

▶ 제거할 문자를 생략 시에는 공백을 제거한다

• ltrim(‘문자열’ 또는 컬럼명 , ‘제거할 문자’ ) : 왼쪽에 있는 대상 제거

• rtrim(‘문자열’ 또는 컬럼명, ‘제거할 문자’) : 오른쪽에 있는 대상 제거

• trim(‘문자열’ 또는 컬럼명) : 앞뒤 공백 모두 제거

 

★활용예제

- 이름의 첫글자가 s로 시작하는 사원에 대한 사원이름 출력

- 3가지 방법으로 표현해보기

4) 날짜 그리고 시간함수( Date and Time Function )

▶ 현재시간 얻어오기

select now(), sysdate(), current_timestamp();

▶ 시간만 가져오기

select curtime(), current_time();

▶ 날짜만 가져오기

select curdate(), current_date();

▶ 시간연산하기

select now(), now()+1;

 

▶ MONTHS_BETWEEN( 날짜1, 날짜2 )

두 날짜 간의 개월 수 차이 값을 반환합니다.

▶ ADD_MONTHS( 날짜1, 날짜2 )

날짜1에서 n개월 이후 값을 반환합니다.

n이 음수인 경우 n개월 이전 값을 반환합니다.

▶ NEXT_DAY( 날짜, 지정요일 )

날짜 다음의 지정한 요일에 해당하는 날짜를 반환합니다.

▶ LAST_DAY( 날짜 )

날짜의 해당 월의 마지막 날짜를 반환합니다.

★ 활용예제

now() 연도만 결과값 출력

3가지로 표현

5) Comparison Function

해당 리스트에서 의 최소값, 최대값, ~이상을 출력하라

• greatest( x , y)

• least( x, y )

• greatest( sal, 2000 )

▶ 조건문 사용하기

if()

 

▶ Null 값 여부 확인하기

ifnull()

▶ case( )

• switch문과 비슷

case 값

when 값 then 결과

when 값 then 결과

else 결과 end ;

• if else else 문과 비슷

case

when 조건 then 결과

when 조건 then 결과

else 결과 end;

▶ 복수 행 함수 ( 그룹함수 )

▶ 행의 갯수를 알수 있다. ( 보통 count (*)로 사용 )

count()

▶ sum() , avg() ( 모두 null이 계산 안됨 )

▶ max() , min() : 최대값 , 최소값

▶ group by 절 ( 그룹함수와 같이 쓰인다. )

• 부서별 최고 급여 출력

• 부서별 평균 급여 출력

• 부서별, 직책별 최고 급여 출력

반응형
Comments