본문 바로가기

Programming/SQL29

[Oracle] DB 연동 시 host, port 번호 조회 및 원격 접속하기 (window - oracle 12g 기준) 1. host, port 번호 조회 oracle db가 설치되어있는 폴더를 찾아 위의 경로로 따라 들어간다. tnsnames.ora 파일을 찾았다면 열어본다. 여기에 DB 주소가 저장되어 있다. 2. 원격 접속하기 - listner.ora : 내가 서버이고 다른 클라이언트가 나에게 접속하려고 할 때 - tnsname.ora : 내가 클라이언트이고 다른 서버로 접속하고자 할 때 상황에 따라 각각의 파일에 ip, port, service name을 알맞게 수정한다. tnsping [service name] sqlplus [user name]/[password]@[service name] ex) tnsping corcl sqlplus scott/tiger@corcl.. 2019. 12. 23.
[Oracle] sqlplus 화면 크기 관련 명령어 linesize, pagesize 위와 같이 줄이 더럽게 나올때 정리할 수 있는 명령어가 있다. SET LINESIZE 200; pagesize도 위와 같이 사용하면 된다. 2019. 12. 23.
[Oracle] 15.제약 조건(PK, FK, UK, NOT NULL, CHECK) 설정, 조회 쿼리 제약 조건(Constraints) 테이블 단위에서 데이터의 무결성을 보장해주는 규칙.(오류 방지) 테이블에 데이터가 입력, 수정, 삭제되거나 테이블이 삭제, 변경될 경우, 잘못된 트랜잭션이 수행되지 않도록 결함을 유발한 가능성이 있는 작업을 방지하는 역할을 담당한다. 특히 PK와 FK는 테이블의 필수요소로써 모든 테이블은 이들 둘 중 하나 이상을 반드시 포함하고 있다. 오라클에서 제공하는 제약조건의 종류는 다음과 같다. PRIMARY KEY 테이블 당 하나만 정의 가능하며, 유일하게 식별할 수 있는 컬럼. 고유 인덱스 생성됨. FOREIGN KEY 자식 테이블에 설정 (반대로, 참조되는 테이블이 부모 테이블. 부모 테이블은 삭제가 불가능해짐) UNIQUE KEY 중복 값을 허용하지 않는 고유키. 고유 인.. 2019. 5. 7.
[SQL] 슈퍼타입, 서브타입 - exclusive 관계, inclusive관계 부모의 속성 중에 더 작은 그룹으로 분리해서 관리할 필요가 있는 속성이 있을 때, 슈퍼타입 또는 서브타입 단위로 모델링 한다. 그 중 슈퍼타입(전체를 하나의 테이블로 관리)에 정의된 공통 속성과 각 서브타입의 속성을 더하여 각각의 서브타입별로 테이블을 설계하는 방법이 서브타입 단위의 모델링이다. 슈퍼타입 모델링 장점: 전체 사원에 대한 검색이 쉽다, 무결성에 유리하다. 단점: 서브타입별 속성이 많다면 지나치게 NULL이 많이 발생한다.(공간의 낭비) 서브타입 모델링 장점: NULL이 없거나 줄어들고(공간의 낭비가 적다), 정규직 사원과 임시직 사원을 별개로 처리하는 업무가 많을 때 효율이 좋다. 단점: UNION 함수를 쓸 때 중복제거 되기 때문에, 사번의 유일성(Unique)을 잘 관리해야 한다. IN.. 2019. 5. 3.
[SQL] 1,2,3차 정규화 (feat. ERwin Data Modeler) 정규화(定規化, Database Normalization)란? 데이터의 중복을 제거하고 컬럼들의 제자리를 찾아주기 위해 테이블을 정해진 규칙에 의거해 규격화 하는 작업을 말한다. 이론 상으로는 1~5차 정규화와 BCNF까지 총 6단계가 존재하지만, 현장에서는 보통 3단계까지를 많이 수행한다. 정규화를 거친 테이블을 각각의 테이블이 하나의 기능만 수행하게 되어서, 향후 업무가 증가하거나 변화해도 최소한의 수정만으로 처리할 수 있게 된다. 상단의 주문 테이블을 통해 1~3차 정규화를 수행해보자. 여러 기능을 하나의 테이블에 때려 박은 상태이기 때문에 중복 데이터가 많은 것을 확인할 수 있다. 또한 회원정보나 상품정보에 수정이 발생할 시 해당 데이터를 가지고 있는 모든 컬럼에 적용되어야 하는데, 그렇지 못하기.. 2019. 5. 3.
[SQL] 식별자의 정의와 종류(후보키, 기본키, 대체키, 복합키, 대리키) 식별자(Identifier)란? 한 실체(Entity)내에서 각각의 인스턴스를 유일하게 구분할 수 있는 단일 속성 또는 그룹 속성을 말한다. 실체 내에서 식별자에 동일한 값이 중복될 수 없으며, 이를 실체 무결성이라고 한다. 모든 Entity는 반드시 하나 이상의 식별자를 보유해야 하며 여러 개의 식별자를 보유하는 경우도 있다. 주로 이 식별자를 통해 해당 인스턴스의 구분이 가능해지며 검색이나 조인시 매우 중요하게 작용한다. 후보키(Candidate Key) 실체(Entity) 내에서 각각의 인스턴스를 유일하게 구분할 수 있는 속성으로, 하나 또는 여러 개의 속성으로 구성된다. 즉, 기본키(PK)가 될 수 있는 후보 속성이다. 아래의 예에서는 '사번'과 '주민번호'가 후보키에 해당한다. 기본키(Prima.. 2019. 4. 30.
[Oracle] 14. 트랜잭션과 잠금(Exclusive Lock, Share Lock, Dead Lock, Undo Segment) 트랜잭션(Transaction) 반드시 함께 실행되어야 하는 작업의 단위를 의미. 즉 사용자의 의도에 따라 여러 개의 문장으로 구성된 트랜잭션은 반드시 동시에 실행(COMMIT;)되거나 취소(ROLLBACK;)된다. RDBMS는 트랜잭션을 통해 작업의 단위를 결정함으로써 작업 결과의 신뢰성을 확보한다. 트랜잭션의 기본 과정은 다음과 같다. 1. DML(insert, update, delete), DDL(create, alter, drop, truncate), DCL(grant, revoke)문 실행 2. 입력된 행에 잠금이 걸림 3. COMMIT 또는 ROLLBACK 실행 4. 잠금 풀림 언두 세그먼트(Undo Segment) DML 작업이 발생할 때 그 작업을 취소(ROLLBACK;)시키기 위해서는 이.. 2019. 4. 26.
[Oracle] 13. 단일 행 서브쿼리, 다중 행 서브쿼리(IN, ANY, ALL) 서브쿼리(Sub Query)란? 하나의 쿼리에 의해 검색된 결과값이 또 다른 쿼리에 필요한 경우, 두 개의 쿼리문을 합해서 만들어지는 쿼리. 메인 쿼리문 내에 서브 쿼리문이 포함된다. 서브 쿼리문은 조건절인 WHERE절, HAVING절에 주로 쓰이며, FROM절에 쓰이는 경우에는 '인라인 뷰(Inline View)', SELECT절에 쓰이는 경우 '스칼라 서브 쿼리(Scala Sub Query)'라고 부른다. 서브 쿼리문을 괄호()로 반드시 감싸야 한다! SELECT [DISTINCT | ALL] 컬럼명, 컬럼명... FROM 테이블 WHERE 컬럼명 연산자 (Sub Query문) 단일 행 서브쿼리 서브쿼리 문장에서 단 하나의 행과 열을 검색하는 경우, 단일 행 연산자( (SELECT avr FROM s.. 2019. 4. 24.
[Oracle] 12. 다양한 변환함수(TO_CHAR, TO_DATE, TO_NUMBER) TO_CHAR 날짜와 숫자를 문자로 변환한다, 출력데이터 형식을 지정한다. TO_CHAR(날짜, 출력형식), TO_CHAR(숫자, 출력형식) TO_DATE 데이터를 날짜형으로 해석한다. TO_DATE(문자, 해석형식) TO_NUMBER 데이터를 숫자로 해석한다. 대부분의 경우 오라클의 자동형변환에 의해 숫자로 읽혀지므로 사용빈도가 낮다. SQL보다 PL-SQL에서 간혹 사용된다. 예제1) 현재 날짜를 다양한 형식으로 출력한다 SELECT TO_DATE(sysdate, 'YYYY/MM/DD') date1, TO_DATE(sysdate, 'YYYY/MM/DD:HH24:MI:SS') date2, TO_DATE(sysdate, 'YYYY/MM/DD:HH:MI:SS AM') date3 FROM dual; SELE.. 2019. 4. 23.