Oracle 학습3

71369 단어 Oracle
Oracle 학습3
  • 1 DML 명령문
  • 2 DDL 문
  • 3 트랜잭션
  • 4 데이터베이스 객체 개요
  • 5 데이터베이스 대상 - 제약
  •   
    1 DML 문
    -- DML  ,             !
    --       DML  ,     
    --          ,                   ,         
    --             ,        ,            
    --              ,             ,              
    
    --     
    INSERT INTO DEPT(DEPTNO,DNAME,LOC_ID) VALUES (50,'   ',1000);
    INSERT INTO DEPT(DEPTNO,DNAME,LOC_ID) VALUES (60,'   ',1001);
    
    --         ,           
    INSERT INTO DEPT VALUES (50,'   ',1000);
    INSERT INTO DEPT (DEPTNO,DNAME) VALUES (50,'   ');
    INSERT INTO DEPT (DEPTNO,DNAME,LOC_ID) VALUES (60,'   ',NULL);
    ROLLBACK;
    COMMIT;
    
    INSERT INTO EMP VALUES (8000,' 1','   ',7602,'9-12 -1987',3000,1000,20);
    
    INSERT INTO EMP VALUES (8001,' 1','   ',7602,TO_DATE('1987-12-5','YYYY-MM-DD'),3000,1000,10);
    
    --           ,       ,              
    INSERT INTO DEPT_BAK SELECT * FROM DEPT;
    
    
    
    -- UPDATE  
    --   UPDATE     ,         ,        ,             
    --       ,         ,              
    UPDATE EMP SET ENAME = ' 2',JOB = '  ' ,SAL= 3500,COMM= 1500  WHERE EMPNO=8001;
    
    
    --     
    DELETE FROM DEPT WHERE DEPTNO >40;
    

    병합문구: Oracle 9i에 추가된 문구: 조건에 따라 표에서 데이터를 수정하거나 삽입하는 기능을 수행하고 삽입된 데이터 줄이 목적표에 존재하면 UPDATE를 실행하며 존재하지 않으면 INSERT: 1. 단독 수정을 피한다. 2. 성능과 응용성을 향상시킨다. 3. 데이터 창고 응용 프로그램에서 특히 유용하다.
    MERGE INTO DEPT_BACK D
    USING DEPT S
    ON (D.DEPTNO = S.DEPTNO)
    WHEN MATCHED THEN
      UPDATE SET D.DNAME = S.DNAME, D.LOC_ID = S.LOC_ID
    WHEN NOT MATCHED THEN
      INSERT VALUES (S.DEPTNO, S.DNAME, S.LOC_ID);
    

    2 DDL 문
    1. 건표문
    --    
    CREATE TABLE STUDENT(
        SID        NUMBER(4)   PRIMARY KEY,
        SNAME      VARCHAR2(10),
        GRADE      VARCHAR2(20),
        SEX        CHAR(2)   DEFAULT  ' ',
        BIRTHDAY   DATE
    );
    
    --            
    CREATE TABLE DEPT_BACK
    AS
    SELECT  * FROM DEPT;
    
    --                     
    DROP TABLE DEPT_BACK;
    CREATE TABLE DEPT_BACK
    AS
    SELECT DEPTNO "    ",DNAME "    " FROM DEPT WHERE DEPTNO <= 30;
    
    

    2. 테이블 구조 수정
    --          ,      ,              
    --      :1.    ;2.    ;3.    (       ,       )
    --     ,      ,              
    ALTER TABLE STUDENT	ADD   TEL  VARCHAR2(11);
       
    ALTER TABLE STUDENT	ADD   ADDR   VARCHAR2(20)   ;
       
    SELECT * FROM STUDENT;   
    
    --     
    --            ,     ,            
    ALTER TABLE STUDENT	MODIFY   TEL     NUMBER(11);
    
    ALTER TABLE STUDENT MODIFY   TEL   VARCHAR2(11)   ;
    
    --         ,           ,              
    ALTER TABLE STUDENT MODIFY   SEX    CHAR(2) DEFAULT  ' ';   
       
    INSERT INTO STUDENT (SID,SNAME,GRADE,BIRTHDAY) VALUES (1003,' 3','   ',TO_DATE('1985-12-8','YYYY-MM-DD'));   
    
    --          ,           .
    --                   ,           
    ALTER TABLE STUDENT	MODIFY   GRADE  VARCHAR2(20);
       
    --     
    ALTER TABLE STUDENT	DROP COLUMN   ADDR;
        
    --       ,TRUNCATE  TABLE  DELETE      ,          
    TRUNCATE  TABLE DEPT_BACK;
    
            ,    DELETE  ,      。    TRUNCATE       
    RUNCATE TABLE             
     DDL  ,     , DELETE    ROLLBACK
            ,DELETE       
              
      :TRUNCATE TABLE table_name;
    

    3. 테이블 이름 수정
     Oracle ,              。    DDL   RENMAE                
      RENAME        ,     、  、          
             ,   DBA    
      :RENAME old_name TO new_name;
        RENAME STUDENT TO STUDENT_NEW;
    

    3 트랜잭션
    1. 첫 번째 실행에서 시작된 DML 문장 2. 끝:  (1) COMMIT 또는 ROLLBACK  (2) DDL or DCL 문장(은밀한 제출 사물)  (3) 사용자 연결이 이상하거나 사용자가 연결을 끊거나  (4) 시스템 붕괴(은밀한 스크롤) 3. 업무는 여러 상황에서 끝난다.일반적으로 사무가 발생한 사용자가 명령을 통해 표시되는 제어 사무의 끝 (COMMIT와 ROLLBACK) 을 회답해야 사무 중의 데이터 변화의 통제성을 확보할 수 있다.4. 사용자가 직접 업무를 제어하는 것을 제외하고 다른 상황은 은밀하게 업무를 끝낼 수 있다.은식으로 사무를 끝내는 예측할 수 없기 때문에, 가능한 한 은식으로 사무를 끝내는 것을 피해야 한다
    1. Oracle에서 업무를 통제하는 주요 명령식인 COMMIT와 ROLLBACK 명령, 그리고 보조적인 SAVEPOINT 명령 2. COMMIT와 ROLLBACK을 사용하여 업무를 통제하면 다음과 같은 장점이 있다(1) 데이터의 일치성을 확보한다.수정된 데이터(일치하지 않는 데이터)는 제출하기 전에 다른 사용자가 볼 수 없는 데이터(2) 영구적으로 데이터가 효력이 발생하기 전에 수정된 데이터를 다시 보기 (3) 관련 조작을 함께 구성한다.하나의 업무에서 관련 데이터가 바뀌거나 모두 성공하거나 모두 실패합니다
    커밋 또는 롤백 전 데이터의 상태 1, 트랜잭션 시작 후 일련의 DML 작업이 수행됩니다.업무가 끝나기 전에 수정된 데이터는 복구할 수 있다. 2. 현재 사용자는 DML 작업의 결과를 볼 수 있다. 3. 다른 사용자는 DML 작업의 결과를 볼 수 없다. 4. 조작된 데이터는 잠겨 있고 다른 사용자는 이 데이터를 수정할 수 없다.
    제출 후 데이터의 상태 1. 데이터의 수정은 데이터베이스에 영구적으로 기록됩니다.2. 데이터 이전의 상태가 영구적으로 분실된다.3. 모든 사용자가 조작 후의 결과를 볼 수 있다.4. 기록 자물쇠가 풀리고 다른 사용자가 이 기록을 조작할 수 있다.
    지정된 태그 점으로 폴백
    --         ,           
    --       ,          
    INSERT INTO DEPT VALUES (50,'  ',1000);
    SAVEPOINT A;
    DELETE FROM DEPT D WHERE  D.DEPTNO > 30;
    SAVEPOINT B;  -- B     10,20,30
    UPDATE DEPT D SET D.DNAME='   ' where d.deptno=10;
    ROLLBACK TO B;
    COMMIT;
    
    --  
    ROLLBACK TO A;
    

    4 데이터베이스 객체 개요
    개체 이름
    묘사
    테이블
    기본 데이터 저장 대상, 줄과 열로 존재
    구속
    데이터 확인을 수행하여 데이터 무결성을 보장하는 객체

    하나 이상의 테이블 데이터 표시
    인덱스
    쿼리 속도 향상
    동의어
    객체의 별칭
    데이터베이스 객체의 이름 규칙: 1. 문자로 시작해야 합니다. 2, 숫자(0-9), 문자(a~z)와 세 개의 특수 문자(# $) 3, oracle의 보존 문자 4를 사용하지 마십시오. 같은 사용자 아래의 대상은 이름이 같을 수 없습니다.
    데이터 형식
    설명
    VARCHAR2(size)
    가변 길이 문자열
    CHAR(size)
    고정 길이 문자열
    NUMBER(p,s)
    숫자값
    DATE
    날짜 값
    LONG
    최대 2GB의 긴 문자열
    CLOB
    단위 문자열 데이터 최대 바이트 4G
    RAW and LONG RAW
    바이너리 데이터를 저장하는 길이 변환 문자열
    BLOB
    2진 데이터, 최대 4GB
    BFILE
    2진 데이터 외장형 스토리지, 최대 4GB
    5 데이터베이스 객체 - 구속조건
      제약은 테이블에서 강제로 실행되는 데이터 검사 규칙으로 삽입되거나 수정되거나 삭제된 데이터는 관련 필드에 설정된 검사 조건에 부합되어야 한다. 즉, 제약 조건이다. 제약 조건은 한 테이블의 한 필드에 구축될 수도 있고 한 테이블의 여러 필드에 구축될 수도 있다.표의 데이터가 상호 의존성이 있을 때 관련 데이터가 삭제되지 않도록 보호할 수 있다.Oracle은 다음과 같은 다섯 가지 유형의 무결성 제약을 지원합니다.
    구속
    분류하다
    NOT NULL
    비어있지 않음
    UNIQUE Key
    고유 키
    PRIMARY KEY
    메인 키
    FOREIGN KEY
    외부 키
    CHECK
    검열
    
    
    --==================================     ===============================================
    --           ,               .   ,      
    --        ,                 ,         ,  ALTER TABLE        
    --               ,     ,     ,1,       ;2. Oracle     
    --     ,               (        ),           NULL
    --         ,                   
    DROP TABLE  STUDENTS;
    CREATE TABLE STUDENTS(
       SID       NUMBER(4) PRIMARY KEY,
       SNAME     VARCHAR2(20) CONSTRAINT SNAME_NN NOT NULL,  --          
       GRADE     VARCHAR2(20) NOT NULL --          
    );
    
    INSERT INTO STUDENTS VALUES (1000,' 1');
    INSERT INTO STUDENTS VALUES (1001,NULL);
    
    --     ,            ,         ,     null
    --                  
    
    --               (      )
    CREATE TABLE STUDENT(
        SID       NUMBER(4) PRIMARY KEY,
        SNAME     VARCHAR2(20) NOT NULL,
        EMAIL     VARCHAR2(20),
        CONSTRAINTS  EMAIL_UNI  UNIQUE (EMAIL) 
    );
    
    INSERT INTO STUDENT VALUES (1000,' 1','[email protected]');
    INSERT INTO STUDENT VALUES (1001,' 1','[email protected]');
    
    --                  (      )
    DROP TABLE STUDENT;
    
    CREATE TABLE STUDENT(
        SID           NUMBER(4)  PRIMARY KEY,
        FIRST_NAME    VARCHAR2(10),
        LAST_NAME     VARCHAR2(20),
        CONSTRAINTS NAME_UNI  UNIQUE  (FIRST_NAME,LAST_NAME)
    );
    
    INSERT INTO STUDENT  VALUES (1000,' ',' ');
    INSERT INTO STUDENT  VALUES (1001,' ',' ');
    INSERT INTO STUDENT  VALUES (1002,' ',' ');
    
    INSERT INTO STUDENT  VALUES (1003,' ',' ');
    INSERT INTO STUDENT  VALUES (1003,' ',NULL);
    INSERT INTO STUDENT  VALUES (1004,NULL,' ');
    INSERT INTO STUDENT  VALUES (1005,' ',NULL);
    INSERT INTO STUDENT  VALUES (1005,null,NULL);
    INSERT INTO STUDENT  VALUES (1006,null,NULL);
    
    --     :     ,        
    --               
    --               
    --                    ?                ,            
    --                      
    
    --             
    DROP TABLE STUDENT;
    CREATE TABLE STUDENT(
        SID     NUMBER(4),
        SNAME   VARCHAR2(20),
        CONSTRAINTS PK_STU PRIMARY KEY (SID)
    );
    
    
    INSERT INTO STUDENT VALUES (1000,' 1');
    INSERT INTO STUDENT VALUES (1001,' 1');
    INSERT INTO STUDENT VALUES (1001,' 1');
    INSERT INTO STUDENT VALUES (null,' 1');
    
    --               ,        
    DROP TABLE STUDENT;
    CREATE TABLE STUDENT(
        FIRST_NAME      VARCHAR2(10),
        LAST_NAME       VARCHAR2(20),
        GRADE           VARCHAR2(20),
        CONSTRAINTS PK_STU PRIMARY KEY (FIRST_NAME,LAST_NAME)
    );
    
    INSERT INTO STUDENT VALUES (' ',' ','Java   ');
    INSERT INTO STUDENT VALUES (' ',' ','Java   ');
    INSERT INTO STUDENT VALUES (' ',' ','Java   ');
    INSERT INTO STUDENT VALUES (' ',' ','Java   ');
    INSERT INTO STUDENT VALUES (' ',null,'Java   ');
    INSERT INTO STUDENT VALUES (NULL,' ','Java   ');
    INSERT INTO STUDENT VALUES (NULL,null,'Java   ');
    
    --    (   )        
    --     ,        ,   null
    --                     
    --       ,      ,      ,     
    CREATE TABLE DEPT1(
        DEPTNO     NUMBER(4) PRIMARY KEY,
        DNAME      VARCHAR2(10)
    );
    
    CREATE TABLE EMPL1(
         EMPNO     NUMBER(4) PRIMARY KEY,
         ENAME     VARCHAR2(10),
         JOB       VARCHAR2(10),
         DEPT_NO   NUMBER(4),
         CONSTRAINTS   FK_EMP FOREIGN KEY (DEPT_NO)  REFERENCES DEPT1 (DEPTNO)
    );
    
    --       ,        ,        ,       .
    INSERT INTO DEPT1 VALUES (10,'   ');
    INSERT INTO DEPT1 VALUES (20,'   ');
    INSERT INTO DEPT1 VALUES (30,'   ');
    
    INSERT INTO EMPL1 VALUES (1000,' 0','   ',10);
    INSERT INTO EMPL1 VALUES (1001,' 1','   ',10);
    INSERT INTO EMPL1 VALUES (1002,' 2','   ',20);
    INSERT INTO EMPL1 VALUES (1003,' 3','   ',20);
    INSERT INTO EMPL1 VALUES (1004,' 4','   ',20);
    INSERT INTO EMPL1 VALUES (1005,' 5','   ',NULL);
    
    SELECT * FROM EMPL1;
    SELECT * FROM DEPT1;
    
    --       ,        ,        ,       .
    DELETE FROM DEPT1 WHERE DEPTNO = 10;
    DELETE FROM EMPL1 WHERE DEPT_NO = 10;
    
    
    --       ,       ,      ,     
    DROP TABLE EMPL1;
    DROP TABLE  DEPT1;
    
    --                     ?                    
    CREATE TABLE DEPT1(
        DEPTNO     NUMBER(4) PRIMARY KEY,
        DNAME      VARCHAR2(10),
        LOCID     NUMBER(4),
        CONSTRAINTS LOC_UIN  UNIQUE (LOCID)
    );
    
    CREATE TABLE EMPL1(
         EMPNO     NUMBER(4) PRIMARY KEY,
         ENAME     VARCHAR2(10),
         JOB       VARCHAR2(10),
         DEPT_NO   NUMBER(4)    
    );
    
    --        ,  ALTER TABLE        
    ALTER TABLE EMPL1
      ADD CONSTRAINTS  FK_EMPL FOREIGN KEY  (DEPT_NO) REFERENCES DEPT1 (DEPTNO);
      
    --             ,             
    
    CREATE TABLE CARD(
       CID      NUMBER(4) PRIMARY KEY,
       CNAME    VARCHAR2(10)  
    );
    
    
    CREATE TABLE PERSON(
       PID       NUMBER(4)   PRIMARY  KEY,
       PNAME     VARCHAR2(20),
       CID       NUMBER(4),
       CONSTRAINTS FK_PER_CARD  FOREIGN KEY (CID) REFERENCES CARD(CID),
       CONSTRAINT  CID_UNI   UNIQUE (CID)
    );
    
    INSERT INTO CARD   VALUES (1000,'   ');
    INSERT INTO CARD   VALUES (1001,'   ');
    
    INSERT INTO PERSON VALUES (1,' 1',1000)
    INSERT INTO PERSON VALUES (2,' 2',1000)
    
    SELECT * FROM CARD;
    SELECT * FROM PERSON;
    
    --         ,      
    CREATE TABLE STUDENT(
        SID      NUMBER(4) PRIMARY KEY,
        SNAME    VARCHAR2(20)
    );
    
    CREATE TABLE COURSE(
       CID      NUMBER(4) PRIMARY KEY ,
       CNAME    VARCHAR2(20)
    );
    
    
    -- 1.                   ,            
    DROP TABLE STU_COUR;
    
    CREATE TABLE  STU_COUR (
       SID      NUMBER(4) ,
       CID      NUMBER(4),
       CONSTRAINT  FK1  FOREIGN KEY  (SID) REFERENCES STUDENT (SID),
       CONSTRAINT  FK2  FOREIGN KEY  (CID) REFERENCES COURSE (CID),
       CONSTRAINT  PK_STU_COUR  PRIMARY KEY  (SID,CID)
    );
    
    
    -- 2.                   ,           
    CREATE TABLE  STU_COUR (
       SCID     NUMBER(4) PRIMARY KEY,
       SID      NUMBER(4) ,
       CID      NUMBER(4),
       CONSTRAINT  FK1  FOREIGN KEY  (SID) REFERENCES STUDENT (SID),
       CONSTRAINT  FK2  FOREIGN KEY  (CID) REFERENCES COURSE (CID)   
    );
    
    INSERT INTO STUDENT  VALUES (1,' 1');
    INSERT INTO STUDENT  VALUES(2,' 2');
    INSERT INTO STUDENT  VALUES(3,' 3');
    INSERT INTO STUDENT  VALUES(4,' 4');
    
    INSERT INTO COURSE VALUES (1,'Corejava');
    INSERT INTO COURSE VALUES (2,'Oracle');
    INSERT INTO COURSE VALUES (3,'html');
    INSERT INTO COURSE VALUES (4,'JavaScript');
    INSERT INTO COURSE VALUES (5,'JavaWeb');
    
    INSERT INTO STU_COUR VALUES (1,1,1);
    INSERT INTO STU_COUR VALUES (2,1,2);
    INSERT INTO STU_COUR VALUES (3,1,3);
    INSERT INTO STU_COUR VALUES (4,1,4);
    INSERT INTO STU_COUR VALUES (5,2,1);
    INSERT INTO STU_COUR VALUES (6,2,3);
    INSERT INTO STU_COUR VALUES (7,2,4);
    
    --    1       
    SELECT  S.SID,S.SNAME,C.CID,C.CNAME
    FROM STUDENT S,COURSE C ,STU_COUR SC
    WHERE S.SID = SC.SID AND C.CID=SC.CID AND S.SNAME = ' 1';
    
    SELECT * FROM STUDENT;
    
    
    -- CHECK  ,          
    DROP TABLE USERS;
    CREATE TABLE USERS (
      ID         NUMBER(4) PRIMARY KEY,
      NAME       VARCHAR2(20),
      SEX        CHAR(2) DEFAULT ' '  CHECK  (SEX IN (' ',' '))
    );
    
    
    CREATE TABLE USERS (
      ID         NUMBER(4) PRIMARY KEY,
      NAME       VARCHAR2(20),
      SEX        CHAR(2) DEFAULT ' '  ,
      CONSTRAINTS SEX_VALUE  CHECK (SEX IN (' ',' '))
    );
    
    INSERT INTO USERS  (ID,NAME) VALUES (1,' 1');
    INSERT INTO USERS  (ID,NAME,SEX) VALUES (3,' 1',' ');
    
    SELECT * FROM USERS;
    
    --     ,  ALTER TABLE  ,       ,        
    ALTER TABLE USERS
      DROP  CONSTRAINTS SEX_VALUE;
      
    --           ,          ,                 
    CREATE TABLE DEPT1(
        DEPTNO     NUMBER(4) PRIMARY KEY,
        DNAME      VARCHAR2(10),
        LOCID     NUMBER(4),
        CONSTRAINTS LOC_UIN  UNIQUE (LOCID)
    );
    
    CREATE TABLE EMPL1(
         EMPNO     NUMBER(4) PRIMARY KEY,
         ENAME     VARCHAR2(10),
         JOB       VARCHAR2(10),
         DEPT_NO   NUMBER(4)    
    );
    
    --        ,  ALTER TABLE        
    ALTER TABLE EMPL1
      ADD CONSTRAINTS  FK_EMPL FOREIGN KEY  (DEPT_NO) REFERENCES DEPT1 (DEPTNO); 
      
    ALTER TABLE DEPT1
      DROP PRIMARY KEY  CASCADE;  
    

    좋은 웹페이지 즐겨찾기