Devops 엔지니어 솔렐레 IT

SQL 기초 - GROUP BY(그룹핑), INSERT/DELETE/UPDATE(데이터 조작), CREATE/ALTER/RENAME/DROP(테이블 조작) 본문

Devops 엔지니어가 알려주는 IT 기본 지식/데이터베이스 (Database)

SQL 기초 - GROUP BY(그룹핑), INSERT/DELETE/UPDATE(데이터 조작), CREATE/ALTER/RENAME/DROP(테이블 조작)

솔렐레_ 2019. 10. 4. 09:00


안녕하세요. 솔렐레입니다.
오늘은 SQL에서 많이 사용하는 구문인 GROUP BY(그룹핑)과 데이터를 조작할 수 있는 INSERT, DELETE, UPDATE (등록, 삭제, 수정)할 수 있는 구문에 대해 배워보도록 하겠습니다. 기본적으로 데이터를 가공하여 확인을 하고 싶을 경우 사용할 수 있는 SQL문으로 개발을 할 때 필수적으로 사용하는 구문이므로 쿼리를 사용하시면서 많은 도움이 되실 것이라 생각합니다. 또한 테이블을 자체를 생성하고 변경, 삭제 그리고 테이블 명을 변경하는 작업까지 알아보도록 하겠습니다. 그럼 시작하겠습니다.


[SQL 기초 - 그룹핑: GROUP BY]

-- 데이터 그룹화
SELECT 열 이름1, 열 이름2, 집계 함수
FROM 테이블명
WHERE 조건절
GROUP BY 열 이름1, 열 이름2 (또는 1, 2);

-- 그룹화 데이터 필터링
SELECT 열 이름1, 집계 함수
FROM 테이블명
WHERE 조건절
GROUP BY 열 이름1
HAVING 집계 함수 조건절;

GROUP BY는 데이터 별로 그룹화하여 요약하고 싶을 때 사용하는 함수입니다. 예를 들어 남, 녀의 구성 차이를 알고 싶다면 열 이름에 '성별' 데이터를 넣고 COUNT로 집계한다면 남자에 대한 총 숫자와 여자에 대한 숫자로 구분하여 그룹화하여 데이터를 출력할 수 있습니다. GROUP BY 절은 WHERE절 뒤에 위치하며 ORDER BY 절 앞에 위치합니다. 열에 NULL 값이 포함되어 있을 경우 빈 값도 포함되어 그룹화됩니다.
그룹화한 데이터에 조건을 지정하고 싶다면 HAVING 절을 사용할 수 있습니다. 예를 들어 그룹화된 남, 녀 데이터에서 남자 키가 170cm 이상인 사람들을 뽑는다면 HAVING절에 '키 >= 170'이라는 조건을 넣어 그룹화된 데이터를 필터링하여 사용할 수 있습니다. WHERE 절은 데이터가 그룹화하기 전 조건을 지정하여 필터링하며 HAVING 절은 그룹화된 데이터에서 조건으로 필터링하는 구문입니다.

[SQL 기초 - 데이터 조작: INSERT, UPDATE, DELETE]

-- 데이터 등록
INSERT INTO 테이블명
VALUES(값1, 값2, 값3);

INSERT INTO 테이블명(열 이름1, 열이름 3)
VALUES(값1, 값3);

-- 데이터 수정
UPDATE 테이블명
SET 열 이름 = 변경할 값
WHERE 조건절;

-- 데이터 삭제
DELETE FROM 테이블명
WHERE 조건절;

INSERT구문은 테이블에 하나의 행을 삽입하는 쿼리문입니다. 전체 데이터 행을 삽입하거나 일부만 삽입할 수도 있습니다. 열 이름을 지정하지 않을 경우 테이블에 생성된 모든 컬럼에 맞게 값을 세팅해야 합니다. 일부를 삽입을 경우 열 이름과 값을 순서와 맞게 매칭 하여 쿼리문을 작성하는 것에 주의가 필요합니다.
데이터를 수정할 경우 UPDATE 문을 사용하면 되고 조건절을 넣었을 경우엔 특정 조건이 맞는 데이터만 수정되지만 WHERE 절을 넣지 않은 경우에는 테이블에 있는 전체 컬럼의 값이 수정됩니다.
DELETE 절은 데이터를 삭제하는 구문입니다. WHERE 절을 넣지 않고 쿼리문을 작성한다면 테이블에 있는 모든 데이터가 삭제되기 때문에 주의가 필요하며 조건절을 넣을 경우 원하는 조건에 맞게 필터링하여 데이터를 삭제할 수 있습니다.

