SELECT 문 활용하기

양평역·2023년 6월 15일

SQL

목록 보기
3/4

지난 시간에 SELECT문에 대해서 잠깐 다뤄보았다. SELECT문은 TABLE에서 어떠한 값을 가져올때 사용을한다. 하지만 중복된 데이터가 있으때 제거하고 싶으면 어떻게 해야할까?

distinct 명령어

select distinct [칼럼 이름] from [테이블 이름];

이렇게 하면 중복된 결과를 제거 할 수 있다.

select distinct name from user_information;

위 예시에서는 아래와 같은 결과가 나온다.
// 사진 넣을 예정

Limit 명령어

기본적으로 SQL은 모든 만족되는 결과를 출력한다.
하지만 일부를 출력하고 싶을 때는 Limit 키워드를 사용 할 수 있다.

select [칼럼 이름] from [테이블 이름] Limit [행의 개수]

Limit [행의 개수]를 통해서 행을 제한 할 수 있다.

select name from user_information limit 5;

위의 예제는 아래와 같은 결과가 나온다.

OFFSET 명령어

더 나아가 OFFSET명령어는 특정 행 이상부터 출력할 수 있게 한다.

select [칼럼 이름] from [테이블 이름] Offset [시작 행]

원하는 개수만큼의 행을 건너뛸때 사용하며

SQL 인덱스는 0부터 시작한다.

여러개의 테이블에서 SELECT 사용하기

select [칼럼이름] from [테이블 이름];

보통 이렇게 사용한다. 하지만 테이블이 여러개 일 때는 테이블 안에 있는 칼럼을 지정해야한다.

select [테이블 A].[칼럼 이름] [테이블 B].[칼럼 이름] from [테이블 A] [테이블 B];

이렇게 .으로 완전히 표현하는 것은 "fully qualified name"이라고 한다.

city
city_name kor_addr standard_code
대구 대구광역시 DG
인천 인천광역시 IC
서울 서울특별시 SU
... ... ...
이런 테이블이 있다고 가정을 해보자.
위의 예시에서는 아래와 같은 명령어를 사용할 수 있다.
select city.city_name user_information.id from city user_information;

order by로 정렬하기

어떠한 필요한 값이 있다. 그 값을 어떨때에는 작은 순서대로 값을 원할때도 있을 것이고, 큰 순서대로 값을 원할때가 있을 것이다.

그럴때는 order_by명령어를 사용하여 볼 수 있다.

select [컬럼 명] from [테이블 명] order by [정렬 기준 칼럼 명];

으로 정렬 해서 사용할 수 있다.

텍스트를 기준으로 정렬할 때는 알파벳 순으로 정렬을 한다. 또 기본적으로 정렬하면 오름차순으로 정렬된다.

두개의 테이블을 동시 기준으로 정렬하고 싶을때는 ,를 사용하여 정렬할 수 있다.

select [컬럼 명] from [테이블 명] order by [정렬 기준 칼럼 명],[정렬 기준 칼럼 명2];

정렬 우선순위는 쓴 순서대로 부여된다.

where 구문으로 조건에 맞는 값 찾기

select문에서 where는 프로그래밍의 if문 처럼 꼭 조건에 맞는 값만 찾아 낸다.

select [칼럼 명] from [테이블 명] where [조건 구];

이렇게 쓰면 where 절로 필요한 조건을 찾을 수 있다.

[칼럼 명] = [찾고자하는 값]

보통 이렇게 쓰는 편이다.

select id,password form user_information where id = 'juho0601';

위의 예시에서는 이렇게 원하는 값만 찾을 수 있다.

BETWEEN 연산자

BETWEEN 연산자는 범위 안에 있는 값을 찾아낸다. 첫번째 값은 시작값 두번째 값은 끝값이다.

select [칼럼 이름] from [테이블 이름] where [칼럼 이름] between [시작 값] and [끝 값];

문자열은 '을 써서 감싼다.

AND OR 연산자

논리 연산자는 두개의 Boolean값을 결합하여 True혹은 False를 반환한다. 주로 where절 안에 쓰이며 여러개의 조건을 결합한다.

AND는 여러개의 조건이 동시에 만족시킬 경우 데이터값을 반환한다.

select [칼럼 이름] from [테이블 이름] where [조건] AND [조건];

이렇게 AND로 조건을 잇는다.

select id from user_information where password='1234' AND name='이주호';

