1. OPENQUERY
MS-SQL에서 다른 DBMS와 연동하여 데이터를 전송할 수 있는 기능
추가 프로그램이 필요하지 않아 편리하게 이용 가능 하다.
2. OPENQUERY : SELECT 쿼리 (조회)
SELECT * FROM OPENQUERY ([연결된서버명], 'SELECT * FROM 테이블명 WHERE 조건=조건')
SELECT * FROM OPENQUERY ([연결된서버명], 'SELECT [컬럼1] FROM 테이블명 WHERE 조건=조건')
SELECT [컬럼1] FROM OPENQUERY ([연결된서버명], 'SELECT * FROM 테이블명 WHERE 조건=조건')
1. 쿼리 사용법
openquery 키워드 앞에 조회 쿼리와 동일하게
select * from을 적고 openquery 작성 후에 연결하고자하는 서버와 select 문을 작성하면 된다.
openquery 뒤의 구문을 작성할때 가져오는 서버에 맞는 쿼리문을 작성 해줘야한다.
(mssql에서 mssql이면 상관없겠지만 oracle에서 가져온다면 각 dbms에 맞는 쿼리 작성)
ex) MSSQL은 테이블에서 데이터 10개를 뽑아올 때 TOP 10 사용
SELECT TOP 10 * FROM 테이블명 사용하지만
ORACLE은 테이블에서 데이터 10개를 뽑아올 때 조건절에 ROWNUM을 사용한다
SELECT * FROM 테이블명 WHERE ROWNUM <= 10
--OPENQUERY사용해 MSSQL 서버에서 데이터 10개 뽑아오기
select * from openquery([MSSQL서버],'select TOP 10 * from 테이블명' )
--OPENQUERY사용해 ORACLE 서버에서 데이터 10개 뽑아오기
select * from openquery([ORACLE서버],'select * from 테이블명 where rownum <= 10' )
--각 DBMS에 맞는 쿼리문을 작성해서 원하는 데이터를 SELECT 하면 된다.
3. OPENQUERY : UPDATE쿼리 (수정)
UPDATE OPENQUERY ([연결된서버], 'SELECT [컬럼1] FROM 테이블명 WHERE 조건=조건')
SET [컬럼1] = 값
4. OPENQUERY : DELETE쿼리 (삭제)
DELETE OPENQUERY ([연결된서버], 'SELECT [컬럼1] FROM 테이블명 WHERE 조건=조건')
5. OPENQUERY : INSERT쿼리 (추가)
INSERT OPENQUERY ([연결된서버], 'SELECT [컬럼1], [컬럼2] FROM 테이블명')
VALUES (값1, 값2)
INSERT OPENQUERY ([연결된서버], 'SELECT * FROM 테이블명')
VALUES (값1, 값2)
5. OPENQUERY : 트랜잭션 쿼리문 -LIMIT걸기
OPENQUERY는 데이터를 가져올때 전체를 가져오기때문에 LIMIT0을 걸어줘서 가져오는게 좋다.
INSERT를 진행할때 테이블 행을 전체를 다 SELECT 하기 때문에 LIMIT을 걸어줘야 서버에 과부하가 오지 않는다.
INSERT OPENQUERY ([연결된서버], 'SELECT [컬럼1], [컬럼2] FROM 테이블명 limit 0') VALUES (값1, 값2)
DELETE OPENQUERY ([연결된서버], 'SELECT [컬럼1] FROM 테이블명 WHERE 조건=조건 limit 0')
UPDATE OPENQUERY ([연결된서버], 'SELECT [컬럼1] FROM 테이블명 WHERE 조건=조건 limit 0') SET [컬럼1] = 값 'DEV(실무 기록) > DB, 쿼리' 카테고리의 다른 글
| Oracle comment 관련 쿼리 (0) | 2024.08.07 |
|---|---|
| SQL 문법 , 실행 순서 (0) | 2024.03.05 |
| PL/SQL(정의, 사용법) (0) | 2023.04.24 |