Mysql -DQL-

임수정·2023년 3월 21일
0
post-thumbnail

이제는 드디어 마지막 부분인 DQL에 대해서 알아보겠습니다.

DDL

DQL(Data Query Language)은 데이터 조회 및 검색에 사용되는 SQL을 의미합니다. DQL을 사용하여 데이터베이스에서 데이터를 검색하고 필터링할 수 있습니다. 대표적으로 SELECT 문이 있습니다.

SELECT 문장은 앞서 살펴보았던 INSERT나 UPDATE 같은 작업과 비교해 봤을 때, 애플리케이션에서 사용되는 쿼리 중에서도 가장 비율이 높고, 잘 알고 사용하지 못하면 성능상 문제가 발생할 수 있기 때문에 가장 중요한 SQL 입니다.

SELECT

SELECT * FROM posts // 모든 데이터를 조회하는 query
SELECT posts.title, posts.content FROM posts; // 내가 검색하고 싶은 column을 지정해서 검색합니다.

WHERE ( & LIKE)

SELECT * FROM posts WHERE user_id = 1 AND content="sql"

WHERE은 기본조건 표현식과 복수표현식이 있습니다. 위에 작성한 query는 복수표현식으로 작성되었습니다. AND뿐만 아니라 OR, NOT도 쓰일 수 있습니다.

또한, LIKE 서술어와 "%"를 합쳐서, 문자열 맨 앞의 단어와 일차하는 경우, 문자열의 중간에 검색하고자 하는 단어가 포함되어 있는 경우 혹은 맨 뒤에 있는 경우 등 다양한 경우에 사용할 수 있는 패턴을 만들 수 있습니다.

SELECT id, content, user_id FROM posts WHERE content LIKE 'HTML%' // 텍스트 뒤에 %가 붙어있는 것은 텍스트 뒤로 임의의 문자열이 존재한다는 것을 의미합니다.

INNER JOIN

두 개 이상의 테이블에서 공통적으로 존재하는 데이터만을 가져와서 연결하는 것입니다. INNER JOIN을 사용하면 테이블 간의 관계를 설정하고, 두 테이블에서 조건을 충족하는 데이터만을 추출할 수 있습니다. 두 테이블 간에 공통된 column을 가지고 있다면, column을 기준으로 INNER JOIN을 사용하여 두 테이블을 연결 할 수 있습니다.

SELECT column_name
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name

지금은 두 개 이상의 테이블을 연결하였지만 2,3개의 테이블과도 INNER JOIN할 수 있습니다. 그렇지만 너무 많은 JOIN을 사용하는 것은 지양함으로 적당한 사용이 필요합니다.

OUTTER JOIN

대표적으로 LEFT JOIN, RIGHT JOIN이 있습니다. 외부 결합은 내부 결합과 함께 자주 사용되는 결합으로 JOIN하는 여러테이블에서 한 쪽에는 데이터가 있고, OUTER JOIN은 INNER JOIN과는 다르게, 조건에 일치하지 않는 데이터를 NULL 값으로 채워서 반환합니다.

LEFT(RIGHT) JOIN

왼쪽(오른쪽) 테이블의 모든 행을 포함하며, 오른쪽(왼쪽) 테이블과 일치하는 데이터가 있는 경우에만 오른쪽(왼쪽) 테이블의 데이터를 가져옵니다. 일치하지 않는 경우에는 NULL 값을 반환합니다.

SELECT column_name
FROM table1
LEFT(RIGHT) JOIN table2
ON table1.column_name = table2.column_name

데이터베이스를 다룰 때 DDL, DML, DQL을 적절히 사용하여 데이터를 효율적으로 관리할 수 있습니다. 특히, DQL을 적절히 사용하는 방법을 경험하는 것이 중요하다고 느껴집니다!

profile
부족함을 인정하고 채워나가는 개발자! (Node.js 개발자)

0개의 댓글