sql을 사용하여 DB에 저장되어있는 데이터를 찾거나 수정, 입력, 출력하기 위해서는 키워드(예약어)를 알아야합니다. 이 포스트는 기본적인 예약어(SELECT, FROM, DISTINCT..)의 쓰임과 문법에대해 공부하며 간략히 정리한 글입니다.
💡 키워드(예약어)란?
💡 문법
DESCRIBE 테이블명;
SQL> SELECT NAME, DEPTNO, SAL
2 FROM employees;
NAME DEPTNO SAL
-------------------- ------------------ ------------------
Robert 20 4000
Phillps 20 1000
Edwards 10 2000
Reed 30 3000
💡 문법
SELECT COLUMN명 FROM 테이블명
SQL> SELECT *
2 FROM DEPARTMENT;
= DEPARTMENT 테이블로부터 모든 column을 조회하여 출력한다.
테이블의 조회할 하나 이상의 열(column)을 지정하여 출력할 때 사용한다
데이터를 조회할때 맨 처음에 쓴다. 자리는 고정되어있다
쉼표(,)를 사용하여 여러개의 column을 선택할 수 있다
SQL> SELECT SAL, EMP, DEPT
2 FROM EMP;
= EMP 테이블로부터 SAL, EMP, DEPT column을 조회하여 출력한다.
SQL> SELECT NAME, DEPT, SAL*10
2 FROM EMP;
NAME DEPTNO SAL*10
-------------------- ------------------ -----------------------
Robert 20 40000
Phillps 20 10000
Edwards 10 20000
Reed 30 30000
= EMP(employee)테이블에서 NAME, DEPT(department_NO)그리고
SAL(salary)에 10을 곱한값을 출력한다.
💡 문법
SELECT COLUMN명 FROM 테이블명
SAL*10
-----------------------------------
10000
20000
30000
40000
SQL> SELECT SAL*10 AS "Salary"
2 FROM EMP;
Salary
-----------------------------------
10000
20000
30000
40000
= EMP 테이블로부터 SAL을 조회하여 *10연산을 하고,
SALARY로 임시로 이름을 바꾼다.
SQL> SELECT DISTINCT DEPTNO
2 FROM EMP;
= EMP 테이블로부터 DEPTNO column을 조회한 후,
중복되는 데이터를 제거한 후 결과값을 출력한다.
다양한 작업들
📌여러 연산자들
WHERE COLUMNE명 연산자 조건값;
SQL> SELECT DEPTNO
2 FROM EMP
3 WHERE DEPTNO = 30;
= EMP 테이블로부터 DEPTNO column을 조회한 후,
DEPTNO가 30인 행만 출력한다.
SQL> SELECT SAL
2 FROM EMP
3 WHERE SAL >= 30000;
= EMP 테이블로부터 SAL column을 조회한 후,
SAL이 30000보다 큰 행만 출력한다.
SQL> SELECT NAME
2 FROM EMP
3 WHERE NAME = 'NOAH';
= EMP 테이블로부터 NAME column을 조회한 후,
NAME이 NOAH인 행만 출력한다.(문자열인경우 대소문자 잘 구분하자)
SQL> SELECT NAME
2 FROM EMP
3 WHERE NAME >= 'NOAH';
= EMP 테이블로부터 NAME column을 조회한 후,
NAME이 NOAH와 같거나 보다 큰 행만 출력한다.(알파벳 순)
SQL> SELECT NAME
2 FROM EMP
3 WHERE NAME != 'NOAH';
= NOAH를 제외한 다른행 모두 출력한다.
📌 BETWEEN A AND B
WHERE COLUMN명 BETWEEN A AND B;
WHERE COLUMN명 BETWEEN 'A' AND 'B';(문자열도 가능)
SQL> SELECT SAL
2 FROM EMP
3 WHERE SAL BETWEEN 10000 AND 25000;
= SAL COLUMN에서 10000이상 25000이하인 행을 출력한다.(10000, 25000 포함)
📌 IN(A, B, C, ..)
WHERE COLUMN명 IN (조건값1, 조건값2, ..)
SQL> SELECT SAL
2 FROM EMP
3 WHERE SAL IN(15000, 20000, 30000);
= SAL column에서 15000, 20000, 30000인 행만 출력한다
(연산자 =의 조건값 여러개 ver.)
📌 LIKE
WHERE COLUMN명 LIKE 조건값
SQL> SELECT NAME
2 FROM EMP
3 WHERE NAME LIKE 'A%';
= LIKE column에서 A로 시작하는 행만 조사하여 출력
SQL> SELECT hire_date
2 FROM EMP
3 WHERE hire LIKE '%07';
= dd-mm-yy year값이 07년 이후인 행만 조사하여 출력
WHERE NAME LIKE '_AB%'
📌 NOT
WHERE NOT COLUMN명 조건값
WHERE NOT(COLUMN명 연산자 조건값)
으로 작성할 수도 있다...
WHERE SAL NOT BETWEEN 10000 AND 15000
= SAL 10000이상 15000이하 ➡ 10000미만 15000초과
📌 IS NULL
WHERE DEPTNO IS NULL
📌 AND/OR
AND
WHEERE COLUMN명 연산자 조건값 AND COLUMN명 연산자 조건값
SQL> SELECT SAL, DEPTNO, NAME
2 FROM EMP
3 WHERE SAL >= 30000 AND DEPTNO IS NULL;
= SAL이 30000이상인 '동시에' DEPRNO가 NULL인 행을 출력
OR
WHEERE COLUMN명 연산자 조건값 OR COLUMN명 연산자 조건값
SQL> SELECT SAL, DEPTNO, NAME
2 FROM EMP
3 WHERE SAL >= 30000 OR DEPTNO IS NULL;
= SAL이 30000이상, DEPRNO가 NULL 두 조건 중
하나라도만족하는 행을 조회, 출력
SQL> SELECT SAL, DEPTNO, NAME
2 FROM EMP
3 WHERE SAL >= 30000 OR DETNO IS NULL AND NAME IS LIKE '_A%'
=
💡 문법
ORDER BY 정렬기준column 정렬방식
정렬방식
1. ASC(Ascending, 오름차순, default)
2. DESC(Descending, 내림차순)
(+ 유니코드에 따라 소문자가 대문자보다 더 큰 값이며, 날짜에서는 최근날짜가 더 큰 값이다)
SQL> SELECT name, deptno, salary
2 FROM departments
3 ORDER BY deptno, salary DESC;
NAME DEPTNO SALARY
-------------------- --------------------- ----------------------
HALLEN 10 33000
ANNA 10 3000
KATE 20 4000
ELSA 30 20000
KATHY 30 10000
MINSU 30 3000
YUNA 30 2000
SARANG 30 1800
= DEPTNO를 ASC방식으로 정렬한 다음, 중복되는 값(30)에 해당하는 SALARY를 DESC 방식으로 정렬한다
.
.
.
연결 연산자(||) column들을 붙여 하나의 column으로 만든다.
vertical bar(|)가 하나만 사용될 경우는 or을 의미
키워드 + 요소 = 절
ex) SELECT + column리스트 = SELECT절
절 + 절 = (완성된)구문
ex) SELECT절 + FROM 절 = SELECT 구문