데이터 과학 작업의 90%를 위한 13가지 SQL 문

Mar 03 2023
SQL(Structured Query Language)은 관계형 데이터베이스를 관리하고 조작하기 위해 설계된 프로그래밍 언어입니다. 데이터 분석가와 데이터 과학자가 대규모 데이터 세트에서 인사이트를 추출하는 데 널리 사용됩니다.

SQL(Structured Query Language)은 관계형 데이터베이스를 관리하고 조작하기 위해 설계된 프로그래밍 언어입니다. 데이터 분석가와 데이터 과학자가 대규모 데이터 세트에서 인사이트를 추출하는 데 널리 사용됩니다.

SQL은 데이터 필터링, 정렬, 그룹화 및 집계를 비롯한 다양한 데이터 조작 작업을 수행하는 데 사용할 수 있는 강력한 도구입니다. 이 기사에서는 데이터 과학 작업의 90%를 수행하는 데 도움이 되는 13가지 필수 SQL 문을 다룹니다. 이러한 명령문은 이해하고 구현하기 쉬우며 SQL 작업을 위한 견고한 기반을 제공합니다.

SQL을 처음 사용하든 경험이 있든 관계없이 이 문서는 데이터 작업에 대한 귀중한 통찰력과 실용적인 팁을 제공합니다.

데이터 과학 작업의 90%를 위한 13가지 SQL 문

데이터 과학 및 AI 분야에서 경력을 쌓고 싶지만 방법을 모르는 경우. 저는 데이터 과학 멘토링 세션과 장기 경력 멘토링을 제공합니다.

  • 장기 멘토링:https://lnkd.in/dtdUYBrM
  • 멘토링 세션:https://lnkd.in/dXeg3KPW

1. 선택

SELECT 문은 데이터베이스에 있는 하나 이상의 테이블에서 데이터를 검색하는 데 사용됩니다 . WHERE, ORDER BY 및 GROUP BY와 같은 다양한 기능을 사용하여 데이터를 필터링, 정렬 및 그룹화하려면 SELECT 사용을 마스터해야 합니다. 다음은 SELECT 문의 예입니다.

SELECT column1, column2, column3
FROM table_name
WHERE condition;

다음은 고객의 나이가 18세 이상인 "고객"이라는 테이블에서 모든 레코드를 선택하는 예입니다.

SELECT *
FROM customers
WHERE age >= 18;

JOIN 문은 데이터베이스에 있는 두 개 이상의 테이블에서 데이터를 결합하는 데 사용됩니다. JOIN을 사용하여 여러 테이블에서 데이터를 검색하고 조인 유형(예: INNER, LEFT, RIGHT, FULL OUTER)을 적절히 지정해야 합니다.

다음은 JOIN 문의 몇 가지 예입니다.

내부 조인

INNER JOIN은 두 테이블의 열이 일치하는 행만 반환합니다. 다음은 예입니다.

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers
ON orders.customer_id = customers.customer_id;

왼쪽 조인

LEFT JOIN은 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행을 반환합니다. 오른쪽 테이블에 일치 항목이 없으면 결과에 NULL 값이 포함됩니다. 다음은 예입니다.

SELECT customers.customer_name, orders.order_id
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;

오른쪽 조인

RIGHT JOIN은 오른쪽 테이블의 모든 행과 왼쪽 테이블의 일치하는 행을 반환합니다. 왼쪽 테이블에 일치하는 항목이 없으면 결과에 NULL 값이 포함됩니다. 다음은 예입니다.

SELECT customers.customer_name, orders.order_id
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;

외부 조인

SQL의 OUTER JOIN은 일치하지 않는 행을 포함하여 하나 또는 두 테이블의 모든 행을 반환하는 데 사용됩니다. OUTER JOIN에는 LEFT OUTER JOIN과 RIGHT OUTER JOIN의 두 가지 유형이 있습니다.

다음은 LEFT OUTER JOIN의 예입니다.

SELECT customers.customer_name, orders.order_id
FROM customers
LEFT OUTER JOIN orders
ON customers.customer_id = orders.customer_id;

