SQL의 개념 및 개요
SQL이란?
- SQL(Structured Query Language)은 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 관리하고 조작하는 데 사용되는 언어입니다.
- 구조화된 질의 언어
- How의 관점보다는 What의 관점에서 절차를 명시하지 않고 원하는 결과만을 서술하는 언어로서 비절차적 언어이기도 함.
- SQL은 데이터를 삽입, 수정, 삭제하고 데이터를 조회하는 쿼리를 작성하는 데 주로 쓰입니다.
- SQL은 데이터베이스에 질문을 던지고, 원하는 데이터를 가져올 수 있게 해주는 역할을 하며, 표준화된 언어라 다양한 데이터베이스 시스템(MySQL, PostgreSQL, Oracle 등)에서 널리 사용됩니다.
데이터베이스와 SQL의 관계
- 데이터베이스(Database): 데이터를 체계적으로 저장하여 쉽게 접근하고 관리할 수 있도록 해주는 저장 공간입니다.
- 데이터를 가공하여 유용한 정보를 얻고자 하는 것이며, 이를 효율적으로 할 수 있는 방법을 연구하여 만들어진 결과물
- 데이터를 일정한 체계에 따라 통합하여 디스크나 메모리에 저장한 것으로 응용 프로그램에 종속적이지 않도록, 일종의 미들웨어 형태로 만든 것
- 데이터베이스는 데이터를 테이블(표) 형태로 관리하며, 이 테이블은 행과 열로 구성됩니다.
- 데이터베이스는 자료의 독립성, 중복 저장의 최소화, 통합 처리, 자체적 관리 기능 등의 이점이 있습니다.
- SQL은 이러한 데이터베이스에 저장된 데이터를 다루기 위해 사용되는 도구입니다. SQL 명령을 통해 데이터베이스에 명령을 내려 데이터를 가져오거나, 수정하거나, 삭제할 수 있습니다.
- 데이터베이스 관리 시스템(DBMS; Database Management System) : 데이터베이스를 구축하고 관리할 수 있는 기능을 제공하는 시스템 소프트웨어
SQL의 주요 기능
밑은 SQL의 주된 세 가지 주요 기능에 대해 설명하고 있습니다.
1) 데이터 정의 (DDL: Data Definition Language)
- DDL은 데이터베이스의 구조를 정의하는 명령어입니다.
- 예: CREATE(생성), ALTER(수정), DROP(삭제)
- 예시:위 명령어는 학생 테이블을 생성하며, 학생의 ID, 이름, 나이를 담을 수 있는 구조를 정의합니다.
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
2) 데이터 조작 (DML: Data Manipulation Language)
- DML은 데이터베이스에 저장된 데이터를 조작하는 명령어입니다.
- 예: SELECT(조회), INSERT(삽입), UPDATE(수정), DELETE(삭제)
- 예시:위 명령어는 학생 테이블에 데이터를 삽입하는 예시입니다.
INSERT INTO students (id, name, age)
VALUES (1, 'Alice', 20);
3) 데이터 제어 (DCL: Data Control Language)
- DCL은 데이터베이스에 대한 접근 권한을 관리하는 명령어입니다.
- 예: GRANT(권한 부여), REVOKE(권한 회수)
- 예시:위 명령어는 특정 사용자에게 학생 테이블을 조회할 수 있는 권한을 부여하는 예시입니다.
GRANT SELECT ON students TO user_name;
테이블(Table)
- 관계형 데이터베이스에서 데이터 모델을 행(Row)과 열(Column)로 구성된 2차원 매트릭스 형태로 표현한 것을 테이블(Table)이라고 합니다.
- 엔터티(Entity)는 논리적 모델링에서 사용하는 용어이며, 물리적 모델링에서는 엔터티를 테이블이라고 합니다. 관계형 데이터베이스에서는 이를 릴레이션(Relation)이라고 부르기도 합니다.
- 결론적으로 엔터티, 테이블, 릴레이션은 같은 것을 단계 및 관점에 따라 다르게 지칭하는 용어입니다.
- 행(Row)은 해당 테이블의 스키마를 가지는 하나의 인스턴스라고 할 수 있으며, 레코드 혹은 튜플이라고 부르기도 합니다.
- 열(Column)은 필드라고도 하며, 속성에 해당하기도 합니다.
SQL의 데이터 조회/필터링 쿼리
데이터 조회하기: SELECT 문
데이터베이스에서 데이터를 조회할 때 가장 기본적으로 사용하는 명령이 SELECT입니다. SELECT문은 특정 테이블에서 원하는 열(column)들을 선택해서 보여줍니다.
기본 구조
SELECT 열이름1, 열이름2, ...
FROM 테이블이름;
예제
SELECT name, age
FROM students;
위 쿼리는 students 테이블에서 name과 age 열을 조회합니다.
전체 열 조회하기
모든 열을 조회하고 싶다면 *를 사용할 수 있습니다.
SELECT *
FROM students;
위 쿼리는 students 테이블의 모든 열을 조회합니다.
조건에 따라 데이터 필터링하기: WHERE 절
WHERE 절을 사용하면 특정 조건에 맞는 데이터만 조회할 수 있습니다.
기본 구조
SELECT 열이름1, 열이름2, ...
FROM 테이블이름
WHERE 조건;
예제
SELECT name, age
FROM students
WHERE age > 20;
위 쿼리는 students 테이블에서 age가 20보다 큰 학생의 name과 age를 조회합니다.
여러 조건 사용하기: AND, OR, NOT
- AND: 모든 조건을 만족하는 데이터를 조회합니다.
- OR: 하나 이상의 조건을 만족하는 데이터를 조회합니다.
- NOT: 조건을 부정하여 조건을 만족하지 않는 데이터를 조회합니다.
예제 (AND)
SELECT name
FROM students
WHERE age > 20 AND grade = 'A';
위 쿼리는 age가 20보다 크고 grade가 'A'인 학생의 name을 조회합니다.
예제 (OR)
SELECT name
FROM students
WHERE age < 18 OR grade = 'B';
위 쿼리는 age가 18 미만이거나 grade가 'B'인 학생의 name을 조회합니다.
예제 (NOT)
SELECT name
FROM students
WHERE NOT grade = 'C';
위 쿼리는 grade가 'C'가 아닌 학생의 name을 조회합니다.
특정 조건으로 필터링하기: BETWEEN, IN, LIKE
- BETWEEN: 특정 범위 내에 있는 값을 조회합니다.
- IN: 여러 값 중 하나와 일치하는 데이터를 조회합니다.
- LIKE: 특정 패턴과 일치하는 데이터를 조회합니다(주로 문자열 검색에 사용).
예제 (BETWEEN)
SELECT name
FROM students
WHERE age BETWEEN 18 AND 22;
위 쿼리는 age가 18에서 22 사이에 있는 학생의 name을 조회합니다.
예제 (IN)
SELECT name
FROM students
WHERE grade IN ('A', 'B', 'C');
위 쿼리는 grade가 'A', 'B', 'C' 중 하나인 학생의 name을 조회합니다.
예제 (LIKE)
- %는 여러 글자에 대응하고, _는 단일 문자에 대응합니다.
SELECT name
FROM students
WHERE name LIKE 'A%';
위 쿼리는 name이 'A'로 시작하는 모든 학생의 이름을 조회합니다.
데이터 정렬하기: ORDER BY
조회된 데이터를 정렬하려면 ORDER BY 절을 사용합니다.
기본 구조
SELECT 열이름1, 열이름2, ...
FROM 테이블이름
ORDER BY 열이름 ASC|DESC;
- ASC는 오름차순(기본값)으로 정렬합니다.
- DESC는 내림차순으로 정렬합니다.
예제
SELECT name, age
FROM students
ORDER BY age DESC;
위 쿼리는 age에 따라 학생들을 내림차순으로 정렬하여 조회합니다.
조회 결과 개수 제한하기: LIMIT
조회 결과의 개수를 제한하려면 LIMIT을 사용할 수 있습니다.
기본 구조
SELECT 열이름1, 열이름2, ...
FROM 테이블이름
LIMIT 개수;
예제
SELECT name
FROM students
ORDER BY age DESC
LIMIT 5;
위 쿼리는 age 내림차순 기준으로 상위 5명의 학생의 name을 조회합니다.
이번 글에서는 SQL의 기본 개념과 주요 기능, 그리고 데이터 조회와 필터링 방법을 살펴보았습니다. SQL은 데이터베이스를 효과적으로 관리하고 필요한 정보를 쉽게 조회할 수 있는 강력한 도구입니다. 이를 잘 활용한다면 다양한 데이터베이스 환경에서 유연하고 효율적으로 데이터를 다룰 수 있습니다.
'프로그래밍 언어 > SQL' 카테고리의 다른 글
[SQL 개념 정리 6] WINDOW 함수 (0) | 2024.11.13 |
---|---|
[SQL 개념 정리 5] 연결(JOIN) 쿼리 (0) | 2024.11.13 |
[SQL 개념 정리 4] 변환 쿼리 (0) | 2024.11.13 |
[SQL 개념 정리 3] 집계 쿼리 (0) | 2024.11.13 |
[SQL 개념 정리 2] SQL의 산술 연산자와 합성 연산자 (1) | 2024.11.12 |
데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!