SQL이란?
SQL(Structured Query Language)은 테이블 구조(컬럼과 로우로 조직된 데이터 구조)의 데이터를 다루는 가장 강력한 언어다.
SQL(Structured Query Language)의 특징
•
컬럼과 로우로 구성된 테이블 구조의 데이터를 자유자재로 다룰 수 있는 가장 강력한 언어
•
독립된 데이터를 가장 쉽게 연결(JOIN) 할 수 있는 언어
•
프로그래밍 지식이 없어도 비교적 쉽게 배울 수 있는 언어
•
프로그래밍 기술보다 데이터를 이해하고 활용하는 능력이 더 중요하다.
◦
SQL을 잘하는 사람 = 데이터의 이해도가 높은 사람
Tip. SQL과 Query
SQL은 Structured Query Language의 약자로 데이터베이스에 정보를 요청하는 언어 자체를 의미한다. 반면에 쿼리(Query)는 일반적으로 데이터베이스에 정보를 요청하는 행위 자체를 뜻하는 좀 더 넓은 의미로 사용된다. “SQL을 작성하다.”와 “쿼리를 작성하다.” 둘 다 데이터베이스에 어떠한 행의를 요청하는 의미로 사용된다. 이 강의에서는 둘의 차이를 구분하지 않고 같은 의미로 사용한다.
선언적 언어와 집합 개념
SQL은 선언적 언어
•
SQL은 필요한 결과가 무엇(What)인지 정의만 하면 되는 선언적 언어다.
•
Java, C, Python과 같은 언어는 절차형 언어다.
◦
절차형 언어는 필요한 결과가 무엇(What)인지에 따라, 어떤(How) 절차로 처리할지도 모두 기술해야 하는 언어
•
SQL은 How에 대해서는 기본적으로 개발자가 신경 쓸 필요가 없다.
◦
DB에서 데이터를 가져오는 절차는 DBMS 내부적으로 자동으로 처리
◦
하지만 이후 SQL 성능을 다루려면 DBMS 내부적인 “절차”를 분석하고 효율적인 절차를 찾을 수 있어야 한다.
▪
여기서 이야기하는 “절차”는 DBMS 내부적인 절차다.
▪
SQL을 절차형 언어처럼 작성하라는 뜻이 절대 아니다.
집합 개념
•
SQL을 작성할 때는 필요한 데이터 집합이 무엇인지 정의(선언)해야 한다.
•
필요한 데이터 집합을 조회할 때 가능하면 한 문장의 SQL로 정의하는 것이 좋다.
◦
예를 들어, 2023년에 가입한 회원을 조회한다면, 조건에 맞는 회원을 한 명씩 찾는 SQL이 아니라, 조건에 맞는 회원을 한 번에 모두 조회되도록 SQL을 작성
◦
데이터 변경 역시 마찬가지. 변경하고자 하는 데이터 집합 전체를 한번에 변경하도록 해야 한다.
▪
상황에 따라서 처리하려는 데이터 집합이 너무 크다면 성능을 고려해 어느 정도 단위로 데이터 집합을 쪼개서 처리해야 할 수도 있다.
아직은 선언적 언어, 집합 개념, 이러한 부분이 낯 설 수 있습니다. 지금 완전히 이해하려 하지 말고 우선 진도를 나가보기 바랍니다.
SQL TOOL
SQL 툴은 개인 PC에서 DBMS에 접속해 SQL을 실행하기 위한 소프트웨어다. DBMS는 실제 데이터를 저장하고 관리하는 소프트웨어이고, SQL 툴은 DBMS의 데이터를 사용자가 다루기 위한 소프트웨어다.
SQL 툴은 매우 다양하다. 특정 DBMS에 종속적인 툴도 있으며, 다양한 DBMS를 지원하는 툴도 있다. 앞으로 실습 준비를 하면서 MySQL을 설치하고 MySQL에 접속가능한 SQL 툴을 설치해 실습을 진행하게 된다.