DataBase/Oracle
-
SQL - 서브쿼리DataBase/Oracle 2023. 8. 31. 12:46
1. 서브쿼리란? - 서브쿼리는 SQL문을 실행하는 데 필요한 데이터를 추가로 조회하기 위해 SQL문 내부에서 사용하는 SELECT문이다. - 서브쿼리 값을 사용하여 기능을 수행하는 영역은 메인쿼리라고 부릅니다. SELECT 조회할 열 FROM 조회할 테이블 WHERE 조건식 (SELECT 조회할 열 FROM 조회할 테이블 WHERE 조건식) -- 가장 빈번하게 사용되는 패턴 ex) 'JONES'의 최고 급여가 2975일때 이것보다 더 높은 급여를 받는 사원 정보 출력 SELECT ENAME, SAL FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME = 'JONES') *중요한 것은 필요한 조건을 어떤 서브쿼리(SELECT)를 통해 나누어 처리할 지를 결정하..
-
SQL - 조인DataBase/Oracle 2023. 8. 30. 17:27
1. 조인 - 집합연산자와 차이점: 집합 연산자는 SELECT의 결과를 세로로 연결한 것, 조인은 두 개 이상의 테이블을 가로로 연결 - 여러 테이블을 사용할 때 from절: - FROM절에는 여러 테이블을 지정하는 것이 가능하다 .(,로구분) (크로스조인, 카테시안곱) - 정확히는 열과 행으로 구성된 데이터 집합이면, 모두 FROM절에 지정가능(뷰,시퀀스) - 조인 조건이 없는 경우 문제점: - 결과로 나올 수 있는 모든 행을 조합함 ( A: 1,2 행 B: 1,2 행 > (11,12,21,22) ) - 따라서 정확한 데이터 함께 출력됨 - 조인할 테이블이 많아질 수록 정확한 데이터 뽑아내기 위해 고민을 많이 하자 (WHERE가 많은 역할을 해준다!) --크로스 조인 where 조건절 SELECT * ..
-
SQL - 다중행 함수DataBase/Oracle 2023. 8. 30. 16:13
1. 하나의 열에 출력 결과를 담는 다중행 함수 > 그룹 함수 또는 복수행 함수로 불림 > 여러행을 가지고 계산한 결과를 하나의 행으로 return > 다중행 함수를 사용한 SELECT절에는 기본적으로 여러 행이 결과로 나올 수 있는 열을 함께 사용 불가 * MYSQL과 MARIADB에선 가능 -> 가장 위에 있는 값 그냥 붙여줌 - SUM,COUNT,MAX,MIN,AVG > SUM: null값 제외 DISTINCT 중복 제외 > COUNT: *(null포함 행의 수 ), 특정 열(null제외), DISTINCT > MAX,MIN: 날짜데이터에서 날짜가 최근에 가까울 수록 큼 > AVG : 평균 DISTINCT 가능 *NULL값을 제외하는 특징이 있음으로, sum이나 AVG 구할 때 null처리 해야함에..
-
오라클 SQL - 단일행함수DataBase/Oracle 2023. 8. 30. 12:30
함수의 종류는 내장함수와 사용자 정의함수로 나눌 수 있다. 내장 함수 : 단일행함수: 데이터가 한 행씩 입력되고, 한 행당 결과가 하나씩 나옴 다중행함수: 여러 행이 입력되어 하나의 행으로 결과가 반환되는 함수 -> 다루는 자료형에 따라 조금 세분화된다. 1. 단일행 함수들 1.1 문자함수: UPPER,LOWER,INITCAP(첫글자만 대문자) SELECT ENAME, UPPER(ENAME), LOWER(ENAME), INITCAP(ENAME) FROM EMP; *SQL문은 대소문자 구분하지 않지만, 데이터는 대소문자를 구분한다. - 문자열길이 LENGTH ,LENGTHB(바이너리 크기 반환) - 문자열 일부 추출: SUBSTR (문자열데이터, 시작위치,추출길이) - 특정 문자 위치 검색(INDEX OF..
-
2. SQL - 조회DataBase/Oracle 2023. 8. 29. 21:22
- SELECT문 기본 형식 1. 데이터를 조회하는 3가지 방법 (셀렉션,프로젝션,조인) - 셀렉션(행단위 조회) - 프로젝션(열단위 조회) - 조인(두 개 이상의 테이블 사용) 2. SQL의 기본 뼈대, SELECT와 FROM SELECT 칼럼명 FROM 테이블명 DISTINCT -> 중복데이터 제거 ALL -> 모두 출력 (default) SELECT DISTINCT EMPTNO FROM EMP; SELECT DISTINCT JOB,DEPTNO FROM EMP; SELECT ALL JOB, DEPTNO FROM EMP; - alias 설정 - ORDER BY SELECT * FROM EMP ORDER BY SAL; SELECT * FROM EMP ORDER BY DEPTNO ASC, SAL DESC;..
-
Seed PDB를 이용한 Pluggable 데이터 베이스 생성, 사용자 생성DataBase/Oracle 2023. 6. 29. 23:08
- DB가 있고, DB에 자원을 공유하는 작은 가상화된 DB를 생성하는 거이다. * 오라클을 통해 그냥 DB를 사용할 수도 있지만, DB가 잘못되면, 아예 다시 DB를 새로 깔아야한다. 가상화된 복사본 DB를 사용하면, 그냥 새로운 복사본만 만들면된다. -> 가상화하면 관리가 편하다. - 처음에 접속한 DB는 CDB (Root DB)이다. - CDB의 자원을 공유하는 가상화 DB를 사용하자. - Seed는 일종에 가상화 DB를 만들기 위한 템플릿이다. XEPDB는 Seed를 통해 생성된 기본 Pluggable DB sql plus로 다음과 같은 쿼리를 작성하면 seed와 xepdb를 볼 수 있다. -sql developer에서 XEPDB1 서버 접속 +눌러서 다음과 같이 설정하면 된다. * CDB와 PD..
-
데이터 베이스와 DBMS 개요DataBase/Oracle 2023. 6. 29. 22:21
> SQL- DBMS에게 질의하는 명령어 질의 - 무엇을? -> 구조화된 데이터들을 DBMS -> 데이터 베이스 관리 시스템 데이터 베이스와 DBMS의 개요 > 로컬서버에 DB가 따로 존재한다고 생각해보자 다음과 같은 문제점이 발생한다. - 데이터 중복이 심하다. - DB 갱신의 문제 - 각 로컬에서 갱신된 DB를 로컬별로 씽크작업이 필요해진다. - 갱신 중 각 DB는 상이한 데이터를 가지고 있을 것, 싱크작업 중 DB에 결함이 발생할 수 있다. --> DB를 한 곳에 두고, 중복을 없애는 방향으로 테이블을 쪼개자!, 각 테이블 별 참조는 관계형으로! > 로컬 단위로 DB를 가지고 있었을 때 발생하는 문제점을 일부 해결했지만, 위와 같은 방식도 단점이 존재함 -> 유효한 데이터를 위한 테이블 참조의 과정..