위의 예시에서는 password값이 '1234'이고 name이 '이주호'인 값만 반환한다.

OR는 다수의 조건 중 최소 하나만 만족하는 데이터만 반환한다.

select [칼럼 이름] from [테이블 이름] where [조건] OR [조건];

이렇게 OR절로 여러개의 조건들을 잇는다.

select id from user_information where name='이주호' or name='이유민';

위의 예시에서는 name값이 '이유민'또는 name이 '이주호'인 값만 반환한다.

IN 명령어

위와 같이 OR연산자를 쓰면 여러개의 값을 비교할 수 있다. 하지만 저렇게 많이 OR를 쓰는것은 프록래밍에서 비효율적이고 좋지 않다. 그럴때는 IN을 사용한다. IN은 여래개의 칼럼의 데이터 값을 여러개 비교할때 사용한다.

그래서 아래와 같은 명령어로 바꿔 쓸 수 있다.

select [칼럼 이름] from [테이블 이름] where [칼럼 이름] in (데이터1,데이터2,...);

위의 예시에서는 아래와 같은 명령어를 작성할 수 있다.

select id from user_information where name in ('이유민','이주호');

NOT IN은 명령어에 값이 없는 것만 반환한다. IN에서 불러진 값의 여집합이라고 생각하면 된다.

select [칼럼 이름] from [테이블 이름] where [칼럼 이름] not in (데이터1,데이터2);

위의 예시에서는 아래와 같은 명령어를 작성할 수 있다.

select id from user_information where name not in ('유한별','이주호');

concat 명령어

concat 명령어는 출력결과를 원하는 형식으로 바꿀수 있거나 출력결과를 하나로 이어버릴 수 있다. 즉 새로운 컬럼을 만드는 것과 같은 효과를 낼 수 있다.

select concat([칼럼 이름],...) from [테이블 이름] where [조건절];
concat([칼럼1],[칼럼2],......)

위와 같이 사용할 수 있다.

위의 예시에서는 아래와 같은 명령어를 사용할 수 있다.

select concat(id,"가 id이고 비밀번호는",password,"입니다.") from user_information where name  = '이주호';

하지만 이런 컬럼은 이름이 기본값으로 concat..으로 되어있다. 칼럼의 이름을 부여해보자.

select concat([칼럼 이름],...) as [새로운 이름] rom [테이블 이름] where [조건절];

이와 같이 as 명령어를 이용해 이름을 부여할 수 있다.

위의 예시에서는 아래와 같은 명령어를 사용할 수 있다.

select concat(id,"가 id이고 비밀번호는",password,"입니다.")as return_value from user_information where name  = '이주호';

다양한 함수 적용하기

SQL은 다양한 함수를 적용할 수 있다. 주로 select문에서 컬럼에 붙이는 편이다.

upper : 대문자 적용하기(문자,문자열)
lower : 소문자 적용하기(문자,문자열)
sqrt : 제곱근 값
avg : 평균값
sum : 전부 합

select 함수(컬럼) from 테이블명 where ....

이런식으로 원하는 함수로 선택하여 값을 선택 할 때는 select문을 쓴다.

Like 연산자

select [칼럼 이름] from [테이블 이름] where [칼럼 이름] like [패턴];

Like는 문자열의 어떠한 문자또는 문자의 포함하는 행을 찾는 명령어이다.

"_"라는 연산자는 아무 한 문자열을 포함한다.
예를 들어
juho juno juzo 등등 ju로 시작하고 o로 끝나는데 사이에 한개의 글자가 있는 걸 찾고 싶으면
"ju_o"이런 패턴을 이용해 찾을 수 있다.

"%"라는 연산자는 뒤에 오는 아무길이의 임의의 문자열을 대응시킨다.
예를 들어 Y로 시작하는 사람을 모두 찾고 싶으면 "Y%"로 찾을 수 있다.

테이블 join하기

두개의 테이블을 어떠한 기준으로 하나로 합쳐서 두개의 테이블을 하나의 테이블로 보여줄때 사용된다.

SELECT customers.ID, customers.Name, orders.Name, orders.Amount
FROM customers, orders
WHERE customers.ID=orders.Customer_ID
ORDER BY customers.ID;

아래는 예시이다 의미를 탐구해보자.

SQL 초중급 끝

profile
알고리즘, 컴퓨터(OS, 네트워크), AI

0개의 댓글