KH/Oracle 20

[Oracle] ROWNUMBER, ROW_NUMBER() OVER / 조회 순번 매기는 방법

아래의 MP_BOARD 테이블을 기준으로 설명 ROWNUM 사용 SELECT ROWNUM , A.* FROM MP_BOARD A ; 단순히 조회된 행에 ROWNUM 열 번호를 붙인다. SELECT ROWNUM , A.* FROM (SELECT * FROM MP_BOARD ORDER BY BNO DESC )A; 출력하고자 하는 열을 FROM절 안에서 원하는 대로 정렬을하고, 예시에서는 BNO 의 내림차순으로 정렬을 하고 정렬을 한 데이터에 대하여 ROWNUM 을 부여하였다. ROW_NUMBER( ) 사용 select row_number() over(order by a.bno) row_num, a.* from mp_board a; over() 내부에 row_number()를 줄 기준을 정한다. 예시에서는 b..

KH/Oracle 2022.12.06

# 19 USER 계정 생성

사용자 오라클 데이터베이스를 활용하여 새로운 서비스를 구축한다면 테이블을 비롯한 여러 객체가 필요할 것이다. 지금까지 사용한 scott 계정은 오라클사에서 제공하는 계정으로 보안의 문제가 있다. 따라서 scott 계정 이외에 오라클 데이터베이스에 접속 할 수 있는 새로운 계정이 필요하다. 이렇게 오라클 데이터 베이스에서는 데이터베이스에 접속하여 데이터를 관리하는 계정을 USER(사용자) 라고 표현한다. 데이터베이스 관리자 사용자가 데이터베이스의 객체에 대한 특정 권한을 가질 수 있도록 한다. 다수의 사용자가 데이터베이스에 저장된 정보를 궁유하면서도 정보에 대한 보안이 이루어지도록 한다. 데이터베이스에 접근하기 위해서는 사용자가 이름과 암호를 입력해서 로그인이 이루어 지도록한다. 사용자마다 서로 다른 권한..

KH/Oracle 2022.09.05

# 18 on delete cascade & on delete set null

create table emp_test2( id VARCHAR(20), name VARCHAR2(20) not null, kor number(7,2) DEFAULT 0.0, CONSTRAINT id_pkkk_test PRIMARY key(id)); create table emp_kor2( id VARCHAR(20), total number(7,2), avg number(8,3), constraint id_ffkk_test foreign key(id) REFERENCES emp_test2(id)); emp_test2 emp_kor2 delete from emp_test2 where id='king_4'; 프라이머리키를 삭제하려고 하면 이를 참조하는(외래키로 사용하는) 자식 레코드가 있기때문에 삭제가 불가능..

KH/Oracle 2022.09.02

# 17 SEQUENCE (시퀀스)

SEQUENCE (시퀀스) : 시퀀스는 오라클 데이터베이스에서 특정 규칙에 맞는 연속 숫자를 생성하는 객체이다. 은행이나 병원의 대기 순번표와 마찬가지로 번호를 사용해야 하는 사용자에게 계속 다음 번호를 만들어주는 역할을한다. 단지 연속하는 새로운 번호를 만드는 일이라면 MAX 함수에 1을 더하는 값을 사용해도 상관 없을 것이다. SELECT MAX(글번호)+1 FROM 게시판이름 ; 하지만 이 방식은 테이블 데이터가 많아 질수록 가장 큰 데이터를 찾고 새로운 번호를 계산하는 시간이 함께 늘어나므로 아쉬운 부분이 된다. 또한 동시에 여러곳에서 새로운 번호를 요구했을때 SELECTE문의 결과 값이 같게 나와 번호가 중복 될 수도 있다. 이와 비교해서 시퀀스는 단순히 번호 생성을 위한 객체이지만 지속적이고 ..

KH/Oracle 2022.09.02

# 16 Transaction (트렌젝션)

Transaction 데이터베이스에서 트랜젝션이란 데이터 처리의 한 단위를 말한다. 오라클에서 발생하는 여러 개의 SQL 명령문을 하나의 작업 단위로 처리하는데 이를 트랜젝션이라고 한다. 트랜잭션은 '하나의 논리적인 작업 단위로 수행되는 일련의 작업으로 정의한다. 트랜잭션은ACID라고 불리는 특성이 있다. ACID Atomicity (원자성) 트랜잭션은 분리 할 수 없는 하나의 단위이다. 작업이 모두 수행되거나 하나도 수행되지 않아야 한다. All or Nothing Consistency (일관성) 트랜젝션에서 사용되는 모든 데이터는 일관되어야 한다. Isolation (격리성 / 독립성) 현재 트랜젝션에서 접근하고 있는 데이터는 다른 트렌젝션으로 부터 격리되어야한다. 트랜잭션이 일어나면 완료되기 전까지..

KH/Oracle 2022.09.01

# 15 DML- insert, update,delect

