문서의 이전 판입니다!
CREATE DATABASE MyOptionsTest COLLATE Korean_Wansung_CI_AS; GO USE master; GO ALTER DATABASE MyOptionsTest COLLATE Korean_Wansung_CI_AS; GO
EXEC sp_databases GO
EXEC sp_tables GO GO EXEC sp_tables @TABLE_NAME = '%', @table_owner = 'dbo', @table_qualifier = 'model'; GO
-- 원하는 테이블 검색 SELECT name FROM DBname.sys.tables WHERE name LIKE '%xxx%' AND is_ms_shipped = 0; -- << 불필요하면 제거
-- 테이블 정보 보기 EXEC sp_help tablename GO SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'tablename'; GO
count(*)
를 사용하면 조회 조건을 만족하는 모든 것들 훑어야 하지만, exists
를 사용하면 첫번째 데이터에서 바로 반환한다.-- 조건을 만족하는 첫번째 것에서 바로 중단하고 1 혹은 0 반환 SELECT COUNT(1) WHERE EXISTS (SELECT * FROM books WHERE book_type='IT')
-- 이 방법은 SQLServer 2008 이후로는 사용하지 말라고 함. UPDATE test SET name='john' WHERE id=3012 IF @@ROWCOUNT=0 INSERT INTO test(name) VALUES('john');
-- TEST 가 UPDATE/INSERT 대상 테이블일 때 MERGE dbo.TEST AS T USING (SELECT 3, 300) AS S (userSN, col1) -- update or insert 할 데이터 테이블. SELECT로 가상 테이블 만듬 ON T.userSN = S.userSN WHEN MATCHED THEN UPDATE SET col1 = S.col1 WHEN NOT MATCHED BY TARGET THEN INSERT (userSN, col1) VALUES (S.userSN, S.col1);
OFFSET
은 0
부터 시작한다.SELECT * FROM Sales.SalesOrderDetail ORDER BY SalesOrderDetailID OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY; GO