다음은 RIGHT OUTER JOIN의 예입니다.

SELECT customers.customer_name, orders.order_id
FROM customers
RIGHT OUTER JOIN orders
ON customers.customer_id = orders.customer_id;

일부 데이터베이스는 RIGHT OUTER JOIN을 지원하지 않을 수 있지만 LEFT OUTER JOIN을 사용하고 테이블 순서를 바꾸면 동일한 결과를 얻을 수 있습니다.

3. 어디

WHERE 문은 지정된 조건에 따라 데이터를 필터링하는 데 사용됩니다. 특정 기준을 충족하는 데이터만 검색하려면 WHERE를 사용하여 마스터해야 합니다.

다음은 SQL에서 "where" 문을 사용하여 테이블에서 데이터를 필터링하는 예입니다.

"이름", "부서" 및 "급여"에 대한 열이 있는 "직원"이라는 테이블이 있다고 가정합니다. "where" 문을 사용하여 "영업" 부서에서 일하고 급여가 $50,000 이상인 직원만 선택할 수 있습니다.

SELECT name, department, salary
FROM employees
WHERE department = 'Sales' AND salary > 50000;

4. 그룹화 기준

GROUP BY 문은 하나 이상의 열을 기준으로 데이터를 그룹화하는 데 사용되며 집계 함수(예: COUNT, SUM, AVG)를 사용하여 그룹화된 데이터의 요약을 계산할 수 있습니다. 데이터를 범주별로 분석하려면 GROUP BY를 사용하여 마스터해야 합니다.

"이름", "부서" 및 "급여"에 대한 열이 있는 "직원"이라는 테이블이 있다고 가정합니다. GROUP BY 문을 사용하여 직원을 부서별로 그룹화하고 각 부서의 평균 급여를 계산할 수 있습니다.

SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department;

department | avg_salary
-----------------------
Sales      | 65000
Marketing  | 55000
Engineering| 80000

5. 갖는 것

HAVING 문은 GROUP BY 문으로 데이터를 그룹화 한 후 데이터를 필터링하는 데 사용됩니다 . 특정 조건에 따라 그룹화된 데이터를 필터링하려면 HAVING을 사용하여 마스터해야 합니다 .

다음은 SQL에서 HAVING 절을 사용하는 예입니다 .

"order_id", "customer_id", "product_id" 및 "quantity"에 대한 열이 있는 "orders"라는 테이블이 있다고 가정합니다. 총 수량 50개 이상의 제품을 주문한 고객을 찾고자 합니다. GROUP BY 절을 사용하여 고객별로 주문을 그룹화하고 각 고객이 주문한 각 제품의 총 수량을 계산할 수 있습니다. 그런 다음 HAVING 절을 사용하여 총 수량을 50개 이상 주문한 고객만 포함하도록 결과를 필터링할 수 있습니다.

SELECT customer_id, SUM(quantity) AS total_quantity
FROM orders
GROUP BY customer_id
HAVING SUM(quantity) >= 50;

쿼리 출력은 다음과 같습니다.

customer_id | total_quantity
---------------------------
123        | 60
456        | 70

6. 윈도우 기능

SQL의 창 함수는 현재 행과 관련된 행 세트에서 계산을 수행하는 데 사용됩니다. 이러한 함수는 지정된 조건 또는 파티션을 기반으로 하는 테이블의 행 하위 집합인 창에 적용됩니다. 다음은 SQL의 창 함수에 대한 몇 가지 예입니다.

  1. ROW_NUMBER(): 이 함수는 파티션 내의 각 행에 고유한 일련 번호를 할당합니다. ROW_NUMBER() 함수의 구문은 다음과 같습니다.
  2. SELECT column1, column2, ..., ROW_NUMBER() OVER (ORDER BY column1) AS row_num
    FROM table_name;
    

SELECT column1, column2, ..., SUM(column3) OVER (PARTITION BY column1) AS column3_sum
FROM table_name;

3. RANK(): 이 함수는 지정된 열의 값을 기준으로 파티션 내의 각 행에 순위를 할당합니다. RANK() 함수의 구문은 다음과 같습니다.

