본문 바로가기

Programming/[SQL]

SELECT문 기초

반응형

기본적인 순서 SELECT >> FROM >> WHERE >> ORDER BY

1.쿼리문 기본 문법

SELECT [DISTINCT]] 열 이름 [or 별칭(alias, AS)]
FROM 테이블이름
[WHERE 조건식]
[ORDER BY 열이름 [ASC or DESC]]

(ASC: 오름차순 1 > 2 > 3 > 4 > 5
DESC: 내림차순 5 > 4 > 3 > 2 > 1)

sql문 작성규칙

  1. SQL문은 대문자와 소문자를 구별하지 않습니다. SELECT와 select 동일하게 인식
  2. SQL문은 한 줄 또는 여러 줄로 작성할 수 있습니다.
  • 가독성과 편집의 용이성을 위해 내용이 달라지면 줄을 나눕니다.
  • 명령어는 여러 줄로 나눌 수 없습니다. 예를 들어 SEL ECT
  1. 코드 수준에 따른 들여쓰기는 SQL 문장을 좀 더 읽기 쉽게 합니다.
  2. 명령어를 대문자로 작성하고 나머지를 소문자로 작성하면 가독성이 좋아집니다.

이상 권장 규칙

2.SELECT문

1.특정 열만 조회

SELECT employee_id, first_name, last_name
FROM employees;

2. 정렬

어떤 열을 기준으로오름차순(ASC) 또는 내림차순으로 정렬(DESC)


ORDER BY 열 이름 [ASC or DESC];

3. 별칭

열 이름을 임시로 변경한다. (원래 열 이름이 물리적으로 변경되는 것은 아님)


SELECT employee_id AS 사번, first_name AS 이름, last_name AS 성 
FROM employees;

4. 중복된 행 제거 후 출력

데이터 종류별로 하나씩 출력하게 된다.


SELECT DISTINCT 열 이름
FROM employees; 

5. 데이터 값 연결하기

연결 연산자인 '||'를 사용하면 각 열의 결과를 연결해 하나의 열로 결과를 표현할 수 있고 문자열을 추가해 새로운 데이터를 표현하는 열을 만들 수도 있습니다.


SELECT employee_id, first_name||last_name 
FROM employees
ORDER BY 사번 DESC;

문자열도 연결 가능


SELECT employee_id, 
       first_name||' '||last_name,
       email||'@'||'company.com'
FROM employees;

6. 산술 처리하기: 데이터 값끼리 계산

산술연산자
'+, -, *, /'
SELECT 문에서는 FROM절을 제외한 모든 절에서 산술연산자 사용 가능

우선순위
(), *, /, +, -


SELECT employee_id AS 사원번호, 
       salary AS 급여,
       salary+500 AS 추가급여,
       salary-100 AS 인하급여,
       (salary)*1.1 AS 조정급여
FROM employees;

3. WHERE 조건 절을 활용한 데이터 검색

사용자가 원하는 데이터를 조회할 때 사용하는 것이 WHERE 절

어디에서 어떻게 가져올지 정한다.
FROM 절 바로 다음에 기술

  • WHERE 절을 사용하여 조회하려는 조건을 지정할 수 있습니다.
  • WHERE 절은 FROM 절 다음에 위치합니다.
  • 수행될 조건 절에는 비교 연산자, SQL 연산자, 논리 연산자, 열 이름, 표현식, 숫자, 문자 등을 쓸 수 있습니다.

데이터가 조회되는 논리 순서

SELECT 열 이름
FROM 테이블 이름
WHERE 원하는 조건;

참조하려는 테이블로부터(FROM) 해당 조건식으로(WHERE) 열을 선택(SELECT)하여 조회합니다.

연산자

WHERE 절에서는 연산자(operator)를 같이 쓸 수 있는데, 데이터 값을 조작하는데 사용

연산자의 종류

