SQL: structured query language - 구조화 된 쿼리 언어


SQL도메인 상세 프로그래밍 언어로 테이블의 데이터를 조작하도록 설계되었습니다.

SQL 은 1970년대에 개발되었습니다.

지금 시대에서, SQL 과 비슷한 인터페이스 코드는 다양한 데이터 관리 시스템에서 매우 자주 쓰입니다.

Domain Specific Programming Language : DSL 이라는 약자로 불리며, 특정 도메인 혹은 문제 영역에

초점을 맞춘 프로그래밍 언어이다.

예시 : HTML, CSS, SQL , Etc....

DSL (Domain Specific Programming Language) 정의 영문


이렇게 유명한 언어를 이해하는 것은 매우 유용할 것 입니다.

당신이 만약 소프트웨어 엔지니어라면, SQL을 배워놓는 것이 좋습니다.

많은 시스템이 비즈니스 데이터를 저장하고 구성하는데, 해당 서비스들이 SQL을 서비스하는 편이기 때문입니다.

예를 들어, 보험 회사의 정보 시스템의 백엔드는 아마도 SQL을 이용 할 것 입니다.

그들의 고객에 대한 정보를 추출하고 업데이트 하기 위해서요.


Calculating Statistics - 통계 계산


SQL은 데이터를 집계하거나 통계를 계산하는 것을 쉽게 만듭니다.

당신이 만약 인구통계 데이터를 기반으로 1920~2000년 사이의 이름 Jessie 의 이름 양의 변화를 계산할 필요가 있다고 가정하겠습니다.

SQL을 사용한다면, 당신은 이 일을 그저 11 줄의 코드로 해낼 수 있습니다!

당신은 아마 SQL의 각 키워드의 정확한 정의에 대해 모를 겁니다.

그러므로, 일단 읽고 써보세요!

SQL은 개별적인 이름인 'Jessie' 가 들어있는 레코드를 선택하는데,

BETWEEN 1920 and 2000 사이에 태어난 레코드를 고릅니다.

나온 레코드를 yaer, gender로 그룹 짓는데, COUNRT(*)를 통해 각 그룹 안의 레코드의 수를 계측합니다.

그리고 테이블을 생성하는데, 이 테이블은 year, gender, cnt 컬럼으로 이루어져 있습니다.

결과가 나온 테이블은 year, gender 속성에 의해 내림차순으로 정렬된 테이블입니다.


인구통계 데이터 테이블

id year name ... gender
1 2000 Jessie ... M
2 1880 Kelly ... F
3 1985 Willie ... M
4 2018 Taylor ... M
... ... ... ... ....
N 1946 Jessie ... F

The Query :

# 결과로 나올 테이블의 속성은 year, gender, cnt이다.
# WHERE 을 만족하는 행의 총 수를 세어주는 역할을 하며, 
# GROUP BY로 인해 year, gender 조합에 대한 행의 수가 cnt로 표시된다..
SELECT
    year, gender, COUNT(*) as cnt
FROM
    census # 인구통계 데이터 테이블 census가 있다고 가정.
WHERE
    year BETWEEN 1920 and 2000
    AND name = 'Jessie'
GROUP BY
    year, gender # year, gender의 조합으로 표여준다.
ORDER BY 
    year, gender DESC # year, gender 내림차순으로 표기하는데, 먼저 year이 우선되며, 그 후 gender이 내림차순 적용된다.

쿼리 계산 결과 :

year gender cnt
1920 M 1590
1920 F 3329
... ... ...
1960 M 935
1960 F 509
... ... ...
2000 M 533
2000 F 710

SQL은 전 세계의 데이터를 운용하는 회사들에서 사용되는 표준 데이터 조작 언어 입니다.

이를 이해함으로서 얻는 것이 매우 많고, 배울 것이 풍부합니다.

시작할 최고의 장소는 기초입니다.

그러므로 지금부터 SQL 이라는 이름 내부의 각 문자가 무엇을 의미하는지 알아내고, 정확히 무엇을 다루는 지 알아보겠습니다!


S is for Structured - S 는 "구조화됨" 을 의미한다.


SQL은 테이블과 같이 구조화 된 데이터를 추출하고 업데이트 하는 데 쓰이는 언어입니다.

이러한 종류의 데이터는 다양한 어플리케이션 영역에서 나타나는데,

Excel Spreadsheet는 회계 데이터를 포함하고 있으며,
Google BigQuery의 인구조사 통계 데이터와 비슷합니다.

또다른 예시는 RDBMS라고 잘 알려진 특별한 소프트웨어 시스템을 활용하고 있는 온라인 스토어를 들 수 있습니다.

제품, 주문 그리고 고객의 정보를 조직하는 데 도움을 줄 수 있습니다.

