💡관계대수 관계대수(Relational Algebra)는 릴레이션에서 원하는 값을 얻기 위해 수학 연산을 이용해 질의하는 방법을 기술하는 언어이다. 관계대수는 수학 연산(+, -...)을 하는데, 피연산자가 테이블(릴레이션)이라는 점이 특징이다. 예를 들어서 A라는 테이블과 B라는 테이블이 있다고 할 때, 관계대수 연산을 이용하여 A테이블 + B테이블과 같이 더하는 작업을 할 수 있다. 💡관계대수 연산 관계대수 식에는 셀렉션, 프로젝션, 합집합, 교집합, 차집합, 카티션 프로덕션이 있다. 연산자 대상과 이름, 설명이 중요하며, 우리가 실제로 기호를 써가면서 표기할 일은 없다. 하나의 테이블을 가지고 연산을 하면 단항 연산, 두 개의 테이블을 가지고 연산을 하면 이항 연산이라고 부른다. 셀렉션과 프로젝션은..
💡키 데이터베이스에서 키(key)는 속성을 말한다. 관계형 DB에서 키는 특정 레코드를 구별할 때 사용하는 속성, 또는 속성의 집합이다. 아래 회원 테이블에는 총 5개의 속성이 있다. 이 속성 중에서 두 명의 사람을 구분할 수 있는 능력을 키라고 부른다. 회원 테이블에서 키는 번호가 사용될 수 있다. 이름, 주소, 취미, 나이는 키로 사용될 수 없다. 사용된 키가 또다른 테이블과 연관을 맺으면서 이때 키는 릴레이션의 관계를 만들 때에도 사용할 수 있다. 키는 각 튜플을 구분할 수 있는 유일한 도구이면서도 테이블을 연결해주는 도구로 쓰인다. 슈퍼키 슈퍼키(Super Key)는 튜플을 유일하게 식별할 수 있는 하나의 속성 또는 집합을 의미한다. 회원번호는 회원별로 회원을 식별할 수 있고, 주민번호도 유일하므..
💡릴레이션 릴레이션(Relation)은 행과 열로 구성된 테이블이다. 따라서 릴레이션이라고 하면 표를 떠올리면 된다. 이때 행과 열은 단순히 구조만 나타내는 게 아니라 서로 연관되어 있는데, 서로 관계있는 것들을 모아놓았기에 릴레이션이라는 표현을 사용한 것이다. 릴레이션 스키마와 인스턴스 회원 테이블에 주황색으로 컬럼이 정의되어 있다. 이를 스키마라고 한다. 스키마에 구성된 하나하나를 속성(어트리뷰트)라고 한다. 속성은 컬럼의 정보이다. 표의 행(레코드)에 데이터를 집어 넣는데, 이를 인스턴스라고 부르기도 하고, 이론적으로는 튜플이라는 표현을 쓰기도 한다. 튜블, 레코드, 로우, 인스턴스 이 말을 모두 같은 말이다. 어디에서 이 말을 만들어 냈는지에 대한 차이가 있을 뿐이다. 각 속성이 어떤 값을 가질 ..
💡형변환 함수 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를 문자형으로 변환하여 ..
💡문자열 함수 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 함수는 첫 문자를 대문자로 반환할 뿐 아니라, 첫 문자를 제외한 나머지 문자는 소문자로 변환한다. 마치 파스칼 표기법처럼 보이게 할 때 ..
💡숫자 함수 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() ..
💡dual 테이블 SELECT * FROM dual; dual 테이블은 시스템 테이블(오라클에서 만든 테이블)로, 컬럼이 하나뿐이다. dual은 1행 1열짜리 테이블이라는 것을 의미하며, 여기에 들어 있는 이 데이터는 아무 의미가 없다. dual 테이블의 사용 SELECT sysdate FROM tblinsa; sysdate는 날짜/시간을 출력한다. 그런데 특정 테이블에서 이를 출력하려고 하면 select 데이터의 개수만큼 출력이 된다. 이를 한 번 출력하려면 WHERE num = 1001; 을 붙여주어야 한다. 이럴 때 사용할 수 있는 게 dual 테이블이다. SELECT sysdate FROM dual; 원하는대로 날짜가 한 번만 출력된 것을 확인할 수 있다. 이처럼 dual 테이블의 행이 하나라는 ..
💡집계 함수 집계 함수(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..