본문 바로가기

SQL

[교육] SQL초보에서실전전문가까지 ORACLE - 3 Null 의 개념JOIN시에도 Null 이 있는 컬럼을 사용하게 되면 비교자체가 안되기 때문에 조인될 수 없다. NVL - ISNULLDUAL 테이블 - SELECT 문의 FROM 절이 필요없을 때 Dummy 처럼 사용하는 테이블 SQL> edWrote file afiedt.buf 1 select ename, sal, comm 2 from emp 3* where comm is NOT nullSQL> / ENAME SAL COMM---------- ---------- ----------ALLEN 1600 300WARD 1250 500MARTIN 1250 1400TURNER 1500 0 SQL> select ename, sal, deptno 2 from emp 3 where deptno=20 4 and ( .. 더보기
[교육] SQL초보에서실전전문가까지 ORACLE - 2 2일차 기초 실습 [oracle@localhost ~]$ sqlplus '/ as sysdba' SQL*Plus: Release 10.2.0.1.0 - Production on Fri Aug 10 19:42:55 2012 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance. SQL> startupORACLE instance started. Total System Global Area 167772160 bytes (메모리 사이즈)Fixed Size 1218316 bytesVariable Size 62916852 bytesDatabase Buffers 100663296 bytes (1일차 강의에서 DB Cac.. 더보기
[교육] SQL초보에서실전전문가까지 ORACLE - 1 Oracle INDEXHINTnested loop 할 것을 HINT로 Hash Join 을 유도하면 빨라질 수 있음 9i 에서는 RAC 미지원 그때는 OS기반의 클러스터 사용10g 부터 Oracle 에서 지원 - 호환성 ↑RAC(Real Application Clusters) 비절차적 언어 : 0 ~ 100 순서대로 다 뒤지는게 아니라 30 ~ 40 번만 원하는데로 검색가능 DB의 구조ㅁ메모리(SGA:System Global Area) - (※ PGA)DB Cache : 빈번하게 사용되는 데이터를 임시보관+ Shared Pool : 실행계획 데이터를 보관, 통계도 포함 + Redo : 트랜잭션 로그ㅁDBWR (DB Writer) : 스토리지 데이터를 메모리 DB Cache에 올려주는 역할ㅁStorage .. 더보기
[MSSQL] CREATE TABLE 쿼리문 일괄로 쉽게 만들기 테이블 스키마를 보고 싶을 때 흔히들 EXEC SP_HELP '테이블명' 요렇게 많이 할 것이다. 난 요럿게 내 입맛에 맞게 바꿔서 사용한다. 그리고 아래 쿼리를 잘 이용하면 특정 DB내의 모든 테이블 CREATE 문을 자동 생성할 수도 있다. CREATE PROC DBO.USP_GET_TABLE_SCHEMA @TBLNAME VARCHAR(100) /************************************************************************ 1> 내 용: 내입맛대로테이블스키마뽑기 2> 입력내용: @TBLNAME = 테이블명(ex. DBO.F_SALES_ORDERS) 3> 출력내용: 변경된테이블스키마 4> 작성자명: 민경태 5> 작성일자: 2011-11-25 6> 수정.. 더보기
[MSSQL] 0으로나누기오류가발생했습니다. SELECT 100 / 0 AS 결과 메시지8134, 수준16, 상태1, 줄1 0으로나누기오류가발생했습니다. 위와같은경우 나누는 숫자가 0일때 오류가 발생합니다. SET ANSI_WARNINGS OFF SET ARITHIGNORE ON SET ARITHABORT OFF SELECT 100 / 0 AS 결과 해당 결과값은 오류없이 NULL로 얻을수 있습니다. 더보기
MSDN 링크 도움말 시스템 저장 프로시저 http://msdn.microsoft.com/KO-KR/library/ms187961(v=sql.105) 변경 데이터 캡처 http://msdn.microsoft.com/ko-kr/library/bb522489(v=sql.105) DB롤 별 권한 http://msdn.microsoft.com/en-us/library/ms189612(v=sql.90).aspx 더보기
[MSSQL] 문자열 자르는 함수 여러 아이디 값이나 변수를 배열처럼 넘겨서 사용하고 싶을 때가 간혹 있다. 뭐 이런 형태로 변수를 넘겨서 받아 사용하고 싶을 때 유용한 함수이다. (ex. 100,90,88,105,300,412,938,... ) CREATE FUNCTION [dbo].[UF_TEXT_SPLIT] ( @TEXT VARCHAR(8000) ,@DELIMITER CHAR(1) ) RETURNS @STRINGS TABLE ( POSITION INT IDENTITY(1,1) PRIMARY KEY, VALUE NVARCHAR(MAX) ) AS BEGIN DECLARE @INDEX INT SET @INDEX = -1 WHILE (LEN(@text) > 0) BEGIN SET @INDEX = CHARINDEX(@DELIMITER , @.. 더보기
[MSSQL] SQL SERVER 2005 사용자 추가 및 계정 권한 컨트롤 데이터 모델을 만들어 DB를 관리하는 경우 이런 고민이 있을 것이다.운영 SQL Server 에 개발자들이 무분별하게 접속하여 작업을 하게 되면 DB모델에는 반영되지 않은 사항이 물리DB에는 반영되어, 모델 관리가 어렵게 될 수 있다. 그리고 시간이 지나면 동기화가 되지 않아 모델 자체를 신뢰할 수 없게 되는 상황까지 갈 것이다. 아니면 다시 리버스 하여 모델을 다시 그리던지.. 이런 문제를 애초에 잡고자, 개발DB는 개발자가 마음데로 작업할 수 있지만, 운영DB에서는 조회만 가능하게 권한을 막아보자 그럴려면, 각 개발자별로 아이디를 부여하고, 해당 아이디가 사용하는 DB들을 정의 한 후에 dbo 스키마를 기본으로 적용해주고, 해당 아이디의 권한을 명시적으로 부여하면 된다. (처음에는 Role을 사용하여.. 더보기
[MSSQL] 특정 컬럼명을 포함하는 테이블 목록보기 특정 컬럼명을 포함하고 있는 테이블명을 알고 싶을 때 유용하다.가령, 수리날짜(RepairDate) 라는 데이터가 있는 이 컬럼을 가지고 있는 테이블이 뭔지 찾으려면 테이블을 하나 하나 열어봐야 하는데 귀찮으므로, 한방에 찾아보자 ALTER PROC DBO.컬럼찾기 @COLNMAE VARCHAR(200) /***************************** 1> 컬럼명으로테이블찾기 2> 특정컬럼명을사용하는테이블이뭐가있는지궁금할때 3> 2012.07.03 4> KTMIN5> EX) EXEC 컬럼찾기 'repacost' *****************************/ AS SELECT B.NAME AS 테이블명 ,A.NAME AS 컬럼명 ,TYPE_NAME(USER_TYPE_ID) AS 데이타타입 .. 더보기
FK 설정시 충돌이 발생했다? 무슨 이야기지? 테이블 설계 후 Foreign Key 제약사항을 정의 하고, 물리적 DB에 반영하려고 ALTER 문들을 실행하고 있는데 희안한 에러가 나오는 것이다. 메시지547, 수준16, 상태0, 줄1 ALTER TABLE 문이FOREIGN KEY 제약조건"FK_TABLE_COLUMN"과(와) 충돌했습니다. 데이터베이스" ", 테이블"dbo. ", column ' '에서충돌이발생했습니다. 이건 뭔가 싶어 두 테이블을 비교해봤더니 둘다 데이터형도 똑같고 제약사항도 NOT NULL 로 동일한 것을 확인하였다. 구글링 결과 제약조건을 잡을 때 기존에 테이블에 들어있는 데이터들을 비교하여 부모 테이블의 PK를 잘못 참조하여 이미 기존에 들어간 값이 있다면 저렇게 충돌 메시지를 던져준단다. 부모-자식 간 기존 데이터가 충돌이.. 더보기