1. 테이블(Table)
데이터베이스에서 테이블이란 컬럼(Column)과 레코드(Record)로 구성된 표를 말하는데, 사실상 우리가 평소에도 알고 있는 표를 떠올리면 된다. 여기서 컬럼은 각 자료의 영역, 속성을 의미하는 열, 레코드는 각 열에 따른 데이터 값을 지닌 행이다.
데이터베이스에서 테이블은 각각의 고유한 이름으로 구분되어야 하며, 컬럼과 레코드도 각 단어의 의미를 알고 구분해야 한다.
2. 데이터 검색 및 조회하기
주어진 테이블에서 데이터를 검색하고 가져올 때, 출력할 때 사용하는 대표적인 명령어는 아래와 같다.
SQL은 한 문장의 명령어 끝에 세미콜론(;)을 작성함으로써 다른 명령어와 구분을 해야 하고, 세미콜론 없이 엔터로만 구분되어 있다면, 하나의 명령어로 인식한다. 또, 명령어 자체는 알파벳의 대소문자 구분이 크게 의미가 없다.
컬럼과 레코드 정보를 출력하는 명령어, DESC
주어진 테이블의 정보를 Field, Type, Null, Key, Default, Extra 등의 정보로 각각 정리하여 보여준다.
Field는 컬럼, Type은 데이터의 타입 및 형식, Null은 Null 값 허용 여부, Key는 Primary(기본키), Unique(고유키), Multiple(다중키), Foreign(외래키, 빈 칸일 경우 외래키) 등의 여부, Default는 초기값 또는 기본값, Extra는 기타 추가 역할(auto_increment인 경우 행의 인덱스가 자동으로 1씩 증가) 등을 의미한다.
DESC (테이블명);
-- 또는
DESCRIBE (테이블명);
-- 버전이나 프로그램에 따라 테이블의 정보를 출력하는 명령어 DESC는 사용 불가하기도 하다.
선택한 컬럼을 출력하는 명령어, SELECT
엑셀의 필터와 유사한 기능을 하며, 5GB와 같이 작지 않은 테이블의 모든 데이터를 검색할 경우 오류가 발생할 수 있다.
검색할 테이블을 지정하는 명령어, FROM
SQL 연산을 적용할 테이블을 선택한다. 거의 대부분의 경우 SELECT와 함께 아래처럼 쓰인다.
SELECT (컬럼명) -- 컬럼명에 *을 작성하면 모든 컬럼 출력
FROM (테이블명);
컬럼의 중복을 제거하는 명령어, DISTINCT
SELECT 뒤에 이어서 함께 사용한다. 엑셀의 '중복된 항목 제거'와 비슷한데, 데이터의 용량이 큰 경우에 사용하면 좋다. 단, DISTINCT 뒤에 2개 이상의 컬럼이 올 경우, 한 쪽 컬럼에 중복이 있어도 다른 쪽 컬럼의 값이 중복이 없다면 다른 것으로 취급하기 때문에 유의해야 한다. 한 컬럼에 대해서만 중복을 제거할 경우에 적합하다.
SELECT DISTINCT (중복 제거할 컬럼명)
FROM (테이블명);
데이터를 그룹 짓는 명령어, GROUP BY ~ HAVING
LIMIT, ORDER BY처럼 주로 SELECT문의 맨 끝에 위치하며, 데이터를 특정 컬럼에 대해 그룹 짓는 명령어이다. 특정 컬럼의 중복을 제거하는 용도로도 사용할 수 있다. GROUP BY만 사용할 수도 있고, 그룹화 조건을 추가하기 위해서 HAVING을 추가로 작성할 수도 있다.
-- 내장 함수를 이용한 GROUP BY 사용
-- 특정 컬럼 COL에 대해 데이터의 개수 출력
SELECT COL, COUNT(*) FROM myData GROUP BY COL;
-- 특정 컬럼 COL1에 대해 COL2의 합계 출력
SELECT COL1, SUM(COL2) FROM myData GROUP BY COL1;
-- 특정 컬럼 COL1에 대해 COL2의 평균 출력
SELECT COL1, AVG(COL2) FROM myData GROUP BY COL1;
-- 특정 컬럼 COL1에 대해 COL2의 최대값 출력
SELECT COL1, MAX(COL2) FROM myData GROUP BY COL1;
-- 특정 컬럼 COL1에 대해 COL2의 최소값 출력
SELECT COL1, MIN(COL2) FROM myData GROUP BY COL1;
-- 데이터 그룹에 조건 적용
-- 특정 컬럼 COL에 대해 데이터 개수를 기준으로 그룹화를 하되, 개수가 1보다 큰 경우만 출력
SELECT COL, COUNT(*) FROM myData
GROUP BY COL HAVING COUNT(COL) > 1;
출력되는 데이터 개수를 제한하는 명령어, LIMIT
실무에서는 데이터의 크기가 매우 크기 때문에 일부만을 관찰하기 위해 사용한다.
-- myData 테이블에서 데이터를 3개만 출력하고 싶을 때
SELECT * FROM myData LIMIT 3;
-- myData 테이블에서 두 번째 데이터부터 5개만 출력하고 싶을 때
SELECT * FROM myData LIMIT 1, 5; -- 첫 번째 컬럼의 인덱스는 0, 두 번째는 1 ...
조건을 설정하는 명령어, WHERE
WHERE의 조건에는 비교 연산자, 복합 조건 연산자, 기타 연산자 등을 통해 다양한 조건을 구현할 수 있다. 코드 작성 방식과 조건에 들어갈 수 있는 각 연산자 의미는 아래와 같다.
SELECT (컬럼명) FROM (테이블명)
WHERE (조건);
-- (조건)
-- 비교 연산자: >, <, >=, <=, =, !=
A > B -- A보다 B가 클 때
A <= B -- A가 B 이하일 때
A = B -- A와 B가 같을 때
A != B -- A와 B가 다를 때
-- 복합 조건 연산자: AND 또는 &&, OR 또는 ||, NOT 또는 !
(조건1) AND (조건2) -- 조건1과 조건2가 모두 참일 때
(조건1) || (조건2) -- 조건1, 조건2 중 하나라도 참일 때
!(조건) -- 조건이 참인 경우는 거짓, 거짓인 경우는 참
-- 기타 연산자: BETWEEN, IN, NOT IN
A BETWEEN 10 AND 20 -- A의 값 중 10과 20을 포함해서 그 사이에 있는 값. 나이대, 날짜에서 주로 사용됨.
A IN B -- A의 값 중 B에 포함된 값
A NOT IN B -- A의 값 중 B에 포함되지 않은 값
-- WHERE 이후 조건문 형식 정리
-- COL은 컬럼명, A,B,C는 숫자나 문자열
WHERE COL BETWEEN A AND B;
WHERE COL IN (A, B, C);
WHERE COL LIKE A;
WHERE COL = A; -- 등호/부등호
'지극히 개인적인 공부 노트 > 데이터베이스(Database)' 카테고리의 다른 글
[SQL] JOIN 활용하기 (0) | 2021.09.26 |
---|---|
[SQL] 일반 집합 연산(feat. UNION, INTERSECT, EXCEPT) (0) | 2021.09.25 |
[SQL] 서브 쿼리와 서브 쿼리의 분류(feat. 반환, 위치에 따른 분류) (0) | 2021.09.24 |
[SQL] 기초적인 SQL 내장 함수(feat. COUNT, SUM, AVG, MAX, MIN, GROUP BY) (0) | 2021.09.14 |
[SQL] 대표적인 DML 명령어(feat. LIKE, ORDER BY, INSERT, UPDATE, DELETE) (0) | 2021.09.14 |