[오라클 SQL] SQL 명령의 종류 / DDL(CREATE, DROP, ALTER) , DML(INSERT, DELETE, UPDATE) , DCL(GRANT, REVOKE, SAVEPOINT, COMMIT, ROLLBACK, SELECT)

jychae·2022년 8월 7일
0

SQL

목록 보기
3/5

SQL 명령의 종류 P 164

  • DDL(Data Definition Language)- CREATE, DROP, ALTER,
  • DML(Data Manipulation Language) - INSERT, DELETE, UPDATE,
  • DCL(Data Control Language) - GRANT, REVOKE, SAVEPOINT, COMMIT, ROLLBACK, SELECT문으로 구분
-- CREATE 생성 DROP삭제 ALTER구조변경
-- INSERT 데이터삽입, DELETE 데이터삭제, UPDATE 데이터값 변경  
-- GRANT권한부여, REVOKE권한회수, SAVEPOINT 저장시킬 위치를 지정해서 해당 자료를 저장, 
-- COMMIT 처리되어서 변경되었다고 가정했을때 공간에다 실제로 저장할때, 커밋은일괄저장 
-- ROLLBACK 오류가 발생되었을때나 잘못 연산되었을때 전으로 돌림 / 명령취소 

** INSERT 문

  • 데이터를 테이블에 저장시키는 명령
    (사용형식)
INSERT INTO 테이블명[(컬럼명,...)]
VALUES(값,...);
  • '테이블명' : 데이터 삽입 대상 테이블명
  • '[(컬럼명,...)]' :
    생략할 수 있으며, 생략하면 테이블의 모든 컬럼에 저장할 테이터를 VALUES절에 기술해야한다.
    데이터를 저장할 필요한 컬럼만 기술할 때는 ','로 구분하여 컬럼을기술하며, NOT NULL 로 속성으로 설정된 컬럼은 생략할 수 없음
  • 'VALUES(값,...)' :
    저장할 자료를 기술하며, '테이블명[(컬럼명,...)]'의 컬럼의 갯수와 순서와 일치해야함
-- (컬럼명,...) 삭제되어지면  VALUES(값,...)에 컬럼값이 순서대로 저장?
-- (컬럼명,...)<< 몇개만 입력 컬럼명을 기술하던 기술하지않던 밸루값이랑 입력하려는 컬럼갯수는 같아야 함
-- 같지않으면 저장안됨. 순서일치 중요하고 *NOT NULL< 이거 붙이면 NULL 허용하지않겠다.
-- 데이터를 입력 수정 삭제 - 검사를 해야함>>SELECT!

사용예) 다음 자료를 사원테이블(EMP)에 저장하시오

   [자료]
   -------------------------------------------------
   사원번호  사원명   전화번호         직위    부서명
   -------------------------------------------------
     A10    전준호                   사원    영업부
     B09    이나영   042)123-5678    팀장      
     B10    홍길동                         공공사업부
   -------------------------------------------------   
  INSERT INTO EMP VALUES('A10','전준호','NULL','사원', '영업부'); 
  INSERT INTO EMP VALUES('B09','이나영','042)123-5678','팀장', ''); 
  INSERT INTO EMP (EEPT_NAME,EMP_ID,EMP_NAME)
    VALUES('공공사업부','B10','홍길동');

  SELECT * FROM EMP;
-- INSERT INTO EMP VALUES('A10','전준호', '사원', '영업부'); 
-- SQL 오류: ORA-00947: not enough values   

-- 'NULL' = "" <바이트스페이스? 화이트스페이스?
-- 오라클에서 ALL = * (아스트릭스)
-- SELECT 는 FROM 
-- INSERT 아예없는 데이터를 넣을 때 / UPDATE 기존데이터값 변경

사용예) 다음 자료를 사업장테이블(CONSTRUCTIN_SITE)에 저장하시오

   [자료]
   --------------------------------------------------------
   사업장번호  사업장명        주소                   비고
   --------------------------------------------------------      
     1000     한밭대교신축    대전시 중구 대흥동      공사중
     1001     새여울초                             공사완료
   --------------------------------------------------------           
  ALTER TABLE CONSTRUCTIN_SITE
	MODIFY (ADDRESS VARCHAR2 (250) NOT NULL);
         
  INSERT INTO CONSTRUCTIN_SITE VALUES(1000,'한밭대교신축','대전시 중구 대흥동','공사중')      
  INSERT INTO CONSTRUCTIN_SITE(CONST_ID,CONST_NAME,REMARKS,ADDRESS)
       VALUES(1001,'새여울초','공사완료',' ');
       
  SELECT * FROM  CONSTRUCTIN_SITE;     
        
  DROP TABLE WORK;
  DROP TABLE CONST_MATERIALS;
  DROP TABLE CONSTRUCTIN_SITE;
  DROP TABLE EMP;
--  INSERT INTO CONSTRUCTIN_SITE(CONST_ID,CONST_NAME,REMARKS)
--		VALUES(1001,'새여울초','공사완료');
-- ORA-01400: cannot insert NULL into ("JY92"."CONSTRUCTIN_SITE"."ADDRESS")
-- .은 소유자 > CONSTRUCTIN_SITE는 JY92이 소유자 
-- ADDRESS 의 소유자는 CONSTRUCTIN_SITE

-- INSERT INTO CONSTRUCTIN_SITE(CONST_ID,CONST_NAME,REMARKS,ADDRESS)
--		VALUES(1001,'새여울초','공사완료',' ');  ' ' 띄워야만해
profile
안녕하세요! 초보개발자 공부 시작!

0개의 댓글