TOOL/DATABASE 2015. 5. 4. 14:33


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

---------------------------- 데이터 정의어 Data Definition Language ( CREATE, DROP, ALTER )

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

-- -- -- -- -- 생성한다. CREATE 크레이트 -- -- -- -- -- 

CREATE TABLE board

(

atcseq NUMBER NOT NULL,

name VARCHAR2(20) NOT NULL,

email VARCHAR2(60),

regdt DATE DEFAULT SYSDATE,

CONSTRAINT PK_BOARD PRIMARY KEY(atcseq),

CONSTRAINT FK_contents FOREIGN KEY(atcseq, boardcd) REFERENCES article(atcseq, boardcd)

);



-- -- -- -- -- 테이블을 지운다. DROP 드랍(드롭) -- -- -- -- -- 

DROP FROM board;


-- -- -- -- -- 테이블을 수정한다. ALTER 알터 -- -- -- -- -- 

ALTER TABLE board ...


-- -- -- -- -- 테이블을 초기화한다. TRUNCATE 알터 -- -- -- -- -- 



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

---------------------------- 데이터​ 조작어 Data Manipulation Language ( SELECT, INSERT, UPDATE, DELETE)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

-- -- -- -- --컬럼출력 SELECT 셀렉트-- -- -- -- -- 

SELECT  컬럼1, 컬럼2, ... FROM 테이블명



-- -- -- -- -- 데이터 저장 INSERT 인서트 -- -- -- -- -- 

INSERT INTO 테이블명 (컬럼1, 컬럼2...) VALUES (값1, 값2...)     --VALUES는 컬럼과 대칭구조이어야 함.



-- -- -- -- -- 데이터 변경 UPDATE 업데이트 -- -- -- -- -- 

UPDATE  테이블명
      SET  컬럼1 = 값1,
    컬럼2 = 값2
WHERE  조건

예) 사원번호 103번 사원의 급여를 50% 인상시켜라
UPDATE  EMPLOYEES
      SET  SALARY = SALARY *1.5
 WHERE  EMPLOYY_ID = 103      --조건절이 핵심
;


-- -- -- -- -- 테이블 안의 데이터를 지운다. DELETE 델리트(딜리트) -- -- -- -- -- 

DELETE FROM board WHERE idx=3;




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

---------------------------- 데이터 제어어 Data Control Language (GRANT, REVOKE)

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

-- -- -- -- -- GRANT -- -- -- -- -- 

-- -- -- -- -- REVOKE -- -- -- -- -- 





-- -- -- -- -- 가상 테이블 VIEW -- -- -- -- -- 

CREATE OR REPLACE VIEW VIEW_NAME

AS

SELECT

WEHRE

WITH CEHCK OPTION

WITH READ ONLY


SELECT * FROM USER_VIEWS;


-- -- -- -- -- INDEX -- -- -- -- -- 






////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

---------------------------- 명령어?? 기본 함수??? ----------------------------

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

-- -- -- -- -- 테이블명 FROM 프롬-- -- -- -- -- 

SELECT  컬럼1, 컬럼2, ...  FROM  테이블명



-- -- -- -- -- 조건절 WHERE 웨어-- -- -- -- -- 

SELECT  컬럼1, 컬럼2, ...  FROM  테이블명  WHERE  조건문



-- -- -- -- -- 정렬 ORDER BY 오더바이 -- -- -- -- -- 

ORDER BY  DEPARTMENT_ID ASC   --오름차순

ORDER BY  DEPARTMENT_ID DESC  --내림차순



-- -- -- -- -- GROUP BY 그룹바이-- -- -- -- -- 

SELECT  DEPARTMENT_ID, MAX(SALARY), AVG(SALARY)

  FROM  EMPLOYEES

GROUP BY  DEPARTMENT_ID   --부서별 그룹화(MAX=최대급여, AVG=평균급여) 



-- -- -- -- -- 그룹 조건 HAVING 해빙 -- -- -- -- -- 

SELECT  DEPARTMENT_ID, MAX(SALARY), AVG(SALARY)

  FROM  EMPLOYEES

GROUP BY  DEPARTMENT_ID   

HAVING  AVG(SALARY) >= 5000  --> 부서의 평균이  5000이상일 때



-- -- -- -- -- JOIN 조인-- -- -- -- --

SELECT  EMPLOYEE_ID

           , J.JOB_ID

           , D.DEPARTMENT_NAME

  FROM   EMPLOYEES E

           , JOBS  J           --(PK인 JOB_ID 존재)

           , DEPARTMENTS D  --(PK인 DEPARTMENT_ID 존재)

WHERE   E.JOBID = J.JOB_ID
    AND   E.DEPARTMENT_ID = D.DEPARTMENT_ID 


-- -- -- -- -- SUBQUERY 서브쿼리-- -- -- -- -- 