연산자 종류 설명 예시
비교 연산자 조건을 비교 = < > 등
SQL 연산자 조건 비교를 확장 BETWEEN, IN 등
논리 연산자 조건 논리를 연결 AND, OR 등

1. 비교 연산자

비교 연산자의 종류는 다음과 같습니다.
다양한 조건을 적용하여 사용자가 원하는 결과를 얻을 수 있습니다.




|구분|연산자|의미|
| --- | --- | --- |
|비교연산자|=|같다.|
||<>(!=)|같지 않다.|
||>|보다 크다.|
||>=|보다 크거나 같다,.|
||<|보다 작다.|
||<=|보다 작거나 같다.|

2. SQL 연산자

구분 연산자 의미
SQL 연산 BETWEEN a AND b a와 b 사이에 값이 있다.
IN(list) list 중 어느 값이라도 일치한다.
LIKE '비교 문자' 비교 문자와 형태가 일치한다.
IS NULL null 값을 갖는다.

1.BETWEEN a AND b 연산자

BETWEEN 연산자는 두 값의 범위에 해당하는 행을 출력할 때 사용
a에 작은 값을 기술, b에 큰 값을 기술

2.IN 연산자

조회하고자 하는 데이터 값이 여러 개 일 때 사용합니다.


SELECT *
FROM employees
WHERE salary IN (10000, 17000, 24000);

3.LIKE 연산자

조회 조건이 명홧하지 않을 때 사용
LIKE 연산자는 '~와 같다'라는 의미

  • Like 연산자는 %와 _ 같은 기호 연산자(wild card)와 함께 사용합니다.
  • 조건에 문자나 숫자를 포함할 수 있습니다.
  • %는 '모든 문자'라는 의미고, _는 '한 글자'라는 의미입니다.

SELECT *
FROM employees
WHERE job_id LIKE 'AD%';

문법 의미
1 first_name
LIKE 'Le%'
first_name에서 Le~는 모두 출력
2 first_name
LIKE '%ame%'
first_name에서 ame는 모두 출력
3 first_name
LIKE '%in'
first_name에서 ~in은 모두 출력

SELECT *
FROM employees
WHERE job_id LIKE 'AD___';

4. IS NULL 연산자

데이터 값이 null인 경우를 조회할 때 사용


SELECT *
FROM employees
WHERE manager_id IS NULL;

3. 논리 연산자

논리 연산자는 여러 조건을 논리적으로 연결할 때 사용하는 연산자
SQL 문의 조건을 계속 추가해야 할 때 필수 연산자 입니다.

구분 연산자 의미
논리연산 AND 기술 순서로 봤을 때 앞의 조건과 뒤의 조건이 동시에 참(TRUE)이어야 참이다.
즉, 앞뒤 조건을 동시에 만족해야 한다.
논리연산 OR 앞의 조건이 참이거나 뒤의 조건이 참인 경우, 즉 한쪽이라도 참이면 참이다.
논리연산 NOT 뒤의 조건에 대해 반대 결과를 반환한다.
and 연산
SELECT *
FROM employees
WHERE salary > 4000
AND  job_id = 'IT_PROG';
AND, OR 연산
SELECT *
FROM employees
WHERE salary > 4000
AND job_id = 'IT_PROG'
OR job_id = 'FI_ACCOUNT';

부정 연산자의 종류

구분 연산자 의미
부정비교 != 같지 않다.
부정비교 <> 같지 않다(ISO 표준).
부정비교 NOT 열 이름 = ~와 같지 않다.
부정비교 NOT 열 이름 > ~보다 크지 않다.
부정 SQL NOT BETWEEN a AND b a와 b 사이에 값이 없다.
부정 SQL NOT IN (list) list 값과 일치하지 않는다.
부정 SQL IS NOT NULL null 값을 갖지 않는다.

<>연산자 이용

SELECT *
FROM employees
WHERE employee_id <> 105;

IS NOT NULL 연산자 사용

SELECT *
FROM employees
WHERE manager_id IS NOT NULL;
반응형