데이터 조작을 실제 DB에 반영하기 위해서는 COMMIT 또는 ROLLBACK 구문을 실행해야 실제 데이터베이스에 반영이 됩니다. 본인이 조작한 결과가 맞는지 SELECT 하여 확인해본 후 위에 구문을 실행하는 것이 좋습니다. 원하는 결과가 맞다면 COMMIT을 실행하면 DB에 변경된 데이터가 반영되며 ROLLBACK을 실행한 경우엔 데이터 조작문을 실행하기 이전 결과로 돌아가게 됩니다.


[SQL 기초 - 테이블 생성: CREATE, ALTER, RENAME, DROP]

-- 테이블 생성
CREATE TABLE 테이블 명(
 열 이름 데이터 형식(크기) 속성
);

-- 예시
CREATE TABLE 테이블 명(
 열1 CHAR(10) PRIMARY KEY,
 열2 VARCHAR(100) NULL,
 열3 INTEGER NOT NULL DEFAULT 1
);

-- 테이블 열 구조 변경
ALTER TABLE 수정할 테이블명
MODIFY(수정열이름 수정할데이터 형식(크기));

-- 테이블 명 변경
RENAME 변경 전 테이블명
TO 변경 후 테이블명;

-- 테이블 삭제
DROP TABLE 삭제할 테이블명;

테이블을 생성할 경우 기본적으로 테이블에 속하는 열 이름과 데이터 크기, 형식을 지정해야 합니다. 열에 지정하는 속성 중 몇 가지를 소개드리겠습니다. 먼저 NULL과 NOT NULL 속성을 이용해서는 지정된 열에 데이터가 꼭 있어야 하는지 여부를 지정할 수 있습니다. NOT NULL속성인 열에 데이터가 없다면 오류가 발생할 수 있습니다. 따라서 이 속성은 꼭 값이 있어야 하는 컬럼에 지정하여 사용합니다. NOT NULL인 컬럼에 값이 지정되지 않는다면 DEFAULT 속성을 이용하여 특정 값을 넣을 수도 있습니다. 예를 들어 'DEFULT 1'로 지정한다면 테이블에 특별히 지정되는 값이 들어오지 않을 경우 1 값을 세팅합니다. PRIMARY KEY 속성은 기본 키를 설정할 때 사용하며 외래 키를 지정할 경우에는 REFERENCES 속성을 사용합니다.

테이블의 구조의 변경이 필요할 경우에는 ALTER 구문을 사용합니다. 하지만 데이터가 포함된 테이블의 구조는 변경되지 않는 것이 좋으므로 변경이 필요할 때는 충분한 검토가 필요합니다. RENAME은 테이블의 이름을 변경할 경우에 사용하며 DROP은 테이블 전체를 삭제할 때 사용하는 구문입니다. 테이블을 삭제할 때도 주의가 필요하며 작업 전 데이터가 있다면 백업 후 작업을 진행하는 것이 좋습니다.


지금까지 데이터 및 테이블을 조작하여 사용할 수 있는 SQL 구문에 대해 알아보았습니다. 데이터베이스 구조를 설계하고 그에 맞게 테이블을 사용하는데 기본적으로 필요한 내용입니다. 앞서 배웠던 SELECT, WHERE , ORDER BY문과 결합하여 적절히 사용한다면 원하는 데이터를 조회하고 가공하여 사용하는데 기초를 쌓으실 수 있을 것이라 생각합니다. 직접 쿼리문을 만들면서 원하는 데이터를 만들도록 실습해본다면 더욱 실력을 늘려가는데 도움이 될 것입니다. 감사합니다. :)

Comments