SQL(Structured Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 관리하고 조작하는 데 사용되는 표준화된 언어이다. SQL은 데이터베이스를 생성, 수정, 삭제하고, 데이터를 삽입, 업데이트, 삭제하며, 필요한 데이터를 검색할 수 있는 다양한 기능을 제공한다. SQL의 주요 구성 요소에는 데이터 정의 언어(DDL: Data Definition Language), 데이터 조작 언어(DML: Data Manipulation Language), 데이터 제어 언어(DCL: Data Control Language)가 포함된다.
먼저, 데이터 정의 언어(DDL)는 데이터베이스 구조를 정의하는 데 사용된다. 이를 통해 테이블, 인덱스, 뷰(View) 등을 생성, 수정, 삭제할 수 있다. 주요 DDL 명령어에는 CREATE, ALTER, DROP 등이 있다. 예를 들어, 새로운 테이블을 생성하는 CREATE TABLE 명령어는 다음과 같다
CREATE TABLE 학생 (
학번 INT PRIMARY KEY,
이름 VARCHAR(50),
전공 VARCHAR(50)
);
이 명령어는 '학생'이라는 테이블을 생성하며, 학번, 이름, 전공이라는 세 개의 열을 정의한다. ALTER 명령어는 기존 테이블의 구조를 수정하는 데 사용되며, DROP 명령어는 테이블이나 인덱스 등을 삭제하는 데 사용된다.
다음으로, 데이터 조작 언어(DML)는 데이터베이스 내의 데이터를 조작하는 데 사용된다. 이를 통해 데이터를 삽입, 업데이트, 삭제하고, 필요한 데이터를 검색할 수 있다. 주요 DML 명령어에는 INSERT, UPDATE, DELETE, SELECT가 있다. 예를 들어, 새로운 데이터를 테이블에 삽입하는 INSERT INTO 명령어는 다음과 같다.
INSERT INTO 학생 (학번, 이름, 전공) VALUES (12345, '홍길동', '컴퓨터공학');
이 명령어는 '학생' 테이블에 새로운 행을 삽입하며, 학번이 12345, 이름이 홍길동, 전공이 컴퓨터공학인 데이터를 추가한다. UPDATE 명령어는 기존 데이터를 수정하는 데 사용되며, DELETE 명령어는 데이터를 삭제하는 데 사용된다. 데이터를 검색하는 SELECT 명령어는 가장 많이 사용되는 DML 명령어 중 하나이다. 예를 들어, 특정 조건을 만족하는 데이터를 검색하는 SELECT 명령어는 다음과 같다.
SELECT * FROM 학생 WHERE 전공 = '컴퓨터공학';
이 명령어는 '학생' 테이블에서 전공이 컴퓨터공학인 모든 행을 검색하여 반환한다. SELECT 명령어는 다양한 조건문과 함께 사용되어 복잡한 데이터 검색을 수행할 수 있다.
마지막으로, 데이터 제어 언어(DCL)는 데이터베이스에 대한 접근 권한을 제어하는 데 사용된다. 주요 DCL 명령어에는 GRANT와 REVOKE가 있다. GRANT 명령어는 특정 사용자에게 데이터베이스 객체에 대한 접근 권한을 부여하는 데 사용되며, REVOKE 명령어는 이미 부여된 접근 권한을 취소하는 데 사용된다. 예를 들어, 특정 사용자에게 테이블에 대한 SELECT 권한을 부여하는 GRANT 명령어는 다음과 같다.
GRANT SELECT ON 학생 TO 사용자;
고급 기능
SQL은 이러한 기본적인 명령어 외에도 고급 기능을 제공하여 데이터베이스 관리를 더욱 효율적으로 할 수 있다. 예를 들어, 조인(Join) 기능을 통해 여러 테이블의 데이터를 결합하여 검색할 수 있으며, 집계 함수(Aggregate Function)를 사용하여 데이터를 요약하고 분석할 수 있다. 또한, 서브쿼리(Subquery)를 통해 복잡한 쿼리를 작성하고, 트랜잭션(Transaction) 관리를 통해 데이터베이스의 일관성을 유지할 수 있다.
조인(Join)은 여러 테이블의 데이터를 결합하여 하나의 결과 집합으로 반환하는 기능이다. 예를 들어, '학생' 테이블과 '수강 과목' 테이블을 조인하여 각 학생이 수강하는 과목을 검색하는 SQL 문은 다음과 같다.
SELECT 학생.이름, 수강과목.과목명
FROM 학생
JOIN 수강과목 ON 학생.학번 = 수강과목.학번;
이 명령어는 '학생' 테이블과 '수강 과목' 테이블을 학번을 기준으로 조인하여 각 학생의 이름과 수강 과목명을 반환한다.
집계 함수(Aggregate Function)는 데이터를 요약하고 분석하는 데 사용된다. 주요 집계 함수에는 COUNT, SUM, AVG, MAX, MIN 등이 있다. 예를 들어, 특정 전공의 학생 수를 계산하는 SQL 문은 다음과 같다.
SELECT COUNT(*)
FROM 학생
WHERE 전공 = '컴퓨터공학';
이 명령어는 '학생' 테이블에서 전공이 컴퓨터공학인 학생의 수를 계산하여 반환한다.
서브쿼리(Subquery)는 쿼리 내에 포함된 또 다른 쿼리로, 복잡한 쿼리를 작성하는 데 사용된다. 예를 들어, 특정 과목을 수강하는 학생의 정보를 검색하는 SQL 문은 다음과 같다:
SELECT *
FROM 학생
WHERE 학번 IN (
SELECT 학번
FROM 수강과목
WHERE 과목명 = '데이터베이스'
);
이 명령어는 '데이터베이스' 과목을 수강하는 학생의 정보를 검색하여 반환한다.
SQL은 관계형 데이터베이스 관리 시스템에서 데이터를 관리하고 조작하는 데 필수적인 언어이다. 다양한 SQL 명령어와 기능을 통해 데이터를 효율적으로 관리하고, 데이터의 무결성과 일관성을 유지할 수 있다. 이러한 SQL의 강력한 기능은 데이터베이스 관리에 있어 중요한 도구가 된다.