Structured Query Language
관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
Database Table
데이터베이스에는 하나 이상의 테이블이 존재한다.
SELECT
특정 항목을 보고 싶을 때
SELECT column1, column2, ...
FROM table_name;
항목 전체를 보고 싶을 때
SELECT * FROM table_name;
SELECT DISTINCT
특정 한 column1의 값만 보고 싶을 때
SELECT DISTINCT column1, column2, ...
FROM table_name;
특정 column1의 개수를 알고 싶을 때
SELECT COUNT(DISTINCT column1) FROM table_name;
특정 column1의 개수를 알고 그 column1 명을 재지정할 때
SELECT COUNT(*) AS column1_name FROM (SELECT DISTINCT column1 FROM table_name);
WHERE
특정 column1을 특정 조건을 걸어서 찾을 경우
SELECT column1, column2, ...
FROM table_name
WHERE condition;
WHERE절 연산자
| Operator | Description | | :————- | :————- | | = | Equal | | <> | Not equal. Note: In some versions of SQL this operator may be written as != | | > | Greater than | | < | Less than | | >= | Greater than or equal | | <= | Less than or equal | | BETWEEN | Between an inclusive range | | LIKE | Search for a pattern | | IN | To specify multiple possible values for a column |
AND & OR & NOT
AND 구문
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;
OR 구문
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;
NOT 구문
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
BY ORDER
컬럼1, 컬럼2를 기준으로 정렬된 table_name에서 컬럼1, 컬럼2를 선택한다.
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
- ASC : 오름차순
- DESC : 내림차순
INSERT INTO
테이블에 새로운 정보를 넣을 때 사용된다.
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
열 이름과 값을 모두 삽입하는 방법
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
값의 순서가 테이블의 컬럼과 같을 경우 삽입하는 방법
NULL
테이블 필드가 선택 사항일 경우, 이 필드에 값을 추가하지 않고 업데이트하게 될 경우 NULL 값으로 저장된다.
- NULL 값 유무 확인
SELECT column_names FROM table_name WHERE column_name IS NULL;
- NULL 값이 아닌 것 확인
SELECT column_names FROM table_name WHERE column_name IS NOT NULL;
UPDATE
테이블의 기록을 업데이트할 때 WHERE절을 넣는 것을 주의하여야한다.
WHERE절은 업데이트 해야하는 기록들을 지정한다.
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
DELETE
테이블에 대한 기존 기록 삭제
DELETE FROM table_name
WHERE condition;
SELECT TOP
SELECT TOP : 반환할 기록의 수를 지정하는 데 사용된다.
- ORACLE : ROWNUM 지원
- MySQL : LIMIT 지원
- SQL 서버 / MS 엑세스 구문
SELECT TOP number|percent column_name(s) FROM table_name WHERE condition;
- MySQL 구문
SELECT column_name(s) FROM table_name WHERE condition LIMIT number;
- ORACLE 구문
SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;
- SQL 서버 / MS 엑세스 구문
MIN(), MAX() 함수
- MIN()
SELECT MIN(column_name) FROM table_name WHERE condition;
- MAX()
SELECT MAX(column_name) FROM table_name WHERE condition;
COUNT(), AVG(), SUM() 함수
- COUNT()
SELECT COUNT(column_name) FROM table_name WHERE condition;
- AVG()
SELECT AVG(column_name) FROM table_name WHERE condition;
- SUM()
SELECT SUM(column_name) FROM table_name WHERE condition;
LIKE 연산자
열의 특정 패턴을 검색하는 WHERE절에서 사용된다. LIKE 연산자는 두 와일드 카드와 함께 사용된다.
- % : 0이나 1 또는 여러 문자를 나타낸다.
- _ : 하나의 문자를 나타낸다.
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
IN 연산자
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...)|(SELECT STATEMENT);
BETWEEN 연산자
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
ALIASES
테이블, 테이블의 열 등 임시 이름을 부여하는 데 사용된다.
이는 열의 이름을 더 쉽게 읽을 수 있도록 하는데 쓰인다.
SELECT column_name AS alias_name
FROM table_name;
JOIN
테이블의 특정 공통열을 기반으로 두 개 이상의 테이블의 행을 결합할 때 사용한다.
SELECT table1.column1-1, table2.column2-1, table1.column1-2
FROM table1
INNER JOIN table2 ON table1.columnID=table2.columnID;
결합하면 columnID를 중심으로 새로운 테이블이 생성된다.