SQL은 특정한 구조를 가지고 있는 테이블에 쓰이도록 예정되어 있습니다.

Table "census"

id year name ... gender
1 2000 Jessie ... M
2 1880 Kelly ... F
3 1985 Willie ... M
4 2018 Taylor ... M
... ... ... ... ...
N 1946 Jessie ... F

테이블은 rows(줄) 그리고 columns(열)을 포함하고 있습니다.

각각의 줄은 오브젝트 또는 엔티티이며, 프로퍼티 혹은 속성의 모음을 가지고 있습니다.

예를 들어, 세 번째 줄은 Willie에 대한 데이터를 포함하고 있으며, 이 남자는 1985년에 태어났습니다.


데이터는 종종 데이터베이스라고 알려진 테이블의 모음으로 조직되어 있습니다.

그러므로, 테이블들을 그 테이블의 각각의 이름을 이용하여 접근 할 수 있습니다.

예를 들어, 온라인 상점의 데이터베이스에서,

Customers라 불리는 테이블은 아마 회사의 고객들에 대한 일반적인 정보를 포함하고 있을 것 입니다. : 그들의 이름과 상세 정보들

Orders 테이블은 상세 주문과 그들의 장소에 대한 정보를 저장 할 것입니다. : 주문자 이름, 제품들, 그리고 지출 상세내역.


Q is for Query


SQL은 방대한 데이터 셋을 처리하는 기능이 있는 프로그래밍 언어입니다.

SQL 은 선언적이며, SQL 로 작성된 상태는 어떻게 완료되어야 하는지, 혹은 계산되어야 하는지에 대해 시스템에게 말해주는 쿼리가 될 수 있음을 의미합니다.

하지만, 어떻게 상세히 처리할 수 있는지 알려주지 않습니다.


이 예시는, 쿼리가 Census 테이블로부터 모든 줄과 열을 추출합니다.

SELECT * FROM Census;

* 심볼은 테이블의 모든 열을 선택하는데 쓰입니다.


SQL 구문을 세미콜론 ;으로 끝내는 것은 매우 중요한데,

이는 구문 종료로 잘 알려져 있습니다.

세미콜론으로 구문을 종료하지 않는다면, 에러가 납니다.

한 번에 작동하는 하나의 쿼리를 만든다면, 세미콜론은 생략됩니다.

하지만, 쿼리의 마지막에 세미콜론 ;을 넣는것은 좋은 연습입니다.


SELECT와 같은 키워드들은 SQL 언어에서 대문자, 소문자에 대해 민감하지 않습니다.

up or down case 로 작성되던 괜찮지만, 보통 좀 더 잘 보이기 위해 전부 대문자로 작성되곤 합니다.


L is for language - "L" 은 언어를 의미


당신은 위의 예제 "select everything from the census" 에서 간단한 쿼리를 읽을 수 있습니다.

SQL 은 자연 언어와 최대한 비슷하도록 설계 되었습니다.

SQL의 선언적 성격은 운영 방식의 복잡성을 숨기도록 도우며, 사용자가 비교적 간단한 방법으로 무엇이 필요한지 정의 합니다.

시스템은 쿼리를 분석하고, 운영 흐름을 제어하며, 이를 실행합니다.


SQL은 1980년대 American National Standards Institute(ANSI)에 의해 공식적으로 채택되었습니다.

SQL에는 소프트웨어 공급 업체를 지원하기 위해 구현한 많은 단어가 있습니다.

이러한 단어들은 ANSI 표준에 기초를 두고 있지만, 몇몇 기술적 차이점을 가지고 있습니다.

예를 들어, 서로 날짜 혹은 스트링을 구성하는 것이 다릅니다.

이것이 시사하는 바는 다른 단어로 작성 된 SQL 쿼리는 서로 호환이 불가능하다는 것을 의미합니다.

하지만, 당신이 한 번 SQL의 기초를 알고 나면, 더 쉽게 단어들을 친숙하게 적응 할 수 있습니다.

마치 American 혹은 British 영어처럼 - 우리는 해당 안됨.


MySQL 문법은 이 주제 뿐만 아니라 모든 웹사이트에서 종종 사용됩니다.

하지만, 이 예제들은 다른 SQL 단어들과 호환되지 않을 수도 있습니다.


Conclusion - 결론


SQL은 도메인 상세적, 선언적 언어이며 구조화 된 데이터와 작업 할 때 사용됩니다.

당신은 테이블 내부의 데이터를 조직하는 것에 대해 배웠습니다.

이제 다양한 기준을 따르며, 엔티티의 그룹을 만들며, 통계를 계산하는 쿼리를 작성 할 수 있습니다.

그 외 다양한 것들도요!