Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
MySQL INSERT INTO SELECT 구문
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2023-08-14
2023-01-07
46582
모든 쿼리는 연습용 데이터베이스를 통해서 실행해 볼 수 있다. [MySQL & SQL 스터디 준비](https://www.joinc.co.kr/w/mysql_study_ready) 를 참고하여 실습환경을 구축할 수 있다. ## INSERT INTO SELECT 구문 INSERT INTO SELECT는 SELECT 문의 실행결과를 다른 테이블에 삽입할때 사용하는 SQL 문이다. 여러 테이블의 결과를 단일 테이블에 저장하려는 경우, 혹은 하나의 테이블의 여러 컬럼을 조회해서 단일 테이블에 저장하려는 경우 유용하다. ### Syntax 하나의 테이블의 내용들 다른 테이블에 복사한다. ```sql INSERT INTO table2 SELECT * FROM table1 WHERE condition; ``` 하나의 테이블의 특정 컬럼들을 다른 테이블에 저장한다. ```sql INSERT INTO table2 (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM table1 WHERE condition; ``` 여러 테이블의 값을 하나의 테이블에 저장한다. ```sql INSERT INTO table1(column1, column2, column3, ...) VALUES( (SELECT column1 FROM table2), (SELECT column2 FROM table3), (SELECT column3 FROM table4) ) ``` ### Example customers 테이블에는 아래와 같은 고객 정보가 들어있다. | CustomerID | ContactName | Address | City | PostalCode | Country | |------------|--------------------|--------------------------------|--------------|------------|---------| | ALFKI | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany | | ANATR | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico | | ANTON | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico | | AROUT | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK | | BERGS | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden | suppliers 테이블에는 공급자 정보가 들어있다. | SupplierID | CompanyName | Address | City | PostalCode | Country | |------------|----------------------------|----------------|-------------|------------|---------| | 1 | Exotic Liquids | 49 Gilbert St. | London | EC1 4SD | UK | | 2 | New Orleans Cajun Delights | P.O. Box 78934 | New Orleans | 70117 | USA | | 3 | Grandma Kelly's Homestead | 707 Oxford Rd. | Ann Arbor | 48104 | USA | 최근 회사는 고객관리 방식을 **생산자와 소비자의 역할을 동시에 하는 프로슈머**로 바꾸기로 했다. 이에 따라서 suppliers 테이블에 등록된 공급자도 customers 테이블에서 관리하기로 했다. 고객관리 팀은 suplliers 테이블의 공급자정보를 customers에 복사해달라고 요청했다. 그리고 ComapnyName을 ContactName으로 저장해 달라고 요청했다. ```sql INSERT INTO customers(CustomerID, ContactName, Address, City, PostalCode, Country) SELECT LEFT(MD5(RAND()), 4), ContactName, Address, City, PostalCode, Country FROM ``` CustomerID는 Primary Key로 NOT NULL이기 때문에 반드시 만들어줘야 한다. RAND 함수를 이용해서 랜덤으로 만들어다. 고객관리 팀은 우선 독일 공급자만 customers로 복사해달라고 요청했다. ```sql INSERT INTO customers(ContactName, Address, City, PostalCode, Country) SELECT CompanyName, Address, City, PostalCode, Country FROM suppliers; WHERE Country = 'Germany'; ``` 경영지원팀은 경영계획 수립을 위해서 공급자, 고객, 주문, 종업원 각각의 Count 정보를 요청했다. DBA는 이 정보를 저장하기 위해서 aggregate 테이블을 만들었다. ```sql CREATE TABLE aggregate (Suppliers int, Customers int, Orders int, employees int); ``` INSERT INTO SELECT 구분을 이용해서 통계를 데이터를 저장했다. ```sql INSERT INTO aggregate(Suppliers, Customers, Orders, employees) VALUES( (SELECT COUNT(*) FROM suppliers), (SELECT COUNT(*) FROM customers), (SELECT COUNT(*) FROM orders), (SELECT COUNT(*) FROM employees) ); ``` 통계자료를 확인해보자. ```sql SELECT * FROM aggregate; ``` | Suppliers | Customers | Orders | employees | |-----------|-----------|--------|-----------| | 29 | 120 | 830 | 8 | ## 참고 [SQL Study With MySQL](https://www.joinc.co.kr/w/sql_study_with_mysql_index) 에서 MySQL과 관련된 다른 문서들을 읽을 수 있습니다.
Recent Posts
Vertex Gemini 기반 AI 에이전트 개발 02. 생성 AI에 대해서
Vertex Gemini 기반 AI 에이전트 개발 01. 소개
Vertex Gemini 기반 AI 에이전트 개발-소개
생성 AI 모델 Flux.1 설치 및 사용
GPT를 이용한 Reranker 테스트
5분만에 만들어보는 Streamlit 챗봇
Let's encrypt로 SSL 인증서 관리하기
Upscayl을 이용한 이미지 업스케일링
스테이블 디퓨전 설치 및 사용해보기
Elasticsearch 설치
Archive Posts
Tags
database
mysql
sql
SQL tutorial with MySQL
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags