데이터 과학 작업의 90%를 위한 13가지 SQL 문
SQL(Structured Query Language)은 관계형 데이터베이스를 관리하고 조작하기 위해 설계된 프로그래밍 언어입니다. 데이터 분석가와 데이터 과학자가 대규모 데이터 세트에서 인사이트를 추출하는 데 널리 사용됩니다.
SQL은 데이터 필터링, 정렬, 그룹화 및 집계를 비롯한 다양한 데이터 조작 작업을 수행하는 데 사용할 수 있는 강력한 도구입니다. 이 기사에서는 데이터 과학 작업의 90%를 수행하는 데 도움이 되는 13가지 필수 SQL 문을 다룹니다. 이러한 명령문은 이해하고 구현하기 쉬우며 SQL 작업을 위한 견고한 기반을 제공합니다.
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의 창 함수에 대한 몇 가지 예입니다.
- ROW_NUMBER(): 이 함수는 파티션 내의 각 행에 고유한 일련 번호를 할당합니다. ROW_NUMBER() 함수의 구문은 다음과 같습니다.
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 문의 구문은 삭제할 개체의 유형에 따라 다르지만 몇 가지 일반적인 예는 다음과 같습니다.
- DROP TABLE: 이 문은 모든 데이터 및 인덱스와 함께 기존 테이블을 삭제하는 데 사용됩니다. DROP TABLE 문의 구문은 다음과 같습니다.
DROP TABLE table_name;
DROP INDEX index_name ON table_name;
DROP VIEW view_name;
DROP PROCEDURE procedure_name;
ALTER 문은 데이터베이스 테이블이나 다른 데이터베이스 개체의 구조를 수정하는 데 사용됩니다 . 열을 추가 또는 제거하고 데이터 유형을 변경하거나 테이블의 다른 측면을 수정하려면 ALTER를 사용하여 마스터해야 합니다. ALTER 문의 구문은 수정되는 개체의 유형에 따라 다르지만 몇 가지 일반적인 예는 다음과 같습니다.
- ALTER TABLE: 기존 테이블의 컬럼 추가/삭제, 데이터 타입 변경, 제약 조건 설정 등 기존 테이블의 구조를 수정하는 문이다. ALTER TABLE 문의 구문은 다음과 같습니다.
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

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































