SQL : 데이터를 테이블에 넣는 방법/문제

정민·2024년 1월 18일

SQL

목록 보기
3/16

1. 데이터를 테이블에 넣는 방법


만들어진 테이블에서 데이터를 불러오는 작업은 후에 포스팅.
데이터를 집어넣는 방법은 크게 2가지
1. 직접 엑셀 이용해서 데이터를 만들고 csv파일로 만드는 방법
2. 다른 사람이 만든 데이터베이스 자체를 가지고 오는 방법

⭐ 1.1 IMPORT CSV FILE TO TABLE

  • 확장자 .csv의 데이터를 TABLE에 넣는 기능을 HEIDISQL에서 편리하게 제공
  • 도구 - CSV파일 가져오기
  • SQL 오류(3948) : Loading Locak data is disabled; -> Local에서 데이터를 가져오는 것이 허용되어 있지 않기 때문에 허용해줘야 함
SHOW GLOBAL VARIABLES LIKE 'LOCAL_INFILE'; #결과 local_infile OFF
SET GLOBAL LOCAL_INFILE=TRUE;
SHOW GLOBAL VARIABLES LIKE 'LOCAL_INFILE'; #결과 local_infile ON 
#csv 파일을 가져올 수 있게 됨

⭐ 1.2 MYSQL SAMPLE DATABASE

누군가가 만들어 놓은 데이터베이스 자체를 가져오는 방법
MySQL Sample Database


다운로드 클릭
HEIDISQL - 파일 - SQL파일 불러오기

실행 시 데이터가 생성된 것을 볼 수 있음


MYSQLTUTORIAL 홈페이지에서 제공하는 SAMPLE DATA BASE의 구성



2. 데이터 불러오기


⭐ 2.1 SELECT FROM

SELECT * FROM newcustomers;
#여기서 *는 모든 컬럼을 의미, newcustomers에서 모든 컬럼을 가지고 와라

SELECT customer_name, phone FROM newcustomers; #원하는 열의 데이터만 가져오기

⭐ 2.2 ALIAS(별칭)

  • SELECT 컬럼명 AS 별칭 FROM 테이블명;
  • SELECT 구문에서 별칭을 사용하는 경우, 컬럼명을 바꾸기 위해서 사용
  • 서브쿼리에서는 테이블 등에 별칭을 부여할 수 있음

⭐ 2.3 LIMIT/OFFSET

  • 많이 쓰임, 특히 홈페이지나 댓글 쪽 관리하게 된다면 사용하게 되는 기능
  • LIMIT과 OFFSET은 주로 결과 집합의 특정 부분을 제한하거나 건너뛸 때 사용
  • LIMIT은 반환되는 레코드의 수(행의 수)를 제한하는 데 사용
  • 예) 결과의 처음 5개 레코드만을 선택하려면 LIMIT 5를 사용

  • OFFSET은 처음 몇 개의 레코드를 건너뛸 것인지를 지정하는 데 사용
  • 예) 처음 5개 레코드를 건너뛰고 그 다음 10개 레코드를 선택하려면 LIMIT 10 OFFSET 5를 사용함


LIMIT n, m : n번째 행부터 m개의 행을 출력


OFFSET으로 5개의 데이터 다음 3개의 데이터 출력
LIMIT 5,3과 같은 결과

⭐ 2.4 DISTINCT


같은 테이블안에 중복되는 데이터가 있을 수 있음.
그래서 중복되는 데이터들을 제외하고 항 하나만 남기고 선택함.
날짜 데이터를 다룰 때, 실수로 데이터를 DB에 집어넣을 때 중복되서 넣을 때 등등 사용
단점은 조회한 행만 보여짐



3. 문제풀이

SELECT FROM
ALIAS
LIMIT/OFFSET
DISTINCT

❔ 문제 1: productlines 테이블에서 제품 라인(productline)을 중복 없이 가져오되 4번째부터 8개만 조회하세요.

SELECT DISTINCT productline
FROM productlines
LIMIT 3,8
;