SELECT column1, column2, ..., RANK() OVER (PARTITION BY column1 ORDER BY column3 DESC) AS rank_num
FROM table_name;

4. AVG() : 이 함수는 파티션 내 열의 평균을 계산합니다. AVG() 함수의 구문은 다음과 같습니다.

SELECT column1, column2, ..., AVG(column3) OVER (PARTITION BY column1) AS column3_avg
FROM table_name;

창 함수의 구문은 사용 중인 특정 데이터베이스 관리 시스템(DBMS)에 따라 다를 수 있습니다.

7. 연합

SQL에서 UNION 연산자는 둘 이상의 SELECT 문의 결과를 단일 결과 집합으로 결합하는 데 사용됩니다. SELECT 문 에는 동일한 수의 열이 있어야 하며 열에는 호환 가능한 데이터 유형이 있어야 합니다. 중복 행은 결과 집합에서 자동으로 제거됩니다.

다음은 SQL에서 UNION 연산자를 사용하는 예입니다.

"customers"와 "employees"라는 두 개의 테이블이 있고 둘 다 "name"과 "city"에 대한 열이 있다고 가정합니다. 뉴욕시에 거주하는 모든 사람(고객과 직원 모두)의 목록을 만들고자 합니다. UNION 연산자를 사용하여 각 테이블에 대해 하나씩 두 개의 SELECT 문의 결과를 결합할 수 있습니다.

SELECT name, city
FROM customers
WHERE city = 'New York'
UNION
SELECT name, city
FROM employees
WHERE city = 'New York';

쿼리 출력은 다음과 같습니다.

name        | city
-------------------
John Smith  | New York
Jane Doe    | New York
Bob Johnson | New York
Samantha Lee| New York

8. 만들기

CREATE 문은 새 데이터베이스 테이블, 보기 또는 기타 데이터베이스 개체를 만드는 데 사용됩니다. 새로운 테이블, 뷰 및 기타 데이터베이스 객체를 생성하려면 CREATE를 사용하여 마스터해야 합니다. 다음은 SQL에서 CREATE 문을 사용하는 예입니다.

"id", "name", "email" 및 "phone"에 대한 열이 있는 "customers"라는 새 테이블을 생성한다고 가정합니다. CREATE 문을 사용하여 이를 수행할 수 있습니다.

CREATE TABLE customers (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(100),
  phone VARCHAR(20)
);

쿼리가 실행된 후 "customers" 테이블에 새 행을 삽입하고 여기에서 데이터를 검색할 수 있습니다.

INSERT INTO customers (id, name, email, phone)
VALUES (1, 'John Doe', '[email protected]', '555-555-1234');
SELECT * FROM customers;

id | name     | email                | phone
--------------------------------------------
1  | John Doe | [email protected] | 555-555-1234

9. 삽입

INSERT 문은 데이터베이스 테이블에 데이터를 삽입하는 데 사용됩니다. 데이터베이스 테이블에 새 데이터를 추가하려면 INSERT를 사용하여 마스터해야 합니다. 다음은 SQL에서 INSERT 문을 사용하는 예입니다.

"id", "name", "major" 및 "gpa"에 대한 열이 있는 "students"라는 테이블이 있다고 가정합니다. ID가 1234이고 이름이 "John Doe"이고 전공이 "컴퓨터 과학"이고 GPA가 3.5인 학생에 대해 테이블에 새 행을 삽입하려고 합니다. 이를 위해 INSERT 문을 사용할 수 있습니다.

INSERT INTO students (id, name, major, gpa)
VALUES (1234, 'John Doe', 'Computer Science', 3.5);

쿼리가 실행된 후 "students" 테이블에는 다음 값이 포함된 새 행이 생깁니다.

id   | name      | major            | gpa
-----------------------------------------
1234 | John Doe | Computer Science | 3.5

10. 업데이트

UPDATE 문은 데이터베이스 테이블의 기존 데이터를 수정하는 데 사용됩니다 . 테이블에 있는 하나 이상의 열 값을 업데이트하려면 UPDATE를 사용하여 마스터해야 합니다. 다음은 SQL에서 UPDATE 문을 사용하는 예입니다 .

