Notice
Recent Posts
Recent Comments
05-17 21:28
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

Database Management - OracleDB 기본컨벤션 본문

BackEnd/Database Management

Database Management - OracleDB 기본컨벤션

알 수 없는 사용자 2023. 5. 2. 16:09

이 포스트는 OracleDB의 트랜잭션 작성에 있어 방법을 알려줍니다.

 

우선 쿼리를 작성하는데 있어 다음과 같은 사항들을 기반으로 하고 간다.

  • 하나의 쿼리는 하나의 ;로 쿼리의 종료를 알려줘야 한다.
  • 성능을 고려한 쿼리를 작성해야 한다. (나중에 다룹니다.)
  • 데이터 형식에 유의한 쿼리 작성
  • 보안을 고려한 쿼리 작성
  • 쿼리 실행 계획 분석 : 최적화 단계에서 생성되는 실행 계획을 분석하는 것을 말함.(explain plan 명령어를 사용한다.)
  • 쿼리 결과를 적절히 처리
  • 각 공동체의 쿼리 작성 규칙 준수

 

Case-Insensitive

SQL은 기본적으로 대소문자 구분에 크게 민감하지 않다.

Select * from dual;
select * From dual;
SELECT * FROM dual;

위 세 쿼리는 전부 동일한 쿼리이다.

 

Literal(Values/Constants)

상수값에 대해서는 case-sensitive하다. 또한 상수값은 single quotes로 감싸야 한다.

'abc' / 'ABC'
"abc" (x)

 

Object Alias

 Object들에 대해서는 Reserved Keyword(예약어)를 사용하면 안된다. 하지만 굳이 사용해야 된다면, double quote로 묶어서 선언을 할 수 있다. 이는 Attribute도 동일하다. 예제는 다음과 같다.

create table "select" (
    "from" integer not null
);

insert into "select"("from") values (1);

select * from "select" where "from" = 1;

 별칭을 지정하는 것은 다음과 같다.

select expenditure as exp -- output으로 보여질 컬럼이며, 이는 쿼리 내부에서 다시 사용은 안된다.
from customer c1 -- 테이블에 대한 별칭은 as를 붙이지 않으며, 이는 해당 쿼리 내에서 다시 사용가능하다.

select p1.pack_id, p1.speed, p1.monthly_payment
from acdb_packages p1
where not exists(
    select 1
    from acdb_packages p2
    where p2.speed = '5Mbps' and p1.monthly_payment <= p2.monthly_payment
);

 

Attribute

 기본적으로 테이블의 속성들은 NULL을 가질 수 있게 설계되어 있다. 따라서 해당 NULL 값을 고려한 쿼리 작성이 중요하다. 또한 Attributes들에 제약 조건들을 잘 설정해야 데이터의 신뢰성을 확보할 수 있다.

Comments