SQL (Structured Query Language) : 데이터베이스에 접근하고 조작하기 위한 표준 언어
RDBMS( Relational Database Management System, 관계형 데이터베이스 관리 시스템) 는 MS SQL Server, IBM DB2, Oracle, MySQL, and Microsoft Access 등 모든 현대 데이터베이스 시스템의 기본이다.
RDBMS의 데이터는 테이블이라고 불리는 데이터베이스 객체에 저장된다. 테이블은 관련된 데이터의 모음이며 열과 행으로 구성된다. 모든 테이블은 필드라고 불리는 작은 엔트리로 나뉜다.
필드 : 테이블의 열이다. 테이블의 모든 레코드에 대해 특정한 정보를 유지하기 위해 디자인되었다. 테이블의 특정 필드와 관련된 모든 정보를 포함하는 테이블의 수직적인 엔트리이다.
레코드 : 테이블의 행이다. 표에 개별적으로 존재하는 엔트리이다. 테이블의 수평적인 엔트리이다.
데이터베이스는 대체로 하나 또는 하나 이상의 테이블을 가지고 있다. 각각의 테이블은 이름으로 식별된다. 테이블은 데이터를 가진 레코드로 구성된다.
데이터베이스에서의 대부분의 작업은 SQL문으로 실행된다.
select 구문은 데이터베이스에서 데이터를 추출할 때 사용한다. 반환된 데이터는 result-set이라고 불리는 결과 테이블에 저장된다.
문법
SELECT coulmn1, column2 FROM table_name;
coulmn1, column2 : 테이블 중 정보를 추출하고 싶은 필드의 이름
--모두 검색
SELECT * FROM table_name;
SELECT DISTINCT 구문은 다른 값들만 반환하는데 사용된다. (중복되는 데이터가 있으면 1건만 조회)
SELECT DISTINCT coulmn1, column2
FROM table_name;
WHERE 절은 레코드를 필터링하는데 사용된다. 특정 조건을 충족하는 레코드만 추출하는데 사용.
SQL 구문에서 텍스트 값에는 작은 따옴표를 필요하지만 숫자 필드에서는 따옴표를 사용하면 안 된다.
SELECT column1, column2
FROM table_name
WHERE condition;
이 연산자들은 WHERE 절과 함께 쓰일 수 있다.
AND와 OR 연산자는 둘 이상의 조건에 따라 필터링할 때 쓰인다.
SELECT column1, column2
FROM table_name
WHERE condition1 AND condition2;
SELECT column1, column2
FROM table_name
WHERE condition1 OR condition2;
SELECT column1, column2
FROM table_name
WHERE NOT condition;
ORDER BY 구문은 결과 세트를 오름차순 또는 내림차순으로 정렬하는데 사용된다. 기본적으로 레코드를 오름차순으로 정렬하고, 내림차순으로 정렬하고 싶을 때는 DESC 키워드를 사용해야 한다.
SELECT column1, column2
FROM table_name
ORDER BY column1, column2 ASC|DESC;
INSERT INTO 구문은 테이블에 새로운 레코드를 삽입하는데 사용된다.
INSERT INTO table_name (column1 , column2)
VALUES (value1, value2);
INSERT INTO table_name
VALUES (value1, value2);
NULL 값이란 값을 가지고 있지 않음을 뜻한다. 표의 필드가 선택사항인 경우, 이 필드에 값을 추가하지 않고 새 레코드를 삽입하거나 수정하면 필드가 NULL값으로 저장된다.
SELECT column_names
FROM table_name
WHERE column_name IS (NOT) NULL;
UPDATE table_name
SET column1 = value1 , column2 = value2
WHERE condition;
DELETE FROM table_name WHERE condition;
SELECT TOP절은 데이터베이스에서 데이터를 선택하는데 사용된다. 수천 개의 레코드가 있는 큰 테이블에서 유용하다.
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
SELECT MIN(column_name)
FROM table_name
WHERE condition;
SELECT MAX(column_name)
FROM table_name
WHERE condition;
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
SELECT AVG(column_name)
FROM table_name
WHERE condition;
SELECT SUM(column_name)
FROM table_name
WHERE condition;
Like 연산자는 열에서 지정된 패턴을 검색하기 위해 WHERE절에서 사용된다.
SELECT column1, column2
FROM table_name
WHERE column LIKE pattern;
와일드카드는 문자열에서 하나 이상의 문자를 대체하는데 사용한다. WHERE절에서 LIKE 연산자와 함께 사용된다.
IN 연산자는 where절에서 여러 값을 지정할 수 있게 한다. 다중 OR 조건의 약어.
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2);
또는
WHERE column_name IN (SELECT STATEMENT);
BETWEEN 연산자는 주어진 범위 내에서 값을 선택한다. 값은 숫자, 텍스트 또는 날짜일 수 있다. 시작값과 끝값을 포함한다.
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1, value2;
aliases(별칭)는 테이블 또는 테이블의 열을 임시적인 이름으로 지정하는데 사용된다. 칼럼의 이름을 읽기 쉽게 만들기 위해 종종 사용된다. 별칭은 쿼리 기간 동안애만 존재.
SELECT column_name AS alias_name
FROM table_name;
SELECT column_name(s)
FROM table_name AS alias_name;
JOIN 절은 두 개 이상의 테이블의 행을 이들 사이의 관련된 열에 기반해 결합하는데 사용된다.
INNER JOIN 키워드는 두 표에 일치하는 값을 가진 레코드를 선택.
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
LEFT JOIN 키워드는 왼쪽 테이블에서 모든 레코드를 반환하고, 오른쪽 테이블에서 일치하는 레코드를 반환한다. 일치하는 항목이 없을 시 오른쪽에서 NULL이 된다.
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
RIGHT JOIN 키워드는 오른쪽 테이블에서 모든 레코드를 반환하고, 왼쪽 테이블에서 일치하는 레코드를 반환한다. 일치하는 항목이 없을 시 왼쪽에서 NULL이 된다.
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
FULL JOIN 키워드는 왼쪽 또는 오른쪽 테이블 레코드가 일치할 때 모든 레코드를 반환한다. (=FULL OUTER JOIN)
SELECT column_name(s)
FROM table1
FULL OUTER JOIN JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;
SELF JOIN은 자신의 테이블과 연결해서 조회하는 것을 말한다.
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
UNION 연산자는 둘 이상의 SELECT 문들의 결과 집합을 결합하는데 사용한다. UNION 내의 각 SELECT문에는 동일한 수의 열이 있어야 한다. 열은 반드시 유사한 데이터 타입이어야 한다. 또한 각 SELECT문의 열은 동일한 순서로 되어있어야 한다.
SELECT column_name(s) FROM table1
UNION (ALL)
SELECT column_name(s) FROM table2;
GROUP BY 구문은 동일한 값을 가진 행을 요약 행으로 그룹화한다. 하나 이상의 열로 결과 집합을 그룹화하기 위해 종종 집계 함수와 함께 사용된다.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
WHERE 키워드를 집계 함수와 함께 사용할 수 없어 HAVING절이 SQL에 추가되었다.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
EXISTS 연산자는 하위 쿼리에 기록의 존재를 시험하기 위해 사용한다. 하위 쿼리가 하나 이상의 레코드를 반환하는 경우 TRUE를 반환한다.
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition;