목록database/mssql (24)
yoursyun
CREATE TYPE T_CUST_LIST AS TABLE ( CUST_CODE VARCHAR(50) ); GO CREATE PROCEDURE UP_TVP_TEST @TVP T_CUST_LIST READONLY AS SET NOCOUNT ON SELECT M.CD_COMPANY, M.LN_PARTNER FROM @TVP C INNER JOIN M_TABLE M ON C.CUST_CODE = M.CD_PARTNER GO DECLARE @TVP AS T_CUST_LIST; INSERT INTO @TVP (CUST_CODE) SELECT TOP 100 CUST_CODES FROM M_TABLE GO EXEC UP_TVP_TEST @TVP;
CREATE INDEX 인덱스명 ON 테이블명 ( 컬럼명 ASC, 컬럼명2 ... ) GO
ALTER TABLE TABLE1 ADD CONSTRAINT DF_TABLE1_선언명 DEFAULT '디폴트값' FOR 디폴트컬럼명 GO
UPDATE TABLE1 SET COL1 = A.COL1 FROM TABLE1 AS A INNER JOIN TABLE2 AS B ON A.KEYCOL = B.KEYCOL
-- PK 삭제 ALTER TABLE dbo.테이블명 DROP PK_이름 GO -- PK 추가 ALTER TABLE 테이블병 ADD CONSTRAINT PK_이름 PRIMARY KEY ( C_CODE, NODE_CODE, NO_JO, TP_ORD ) GO
1. 조인절 작성시, 조회 정보량이 적은 쪽을 부모 ( A JOIN B 에서 A 가 적은 정보를 포함 할것 ) 로 놓는것이 성능상 이롭다. 2. Sub Query 작성후 index seek 가 잘 안될경우, 임시 Table 을 만들어 inex 를 태우면 성능상 이롭다. index scan 은 index seek 보다 성능이 떨어지므로, 가능한 index seek 를 태워야 한다. 3. where 절을 작성시 PK or 인덱스 순서로 작성한다. 4. Join 시에 가능한 상호간 데이터 타입이 같을수 있도록 테이블을 구성해야 한다. ( 내부적으로 CAST 발생함 )
테이블 조회 실행 등의 권한만 부여하는 방법 GRANT EXECUTE ON [디비명].[프로시져명] TO [부여된계정명] -- 실행권한부여 GRANT SELECT ON [NEOE].[뷰명] TO [부여된계정명] -- 조회권한부여
DATEADD(MONTH, 1, '2015-01-15') - (DAY('2015-01-15')) 위의 데이터를 DATETIME 으로 받은 후 ( 위처리로 마지막 날자는 구함 ) CONVERT(VARCHAR, @DATETYPE_DT_TO, 112) 를 통해 YYYYMMDD TYPE 으로 변환하여 사용.
DECLARE @A VARCHAR(300) = 'hello.world.member' , @SCH_CHAR CHAR(1) = '.' SELECT SUBSTRING(@A, 0, LEN(@A) - CHARINDEX(@SCH_CHAR, REVERSE(@A)) + 1) hello.world
SELECT SORT , A , 저장일FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY A ORDER BY 저장일 DESC ) AS SORT , A , 저장일 FROM 테이블 ) AS 별칭WHERE SORT = '1' ROW_NUMBER 함수를 이용하여, 1 인것만을 출력.
SELECT FLOOR(123.45), FLOOR(-123.45) RESULT =============================123, -124 지정된 숫자 식보다 작거나 같은 최대 정수를 반환합니다.
SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE }[ ; ] 격리수준을 설정 하지 않고 조회 시 READ COMMITTED 이며, 커밋되지 못한 행 조회시 LOCK 상태가 된다. READ UNCOMMITTED커밋되지 않은 데이터를 읽을수 있다. 만일 데이터가 1 -> 2로 업데이트 되고, 트랜잭션이 아직 커밋되지 않았다면,2를 읽을 수 있다. ( ROLL BACK 의 위험성을 인지 해야 함 ) REPEATABLE READ커밋되지 않은 데이터를 읽을수 없다. LOCK 상태가 된다.READ UNCOMMITTED 차이점. 다른 트랜젝션이 해당 행을 수정할 수 ..
EXEC msdb.dbo.sp_send_dbmail@Profile_name ='DBA',@recipients='수신자메일' ,@subject = '제목',@body = '내용'@body_format = 'HTML'
OPEN MASTER KEY DECRYPTION BY PASSWORD = '암호'OPEN SYMMETRIC KEY PasswordFieldSymmetricKey DECRYPTION BY CERTIFICATE TiwazPasswordFieldCertificate WITH PASSWORD = '암호'DECLARE @ENC VARBINARY(256) = EncryptByKey(Key_GUID('PasswordFieldSymmetricKey'), 'AAAAA')SELECT @ENCSELECT CONVERT(varchar, DecryptByKey(@ENC))
테이블 트리거 조회 구문 select 'sp_helptext ' + t.name+ ' go' from sys.sysobjects t join sys.sysobjects o on t.parent_obj = o.id where t.xtype ='TR' and o.name like '테이블명%'
SELECT o.name FROM sys.sysobjects o JOIN sys.syscomments c ON o.id = c.id WHERE c.text like '%프로시져명%' AND o.xtype IN ('P', 'TR') GROUP BY o.name
replace(convert(varchar(15),convert(money, 돈), 1), '.00', '')
NOT IN 처럼 1개의 키값 비교를 하지 않고 여러 키값을 비교하여 특정 결과 집합을 제외 시에 EXCEPT(오라클의 MINUS) 구문을 사용 하면 명확한 코딩이 가능 하다. SELECT A, B, C FROM TABLE1 EXCEPT SELECT A, B, C FROM TABLE2 * TABLE2 집합을 TABLE1 에서 A, B, C 값을 비교 A, B, C 가 같지 않은 데이터만을 출력 컬럼 A B C 1 2 3 2 2 3 3 3 3 컬럼 A B C 1 2 3 2 2 3 3 2 3 3 3 3 A, B, C 를 비교하여 TABLE1 기준으로 TABLE2와 다른 정보만을 리턴
SELECT CONVERT(VARCHAR, GETDATE(), 112)
SELECT [Table Name] = OBJECT_NAME(c.object_id), [Column Name] = c.name, [Description] = ex.value FROM sys.columns c LEFT OUTER JOIN sys.extended_properties ex ON ex.major_id = c.object_id AND ex.minor_id = c.column_id AND ex.name = 'MS_Description' WHERE OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0 AND OBJECT_NAME(c.object_id) = 'your table name' ORDER BY OBJECT_NAME(c.object_id), c.column_id
과거에는 대부분 사람들이 데이터베이스에 관 심을 가지지 않은 것이 사실이었다. 하지만, 시대가 변하면서 많은 사람들이 데이터베이스에 관심을 가지게 되었고 다양한 곳에서는 데이터 베이스에 많은 시간을 투자하고 있는 것이 현실이다. 많은 기업에서 프로젝트를 수행하게 되면 여러 종류의 하드웨어와 소프트웨어가 도입된다. 그 중에서도 DBMS의 도입은 많은 프로젝트에서 필수 요소다. 시중에는 많은 DBMS 제품이 존재한다. 이처럼 많은 데이터베이스 중 과 연 무엇을 기준으로 DBMS를 선정해야 할까? 데이터베이스는 한 번 선정되면 추후 다른 제품으로 변경하기 어렵다. 그렇기 때문에 데이터베이스를 구축하기 위해 DBMS를 도입하는 경우에는 반드시 선정 기준이 존재해야 하며 이 기준에 따라 DBMS를 선택해야 한다...
TEST 해본 결과 2000 SP4 동작 , 2005 동작이 처리 되었다. CREATE TABLE Tpassword ( passwd varbinary(256) ); INSERT INTO Tpassword values(pwdencrypt('1234')); SELECT pwdcompare('1111', passwd) FROM Tpassword SELECT * FROM Tpassword 킁 위 방법은 복호화해서 원본 데이터를 보는 방법을 못찾았다. 쳇 ============================================================================================= create database data_encryption go use data_encrypti..
DBCC CHECKIDENT(초기화테이블명, RESEED, 초기값) EX > DBCC CHECKIDENT(myTable, RESEED, 0)
SP_CHANGEOBJECTOWNER "[소유자명].[테이블명]", "변경코자 하는 소유자명"