Programming/Oracle

[Oracle] 연산자: 산술, 문자열, 비교, 대입, SQL

Isaac S. Lee 2023. 8. 28. 10:51

💡산술 연산자


SQL에서는 +, 0, *, / 기호를 사용할 수 있다.

% 기호는 없으므로 나머지를 구하는 작업은 mod() 함수를 사용하여 계산한다.

select * from tblCountry;

 

산술 연산자의 사용

select
    population,
    area,
    population + area,
    population - area,
    population * area,
    population / area
from tblCountry;

 

💡문자열 연산자


자바는 문자열과 문자열을 합하는 연산자가 있었다. 그러나 SQL에서는 +가 아니라 || 기호를 사용하여 문자열을 합할 수 있다.

SELECT name, couple, name + couple FROM tblMen;
ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    The specified number was invalid.
*Action:   Specify a valid number.

 

문자열 연산자의 사용

SELECT name, couple, name || couple FROM tblMen;

 

💡비교 연산자


SQL에는 boolean이 없으므로 명시적으로 표현이 불가능하다.

즉 조건이 필요한 상황에서만 사용이 되고, 시각적으로 보이는 작업에 사용할 수 없다.

컬럼 리스트에서 사용할 수 없고, 조건절에서 사용하며 논리값을 반환한다.

SELECT height, weight, height > weight FROM tblMen;
ORA-00923: FROM keyword not found where expected
00923. 00000 -  "FROM keyword not found where expected"
*Cause:    
*Action:
46행, 31열에서 오류 발생

 

비교 연산자의 사용

SELECT height, weight FROM tblMen WHERE height > weight;

 

💡대입 연산자


컬럼 = 값

대입 연산자는 어떤 값을 컬럼에 대입할 때 사용한다.

 

💡SQL 연산자


SQL연산자는 in, between, like, is 등이 있다.

어디에서는 연산자, 어디에서는 절, 구 등 부르는 표현이 통일되어 있지 않다는 특징이 있다.

공식 문서에서는 이를 독립적으로 표현할 뿐, 미사여구로 특정해놓지 않았다.

 

AS (Alias)

SELECT name, age, age - 1 FROM tblMen;

수많은 데이터를 제대로 관리하기 위해서는 컬럼의 이름을 명확하게 정의하고 있어야 한다.
컬럼의 이름을 정확히 정의해야 하는 이유는 어떤 성질의 데이터라는 것을 알아야 데이터를 컨트롤 할 수 있기 때문이다.
컬럼명은 식별자이므로 알기 쉽게 컬럼명을 수정해야 한다. 이때 사용할 수 있는 게 AS 연산자이다.

 

컬럼의 별칭

SELECT name, age, age - 1 AS 나이 FROM tblMen;

AS(Alias)는 컬럼의 별칭이라고 한다. 이처럼 컬럼은 언제든지 이름을 바꿀 수 있다.
컬럼의 별칭은 되도록 가공된 컬럼에 적용하는 게 좋다.

컬럼명이 식별자로 적합하지 않을 때 이처럼 적합한 식별자로 수정할 목적으로 사용할 수 있다.

 

식별자에 공백 사용

SELECT
    name AS 이름,
    age,
    age - 1 AS 나이,
    length(name) AS 길이,
    couple AS 여자 친구
FROM tblMen;
ORA-00923: FROM keyword not found where expected
00923. 00000 -  "FROM keyword not found where expected"
*Cause:    
*Action:
85행, 106열에서 오류 발생

'여자 친구' 에는 공백이 들어가 있기 때문에 오류가 발생한다.

예약어, 키워드 등 식별자가 될 수 없는 이름을 식별자로 쓰려고 할 때 ""을 쓸 수 있다.

 

SELECT
    name AS 이름,
    age,
    age - 1 AS 나이,
    length(name) AS 길이,
    couple AS "여자 친구"
FROM tblMen;

""로 묶으면 사용할 수는 있지만, 이런 방법은 지양하는 것이 좋다.

 

테이블의 별칭

SELECT * FROM tblMen t;

컬럼뿐만 아니라 테이블에도 별칭을 붙일 수 있다.

이때는 AS를 사용하지 않는다.

테이블의 별칭은 개발자가 가독성을 높이고 편하게 하려고 할 때 사용한다.

 

SELECT tblMen.name, tblMen.age, tblMen.height, tblMen.weight, tblMen.couple FROM tblMen;
SELECT m.name, m.age, m.height, m.weight, m.couple FROM tblMen m;

의미를 알아보지 못하는 건 중요하지 않다. 테이블의 별칭은 최대한 한 글자로 작성한다.

각 절의 실행 순서가 FROM절 > SELECT절이라고 했다.

FROM절부터 시작하기 때문에 사전에 테이블 별칭을 정의하는 게 가능하다.