SELECT의 기본

강희철·2022년 1월 4일
0

SQL

목록 보기
2/9

SELECT란?

- 데이터 테이블을 조회할 수 있는 데이터 조작어 ( DML )


예제 테이블 1 ( users )

index name salary email
1 홍길동 10000 aaa@naver.com
2 김아무개 50000 aaa@naver.com
3 박아무개 30000 aaa@naver.com
4 이무개 20000 aaa@naver.com
5 지우개 40000 aaa@naver.com

- 데이터 조회

아래 SQL문은 예제 테이블1로 작성하였습니다.

#데이터를 조회하는 SELECT문의 기본

SELECT * FROM users;

결과

index name salary email
1 홍길동 10000 aaa@naver.com
2 김아무개 50000 aaa@naver.com
3 박아무개 30000 aaa@naver.com
4 이무개 20000 aaa@naver.com
5 지우개 40000 aaa@naver.com

#조건을 충족하는 데이터를 조회하는 SELECT문

SELECT * FROM users WHERE index = '1';

결과

index name salary email
1 홍길동 10000 aaa@naver.com

#데이터의 특정 열 ( column )만 조회하는 SELECT문

SELECT index,name FROM users;

결과

index name
1 홍길동
2 김아무개
3 박아무개
4 이무개
5 지우개

#SELECT문의 정렬 순서 지정

SELECT * FROM users ORDER BY index DESC;
- ASC : 오름차순
- DESC : 내림차순

결과

index name salary email
5 지우개 40000 aaa@naver.com
4 이무개 20000 aaa@naver.com
3 박아무개 30000 aaa@naver.com
2 김아무개 50000 aaa@naver.com
1 홍길동 10000 aaa@naver.com

#SELECT문의 중복데이터 제거

SELECT DISTINCT email FROM users ;
실제 값이 지워지는게 아닌 출력에서만 지워는 것 입니다.

결과

email
aaa@naver.com

#SQL문의 별칭 사용

SELECT name as '이름', salary '급여' FROM users;
- 해당 열 ( column )에 별명을 붙여 조회에 편리함을 더해줌
- as 는 생략가능

결과

이름 급여
홍길동 10000
김아무개 50000
박아무개 30000
이무개 20000
지우개 40000

#SELECT문의 데이터 값 연결하기

SELECT CONCAT(name,salary) FROM users;
- CONCAT( 열1, 열2 ) 로 데이터 결과를 연결가능
- CONCAT ( 열1, 열2 ) AS '별칭' 으로 연결된 값에 별칭 부여 가능

결과

CONCAT(name,salary)
홍길동10000
김아무개50000
박아무개30000
이무개20000
지우개40000

#SELECT문의 데이터 값 연산하기

SELECT index, name, salary, salary+10000, salary-10000 FROM users;
- 산술 연산자 ( +, -, *, / ) 모두 가능.

결과

index name salary salary+10000 salary-10000
1 홍길동 10000 20000 0
2 김아무개 50000 60000 40000
3 박아무개 30000 40000 20000
4 이무개 20000 30000 10000
5 지우개 40000 50000 30000


- WHERE절을 이용한 데이터 조건 조회

#WHERE절에 필요한 비교연산자

연산자 의미
A = B A와B는 같다
A <> B, A != B A와B는 같지 않다
A > B A가 B보다 크다
A >= B A가 B보다 크거나 같다
A < B A가 B보다 작다
A <= B A가 B보다 작거나 같다

#조건이 1개인 경우

SELECT * FROM users WHERE index = '2';

결과

index name salary email
2 김아무개 50000 aaa@naver.com
		or
SELECT * FROM users WHERE salary > 20000;

결과

index name salary email
2 김아무개 50000 aaa@naver.com
3 박아무개 30000 aaa@naver.com
5 지우개 40000 aaa@naver.com

#조건 확장을 위한 SQL 연산자

연산자 의미
BETWEEN A AND B A와B 사이의 값 ( A, B 포함 )
IN(A,B,C) A,B,C 중 어느 값이라도 일치한다.
LIKE 'A' 비교 문자와 형태가 일치한다. ( % 사용 )
IS NULL NULL 판단

#BETWEEN 연산자

SELECT * FROM users WHERE index BETWEEN 2 AND 4;

결과

index name salary email
2 김아무개 50000 aaa@naver.com
3 박아무개 30000 aaa@naver.com
4 이무개 20000 aaa@naver.com
	or
    
SELECT * FROM users WHERE salary BETWEEN 20000 AND 40000;

결과

index name salary email
3 박아무개 30000 aaa@naver.com
4 이무개 20000 aaa@naver.com
5 지우개 40000 aaa@naver.com

#IN 연산자

SELECT * FROM users WHERE index IN (2,4,5);

결과

index name salary email
2 김아무개 50000 aaa@naver.com
4 이무개 20000 aaa@naver.com
5 지우개 40000 aaa@naver.com
		or
        
SELECT * FROM users WHERE name IN ('홍길동','이무개');

결과

index name salary email
1 홍길동 10000 aaa@naver.com
4 이무개 20000 aaa@naver.com

#LIKE 연산자

SELECT * FROM users WHERE name LIKE '개';

결과

index name salary email
SELECT * FROM users WHERE name LIKE '%개';

결과

index name salary email
2 김아무개 50000 aaa@naver.com
3 박아무개 30000 aaa@naver.com
4 이무개 20000 aaa@naver.com
5 지우개 40000 aaa@naver.com
SELECT * FROM users WHERE name LIKE '%무%';
- %는 해당 단어의 앞 뒤로의 모든 문자라는 뜻을 가지고있다.

결과

index name salary email
2 김아무개 50000 aaa@naver.com
3 박아무개 30000 aaa@naver.com
4 이무개 20000 aaa@naver.com

0개의 댓글