SQL

Programming/Oracle

[Oracle] 관계대수 (Relational Algebra)

💡관계대수 관계대수(Relational Algebra)는 릴레이션에서 원하는 값을 얻기 위해 수학 연산을 이용해 질의하는 방법을 기술하는 언어이다. 관계대수는 수학 연산(+, -...)을 하는데, 피연산자가 테이블(릴레이션)이라는 점이 특징이다. 예를 들어서 A라는 테이블과 B라는 테이블이 있다고 할 때, 관계대수 연산을 이용하여 A테이블 + B테이블과 같이 더하는 작업을 할 수 있다. 💡관계대수 연산 관계대수 식에는 셀렉션, 프로젝션, 합집합, 교집합, 차집합, 카티션 프로덕션이 있다. 연산자 대상과 이름, 설명이 중요하며, 우리가 실제로 기호를 써가면서 표기할 일은 없다. 하나의 테이블을 가지고 연산을 하면 단항 연산, 두 개의 테이블을 가지고 연산을 하면 이항 연산이라고 부른다. 셀렉션과 프로젝션은..

Programming/Oracle

[Oracle] 형변환 함수

💡형변환 함수 to_char(숫자): 숫자를 문자로 변환 to_char(날짜): 날짜를 문자로 변환 to_number(문자): 문자를 숫자로 변환 to_date(문자): 문자를 날짜로 변환 숫자형과 문자형, 무엇이 다를까? SELECT weight, to_char(weight), length(to_char(weight)), --같은 구문 length(weight), --같은 구문 substr(weight, 1, 1), weight || 'kg' FROM tblcomedian; 숫자형인 경우 왼쪽 상단에 '123', 문자형인 경우 'ABC'가 있는 것을 확인할 수 있다. 그리고 숫자는 우측 정렬, 문자는 좌측 정렬이 되어 있다. length가 암시적인 형변환으로 숫자형인 weight를 문자형으로 변환하여 ..

Programming/Oracle

[Oracle] 문자열 함수: upper(), lower(), initcap(), substr(), length(), instr(), lpad(), rpad(), trim(), ltrim(), rtrim(), replace(), decode()

💡문자열 함수 upper(), lower(), initcap() varchar2 upper(컬럼) varchar2 lower(컬럼) varchar2 initcap(컬럼) upper, lower, initcap 함수는 대소문자 반환 함수라고 한다. 위 함수는 주로 검색에 사용한다. upper, lower, initcap 함수의 사용 SELECT first_name, upper(first_name), lower(first_name) FROM employees; SELECT 'abc', initcap('abc'), initcap('aBC') FROM dual; initcap 함수는 첫 문자를 대문자로 반환할 뿐 아니라, 첫 문자를 제외한 나머지 문자는 소문자로 변환한다. 마치 파스칼 표기법처럼 보이게 할 때 ..

Programming/Oracle

[Oracle] 숫자 함수: round(), floor(), trunc(), mod()

💡숫자 함수 round() number round(컬럼명): 정수 반환 number round(컬럼명, 소수 이하 자릿수): 실수 반환 round 함수는 반올림을 해주는 함수이다. round 함수의 사용 SELECT 3,5678, round(3.5678), round(3.5678, 0), round(3.5678, 1), round(3.5678, 2) FROM dual; 원하는 자릿수의 반올림된 값을 확인할 수 있다. round의 소수 이하 자릿수를 지정하지 않자 실수가 정수로 반올림되어 출력되었다. SELECT round(avg(basicpay)) FROM tblinsa; --1556527 소수 이자 자릿수가 긴 값의 경우 round 함수를 이용해 깔끔하게 출력할 수 있다. floor(), truc() ..

Programming/Oracle

[Oracle] dual 테이블

💡dual 테이블 SELECT * FROM dual; dual 테이블은 시스템 테이블(오라클에서 만든 테이블)로, 컬럼이 하나뿐이다. dual은 1행 1열짜리 테이블이라는 것을 의미하며, 여기에 들어 있는 이 데이터는 아무 의미가 없다. dual 테이블의 사용 SELECT sysdate FROM tblinsa; sysdate는 날짜/시간을 출력한다. 그런데 특정 테이블에서 이를 출력하려고 하면 select 데이터의 개수만큼 출력이 된다. 이를 한 번 출력하려면 WHERE num = 1001; 을 붙여주어야 한다. 이럴 때 사용할 수 있는 게 dual 테이블이다. SELECT sysdate FROM dual; 원하는대로 날짜가 한 번만 출력된 것을 확인할 수 있다. 이처럼 dual 테이블의 행이 하나라는 ..

Programming/Oracle

[Oracle] 집계 함수: count(), sum(), avg(), max(), min()

💡집계 함수 집계 함수(Aggregation Function)는 여러 행 또는 테이블 전체 행으로부터 결괏값을 반환하는 함수를 의미한다. 집계 함수 사용시 주의할 점 1. SQL Error [937] [42000]: ORA-00937: not a single-group group function SELECT count(*) FROM tblInsa; --직원수 SELECT name FROM tblInsa; --직원명 SELECT count(*), name FROM tblInsa; 위와 같은 데이터가 있다는 가정 하에 직원들 이름과 총 직원수를 동시에 가져오려고 할 때, 에러가 발생했다. 에러는 싱글 그룹 함수가 아니라는 메시지가 출력되었다. 이런 에러가 발생하는 이유는 컬럼 리스트에서는 집계 함수(coun..

Programming/Oracle

[Oracle] SELECT문: ORDER BY절

💡ORDER BY절 [WITH ] SELECT column_list FROM table_name [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression [ASC|DESC]] SELECT 컬럼리스트: 3. 컬럼 지정 (보고 싶은 컬럼만 가져오기) > Projection FROM 테이블: 1. 테이블 지정 WHERE 조건: 2. 조건 지정 (보고 싶은 행만 가져오기) > Selection ORDER BY 정렬기준: 4. 순서대로 정렬 ORDER BY절의 사용 order by 컬럼명 [ASC|DESC] order by절은 위와 같은 형태로 작성하며, 생략할 경우 ASC로 ..

Programming/Oracle

[Oracle] SELECT문: WHERE절

💡WHERE절 [WITH ] SELECT column_list FROM table_name [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression [ASC|DESC]] SELECT 컬럼리스트: 3. 컬럼 지정 (보고 싶은 컬럼만 가져오기) > Projection FROM 테이블: 1. 테이블 지정 WHERE 조건: 2. 조건 지정 (보고 싶은 행만 가져오기) > Selection WHERE은 조건을 가지고 있는 절이다. SELECT절에는 실행순서가 정해져 있는데, 이때 실행순서는 코딩 순서가 아니라 FROM(1) > WHERE(2) > SELECT(3) 순서이다. W..

Isaac S. Lee
'SQL' 태그의 글 목록 (7 Page)