Database - Oracle DB 21

[SQL] DB 스터디 - 08

DDL문을 사용하여 테이블 생성 및 관리 1. 데이터베이스 객체- 테이블 : 기본 저장 단위, 행으로 구성 됨- 뷰 : 하나 이상의 테이블에 있는 데이터의 부분 집합을 논리적으로 출력- 시쿼스 : 숫자 값을 생성- 인덱스 : 일부 Query 성능을 향상 시킴- 동의어 : 객체에 다른 이름을 부여 2. 이름 규칙- 예약어 사용 불가능- 대/소문자를 구분해서 입력 해도 저장될 때는 모두 대문자로 변환 됨- 이름이 겹치는 것은 허용할 수 없음-> 컬럼의 이름은 상관 없음- 문자로 시작 되어야 함 3. CREATE TABLE문- CREATE TABLE 권한이 필요 함- 저장 공간 필요- CREATE TABLE name ( column datatype [ ....... ] );- 테이블 이름 지정- 컬럼 이름, ..

[SQL] DB 스터디 - 07

집합 연산자, 데이터 조작 명령문(DML) 1. 집합 연산자- UNION/UNION ALL-> UNION : 두 테이블을 합칠 때 중복되는 부분은 생략하여 합쳐서 출력-> UNION ALL : 위 SELECT문을 출력 후 아래 SELECT문을 출력- INTERSECT-> 두 테이블 간의 교집합을 출력- MINUS-> A MINUS B 라고 되어 있으면 A - B라는 차집합의 결과를 출력- 앞 SELECT문의 결과에 합/차 집합을 만들 수 있음- UNION ALL을 제외한 나머지 연산자는 검색이 될 때 중복이 되는 행을 제거하여 출력- 중복되는 값을 제거하기 위해서 내부적으로 정렬을 시킴-> 기본적으로 SORT가 이루어 지면 성능의 문제를 일으킬 수 있음-> 잘 사용하지 않음- 보통 JOIN과 Subque..

[SQL] Advanced SQL - 조인, 서브쿼리 활용

Advanced SQL - 조인, 서브쿼리 활용 ※ JOIN시 참고 사항 첫 번째 : 테이블이 모델링 될때 대부분 1 : N의 관계가 됨 두 번째 : 두 테이블이 JOIN될 때 다른 테이블에 중복이 되는 값이 있는 경우가 있음 -> 회원 테이블에는 1명이 유일 하지만 -> 주문 정보 테이블에는 해당 회원이 여러번 나올 수 있음 세 번째 : 중복되는 값이 있는 테이블을 FROM절에 올려 두고 JOIN을 시도하면 해당 경우의 수 만큼의 행이 만들어 짐 -> M : N의 관계가 만들어져 M * N의 행이 만들어 짐 네 번째 : JOIN을 시도 할 때 조건절에 오는 조건은 무조건 두 테이블 관의 관계를 작성 다섯 번째 : JOIN문장이 실행 될 때 Subquery를 적절히 이용해서 테이블의 수를 먼저 GROUP..

[SQL] Advanced SQL - 날짜 함수 활용

Advanced SQL - 날짜 함수 활용 01. emp테이블에서, 입사 일자(hiredate)컬럼을 이용하여 연도, 월/일, 요일, 분기를 검색하시오. 단, 입사 일자는 월요일 부터 일요일 순으로 정렬합니다.해답 SQL문 SELECT empno, ename, TO_CHAR(hiredate,'YYYY') Year, TO_CHAR(hiredate,'DD, Month') AS "Date", TO_CHAR(hiredate,'Day') Day, TO_CHAR(hiredate, 'Q') QuarterFROM empORDER BY TO_CHAR(hiredate-1,'D');-- 실행 결과-- 14 rows selected. 02. emp 테이블에서 20번 부서에 근무하는 사원들을 입사 일자를 기준으로 검색 하시오...

[SQL] DB 스터디 - 06

Subquery와 JOIN 1. Subquery란- SQL 명령문 안에 포함된 또 다른 SELECT 명령문- Main Query보다 먼저 실행될 수 있고, 글 결과를 Subquery가 위치한 곳에서 사용- Subquery는 해당 Query가 실행 될 때, 단일행인지 여러행인지에 따라 다르게 사용됨- 직접적으로 조건절에 사용되는 값을 검색해서 일일이 작성하지 않기 위해 사용 됨- SELECT 절에 나오는 Subquery는 반드시 하나의 컬럼만 반환 시켜야 함예)->-- emp 테이블에서 'JONES'보다 급여가 높은 사원을 검색-- 기존 방법 : 'JONES'의 sal을 먼저 검색 후 해당 값으로 조건을 주어 전체 테이블 검색SELECT salFROM empWHERE ename = 'JONES'; SELE..

[SQL] DB 스터디 - 05