❔ 문제 2: customers 테이블에서 고객 이름(customerName)을 ClientName이라는 별칭으로 조회하세요.

SELECT customerName AS ClientName
FROM customers
;

❔ 문제 3: orders 테이블에서 주문 날짜(orderDate)의 중복 없는 값을 조회하라.

SELECT DISTINCT orderDate
From orders
;

❔ 문제 4: employees 테이블에서 직원의 성(lastname)과 이름(firstname)을 조회하되, 이름을 GivenName이라는 별칭으로 조회하라.

SELECT lastname, firstname AS GivenName
FROM employees
;

❔ 문제 5: orderdetails 테이블에서 제품 코드(productCode)의 중복 없는 값을 15개만 가져오라.

SELECT DISTINCT productCode
FROM orderdetails
LIMIT 15
;

❔ 문제 6: payments 테이블에서 체크 번호(checkNumber)를 Check_ID라는 별칭으로 조회하라.

SELECT checkNumber AS Check_ID
FROM payments
;

❔ 문제 7: products 테이블에서 제품 이름(productName)의 중복 없는 값을 5개만 가져오되, 10번째부터 시작하라.

SELECT DISTINCT productName
FROM products
LIMIT 9, 5

❔ 문제 8: offices 테이블에서 지역 코드(officeCode)를 Office_ID라는 별칭으로 조회하라.

SELECT officeCode AS Office_ID
FROM offices
;

❔ 문제 9: orderdetails 테이블에서 제품 코드(productCode)와 주문 수량(quantityOrdered)를 조회하되, 주문 수량(quantityOrdered)을 TotalOrdered라는 별칭으로 조회하라.

SELECT productCode, quantityOrdered AS TotalOrdered
FROM orderdetails
;

❔ 문제 10: customers 테이블에서 고객 이름(customerName)의 중복 없는 값을 10개만 가져와라.

SELECT DISTINCT customerName
FROM customers
LIMIT 10
;




4. 실습

❔ 문제 1: customers 테이블에서 customerName을 가져오되, 중복 없이 가져와라.

SELECT DISTINCT customerName
FROM customers;

❔ 문제 2: products 테이블에서 제품 이름(productName)만 5개만 가져와라.(즉 상위 5개)

SELECT productName
FROM products
LIMIT 5
;

❔ 문제 3: order 테이블에서 주문 상태(status)의 종류를 모두 나열하라. 중복은 제거.

SELECT DISTINCT status
FROM order
;

❔ 문제 4: employees 테이블에서 직원의 성(lastName)을 10개만 가져오되, 5번째부터 시작하라.

SELECT lastName
FROM employees
LIMIT 4, 10
;

❔ 문제 5: product 테이블의 productVendor를 별칭 Vendor로 조회하라.

SELECT productVendor AS Vendor
FROM product
;

  • 별칭 alias가 없으면 컬럼명에 productVendor가 들어감

❔ 문제 6: orders 테이블에서 고객 번호(customerNumber)의 중복 없는 값을 7개만 가져와라.

SELECT DISTINCT customerNumber
FROM orders
LIMIT 7
;

❔ 문제 7: employees 테이블에서 employeeNumber를 별칭 Employee_ID로 조회하되, 3번째부터 6개만 가져와라.

SELECT employeeNumber AS Employee_ID
FROM employees
LIMIT 2,6
;

❔ 문제 8: offices 테이블에서 국가(country)의 종류를 중복 없이 나열하라.

SELECT DISTINCT country
FROM offices
;

❔ 문제 9: orderdetails 테이블에서 제품 코드(productCode)를 Code라는 별칭으로, 주문 수량(quantityOrdered)를 Quantity라는 별칭으로 조회하라.

SELECT productCode AS Code, quantityOrdered AS Quantity
FROM orderdetails
;

❔ 문제 10: payments 테이블에서 체크 번호(checkNumber)의 중복 없는 값을 10개만 가져와라.

SELECT DISTINCT checkNumber
FROM payments
LIMIT 10
;

profile
데이터 공부하는 예비 데이터 분석가, 김정민입니다.

0개의 댓글