내용으로 건너뛰기
GINS WIKI 긴스 위키
사용자 도구
로그인
사이트 도구
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
현재 위치:
긴스위키 GINS wiki
»
디비 DB
»
sql팁
추적:
검색
db:sql팁
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
테이블 카피 <code sql> -- SRC_TABLE 을 DST_TABLE 라는 새 테이블을 만들고 내용을 복사한다. select * into DST_TABLE FROM SRC_TABLE </code> 일부만 우선 보기 <code sql> -- 걸리는 10개만 우선 보고 싶을때 select top 10 * from TABLE_NAME </code> select 실행 락걸리지 않게 <code> -- TUser 와 TempUser? 에 같은 아이디를 갖고 있는 사람들의 e-mail 주소 -- with(nolock)으로 락 걸리는 일이 안생기도록 한다. -- 책의 예제에서 보고 따라 한거라서.. select TUser.userid, TUser.email, TempUser?.id from TUser INNER JOIN TempUser? WITH(NOLOCK) on TUser.userid = TempUser?.id; </code> update <code sql> -- update 하기 update (table) set (field)=(newvalue) where (condition) </code> 쿼리 실행 계획얻기 <code sql> set showplan_all on -- 쿼리 set showplan_all off </code> 특정 확률로 가챠 뽑히는거를 시뮬레이션 ++++ 코드 길어서 접어둠 | <code sql> -- 14 개의 아이템 중에 한개를 고른다. 위에서 아래로 우선순위가 있고 -- 각각 오른쪽이 나올 확률 BEGIN ----------------------------------------- -- Probability table with priority -- 5 0.05 -- 10 0.05 -- 210 2.00 -- 800 5.90 -- 1400 6.00 -- 2000 6.00 -- 2833 8.33 -- 3666 8.33 -- 4499 8.33 -- 5599 11.00 -- 6699 11.00 -- 7799 11.00 -- 8899 11.00 -- 10000 11.01 ------------------------------------------- DECLARE @SeedByDate bigint; DECLARE @RandomNumber float; DECLARE @PgItemId smallint; -- get seed value SELECT @SeedByDate = (DATEPART(mm, GETDATE()) * 100000 ) / RAND(); -- get rand number and make it large to easy compare SELECT @RandomNumber = RAND( @SeedByDate ) * 10000; --for debug SELECT @SeedByDate, @RandomNumber; SET @PgItemId = 0; -- simply check IF @RandomNumber < 5 BEGIN SET @PgItemId = 1; END ELSE IF @RandomNumber < 10 BEGIN SET @PgItemId = 2; END ELSE IF @RandomNumber < 210 BEGIN SET @PgItemId = 3; END ELSE IF @RandomNumber < 800 BEGIN SET @PgItemId = 4; END ELSE IF @RandomNumber < 1400 BEGIN SET @PgItemId = 5; END ELSE IF @RandomNumber < 2000 BEGIN SET @PgItemId = 6; END ELSE IF @RandomNumber < 2833 BEGIN SET @PgItemId = 7; END ELSE IF @RandomNumber < 3666 BEGIN SET @PgItemId = 8; END ELSE IF @RandomNumber < 4499 BEGIN SET @PgItemId = 9; END ELSE IF @RandomNumber < 5599 BEGIN SET @PgItemId = 10; END ELSE IF @RandomNumber < 6699 BEGIN SET @PgItemId = 11; END ELSE IF @RandomNumber < 7799 BEGIN SET @PgItemId = 12; END ELSE IF @RandomNumber < 8899 BEGIN SET @PgItemId = 13; END ELSE IF @RandomNumber < 10000 BEGIN SET @PgItemId = 14; END --debug --SELECT @PgItemId IF @PgItemId <> 0 BEGIN SELECT * FROM dbo.tbillDefItemLoto WHERE seqno = @PgItemId END ELSE BEGIN SELECT NULL; END END --- 더 짧게 -- declare @result int declare @rate float set @rate = round(rand(),4) * 100 select @rate select @result = count(*) + 1 from ( select a.seqno, (select sum(per) from dbo.tbillDefItemLoto b where b.seqno <= a.seqno) as sum_per from dbo.tbillDefItemLoto a ) b where sum_per < @rate select @result </code> ++++ SP 내부에서 임시로 테이블을 만들어서 사용하고자 할때 <code sql> -- 변수로 선언한 테이블을 SP 내부에서 사용가능하다 USE AdventureWorks; GO DECLARE @MyTableVar table( EmpID int NOT NULL, OldVacationHours int, NewVacationHours int, ModifiedDate datetime); UPDATE TOP (10) HumanResources.Employee SET VacationHours = VacationHours * 1.25 OUTPUT INSERTED.EmployeeID, DELETED.VacationHours, INSERTED.VacationHours, INSERTED.ModifiedDate INTO @MyTableVar; --Display the result set of the table variable. SELECT EmpID, OldVacationHours, NewVacationHours, ModifiedDate FROM @MyTableVar; GO --Display the result set of the table. --Note that ModifiedDate reflects the value generated by an --AFTER UPDATE trigger. SELECT TOP (10) EmployeeID, VacationHours, ModifiedDate FROM HumanResources.Employee; GO </code> 2009 6 18 써본 것 <code> begin tran alter table A_090618 alter column FieldName int not null commit select * into A_bak_090618 from A begin tran drop table A commit select * into A from A_090618 </code>
db/sql팁.txt
· 마지막으로 수정됨: 2024/04/23 22:43 저자
127.0.0.1
문서 도구
문서 보기
이전 판
역링크
맨 위로