Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

꺄르륵

[Oracle SQL Developer] 기초 I - TABLE 본문

프로그래밍/DB

[Oracle SQL Developer] 기초 I - TABLE

Teddy. 2019. 10. 4. 11:24

작성 규칙_

0또는1이상 "[]" , 1 이상 반드시 사용한다. "|"  


테이블 생성하기 - CREATE

    객체 생성 - CREATE
    객체 삭제 - DROP
    
    객체 안의 DATA 생성 - INSERT
    객체 안의 DATA 삭제 - DELETE
    

 


    * 사용형식 
    
    CREATE TABLE 테이블명 ( 
    
     -- 테이블명은 중복되지 않게 설정한다.
    
     컬럼명1 데이이터타입[(크기)] [NOT NULL|NULL],
         :
     컬럼명n 데이이터타입[(크기)] [NOT NULL|NULL][,]
     
     --  컬럼의 제약사항을 나타낸다. 
     --  컬럼에 대한 정의 부분 크기는 따로 작성하지 않는다면 기본으로 BYTE가 DEFAULT로 적용된다.
     --  NOT NULL|NULL 중 DEFAULT는 NULL이 적용된다. NOT NULL을 적용하려면 직접 입력해줘야한다.
    
    [
     CONSTRAINT 기본키설정명 PRIMARY KEY (컬럼명[, 컬럼명...]), 
     CONSTRAINT 외래키설정명 FOREIGN KEY (컬럼명[, 컬럼명...])
       REFERENCES 테이블명(컬럼명[, 컬럼명...])]);
       
     --  테이블의 제약사항을 나타낸다.  
     --  기본키설정명은 유일해야되며 중복되면 안된다.
     --  외래키설정명은 유일해야한다. 외래키는 각 참조할 테이블이 다를 경우 외래키 설정을 각각 작성해줘야한다.
     --  외래키를 가지고 있는 테이블은 원본 테이블(참조할 테이블)을 생성 전에는 사용할 수 없다.

 

 

    CREATE TABLE EMPLOYEE (
        E_EMP_NO CHAR(4) NOT NULL,
        E_NAME VARCHAR2(10) NOT NULL,
        E_ADDRESS VARCHAR2(50) NOT NULL,
        E_TEL_NO VARCHAR2(12),
        E_POSITION VARCHAR2(10) NOT NULL,
        E_DEPARTMENT VARCHAR2(20) NOT NULL,
        -- 각 테이블에 들어가는 컬럼의 제약사항을 작성한다.

 
        CONSTRAINT PK_EMP PRIMARY KEY (E_EMP_NO)

        -- 기본키 및 외래키를 설정해주며, 외래키는 참조받을 테이블이 이미 생성되어있어야 한다.
    );

 


생성된 테이블에 값 넣기 - INSERT

  - INSERT, UPDATE, DELETE 문이 포함된다


  1) INSERT
    - 생성된 테이블에 자료를 삽입할 때 생성
    * 사용형식
    
    INSERT INTO 테이블명 [(컬럼LIST)]
      VALUES (값LIST);
      
      - 컬럼LIST : 저장하고자하는 데이터의 순서와 MAPPING되는 컬럼명
                  컬럼명을 ','로 분리하여 기술하고, 생략하면 테이블 생성시 기술됨. 
                  모든 컬럼과 순서에 맞춰 데이터를 정의해야함.
                  NOT NULL 로 설정된 컬럼은 반드시 작성해줘야 한다.
                                      
      - 값LIST : '컬럼리스트'로 정의된 컬럼에 저장할 값 정의 순서와 갯수가 일치해야함.             
      
    
    사용예) 사원테이블(EMPLOYEE)에 신규사원정보를 입력하시오
    
    사원번호 : E101
    사원명 : 홍길동
    주소 : 홍길시 동구 길홍동 500
    전화번호 : 10-1234-5678
    직위 : 사원
    부서 : 개발부
    
    사원번호 : E102
    사원명 : 강감찬
    주소 : 서울시 영등포구 당산동 500
    전화번호 : 02-6789-7891
    직위 : 부장
    부서 : 총무부
    
    
    -- 컬럼명을 생략하고 값을 입력하는 경우


    INSERT INTO EMPLOYEE VALUES ('E102','강감찬','서울시 영등포구 당산동 500','02-6789-7891','부장','총무부');
    
    -- 컬럼명을 작성하고 값을 입력하는 경우


    INSERT INTO EMPLOYEE(E_EMP_NO, E_NAME,E_ADDRESS,E_TEL_NO,E_POSITION,E_DEPARTMENT)

 


    -- CHAR, VARCHAR2 문자와 문자열의 구분이 없기때문에 모두 문자열로 취급한다. 
    -- 표현은 '내용' 으로 사용한다.
    -- 컬럼리스트 순서에 맞춰서 값리스트를 작성해준다.


    VALUES ('E101', '홍길동', '홍길시 동구 길홍동 500', '10-1234-5678', '사원', '개발부');

 

    -- NULL 값을 넣어주는 경우 NULLABLE 인 E_TEL_NO을 빼거나 ' ', 해당 위치에 NULL 로 컬럼리스트에 기술을 해준다.
    INSERT INTO EMPLOYEE(E_EMP_NO, E_NAME,E_ADDRESS,E_POSITION,E_DEPARTMENT)
    VALUES ('E103', '홍길순', '충북 청주시 서원구 복대동 123', '팀장', '개발부');


    INSERT INTO EMPLOYEE VALUES ('E103', '홍길순', '충북 청주시 서원구 복대동 123',NULL,'팀장', '개발부');

    INSERT INTO EMPLOYEE VALUES ('E103', '홍길순', '충북 청주시 서원구 복대동 123', ' ' ,'팀장', '개발부');

 

    -- SELECT문을 쓸때 * = ALL 모든 컬럼 이라는 뜻이다.

    -- 테이블에 입력된 값 출력해보기

    SELECT * FROM EMPLOYEE;

 


