본문 바로가기

SQL

SQL

SQL (Structured Query Language)

  • 데이터베이스와 대화하기 위해 디자인된 언어.(데이터베이스와 통신하는데 가장 많이 사용됨)
  • 데이터가 데이터베이스에 있고, 데이터베이스는 SQL 을 사용함, 그리고 SQL 을 사용해서 데이터를 다룰 수 있음
  • 1970년대에 만들어졌고, "SQUARE" → "SEQUEL" (Structured English Query Language) → "SQL" 로 바뀜
  • 엑셀 문서랑 똑같이 생김, 행(row), 열(column) 이 있음
    • (엑셀) 문서 - sheet
    • (SQL) 데이터 베이스 - 테이블

 

SQL의 특징

선언형 언어

  • 실행 방법을 말하지 않고, 원하는 결과를 명시(실행 방법은 데이터베이스 시스템이 결정)

이식성

  • SQL은 표준이 있어 기본적인 이식성을 제공하지만
  • 데이터베이스 시스템마다 고유한 확장 기능과 문법차이가 있어 완전한 이식성은 보장되지 않음
  • 데이터베이스 변경 시 제대로 작동하지 않음(코드를 수정해야 함)

영어와 유사한 문법

  • SQL은 영어 문장과 유사한 구조를 가져 읽고 이해하기 쉬움

표준

  • 대부분의 데이터베이스 시스템은 이 표준을 기반으로 하지만, 100% 따르고 있지는 않음

 

SQL 에서 사용하는 언어

DDL (Data Definition Language)

  • 데이터베이스의 구조를 정의하는 언어
  • 주요 명령어: CREATE, ALTER, DROP, TRUNCATE, RENAME
  • 테이블, 뷰, 인덱스 등의 데이터베이스 객체를 생성, 수정, 삭제하는 데 사용

DML (Data Manipulation Language)

  • 데이터를 조작할 때 사용하는 언어
  • 주요 명령어: SELECT, INSERT, UPDATE, DELETE
  • 데이터를 조회, 삽입, 수정, 삭제하는 데 사용

TCL (Transaction Control Language)

  • 데이터베이스의 논리적 작업 단위인 트랜잭션을 제어하는 언어
  • 주요 명령어: COMMIT, ROLLBACK, SAVEPOINT
  • COMMIT: 트랜잭션의 변경사항을 데이터베이스에 영구적으로 반영
  • ROLLBACK: 트랜잭션의 변경사항을 취소하고 이전 상태로 되돌림
  • SAVEPOINT: 트랜잭션 내에 중간 저장점을 만들어 부분적 롤백이 가능하게 함

DCL (Data Control Language)

  • 데이터베이스에 대한 접근 권한과 사용자 권한을 제어하는 언어
  • 주요 명령어: GRANT, REVOKE
  • 사용자에게 특정 데이터베이스나 테이블에 대한 접근 권한을 부여하거나 철회하는 데 사용

 

데이터베이스의 종류

1. RDBMS (Relational Database Management System)

  • 관계형 데이터베이스를 생성, 관리, 사용할 수 있게 해주는 소프트웨어 시스템
  • SQL을 사용해서 데이터를 조작
  • 관계형 데이터베이스 : 데이터들을 테이블 안에 저장하는 데이터베이스(엑셀 시트처럼 데이터를 정리)
  • MySQL, PostgreSQL, SQLite, MariaDB, Microsoft SQL Server, Oracle SQL

 

2. NoSQL (Non-Relational Database)

  • 비관계형 데이터베이스로, 유연한 스키마와 대규모 데이터 처리에 적합함
  • mongoDB, Redis, DynamoDB, couchDB ...

 

ORM (Object Relational Mapping)

프로그래밍 언어로 작성된 코드를 가져와서 SQL 코드로 바꿔주는 일을 함

데이터베이스 작업을 객체 지향적 방식으로 추상화하여 개발자가 SQL을 직접 작성하지 않고도 데이터베이스를 조작할 수 있게해줌

 

주요 ORM

  • Python: Django ORM, SQLAlchemy
  • PHP: Laravel Eloquent ORM
  • Node.js: Sequelize, TypeORM
  • Java: Hibernate
  • .NET: Entity Framework

주의사항

  • 개발자가 ORM에 지나치게 의존하면 SQL과 데이터베이스에 대한 이해가 부족해질 수 있음
  • 복잡한 쿼리의 경우 ORM이 생성한 SQL이 최적화되지 않을 수 있음
  • ORM의 편의성을 활용하되, SQL과 데이터베이스 원리에 대한 기본 지식을 유지하는 것이 중요

 

'SQL' 카테고리의 다른 글

DML  (0) 2025.01.31
DDL  (0) 2025.01.29