테이블 조인: 테이블의 컬럼을 합하는 연산 (참고로 UNION 연산은 테이블의 행을 합하는 연산)
조회 테이블이 너무 많이 쪼개져있으면 느리기에 입력,수정, 삭제의 성능을 향상시키기 위해 사용
내부조인(INER JOIN)
1)SELECT * FROM 테이블1 , 테이블 2 WHERE T1.공통컬럼 = T2.공통컬럼;
2)SELECT * FROM 테이블1 JOIN 테이블 2 ON T1.공통컬럼 = T2.공통컬럼;
-------------------------------------------------------------------------------------
-1
SELECT * FROM TBL_CUSTOM tc ,TBL_BUY tb --참고: 고객 중 한번도 구매하지 않은 이는 결과에 없음
WHERE TC.CUSTOM_ID = TB.CUSTOMID;
-2
SELECT * FROM TBL_CUSTOM tc JOIN TBL_BUY tb
ON TC.CUSTOM_ID = TB.CUSTOMID;
SELECT*FROM TBL INERJOIN TBL2
USING(NUM); ->NUM 겹치는 컬럼
SELECT*FROM TBL INERJOIN TBL2
ON TBL.NUM = TBL2. NUM; -> 둘 다 NUM이 중복되지 않은 결과로 나옴
SELECT*FROM TBL NATURAL JOIN TBL2;
외부조인(OUTER JOIN)
SELECT * FROM STADIUM LEFT OUTER JOIN TEAM
ON HOMETEAM_ID = TEAM_ID;
SELF JOIN
EMP TABLE
SELF JOIN
SELECT * EMP E1 JOIN EMP E2
ON E1.MGR =E2.EMPNO
--E1에서 사원의 매니저 번호를 찾아서(MGR) E2에서 매니저를 찾음(EMPNO)
SELECT E1.ENAME 사원, E2.NAME 매니저 EMP E1 JOIN EMP E2
ONT E1.MGR =E2.EMPNO;
결과
Create Table new_table like old_table
Create Table IF NOT EXISTS new_table like old_table -- (new_table 이 없으면 복사)Copy
테이블 데이터 복사
sqlinsert into 테이블명1 (select * from 테이블명2)
-- value()대신 서브쿼리가 들어감
Insert Into destination_table (column_a, column_b) (select a, b from source_table)
-- 원하는 필드의 부분 데이터만 복사가 가능Copy
create table 만들 테이블명 as select * from 계정명.테이블명;
create table buyTbl2 (select * from buyTbl) -- 서브쿼리를 쓰거나
create table buyTbl2 as select * from buyTbl -- 괄호 대신 as 써도 된다
SHOW CREATE TABLE 대상테이블명; -- 실행하면 결과로 create table 대상테이블명 쿼리문을 얻을 수 있음