1. 서브쿼리?
2. 서브쿼리 문법
3. 예제
서브쿼리?
- 하나의 SQL 쿼리 내에서 다른 쿼리를 포함하는 구조
- SELECT , UPDATE, DELTE 문에서 사용될 수 있다
- 조건문에서 주로 사용됨
- 서브쿼리는 단일행 / 다중행 서브쿼리가 있다
- 단일행 : 하나의 값을 반환
- 다중행 : 여러 값을 반환
서브쿼리 문법
- SELECT 서브쿼리
SELECT [column1] FROM [table1] WHERE column1 = (SELECT [column2] FROM [table2] WHERE [조건]);
- INSERT 서브쿼리
INSERT INTO [table1] [(column1)] SELECT [column2] FROM [table2] WHERE [조건];
- UPDATE 서브쿼리
UPDATE [table1] SET [column1] = (SELECT [column2] FROM [table2] WHERE [조건]) WHERE [조건]
- DELETE 서브쿼리
DELETE FROM [table1] WHERE [column1] = (SELECT [column2] FROM [table2] WHERE [조건]);
예제
- SELECT 서브쿼리
- 단일행 : "where sub_id = (서브쿼리)", 여기서 서브쿼리 결과값이 한개만 나와야함
- 다중행 : "where sub_id IN (서브쿼리)", 여기서 서브쿼리 결과값이 다중으로 나와도 됨
-- 단일행
SELECT * FROM ex_table1 WHERE sub_id = (SELECT id FROM ex_table2 WHERE sub_name IN('group1'));
-- 다중행
SELECT * FROM ex_table1 WHERE sub_id IN (SELECT id FROM ex_table2 WHERE sub_name IN('group1', 'group2'));
- INSERT 서브쿼리
-- 단일행
INSERT INTO insert_test (name) SELECT name FROM ex_table1 WHERE sub_id = (SELECT id FROM ex_table2 WHERE sub_name='group3');
-- 다중행
INSERT INTO insert_test (name) SELECT name FROM ex_table1 WHERE sub_id IN (SELECT id FROM ex_table2 WHERE sub_name IN('group1', 'group2'));
select * from insert_test;
- UPDATE 서브쿼리
UPDATE ex_table1 SET sub_id = (SELECT id FROM ex_table2 WHERE sub_name = 'group3') WHERE name='testA';
- DELETE 서브쿼리
DELETE FROM ex_table1 WHERE sub_id = (SELECT id FROM ex_table2 WHERE sub_name = 'group3');
'프로그래밍 언어 > SQL' 카테고리의 다른 글
[SQL] JOIN 정리 (0) | 2024.10.21 |
---|---|
[SQL] 주요 연산자 (distinct,like,between,in,is null) (0) | 2024.10.21 |
[SQL] WHERE, GROUP BY, HAVING, ORDER BY (1) | 2024.10.21 |
[SQL] 집계함수, 스칼라함수 (1) | 2024.10.20 |