프로그래밍을 모르는 이를 위한 SQL - SELECT

KIEE·2022년 11월 27일
0

Non-Programmer.SQL

목록 보기
2/3

SQL 명령어

SQL 명령어의 종류

SQL의 명령어는 DDL(Data Definition Language), DCL(Data Control Language), DML(Data Manipulation Language) 이렇게 세 가지로 분류할 수 있다. 각 명령어 그룹에 대한 설명은 아래와 같다.

DDL (Data Definition Language)

DDL은 Definition의 뜻에서 알 수 있듯이 데이터의 추가나 삭제, 내용을 갱신하는 기능에 대한 명령어로 구성된다. 즉, 테이블을 '정의'하는 기능을 담당하고 있다.

DCL (Data Control Language)

DCL은 트랜잭션이나 데이터에 대한 접근 권한을 제어하는 명령어로 구성된다.

트랜잭션

구글의 정의에 따르면, '쪼갤 수 없는 업무 처리의 최소 단위'를 말한다. 쉽게 얘기하면 거래내역이라고도 한다. SQL등과 같은 데이터 차원에서의 트랜잭션은 '데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위'를 뜻한다.

DML (Data Manipulation Language)

SQL에서 가장 많이 사용되는 명령어 그룹이다. 데이터의 추가, 삭제 그리고 내용의 갱신을 담당하는 명령어들로 구성된다.

SELECT 명령어

오늘 살펴볼 것은 DML 중 SELECT 라는 명령어이다.

SELECT 명령어는 데이터베이스의 테이블에서 원하는 정보를 걸러낼 수 있도록 해주는 가장 기본적인 명령어이다. 그리고 개인적인 생각으로는 SQL의 거의 전부라고 생각한다.

SELECT의 기본형식을 보면 다음과 같다.

SELECT의 기본 형식

SELECT select_list 
[INTO new_table]
[FROM table_srouce]
[WHERE search_condition]
[GROUP BY group_by expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC | DESC]]

위의 기본 형식에 있는 모든 명령어를 한 번에 다 봤다간 마음이 꺾여서 다음부터는 공부를 하기 싫을 수 있으니 아래와 같이 간단한 형태로 시작하겠다.

SELECT의 기본 형식

SELECT select_list
[FROM table_srouce]
[WHERE search_condition]
[ORDER BY order_expression [ASC | DESC]]

SELECT라는 명령어는 테이블의 속성을 가져오는 명령어이다.

SELECT * FROM Table_A

위와 같이 작성하면 Table_A로부터 모든 속성의 데이터를 전부 가져온다. 여기서 알 수 있듯이 FROM이라는 명령어는 단독으로는 사용할 수 없는 명령어이다. FROM과 마찬가지로 '[' 와 ']' 사이에 있는 명령어들은 단독으로 사용할 수 없다.

Tip '*' 과 '?'

데이터, REGEX 그리고 REGEX를 사용하는 검색분야에서도 사용되는 기호이다.

'*' 는 이 자리에 다른 모든 단어나 철자가 들어올 수 있음을 의미한다.
'?' 는 이 자리에 단어나 철자가 들어올 수도 있고, 안 들어올 수도 있음을 의미한다.

다시 본론으로 돌아와서 FROM은 SELECT가 속성을 가져올 테이블을 지정하는 역할을 한다.
여기서 특정 속성을 지정하여 가져오고 싶다면 아래와 같이 명령어를 작성하면 된다.

SELECT (Name, Age) FROM Table_A

위의 명령어는 'Table_A'라는 테이블에서 Name이라는 속성과 Age라는 속성을 가져오도록 한다.

FROM 명령어에는 SELECT를 사용하여 가져온 데이터를 사용할 수도 있다. 이를 표현한 명령식은 다음과 같다.

SELECT (Name, Age) 
FROM (SELECT * FROM (Table_A) WHERE (Local = "Korea")) 
WHERE (Age >= 30) 
ORDER BY AGE ACS

WHERE 명령어

위에서 설명한 것과 같이 단독으로는 사용할 수 없는 명령어이다. WHERE은 FROM으로 설정한 테이블에서 데이터를 가져오는 조건을 설정하는 명령어이다.

SELECT (Name, Age) FROM Table_A WHERE (Age >= 30)

위에 작성된 명령어는 'Table_A'라는 명령어에서 Age가 30이상인 데이터의 Name과 Age 속성을 가져오는 명령이다. 조건이 한개 이상일 경우, WHERE을 여러 개 써도 되지만 &(AND) 나 |(OR)를 이용해서 여러 조건을 조합해서 사용할 수도 있다. WHERE을 사용해서 모든 조건을 표현하면 AND 연산을 사용한 것과 같은 효과가 나타난다.

ORDER BY 명령어

FROM, WHERE과 마찬가지로 단독으로 사용할 수 없는 명령어이다. ORDER BY는 SELECT가 가지고 오는 데이터를 정렬하는 기능을 수행한다.

SELECT (Name, Age) FROM Table_A WHERE (Age >= 30) ORDER BY AGE ACS

사용법은 ORDER BY 뒤에 정렬할 속성과 함께 ACS 혹은 DESC를 명시하면 된다. 속성은 여러개를 ,(코마)로 나열하여 사용할 수 있다.

ASC 와 DESC

정렬과 관련된 단어에 대한 축약어이다.

ASC는 Ascend, DESC는 Descend의 앞 철자 몇개를 가져온 것이다.

스프레드 시트로 구현해보기

스프레드 시트로 데이터를 관리하는 분들의 이해를 돕기 위해 위의 동일한 기능을 스프레드 시트로 구현해보았다. FROM과 WHERE까지가 구현되어 있다. 아래 URL을 통해 볼 수 있으며, 사본을 만들어 다른 구현을 시도해볼 수 있다.

SQL을 구현한 SpreadSheet URL

실습

각자 알아서 해보도록 하자

정리

위 내용을 필기로 정리하면 다음과 같다.

profile
Edited Limition

0개의 댓글