본문 바로가기

데이터베이스(DB)/Oracle
(32)
[Oracle]식별자 //식별자 정리 - 현재 접속중인 계정명은 생략 가능하다. select * from tblInsa; -- 생략 select * from hr.tblInsa; -- 계정명(스키마).테이블명 - 하나의 select문일 때 컬럼명에서 테이블명은 생략 가능하다. select name, buseo from tblInsa; -- 생략 select hr.tblInsa.name, hr.tblInsa.buseo from hr.tblInsa; -- 계정명(스키마).테이블명 - 와일드카드(*)와 다른 컬럼을 동시에 가져오는 방법 select tblInsa.*, sysdate from tblInsa; -- 테이블명.* - 테이블 별칭 - 최대한 줄여서, 보통 알파벳 1글자로 적는다. select i.*, sysdate fro..
[Oracle] 시퀀스(Sequence) //시퀀스, Sequence - 데이터베이스 객체 중 하나 - 오라클 전용 객체(다른 DBMS에는 없음) - 일련 번호를 생성하는 객체**** - (주로) 식별자를 만드는 용도로 많이 사용한다. > PK 컬럼에 일련 번호를 넣을 때 많이 사용한다. - 시퀀스 객체 생성하기 - create sequence 시퀀스명 [옵션]; - 시퀀스 객체 삭제하기 ~ drop sequence 시퀀스명; - 시퀀스 객체 사용하기 ~ 시퀀스명.nextVal - 시퀀스 객체가 숫자를 만드는 함수 - 호출할 때마다 숫자 증가 - 주로 사용 ~ 시퀀스명.currVal - 시퀀스 객체가 마지막에 만든 숫자를 확인하는 함수 - 호출할 때마다 숫자 증가X - 로그인을 한 뒤 (접속) 최소 1회 이상 nextVal를 호출하고 난 뒤에만..
[Oracle] 제약사항 //제약 조건(제약 사항), Constraint - 해당 컬럼에 들어갈 데이터(값)에 대한 조건 - 조건을 만족하면 > 대입 - 조건을 불만족하면 > 에러 발생 - 유효성 검사 도구 - 데이터베이스 > 데이터 관리 > 무결성을 보장하는 도구 1. NOT NULL ~ 컬럼명 자료형(길이) not null - 해당 컬럼이 반드시 값을 가져야 한다. - 해당 컬럼에 값이 없으면 에러 발생 - SQL은 빈문자('')도 null로 취급한다. 2. PRIMARY KEY, PK ~ 컬럼명 자료형(길이) primary key - 기본키 - 테이블에서 행과 행을 구분하기 위한 수단 > 제약 - 행을 식별하는 대표 컬럼을 지정하는 역할 - 모든 테이블은 반드시 1개의 기본키가 존재해야 한다.★★★★★★ - 중복값을 가질 ..
[Oracle] 뷰(VIEW) //뷰, VIEW - 개념적인(논리적인) 데이터 구조 - 쿼리 문장을 뷰로 정의해서 사용하면 간단하게 사용할 수 있다. - 데이터베이스 객체 중 하나 - 가상 테이블, 뷰 테이블 등.. - 테이블처럼 사용한다.★★★★ - SQL을 저장한 객체(select 결과셋 데이터를 저장한 객체X / select문을 저장한 객체 O) - 호출될 때마다 저장된 SQL이 실행된다.(실시간 가상 테이블) - 2개 이상의 테이블을 사용해서 생성 가능 > 복합뷰 - ★★★★★읽기 전용 테이블(insert, update, delete도 실행은 되지만 절대 사용 금지!!) - 역할(목적) 1. 쿼리 단순화 > 가독성 향상 2. 보안 관리 3. 쿼리를 다른 사용자(hr 등)과 공유 4. 재사용 create view 뷰명 as se..
[Oracle] 유니온(UNION) // 유니온, UNION - JOIN이 서로 관련 있는 것들을 합친 거라면, UNION은 관련이 없어도 된다. - 조건: 스키마가 동일해야 한다. - 중복은 제거한다. (합집합) ※ UNION ALL : 중복 포함 - UNION SELECT ID, NAME FROM MEMBER UNION SELECT WRITER_ID, TITLE FROM NOTICE; select * from tblUnionA union select * from tblUnionB; - UNION ALL SELECT ID, NAME FROM MEMBER UNION ALL SELECT WRITER_ID, TITLE FROM NOTICE; select * from tblUnionA union all select * from tblUnionB..
[Oracle] 조인(JOIN) // JOIN - (서로 관계를 맺은) 2개(1개) 이상의 테이블을 사용해서 1개의 결과셋을 만드는 연산 - 테이블A + 테이블B = 테이블C 1. CROSS JOIN 2. INNER JOIN 3. OUTER JOIN 4. SELF JOIN // CROSSJOIN - 카티션곱, 데카르트곱 - A 테이블 레코드 개수 X B 테이블 레코드 개수 = 결과셋 레코드 개수 - A 테이블 컬럼 개수 + B 테이블 컬럼 개수 = 결과셋 컬럼 개수 - 쓸모가 없다. > 가치 있는 행과 가치 없는 행이 섞여 있음. - 개발용, 테스트용으로 사용 > 유효성과 상관 없이 다량의 데이터를 만들 때 select 컬럼리스트 from 테이블A cross join 테이블B > ANSI-SQL(표준 SQL) > 권장 select 컬럼..
[Oracle] 서브 쿼리 // 서브쿼리 - 하나의 문장(select|insert|update|delete) 안에 또다른 문장(select)이 들어있는 쿼리 - 삽입 위치 > 거의 대다수의 절(select절, from절, where절 :: group by절, having절, order by절 - 장점 1. 2개의 SQl을 1개의 SQL로 줄일 수 있다. 2. 변화에 강하다.(변하는 값을 실시간으로 적용할 수 있음.) > 개발자 편의성 향상 - tblCountry. 인구수가 가장 많은 나라의 이름 select name from tblCountry where population = (select max(population) from tblCountry); - tblComedian. 체중이 가장 많이 나가는 사람 select * fro..
[Oracle] 순위 함수 //순위 함수 - ROWNUM의 사용을 여러 가지 용도로 구현해놓은 함수 - where절에 사용할 수 없다. > 사용하려면 서브쿼리를 사용해야 함. // RANK() OVER() : - 정렬 후 ROWNUM을 붙일 수 있게 해주는 함수 - 순위 부여 시, 중복값이 발생하면 동일한 순위를 부여하고, 중복값의 개수만큼 건너뛴다. rank() over(order by 컬럼명 [asc|desc]); SELECT RANK() OVER (ORDER BY AGE) , ID, NAME, BIRTHDAY, PHONE, REGDATE, AGE FROM MEMBER; select name, buseo, basicpay, rank() over(order by basicpay desc) from tblInsa; // DENSE..