⚠️ 공부한 내용을 정리하는 공간입니다. 설명이 부족하거나 옳바르지 못한 부분이 있을 수 있습니다.
옳바르지 못한 내용을 발견하셨다면 댓글로 알려주시길 부탁드립니다. 수정하도록 하겠습니다.
오늘의 사족
날이 추워지니 게을러지고 싶은 마음입니다.
글을 포스팅한지 4일차 되는 날입니다. 글을 올리면 이른 시간 내에 항상 댓글이 달리더군요 처음엔 관심을 받는 것 같아서 기분이 뿌듯했습니다. 그런데 글을 올리지 얼마 되지 않은 시간 그리고 글을 읽는 속도를 고려했을 때 저의 블로그에 댓글을 남기고 떠나시는 분들에 대해 의문이 들었습니다. 구글링을 해보니 댓글을 남기고 떠나시는 분들은 자신의 블로그를 클릭하도록 유도해 광고 노출이 목적이신 듯하였습니다. 그래도 저의 시작한지 얼마 안 된 블로그에 방문해주셔서 감사합니다. 처음엔 모든 댓글을 보며 동기부여를 얻었는데 댓글들의 진실을 알고나니 동기가 저하되는 기분이 들었습니다. 그래서 오늘 이후로 글의 내용과 상관없는 댓글은 모두 삭제하려고 합니다.
매일 글을 올리는 일종의 챌린지를 스스로 하고 있는데 매일 몰랐던 저를 알아가는 것 같습니다. 3일 동안 받은 댓글과 관심은 저를 행복하게 했고 댓글들의 진실을 알고 난 뒤로 약간은 서운하고 섭섭한 마음이 들더군요. 예 저는 참 일희일비 속이 알기 쉬운 사람입니다. 그래서 이제는 일희일비하지 않도록 꾸준한 사람이 되도록 노력하도록하겠습니다.
제가 이러한 스스로의 깨우침을 얻게 만들어준 익명의 여러분께 감사드립니다.
오늘은 SQL에 대해 글을 쓰고자 한다.
SQL은 Structured Query Language의 약자로 구조화된 질의 언어를 뜻한다. 구조화되었다는 것은 틀이 잡혀 있으며 규칙이 있다는 뜻이 아닐까? 즉 SQL은 Relational Database를 의미있는 데이터로 만들기 위해 사용하는 구조화된 규칙이 있는 언어이다.
영어를 배울 때 주어, 목적어, 동사를 배우며 문장을 만들 때 각 단어마다 역할이 있고 순서가 있다. SQL도 마찬가지이다. 데이터에 접근하고 의미 있는 데이터를 만들 때 사용하는 명령어들에는 규칙이 있다.
지금까지 필자는 Relation과 Relation의 집합인 Relational Database를 설명하면서 Relational Database를 처리하는 이론적인 방법 Relational Algebra(관계대수)의 사례를 소개하였다. 관계대수는 이론적인 방법이었다. 데이터베이스를 사용자가 의미있는 데이터를 만들 수 있는 이론적인 방법이 관계대수였다. SQL은 데이터가 저장되어 있는 실제의 데이터베이스를 처리하는 방법이다. SQL은 관계대수와 아주 비슷하다. 관계대수가 데이터에 접근하기 위해 사용했던 명령어들이 SQL과 약간은 다를 뿐 데이터에 접근하고 처리하는 방식은 아주 비슷하다.
[ SQL 명령어 ]
SELECT: 결과에서 보여질 필드를 나열 (관계대수에서 PROJECT와 같음)
FROM: 결과에서 나타날 데이터를 포함하고 있는 테이블을 나열
WHERE: 검색할 데이터에 적용될 조건을 나열
바로 실습으로 들어가서 관계대수와 SQL을 사용하여 같은 결과를 만들어보자!
1) 아래 회원 릴레이션을 보고 PT횟수가 5회 미만인 모든 회원의 속성을 추출해라.
회원 릴레이션
회원 번호 | 회원 이름 | PT 횟수 | 전화번호 | 집주소 | 담당 트레이너 번호 |
1 | 김가나 | 10 | 010-****-**** | A마을 | 3 |
2 | 김다라 | 32 | 010-****-**** | A마을 | 2 |
3 | 김마바 | 13 | 010-****-**** | A마을 | 1 |
4 | 김염소 | 1 | 010-****-**** | B마을 | 3 |
5 | 김박하 | 23 | 010-****-**** | C마을 | 2 |
관계대수에서 특정 릴레이션에 대하여 조건에 해당하는 행을 탐색/추출하는 명령어는 SELECT였다.
SELECT 회원 WHERE PT횟수 < 5
SQL에서는 SELECT 뒤에 추출할 릴레이션의 속성을 나열하고 사용할 릴레이션 이름은 FROM 명령어 뒤에 오며 WHERE 명령어를 통해 테이블에 적용될 조건을 나열하였다.
SELECT * FROM 회원 WHERE PT횟수 < 5
(*: 모든 필드,속성을 의미)
회원 번호 | 회원 이름 | PT 횟수 | 전화번호 | 집주소 | 담당 트레이너 번호 |
4 | 김염소 | 1 | 010-****-**** | B마을 | 3 |
그러면 위와 같은 결과가 나온다.
이렇게 단순히 테이블에 조건만 적용하여 나타내기만 하면 좋겠지만 SQL은 상당히 많은 결과를 만들어낼 수 있다. 테이블 끼리 JOIN하고 GROUPING하는 등 SQL을 활용하는 다양한 방법들이 있다.
다음에는 SQL에 어떤 명령어가 있는지 어떻게 명령어를 사용하는지 여러 예시 릴레이션을 만들어서 설명해보도록 하겠다.
'🖥️ Computer Science > Database (DB)' 카테고리의 다른 글
[DB] Relational Database와 Relational Algebra(관계대수) (0) | 2023.11.27 |
---|---|
[DB] 데이터베이스(Database)란 무엇인가? - Entity, Attribute, Relationship (1) | 2023.11.26 |