DML- (Data Manipulation Language) - 테이블의 내용을 추가(insert), 수정(update),삭제(delect) 하는 테이블 내의 데이터를 조작하는 언어이다. INSERT 테이블에 새로운 로우(행)를 추가할때 사용하는 SQL문이다. 테이블에 새로운 데이터를 입력하기 위해 사용하는 데이터 조작어이다. 테이블의 모든 컬럼에 입력하는 경우 컬럼 목록을 기술하지 않아도 된다. 컬럼 목록이 생략되면 VALUES절의 다음 값들이 테이블의 기본 컬럼 순서대로 입력된다. 형식 1. INSERT INTO 테이블명(컬럼명 , , , ) VALUES(컬럼값 , , , ) 2. INSERT INTO 테이블명 VALUES[값] ; //테이블명에 있는 컬럼들의 순서와 똑같은 순서로 값이 들어올때사용 ..

KH/Oracle 2022.08.31

# 14 SET UNSED

SET UNUSED : SET UNUSED 는 사용을 논리적으로 제한 할뿐 살제로 삭제는 안함. 이후 DROP UNUSED COLUMNS로 삭제함 컬럼을 삭제하지는 않지만, 컬럼의 사용을 논리적으로 제한할 수 있는 옵션이다. 하나의 데이터를 여러 사용자가 사용하기 때문에 무조건 삭제하는 것은 위험하다. SET UNUSED 옵션을 사용하는경우 : 테이블에서 저장된 내용이 많을 경우 해당 테이블에서 컬럼을 삭제하려면 꽤 오랜 시간이 소요된다. 그러므로 칼럼을 삭제하는 동안 다른 사용자가 해당 컬럼을 사용하려고 하면 테이블이 사용되고 있기 때문에 다른 사용자는 해당 테이블을 이용 할 수 없다. 이럴 경우 작업이 원활하게 진행되지 않고 LOCK(락)이 발생한다. SETUNUSED 옵션은 컬럼의 사용을 논리적으로..

KH/Oracle 2022.08.30

# 13 DDL -CREATE,DROP,RENAME,ALTER,TRUNCATE , ROWID

DDL (Data Definition Language) : 데이터 정의어, 테이블 구조 생성, 변경 및 삭제 CREATE 데이터 베이스 객체를 생성 DROP 데이터 베이스 객체를 삭제 RENAME 데이터베이스의 이름을 변경 ALTER 기존에 존재하는 데이터베이스 객체를 다시 정의 TRUNCATE 테이블을 최초 생성 상태로 만들며 ROLLBACK 불가능 CREATE,ALTER,DROP,RENAME,TRANCATE 등 DDL을 사용하면 자동 COMMIT이 적용된다. (자동 적용) CREATE TABLE : 새로운 테이블을 생성한다. CREATE TABLE table_name( 컬럼명1 데이터타입, 컬럼명2 데이터타입, ........... ) ; [ 식별자 ] 반드시 문자로 시작해야한다. 오라클에서 사용되는..

KH/Oracle 2022.08.30

# 12 SUB QUERY(서브 쿼리) , ROWNUM

SUB QUERY(서브 쿼리) : 서브 쿼리는 하나의 select 문장의 안에 포함된 또 하나의 select 문이다. 그렇기 때문에 서브 쿼리문을 포함하고 있는 쿼리문을 메인쿼리, 포함된 또 하나의 쿼리문을 서브 쿼리라고 한다. 서브쿼리는 비교 연산자의 오른쪽에 기술해야 하고 반드시 괄호 안에 넣어야 한다. 서브 쿼리는 메인 쿼리가 실행되기 전에 한 번만 실행된다. (예) 'JONES'의 부서명을 출력하시오 방법 1 >> select deptno from emp where ename='JONES'; // deptno 20을 구해서 아랫 문장에 넣어줌 select dname from dept where deptno=20 ; 방법 2 (조인 방법) >> select e.ename, e.deptno, d.dn..

KH/Oracle 2022.08.29

# 11 JOIN

JOIN 여러테이블에 흩어져 있는 정보 중에서 사용자가 필요한 정보만 가져와서 가상의 테이블 처럼 만들어서 결과를 보여준다. : 관계형 데이터 베이스는 두개 이상의 테이블에 정보가 나누어져 있다. 중복해서 데이터를 저장하는 것을 지양하기 때문이다. 각각의 테이블에 분리 되어 있는 연관성 있는 데이터들을 연결하거나 조합하여 데이터를 사용 할 수 있다면 중요한 정보로서 가공될 수 있으며 이런 작업들을 JOIN 이라고 한다. 여러테이블에 흩어져 있는 정보 중에서 사용자가 필요한 정보만 가져와서 가상의 테이블 처럼 만들어서 결과를 보여준다. 종류 의미 Equl Join 동일 컬럼을 기준으로 조인 Non_Equl Join 동일 컬럼이 없이 다른 조건을 사용하여 조인 Outer Join 조인 조건에 만족하지 않은 ..

KH/Oracle 2022.08.26