select distinct [칼럼 이름] from [테이블 이름];
이렇게 하면 중복된 결과를 제거 할 수 있다.
select distinct name from user_information;
위 예시에서는 아래와 같은 결과가 나온다.
// 사진 넣을 예정
기본적으로 SQL은 모든 만족되는 결과를 출력한다.
하지만 일부를 출력하고 싶을 때는 Limit 키워드를 사용 할 수 있다.
select [칼럼 이름] from [테이블 이름] Limit [행의 개수]
Limit [행의 개수]를 통해서 행을 제한 할 수 있다.
select name from user_information limit 5;
위의 예제는 아래와 같은 결과가 나온다.
더 나아가 OFFSET명령어는 특정 행 이상부터 출력할 수 있게 한다.
select [칼럼 이름] from [테이블 이름] Offset [시작 행]
원하는 개수만큼의 행을 건너뛸때 사용하며
SQL 인덱스는 0부터 시작한다.
select [칼럼이름] from [테이블 이름];
보통 이렇게 사용한다. 하지만 테이블이 여러개 일 때는 테이블 안에 있는 칼럼을 지정해야한다.
select [테이블 A].[칼럼 이름] [테이블 B].[칼럼 이름] from [테이블 A] [테이블 B];
이렇게 .으로 완전히 표현하는 것은 "fully qualified name"이라고 한다.
| city_name | kor_addr | standard_code |
|---|---|---|
| 대구 | 대구광역시 | DG |
| 인천 | 인천광역시 | IC |
| 서울 | 서울특별시 | SU |
| ... | ... | ... |
select city.city_name user_information.id from city user_information;
어떠한 필요한 값이 있다. 그 값을 어떨때에는 작은 순서대로 값을 원할때도 있을 것이고, 큰 순서대로 값을 원할때가 있을 것이다.
그럴때는 order_by명령어를 사용하여 볼 수 있다.
select [컬럼 명] from [테이블 명] order by [정렬 기준 칼럼 명];
으로 정렬 해서 사용할 수 있다.
텍스트를 기준으로 정렬할 때는 알파벳 순으로 정렬을 한다. 또 기본적으로 정렬하면 오름차순으로 정렬된다.
두개의 테이블을 동시 기준으로 정렬하고 싶을때는 ,를 사용하여 정렬할 수 있다.
select [컬럼 명] from [테이블 명] order by [정렬 기준 칼럼 명],[정렬 기준 칼럼 명2];
정렬 우선순위는 쓴 순서대로 부여된다.
select문에서 where는 프로그래밍의 if문 처럼 꼭 조건에 맞는 값만 찾아 낸다.
select [칼럼 명] from [테이블 명] where [조건 구];
이렇게 쓰면 where 절로 필요한 조건을 찾을 수 있다.
[칼럼 명] = [찾고자하는 값]보통 이렇게 쓰는 편이다.
select id,password form user_information where id = 'juho0601';
위의 예시에서는 이렇게 원하는 값만 찾을 수 있다.
BETWEEN 연산자는 범위 안에 있는 값을 찾아낸다. 첫번째 값은 시작값 두번째 값은 끝값이다.
select [칼럼 이름] from [테이블 이름] where [칼럼 이름] between [시작 값] and [끝 값];
문자열은 '을 써서 감싼다.
논리 연산자는 두개의 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이 '이주호'인 값만 반환한다.
위와 같이 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 명령어는 출력결과를 원하는 형식으로 바꿀수 있거나 출력결과를 하나로 이어버릴 수 있다. 즉 새로운 컬럼을 만드는 것과 같은 효과를 낼 수 있다.
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문을 쓴다.
select [칼럼 이름] from [테이블 이름] where [칼럼 이름] like [패턴];
Like는 문자열의 어떠한 문자또는 문자의 포함하는 행을 찾는 명령어이다.
"_"라는 연산자는 아무 한 문자열을 포함한다.
예를 들어
juho juno juzo 등등 ju로 시작하고 o로 끝나는데 사이에 한개의 글자가 있는 걸 찾고 싶으면
"ju_o"이런 패턴을 이용해 찾을 수 있다.
"%"라는 연산자는 뒤에 오는 아무길이의 임의의 문자열을 대응시킨다.
예를 들어 Y로 시작하는 사람을 모두 찾고 싶으면 "Y%"로 찾을 수 있다.
두개의 테이블을 어떠한 기준으로 하나로 합쳐서 두개의 테이블을 하나의 테이블로 보여줄때 사용된다.
SELECT customers.ID, customers.Name, orders.Name, orders.Amount
FROM customers, orders
WHERE customers.ID=orders.Customer_ID
ORDER BY customers.ID;
아래는 예시이다 의미를 탐구해보자.
SQL 초중급 끝