데이터 베이스 9

[SQL] DB 스터디 - 12

스키마 객체 관리 1. 제약 조건 추가- ALTER TABLE문-> 새로운 컬럼 추가, 수정, 삭제 가능-> 추가하는 컬럼은 가장 마지막에 추가 됨- 추가 : ALTER TABLE table ADD (new_column datatype [, ...])- 수정 : ALTER TABLE table MODIFY column datatype [DEFAULT value]-> 기존에 있던 값에 영향을 미치지 않는 선에서만 수정 가능- 삭제 : ALTER TABLE table DROP COLUMN column;-> 테이블의 데이터가 많은 경우 해당 작업은 시간이 걸리는 작업임-> ALTER TABLE table SET UNUSED (column); -> ALTER TABLE table SET UNUSED COLUMN..

[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] 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..

[SQL] DB스터디 - 01

SQL문의 목적, 작성법, 별칭(AS) Database 실습 환경- DB Server : Oracle DB 11g- DB Client : Oracle SQL Developer- Host : Localhost- CPU : Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz- RAM : 4GB- OS : Windows 7 Enterprise K - 64Bit SQL : DB의 데이터를 제어하는 명령문QUERY : SELECTDML(데이터 조작) : INSERT, UPDATE, DELETE, MERGE, SELECTTCL(트렌젝션 조작) : COMMIT, ROLLBACK, SAVEPOINTDDL(테이블 생성, 삭제, 수정 등) : CREATE, DROP, ALTER, TRUNCATE...D..