SQL 8-3. 다른 테이블에서 행 복사
관련링크
본문
․ 서브 쿼리를 포함하는 INSERT문을 작성한다.
․ VALUES절은 사용하지 않습니다.
․ INSERT절의 열 수와 서브 쿼리의 열 수를 일치시킵니다.
예제) 오라클 디비 예제 : INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM employees
WHERE job_id LIKE '%REP%';
☞설명) 다른 테이블에서 행 복사
INSERT문을 사용하면 기존 테이블에서 파생되는 값을 포함하는 행을 테이블에 추가할 수 있다.
VALUES절 대신 서브 쿼리를 사용한다.
sp_addlinkedserver 사용법
① 서버등록 : sp_addlinkedserver를 실행하여 연결된 서버 정의를 만든다.
EXEC sp_addlinkedserver
@server='Avalon', -- 앞으로 사용할 링크드 서버이름.
@srvproduct = '', -- 공백처리 한다. 기본값 NULL
@provider = 'SQLOLEDB', -- 공급자 고유 식별자. SQL 서버이면 그대로.
@datasrc = '123.123.123.123', -- 아이피 적어 줌.
@provstr='', -- OLEDB 공급자 연결 문자, 기본값 NULL
@catalog='TargetDB' -- 특정 카다로그 즉 데이터 베이스 이름을 적어준다.
GO
② 서버 등록 확인
SELECT * FROM master.dbo.sysservers
③ 연결 계정 등록
서버를 만든후 반드시 로그인도 생성해주셔야 한다.
EXEC sp_addlinkedsrvlogin '링크 서버명', 'false', NULL, 'UserID', 'UserPW'
또는
EXEC sp_addlinkedsrvlogin
@rmtsrvname = '링크 서버명', --링크드 서버 이름, 기본값 없음
@useself = 'false', --로그인 이름 사용유무, 기본값 true
@locallogin = NULL, --로컬서버 로그인 여부, 기본값 NULL
@rmtuser = 'UserID', --사용자 이름
@rmtpassword = 'UserPW' --사용자암호
④ 삭제를 할 경우
--sp_dropserver를 실행하여 연결된 서버 정의를 삭제합니다. 사용자는 이 저장 프로시저를 사용하여 원격 서버를 제
거할 수 있습니다.
EXEC sp_dropserver
@server='링크 서버명' --삭제할 링크드 서버이름, 기본값 없음.
⑤ 연결 계정삭제
EXEC sp_droplinkedsrvlogin
@rmtsrvname = '링크 서버명',
@locallogin = NULL
되어 있는 경우
- DB명을 기술해 주지 않으면, 현재 연결되어 있는 DB내에 있는 table을 찾을 때
Owner가 dbo인 경우에는 Owner를 생략해도 된다.
select * from pubs.dbo.employee
select * from pubs..employee
4. SQL서버.db_name.owner.object_name
- 액세스하고자 하는 object가 존재하는 SQL서버가 아닌 다른 SQL서버에 연결해 있는 경우
- sp_addlinkedserver로 서버를 등록해야 한다.