SQL

SQL 기초 및 활용

ROSEV 2021. 8. 24. 18:22

SQL이란

  • 데이터베이스 용 프로그래밍 언어이며, 한마디로 데에티베이스에 쿼리(질의문)를 통해 원하는 데이터를 가져올 수 있게 합니다.
  • 하나의 언어인 SQL 혹은 Structured Query Language은 데이터베이스 언어의 기준으로 주로 관계형 데이터베이스에서 사용이 됩니다.
  • SQL은 구조화된 쿼리 언어라고 볼 수 있습니다.

 

쿼리란 ?

  • 쿼리란 질의문이며, 엑셀에서 필터를 걸어 원하는 데이터만 볼 수 있는 것처럼, 쿼리도 그러한 역할을 하고 있다고 보면 되겠습니다.
  • 다만 엑셀처럼 GUI형식이 아닌 CLI와 같이 명령문을 내려 검색해야 한다는 차이점이 있습니다.

 

SQL의 종류

  • 데이터 정의어 (Data Definition Language)
    • 데이터를 정의할 때 사용되는 언어로, 예를 들어 테이블을 만들 때 사용하는 CREATE, 제거할 때 사용하는 DROP, 변경할 때 ALTER이 있습니다. 
  • 데이터 조작어 (Data Manipulation Language)
    • 데이터를 저장할 때 사용되는 언어로, 예를 들어 새로운 레코드를 추가할 때 사용하는 INSERT, 레코드를 삭제할 때 사용하는 DELETE, 레코드를 조회할 때 쓰는 SELECT, 레코드를 변경할 때 쓰는 UPDATE가 있습니다. 
  • 데이터 제어어 (Data Control Language)
    • 데이터베이스에 대한 접근 권한과 관련된 언어로, DB접근 권한을 허용하는 GRANT, 권한을 회수하는 REVOKE 등이 있습니다. 
  • 데이터 질의어 (Data Query Language)
    • 정해진 스키마 내에서 쿼리를 할 수 있는 언어로, SELECT만이 해당되지만 DML에 속해서 표현하기도 합니다.
  • 트랜잭션 제어어 (Transaction Control Language)
    • TCL은 DML에서 처리 한 후, 다시 한번 명령에 대한 수행을 확정하는 단계로 COMMIT으로 데이터베이스에 변동사항 등을 확정짓거나, ROLLBACK로 다시 커밋했던 내용 등을 롤백하는 문법등이 이에 해당합니다.

 

관계형 데이터베이스(Relational Database)

  • 관계형 데이터베이스는 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류로,
  • 테이블로만 이루어져 있고 키와 값의 관계로 나타냅니다
  • 구조화 된 데이터가 하나의 테이블로 표현이 되는데 이처럼 사전에 정의돈 테이블을 relation이라고 말합니다. 
  • 그래서 테이블을 사용하는 데이터베이스를 관계형 데이터베이스라고 말할 수 있습니다.

관계형 데이터베이스

테이블의 관계 종류

 

1:1 관계  : 테이블의 레코드 하나당 다른 테이블의 한 레코드와 연결 되어있는 경우

관계 종류

1:N 관계  : 테이블의 레코드 하나당 여러개의 레코드와 연결되어 있는 경우

N:N 관계  : 여러 개의 레코드가 여러 개의 레코드와 연결되어 있는 경우

자기참조 관계(Self Referencing Relationship) : 테이블 내에서도 관계가 필요한 경우 일대다 관계와 유사합니다. 유저 당 한명의 추천인을 갖지만, 반대로 추천인은 여러 유저와 연결되어 있는 경우입니다.

자기참조관계

 

SQL 실습하기

 

SELECT c.CustomerId, c.FirstName, count(c.City) as 'City Count' # select로 원하는 컬럼 선택
FROM customers AS c #FROM '테이블명', 여기서 AS는 해당 단어로 대체하겠다는 의미
JOIN employees AS e ON c.SupportRepId = e.EmployeeId #join을 통해 두 테이블의 공통 속성으로 결합
WHERE c.Country = 'Brazil' #WHERE문으로 조건 만들기
GROUP BY c.City # GROUP BY를 통해 해당 컬럼으로 묶기
ORDER BY 3 DESC, c.CustomerId ASC #ORDER BY 를 통해 오름차순 내림차순 설정
LIMIT 3; #LIMIT를 통해 3개만 출력

 

'SQL' 카테고리의 다른 글

Bigquery - Exists , Not exists  (0) 2024.04.11
SQL - WITH RECURSIVE  (0) 2021.07.23