본문 바로가기

DBMS

(116)
[SQL Server] 문자열 합치기 USE tempdb GO -- 테스트 테이블 생성 CREATE TABLE dbo.HOBBY_TBL ( USERID VARCHAR(25) , HOBBY VARCHAR(30) ) GO -- 테스트 데이터 입력 INSERT INTO dbo.HOBBY_TBL (USERID, HOBBY) VALUES ('ABC', '축구') , ('ABC', '독서') , ('ABC', '게임') , ('APPLE', '등산') , ('APPLE', '농구') GO -- 테이블 조회 SELECT * FROM dbo.HOBBY_TBL GO -- 문자열 합치기 (DISTINCT 사용) SELECT DISTINCT USERID , STUFF (( SELECT ',' + HOBBY FROM dbo.HOBBY_TBL WHERE USERI..
[SQL Server] 프로시저 캐시 지우기 및 버퍼 메모리 비우기 -- 버퍼 메모리 비우기 dbcc dropcleanbuffers -- 프로시저 캐시 지우기 dbcc freeproccache
[SQL Server] DBCC CHECKIDENT 를 사용한 IDENTITY 값 초기화 IDENTITY 컬럼의 시작 값을 초기화 해야할 때 DBCC CHECKIDENT 명령을 사용하여 초기화 할 수 있다. -- 현재 IDENTITY 값 확인 DBCC CHECKIDENT('IDENT_TABLE', NORESEED) DBCC CHECKIDNET('테이블명', NORESEED) 는 테이블의 현재 IDENTITY 값을 확인하는 명령어이다. -- IDENTITY 값 변경 DBCC CHECKIDENT('IDENT_TABLE', RESEED, 1000) DBCC CHECKIDENT('테이블명', RESEED, 초기화 값) 는 현재 값으로 사용할 새 값으로 초기화하는 명령어이다. 위의 경우 현재 값을 1000으로 초기화함으로써 새 값을 추가하면 1001이 삽입된다.
[SQL Server] SCOPE_IDENTITY(), IDENT_CURRENT(), @@IDENTITY 테이블에 자동증가 컬럼의 값이 추가되었고, 증가된 값을 반환하고 싶은 경우 SCOPE_IDENTITY(), IDENT_CURRENT(), @@IDENTITY 함수를 사용하여 원하는 값을 얻을 수 있다. 세 함수는 자동증가 컬럼에 삽입된 값을 반환하기 때문에 비슷한 함수이지만, 차이점이 있어 주의해서 사용해야 한다. 아래의 결과를 보면 같은 값을 반환한다. CREATE TABLE dbo.TEST_TBL ( COL1 INT IDENTITY(1,1) , COL2 VARCHAR(10) ) GO INSERT INTO dbo.TEST_TBL (COL2) VALUES ('ABC') INSERT INTO dbo.TEST_TBL (COL2) VALUES ('DEF') INSERT INTO dbo.TEST_TBL (COL..
[SQL Server] 저장 프로시저 일괄 실행 권한 주기 한 데이터베이스의 모든 저장 프로시저에 대해서 특정 계정에 실행 권한을 줘야할 일이 있다. 한 개씩 클릭이나 명령어로 실행 권한을 줄 수도 있지만, 다음 쿼리를 이용하면 모든 저장 프로시저에 대해 특정 계정에 권한을 주는 스크립트가 생성된다. 이 스크립트를 복사하여 실행만 하면 일괄로 권한을 줄 수 있다. DECLARE @ACCOUNT VARCHAR(100) SET @ACCOUNT = 'TEST_ACCOUNT' SELECT 'GRANT EXECUTE ON ' + name + ' TO ' + @ACCOUNT FROM sys.procedures 조금 응용해서 WHERE 절을 이용하여 원하는 저장 프로시저에만 권한을 주는 스크립트를 생성할 수 있다. 아래의 예제는 ABC로 시작하는 저장 프로시저에 대해서만 스..
[SQL Server] AWE 옵션 SQL Server는 32비트 버전의 Microsoft Windows 운영체제에서 실제 메모리를 4GB 이상 사용할 수 있도록 하는 AWS(Address Windowing Extensions)를 지원한다. 최대 64GB의 실제 메모리가 지원된다. 표준 32비트 주소는 최대 4GB의 메모리를 매핑할 수 있다. 따라서 32비트 프로세스의 표준 주소 공간은 4GB로 제한된다. 기본적으로 32비트 Microsoft Windows 운영체제에서 2GB는 운영체제용으로 예약되고 2GB를 응용 프로그램에서 사용할 수 있다. AWE는 SQL Server Enterprise, Standard 및 Developer 버전에서만 지원되며 32비트 운영체제에만 적용된다. AWE를 사용할 수 있게 설정하는 방법은 다음과 같다. s..
[SQLite] 데이터 존재 유무 확인 (SELECT EXISTS 구문) 테이블에 특정 조건의 데이터가 있는지 확인이 필요할 때가 있다. SELECT EXISTS 구문을 사용하면 데이터가 존재하면 1, 존재하지 않으면 0을 반환한다. 아래 쿼리의 결과를 보면 col1 = 1에 해당하는 데이터는 존재하므로 1을 반환하고, col1 = 999에 해당하는 데이터는 존재하지 않으므로 0을 반환하는 것을 확인할 수 있다.
[SQLite] INSERT OR REPLACE 구문 기본 키(Primary key) 또는 Unique 제약조건이 있는 컬럼에 중복된 값을 가지는 행을 추가하면 오류가 발생한다. SQLite에서는 중복된 값을 가지는 행을 추가할 때 값이 있으면 update, 없으면 insert 하는 방법이 있다. INSERT OR REPLACE 구문을 사용하면 된다. 기본 키가 id인 테이블이 있고, id 컬럼에 중복된 값을 입력하면 오류가 발생했다. INSERT OR REPLACE 구문을 사용하면 중복된 값을 가지는 행이 있어도 오류가 발생하지 않고, 새로운 값으로 update 된 것을 확인할 수 있다.