OUTER JOIN과 직접 일치하지 않는 레코드 반환 -리뷰-FROM절에서 테이블 이름에 별칭을 준다면 AS를 사용하는 것은 에러를 유발 시킴별다른 조건이 없다면 테이블이 결과를 낼 수 있는 모든 경우의 수를 출력 함항상 JOIN은 똑같은 행의 개수의 결과만 출력 함각 테이블의 컬럼의 명칭이 서로 같다면 별칭을 이용해 해당 테이블의 컬럼임을 인식 시켜야 함 1. OUTER JOIN- 조건 절에서 일치하지 않는 값을 함께 출력하기 위한 JOIN문- [LEFT, RIGHT, POOL ] OUTER JOIN 등이 있음- LEFT, RIGHT, FULL은 각각 더 많은 데이터를 가지고 있는 테이블의 결과를 출력- 어느 한 쪽에 데이터가 더 있다는 전제를 가지고 있음- FROM절에 테이블의 방향을 정해 주면, 해..

[SQL] DB 스터디 - 04

JOIN, Sub Query를 사용한 여러 테이블 표시 1. JOIN 이란- 서로 다른 두 개 이상의 테이블을 합칠 때 사용하는 구문- 조건절에 두 테이블의 적절한 조회 조건식이 없다면 두 테이블 간의 모든 경우의 수의 행의 개수가 출력 됨- 동일한 값으로 하는 조인을 Equijoin, 다른 값으로 하는 조인을 Nonequijoin이라 함- 거의 대부분의 조인은 같은 값을 가지고 조인을 진행 하게 됨예)-> emp테이블에서 empno가 7788인 사원의 deptno의 부서 번호와 부서 명을 표시하는 SQL문 -- 아래 두 SQL문을 합치는 작업 필요SELECT *FROM empWHERE empno = 7788; SELECT *FROM deptWHERE deptno = 20; -- 실행은 되지만 원하는 결..

[SQL] Advanced SQL - 기본적인 SELECT 명령문 작성

Advanced SQL - 기본적인 SELECT 명령문 작성 수정(2019-01-04 수정) ※ SQL명령어 만드는 팁 첫 번째 : 어떤 테이블의 정보를 원하는지를 생각 할 것-> FROM절에 있는 데이터만 화면에 출력할 수 있음-> 검색 대상의 결과가 올라가는 곳이 FROM절 이라고 할 수 있음 두 번째 : WHERE절에 어떤 조건이 들어갈 지 생각 할 것-> 속도를 감안 한다면, 테이블에 있는 컬럼의 데이터 타입을 확인 할 것-> 'DESC 테이블' 로 컬럼의 데이터 타입을 확인할 수 있음-> 보통 WHERE절에 항상 '1 = 1'이라는 무의미한 식을 넣고 나머지 조건을 AND로 붙힘--> 서비스를 해 줄때, 처음에는 모든 항목을 보여 준 뒤에 필터링(AND조건)을 해 주기 때문--> 추가되는 조건을..

[SQL] DB스터디 - 03

데이터 형 변환, 그룹 함수, GROUP BY절, HAVING절 변환 함수- 데이터 유형을 변환 할 때는 함수를 사용- 잘못된 데이터 타입이 입력되면 '암시적 데이터 형 변환'을 시킴-> Oracle DB 한정-> 에러를 피할 수 있음- '명시적 데이터 형 변환'을 하는 것이 가장 좋음-> 실제로 값을 변환 시키는 것 암시적 데이터 유형 변환- 사용자가 입력한 값이 단일적인 값인 경우 사용 가능- 변환이 가능한 문자 혹은 숫자같은 경우에 사용 됨- LIKE 명령어의 경우 문자만 검사 하지만 조건에 숫자가 들어가면 암시적으로 형 변환을 시킴예)-> SELECT *FROM empWHERE deptno = 10;-- 10이 숫자 -> SELECT *FROM empWHERE deptno = '10';-- 10이..

[SQL] DB스터디 - 02

문자열 및 날짜 연산, 논리 연산, BETWEEN 선택되는 행 제한- WHERE절을 사용하여 반환되는 행을 제한- WHERE절은 FROM절 다음에 작성예) EMPLOYEES테이블의 DEPARTMENT_ID의 값이 90인 사원의 정보만 출력-> SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, DEPARTMENT_ID FROM EMPLOYEES WHERE DEPARTMENT_ID = 90; 문자열 및 날짜- 문자열 및 날짜 값은 작은 따옴표로 묶음- 문자 값은 대소문자를 구분하고 날짜 값은 형식을 구분 함- 기본 날짜 표시 형식은 DD-MON-RR예) EMPLOYEES테이블에서 LAST_NAME이 'Whalen'인 사원 정보, HIRE_DATE가 '17-FEB-96'인 사원 출력-> S..