/*
<레코드>
◎ 레코드(Record)는 테이블에 소속된 실제 데이터를 의미한다.
◎ 레코드 하나는 하나의 행(Row)을 의미한다.
<삽입하기>
◎ 테이블에 레코드를 추가하는 것을 삽입(Insert)이라고 한다.
INSERT INTO `스키마`.`테이블` ([`대상 열`,..]) VALUES (값,...);
-위 쿼리에서 콤마로 구분한 한 개 이상의 대상 열의 순서에 맞게 콤마로 구분한 값 한개 이상이 순서에
맞게 쌍을 이루어야 한다.
-하나의 INSERT 쿼리로 여러 레코드를 한 번에 삽입하기 위해 아래와 같이 콤마 로 구분하여 값 세트(Set)
를 여러개 작성할 수 있다.
INSERT INTO `스키마`.`테이블` ([`대상 열`,...]) VALUES
(값,...),
(값,...),
(값,...),...;
<조회하기>
◎ 테이블에 존재하는 레코드를 조회(선택)하기 위해 아래와 같이 명령한다.
SELECT [ALL | DISTINCT]? `열 이름,...`
FROM `스키마`.`테이블`
[JOIN ...]
[WHERE [조건]]?
[GROUP BU `통계 취합 기준 열`,... [HAVING[통계에 의한 각 결과의 조건]]?]?
[ORDER BY `정렬 기준 열`,... [ASC|DESC]?]?
[LIMIT [레코드 개수]?];
- 조회하고자 하는 열 이름을 명시하지 않고 전체 열을 순서대로 조회하기 위해 열 이름 대신 * 로 대신할수 있다.
(실무에선 잘 안씀)
- WHERE : 레코드를 선택하는 기준을 주기 위해 사용한다. 기술된 조건에 부합하는 레코드만 선택된다.
- GROUP BY : 통계 함수(가령, COUNT(), AVG() 등)를 사용할 때 레코드를 묶어낼때 참고할 값을 가지는
기준 열을 나열한다. GROUP BY 없이 통계함수를 사용할 경우 SELECT 에 의해 선택되는
레코드 전체를 통계 대상으로 한다.
- ORDER BY : 레코드 선택 결과를 후행하는 정렬 기준 열 이 가지는 값에 따라 정렬하고자 할 때 사용한다.
생략시 기본키(Primary Key)가 있다면 기본키 기준 오름차순 정렬을, 없다면 삽입순 대로 선택된다.
-> ASC : 오름차순 정렬(Ascending,생략시 기본값)
-> DESC : 내림차순 정렬(Descending)
- LIMIT : 선택할 레코드의 개수를 제한한다. 생략시 선택 결과를 제한하지 않고 전체 결과를 반환한다.
- JOIN
-> JOIN 은 SELECT 를 하고 있는 대상 테이블이 가지고 있지 않은 데이터를 다른 테이블에서 가져오기
위해 사용한다.
-> 주로 외래 키 관계인 것들 간에 JOIN 을 하지만, 반드시 그렇게 해야하지는 않다.
-> JOIN 을 위한 구조는 아래와 같다.
[LEFT | RIGHT | INNER] JOIN `대상 스키마`.`대상 테이블` ON [JOIN 조건]
- LEFT JOIN 혹은 LEFT OUTER JOIN
: JOIN 키워드를 대상으로 왼쪽(SELECT 대상인 테이블)이 가지는 데이터를 기준으로한다.
- RIGHT JOIN 혹은 RIGHT OUTER JOIN
: JOIN 키워드를 대상으로 오른쪽(JOIN 대상인 테이블)이 가지는 데이터를 기준으로 한다.
- INNER JOIN
: SELECT 대상인 테이블과 JOIN 대상인 테이블이 모두 가지고 있는 데이터를 기준으로 한다.
- CROSS JOIN
: 생략
- Full Outer Join
: MariaDB 는 Full Outer Join 을 지원하지 않음으로 두 SELECT 결과를 UNION 하여 결합한다.
- UNION
-> UNION 은 열의 개수가 같은 두 SELECT 의 결과를 하나로 합치기 위해 사용한다. 두 SELECT 가 가지는
열의 개수가 상이할때에는 사용할 수 없음으로 유의한다.
- Sub Query
-> 서브 쿼리(Sub Query) 는 현재 SELECT 하고 있는 열로써 새로운 SELECT 를 하기위해 사용한다.
-> 서브쿼리의 결과는 반드시 한 개의 열을 가지고 있어야 한다.
-> 사용하기는 편리하지만 JOIN 보다 속도가 느림으로 불가피한 상황이 아니면 사용하지 않는다.
<수정하기>
◎ 레코드를 수정하기 위헤 아래와 같이 명령한다.
UPDATE `스키마`.`테이블`
SET [`값을 변경할 열 이름` = [새로운 값]],...
위 명령어는 해당 테이블의 모든 레코드의 열 값을 수정하겠다는 의미임으로 임의로 안전 장치를 해에잫지 않는 이상
실행되지 않는다. 아래와 같이 수정하고자 하는 레코드를 특정지을수 있는 별도의 조건을 부여해야만 한다.
UPDATE `스키마`.`테이블`
SET [`값을 변경할 이름` = [새로운 값]],...
WHERE 조건
조건에 부합하는 레코드 중 수정될 레코드의 개수를 아래와 같이 LIMIT 키워드를 이용하여 제한 할수 있다.
UPDATE `스키마`.`테이블`
SET [`값을 변경할 이름` = [새로운 값]],...
WHERE [조건]
LIMIT [개수];
<삭제하기>
◎ 레코드를 삭제하기 위해 아래와 같이 명령한다.
DELETE FROM `스키마`.`테이블`;
위 명령어는 해당 테이블의 모든 레코드를 삭제하겠다는 의미임으로 안전 장치를 해제하지 않는 이상 실행
되지 않는다. 아래와 같이 삭제하고자 하는 레코드를 특정지을 수 있는 별도의 조건을 부여해야만 한다.
DELETE FROM `스키마`.`테이블`
WHERE [조건];
조건에 부합하는 레코드 중 삭제될 레코드의 개수를 아래와 같이 LIMIT 키워드를 이용하여 제한할수 있다.
DELETE FROM `스키마`.`테이블`
WHERE [조건]
LIMIT [개수];
#위 순서는 고정임으로 유의할것
*/