"id", "name", "major" 및 "gpa"에 대한 열이 있는 "students"라는 테이블이 있다고 가정합니다. ID가 1234인 학생의 전공 및 GPA를 업데이트하려고 합니다. UPDATE 문을 사용하여 이를 수행할 수 있습니다.

UPDATE students
SET major = 'Mathematics', gpa = 3.7
WHERE id = 1234;

쿼리가 실행된 후 "students" 테이블에는 ID가 1234인 행의 "major" 및 "gpa" 열에 대한 업데이트된 값이 있습니다.

id   | name      | major        | gpa
--------------------------------------
1234 | John Doe | Mathematics | 3.7

11. 삭제

DELETE 문은 데이터베이스 테이블에서 하나 이상의 행을 삭제하는 데 사용됩니다. 테이블에서 데이터를 제거하려면 DELETE를 사용하여 마스터해야 합니다 . 다음은 SQL에서 DELETE 문을 사용하는 예입니다 .

"id", "name", "major" 및 "gpa"에 대한 열이 있는 "students"라는 테이블이 있다고 가정합니다. 테이블에서 ID가 1234인 학생을 삭제하려고 합니다. 이를 위해 DELETE 문을 사용할 수 있습니다 .

DELETE FROM students
WHERE id = 1234;

쿼리가 실행된 후 "students" 테이블에는 더 이상 ID가 1234인 행이 없습니다.

id   | name      | major        | gpa
--------------------------------------
5678 | Jane Doe | Computer Science | 3.5

12. 드롭

DROP 문은 데이터베이스 테이블이나 다른 데이터베이스 개체를 삭제하는 데 사용됩니다. 데이터베이스에서 불필요한 테이블이나 기타 개체를 제거하려면 DROP을 사용하여 마스터해야 합니다. . DROP 문의 구문은 삭제할 개체의 유형에 따라 다르지만 몇 가지 일반적인 예는 다음과 같습니다.

  1. DROP TABLE: 이 문은 모든 데이터 및 인덱스와 함께 기존 테이블을 삭제하는 데 사용됩니다. DROP TABLE 문의 구문은 다음과 같습니다.
  2. DROP TABLE table_name;
    

    DROP INDEX index_name ON table_name;
    

    DROP VIEW view_name;
    

    DROP PROCEDURE procedure_name;
    

ALTER 문은 데이터베이스 테이블이나 다른 데이터베이스 개체의 구조를 수정하는 데 사용됩니다 . 열을 추가 또는 제거하고 데이터 유형을 변경하거나 테이블의 다른 측면을 수정하려면 ALTER를 사용하여 마스터해야 합니다. ALTER 문의 구문은 수정되는 개체의 유형에 따라 다르지만 몇 가지 일반적인 예는 다음과 같습니다.

  1. ALTER TABLE: 기존 테이블의 컬럼 추가/삭제, 데이터 타입 변경, 제약 조건 설정 등 기존 테이블의 구조를 수정하는 문이다. ALTER TABLE 문의 구문은 다음과 같습니다.
  2. ALTER TABLE table_name
    ADD column_name data_type [constraint],
    MODIFY column_name data_type [constraint],
    DROP column_name,
    ADD CONSTRAINT constraint_name constraint_definition,
    DROP CONSTRAINT constraint_name;
    

    ALTER INDEX index_name
    ADD column_name,
    DROP column_name;
    

    ALTER VIEW view_name
    AS select_statement;
    

  • 이 기사가 소개될 수 있도록 스토리에 박수(박수 50회)
  • 미디엄 에서 팔로우하세요
  • 내 미디엄 프로필 에서 더 많은 콘텐츠 보기
  • 나를 따르라: LinkedIn | 유튜브 | GitHub | 트위터

데이터 과학 및 AI 분야에서 경력을 시작하려고 하는데 방법을 모릅니다 . 저는 데이터 과학 멘토링 세션과 장기 경력 멘토링을 제공합니다.

  • 장기 멘토링:https://lnkd.in/dtdUYBrM
  • 멘토링 세션:https://lnkd.in/dXeg3KPW