SELECT EMPLOYEE_ID

          , (SELECT  J.JOB_TITLE

                FROM  JOBS J

              WHERE E.JOB_ID=J.JOBID) 

              AS JTIT

           ,(SELECT  D.DEPARTMENT_NAME

                FROM  DEPARTMENT  D

              WHERE  E.DEPARTMENT_ID = D.DEPARTMENT_ID)

              AS DEPARTNAME


-- SELECT절에서 서브쿼리 = 스칼라 서브쿼리(Scalar Subquery)
-- FROM절에서 서브쿼리 = 인라인뷰(Inline view)



-- -- -- -- -- ㅁㅁㅁㅁㅁㅁㅁ-- -- -- -- -- 
예) 최신글 다섯개 출력
SELECT  *
   FROM  (SELECT * FROM NOTICE ORDER BY WRTDT DESC) 
 WHERE  ROWNUM <= 5
;

-- -- -- -- -- IN 인-- -- -- -- -- 

WHERE DEPARTMENT_ID=10 OR DEPARTMENT_ID=20


WHERE DEPARTMENT_ID IN(10,20)  



-- -- -- -- -- LIKE 라이크-- -- -- -- -- 

SELECT  JOB_ID

FROM     EMPLOYEES

WHERE  JOB_ID LIKE 'SA%'  -- SA로 시작하는 것



-- -- -- -- -- BETWEEN 비트윈-- -- -- -- -- 

WHERE  TO_CHAR(HIRE_DATE, 'YYYYMM') >= '200501' 
    AND  TO_CHAR(HIRE_DATE, 'YYYYMM') <= '200506'
 
WHERE  TO_CHAR(HIRE_DATE, 'YYYYMM') BETWEEN '200501 AND '200506'   --2005년 상반기인 것
 

-- -- -- -- -- 대문자 변환 UPPER 업퍼-- -- -- -- -- 

-- -- -- -- -- 소문자 변환 LOWER 로워-- -- -- -- -- 
-- -- -- -- -- ROUND 라운드-- -- -- -- -- 
-- -- -- -- -- TRUNC 트렁크-- -- -- -- -- 

-- -- -- -- -- 그룹의 최대값 MAX 맥스(맥시멈)-- -- -- -- -- 

-- -- -- -- -- 그룹의 최소값 MIN 민(미니멈) -- -- -- -- -- 

-- -- -- -- -- 그룹의 평균 AVG 에이브이지(에버레이지)  -- -- -- -- -- 


-- -- -- -- --  아티클(열?)의 총 개수 COUNT 카운트 -- -- -- -- -- 

SELECT COUNT(seq) FROM board;


-- -- -- -- -- 널(null)일 경우NVL 엔브이엘 -- -- -- -- -- 

SELECT NVL(A, 1);  -- A가 널이면 1을 넣어랏~


-- -- -- -- --  컬럼 내 중복데이터 제외한데이터  DISTINCT 디스팅크트 -- -- -- -- -- 
SELECT DISTINCT() FROM 

-- -- -- -- --  컬럼 내 중복데이터 제외한데이터  DISTINCT 디스팅크트 -- -- -- -- -- 







////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

------------------------------  x x x 하기 In Run SQL Command Line ------------------------------

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


----- ----- 사용자 접근 제어

conn system /비밀번호 --system으로 접속

show user; --접속한 유저를 확인

create user superuser identified by 1234;   --superuser 계정 생성

conn superuser/1234; --superuser로 접속

grant create sesssion to superuser; --superuser에게 세션 권한 부여

grant select on hr.employees to superuser; -- superuser에게 hr.employees 셀렉트 권한 부여


grant system_privilege to 사용자;   --T:"DBA가 되어버립니다. 이 명령은 기억도 하지 마세요. "

grant connect, resource to 사용자;   --모든 권한 주기(resource : "이건 롤이라는 거야 다들어가 있찌")


create (alter, drop) table

create (drop) view

creat (alter, drop) sequence

create (alter, drop) 

create (alter, drop) synonym

crreate (alter, drop) trigger


----- 객체 권한 설정

alter

comment

grant

delete

index

insert

rename

select

update 

reference 

execute  --PROCEDURE(프로시저) 함수 패키지를 실행 할 수있는 권한




----- 권한 회수

revoke object_privilege on objject from 사용자;

예) revoke seelct on hr.employees to superuser;



----- 

생성)

create role basicrol;

grant create session, reate table, create view, to basicrole;

사용)

create user test1 identified by1234;

create user test2 identified by1234;

grant basicrole to test1, test2;



////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

------------------------- Procedure Languages/SQL 프로시저 랭귀지 에스큐엘-------------------------

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

'TOOL > DATABASE' 카테고리의 다른 글

DECODE()  (0) 2015.11.25
RANK(), ROWNUMBER()  (0) 2015.11.13
DB 심화  (0) 2015.09.15
ORACLE쿼리를 MYSQL쿼리로 바꿔야할 상황이 생겼다.  (1) 2015.06.18
MYSQL  (0) 2015.05.04