본문 바로가기

Oracle Database

(39)
[ORACLE] DB의 테이블 생성 문제 풀이 --1번) 테이블에서 부서별로 -- 인원수,평균,급여-- 급여의 합,최소급여, 최대 급여를 포함하는 EMP_DEPTNO테이블을 생성하라 CREATE TABLE EMP_DEPTNO( DEPNO, E_COUNT, E_AVG, E_SUM, E_MIN, E_MAX )AS ( SELECT DEPARTMENT_ID DEPTNO, COUNT(DEPARTMENT_ID), AVG(SALARY), SUM(SALARY), MIN(SALARY), MAX(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT_ID); --문제2)EMP_DEPTNO 테이블에 ETC COLUMN을추가하여라. --단 자료형은 VARCHAR2(50)사용하라 ALTER TABLE EMP_DEPTNO ADD ETC VARCHAR2(..
SQL 무결성 -- 무결성 제약 조건 -- PRIMARY KEY : 기본키. NULL을 허용하지 않음, 중복 허용하지않음 ID,주민번호 해당 , not null + 고유키(UNIQUE KEY) -- UNIQUE KEY : 고유키. NULL 을 허용 , 중복 허용하지않음 EMAIL , null 허용 + 고유값 -- CHECK -- FOREIGN KEY : 외래키. 다른 테이블에서 PRIMARY KEY인 경우 자주 있음. NULL 을 허용 -- NOT NULL -- NOT NULL CREATE TABLE TB_TEST( COL1 VARCHAR2(10) NOT NULL, COL2 VARCHAR2(20) ); INSERT INTO TB_TEST(COL1,COL2) VALUES('AAA', 'aaa'); INSERT INTO ..
SQL 테이블 쿼리 -- 테이블 스페이스 수정 ALTER TABLESPACE TABLESPACE1 RENAME TO TEST_TBS_NEW; -- 파일의 크기 수정 ALTER DATABASE DATAFILE 'C:\TEST\MYTABLESPACE' RESIZE 7M; -- 테이블 생성 -- SYSTEM 계정에 생성 CREATE TABLESPACE TABLESPACE2 DATAFILE 'C:\TEST\TEST_TBS1_02.DBF' SIZE 10M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED -- 추가되는용량 LOGGING -- 로깅 사용 EXTENT MANAGEMENT LOCAL AUTOALLOCATE -- LOCAL BLOCKSIZE 8K -- BLOCK SIZE 8K SEGMENT SPACE ..
SQL 특수Query -- 특수Query -- CASE SELECT EMPLOYEE_ID, FIRST_NAME, PHONE_NUMBER, CASE SUBSTR(PHONE_NUMBER, 1, 3) WHEN '515' THEN '서울' WHEN '590' THEN '부산' WHEN '659' THEN '광주' WHEN '603' THEN '대전' ELSE '기타' END AS "지역" FROM EMPLOYEES; SELECT EMPLOYEE_ID, FIRST_NAME, PHONE_NUMBER, CASE WHEN SUBSTR(PHONE_NUMBER, 1, 3) = '515' THEN '서울' WHEN SUBSTR(PHONE_NUMBER, 1, 3) = '590' THEN '부산' WHEN SUBSTR(PHONE_NUMBER, 1,..
SQL SUB QUERY -- SUB QUERY -- QUERY문 안에 QUERY문이다 -- 한개의 행에서 결과 값이 반환되는 커리문 -- SELECT 단일행 단위컬럼 SELECT NAME FROM EMP -- FROM 단일행 단일, 다중컬럼 SELECT NAME EMPNO FROM EMP -- WHERE 단일행 단일, 다중컬럼 SELECT NAME EMPNO FROM EMP -- SELECT 방식 SELECT EMPLOYEE_ID, FIRST_NAME, SALARY, (SELECT SUM(SALARY) FROM EMPLOYEES), (SELECT COUNT(*) FROM EMPLOYEES) FROM EMPLOYEES; -- FROM SELECT EMPLOYEE_ID,FIRST_NAME,FIRST_NAME,SALARY FROM ..
SQL 쿼리문 JOIN -- JOIN 두개 이상의 테이블을 연결해 데이터를 검색하는 방법이다. 보통 둘이상의 행(ROW)들의 공통된 값 Primary key, Foreign key 값을 사용해서 join을 한다, 두개 이상의 테이블을 select 문장 안에서 조인 하려면 적어도 하나의 컴럼이 두 테이블에서 공유 되어 있어야 한다. inner Join ***** cross Join * outer Join left outer *** right outer *** self Join ***** SQL : Orcle, Ansi Sql -- inner Join -- -- 겹치는 부분만 조인 -- Ansi SQL SELECT EMPLOYEE_ID,FIRST_NAME,SALARY, E.DEPARTMENT_ID, D.DEPARTMENT_ID,D..
SQL 쿼리문 기본 -- DUAL : 가상테이블 SELECT 1 FROM DUAL; -- 문자 함수 -- CHR(N) : ASCII 값을 문자로 변환한다 SELECT CHR(65) FROM DUAL; SELECT CHR(112) FROM DUAL; SELECT '내 점수는' || CHR(97) || '입니다' FROM DUAL; -- LPAD(RPAD) : 나머지 빈칸을 특정 문자로 채운다 SELECT LPAD('BBB',10) FROM DUAL; SELECT LPAD('BBB',10, '-') FROM DUAL; SELECT RPAD('BBB',10, '-') FROM DUAL; -- INSTR : indexOf SELECT INSTR('A1234567A','A') FROM DUAL; -- 숫자 이후에 나오는 위치 SEL..
SQL 쿼리 그룹 -- 중복행의 제거 SELECT DISTINCT JOB_ID FROM EMPLOYEES; -- GROUP BY -- 같은 그룹으로 묶어줌 SELECT JOB_ID FROM EMPLOYEES GROUP BY JOB_ID; SELECT DEPARTMENT_ID FROM EMPLOYEES GROUP BY DEPARTMENT_ID ORDER BY DEPARTMENT_ID; -- HAVING(GROUP BY절과 같이 사용, 단독으로는 사용불가) -- GROUP BY의 조건절 SELECT DEPARTMENT_ID,SUM(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT_ID; SELECT JOB_ID,SUM(SALARY) FROM EMPLOYEES GROUP BY JOB_ID HAVING..