테이블 복사하기 - COPY

 

    1) COPY

     테이블에 저장된 자료와 구조만 복사한다. 기본키 및 외래키는 복사되지 않는다.
                   
    * 사용형식 
                   
   CREATE TABLE 복사할 테이블명 AS SELECT 문 복사될 테이블;
                   

   -- EMPLOYEE 테이블의 모든 내용을 복사해온다.
 

   CREATE TABLE EMPLOYEECOPY AS SELECT * FROM EMPLOYEE;


테이블 구조 변경 처리하기 - ALTER

 

 * 사용형식
    
    1). 테이블명 바꾸기
    
    ALTER TABLE 수정 전 테이블명 RENAME TO 수정할 테이블명;
    
    ALTER TABLE EMPLOYEECOPY RENAME TO EMP;
    
    2). 컬럼 추가
    
    ALTER TABLE 테이블명
        ADD 컬럼명 데이터타입[(크기)] [NOT NULL|NULL];
        
    ALTER TABLE EMP
        ADD E_SALARY NUMBER (8);
        -- NOT NULL 을 쓰지못하는 이유? 이미 입력된 데이터가 있으면 걔가 NOT NULL이여야 되는데
        -- 추가하려고하면 이미 NULL 값이라
    
    3). 제약사항(기본키 및 외래키) 추가
    
    ALTER TABLE 테이블명
        ADD CONSTRAINT 기본키명 PRIMARY KEY (컬럼명[, 컬럼명...]),  
        CONSTRAINT 외래키설정명 FOREIGN KEY (컬럼명[, 컬럼명...]) 
        REFERENCES 테이블명(컬럼명[, 컬럼명...]); 
        
        
     ALTER TABLE EMP
        ADD CONSTRAINT PK_EMP_COPY PRIMARY KEY (E_EMP_NO);
        
        
    4). 컬럼명 변경
        
    ALTER TABLE 테이블명
        RENAME COLUMN 수정 전 컬럼명 TO 수정 후 컬럼명;
        
    ALTER TABLE EMP
        RENAME COLUMN E_ADDRESS TO E_ADDR;    

 

    5). 컬럼 수정


    -- 문자 -> 숫자로 변경하는 경우는 이미 숫자로 맞춰놔야 변경이 가능하다.
    -- 데이터타입의 크기를 줄이는 경우 데이터가 잘려나갈수 있으므로 주의가 필요하다.


    ALTER TABLE 테이블명
        MODIFY 컬럼명 데이터타입[(크기)]  [NOT NULL|NULL];


    -- 두 가지 이상을 변경시킬때는 ( ) 안에 묶어줘서 처리를 한다.


    ALTER TABLE EMP
        MODIFY (E_ADDR VARCHAR2 (70), E_TEL_NO VARCHAR2 (25));   
        
    6). 삭제


     - 컬럼이나 제약사항(기본키, 외래키) 삭제
     
    ALTER TABLE 테이블명
        DROP COLUMN|CONSTRAINT 컬럼명|제약사항설정명;
        
    ALTER TABLE EMP
        DROP COLUMN E_SALARY;

 

    -- 테이블 삭제


    DROP TABLE 테이블명; 

 

    DROP TABLE EMP;