Study📚/Oracle

Oracle - 테이블 생성하고 데이터 삽입하기

woo!na 2023. 10. 22. 19:34

- 테이블 생성하기 : CREATE

CREATE TABLE TBL_TEST
( NO	NUMBER(3)
, NAME	VATCHER2(10)
);

-- CREATE 테이블 테이블명
-- ( 컬럼명	데이터요소(크기)
-- , 컬럼명	데이터요소(크기)
-- 			:
-- );


-- 현재 접속한 사용자 계정이 갖고있는(소유하고 있는) 테이블 조회
SELECT *
FROM TAB;
--==>> TBL_TEST     TABLE

SELECT *
FROM USER_TABLES;
--==>> TBL_TEST     USERS     VALID	10     1	255	65536	1048576	1	2147483645

-- 각각의 테이블들이 어떤 테이블 스페이스에 저장되어 있는지 조회
SELECT TABLE_NAME, TABLESPACE_NAME
FROM USER_TABLES;
--==>>
/*
TBL_TEST	USERS
EMP	        USERS
BONUS	    USERS
SALGRADE	USERS
*/

테이블이 생성되는 테이블 스페이스를 지정할 수도 있다.

CREATE TABLE TBL_TEST2
( NO    NUMBER(4)
, NAME  VARCHAR2(20)
) TABLESPACE TBS_TEST;

-- CREATE 테이블 테이블명
-- ( 컬럼명	데이터요소(크기)
-- , 컬럼명	데이터요소(크기)
-- 			:
-- ) TABLESTPACE 테이블스페이스명;

 

- 테이블의 자료구조 확인하기 : DESCRIBE / DESC

DESCRIBE TBL_TEST;
--==>>
/*
이름     널?       유형           
------ -------- ------------ 
NO              NUMBER(3)    
NAME            VARCHAR2(10)
*/

DESC TBL_TEST2;
--==>>
/*
이름     널?       유형           
------ -------- ------------ 
NO              NUMBER(3)    
NAME            VARCHAR2(10)
*/

 

- 오라클의 주요 자료구조

cf) MSSQL 서버의 표현타입

더보기

MSSQL 서버의 정수 표현 타입
 tinyint     0 ~ 255             1Byte
 smallint    -32,768 ~ 32,767    2Byte
 int         -21억 ~ 21억        4Byte
 bigint      디게 크다           8Byte
    
 MSSQL 서버의 실수 표현 타입
 float, real
    
 MSSQL 서버의 숫자 표현 타입
 decimal, numeric
    
 MSSQL 서버의 문자 표현 타입
 char, varchar, Nvarchar

※ ORACLE 은 숫자 표현 타입이 한 가지로 통일되어 있다.
1. 숫자형 NUMBER → -10의 38승-1 ~ 10의 38승
          NUMBER(3) → -999 ~ 999
          NUMBER(4) → -9,999 ~ 9,999
          NUMBER(4, 1) → -999.9 ~ 999.9 → 소수점 이하 한자리 포함 총 네자리

※ ORACLE 의 문자 표현 타입
2. 문자형 CHAR → 고정형 크기 (무조건 지정된 크기 소모)
          CHAR(10) ←← '가나다'         6Byte 이지만 10Byte 를 소모
          CHAR(10) ←← '가나다라마'    10Byte    
          CHAR(10) ←← '가나다라마바'  10Byte 를 초과하므로 입력 불가

 

VARCHAR2 → 가변형 크기 (상황에 따라 크기가 변경)
          VARCHAR2(10) ←← '가나다'         6Byte 이지만 6Byte 를 소모
          VARCHAR2(10) ←← '가나다라마'    10Byte    
          VARCHAR2(10) ←← '가나다라마바'  10Byte 를 초과하므로 입력 불가. 줄어들긴 하지만 늘어나진 않음.
          
          NCHAR → 유니코드 기반 고정형 크기(글자 수)
          NCHAR(10) ←← 10글자
          
          NVARCHAR2 → 유니코드 기반 가변형 크기(글자 수)
          NVARCHAR2(10) ←← 10글자
          
3. 날짜형 DATE

날짜형 세션 변경하기

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

- 컬럼 구조의 추가 및 제거

-- TBL_TEST 테이블에 주민등록번호 데이터를 담을 수 있는 컬럼 추가
ALTER TABLE TBL_TEST
ADD SSN CHAR(13);

-- ALTER TABLE 테이블명
-- ADD 컬럼명 자료구조;

-- TBL_TEST 테이블에 추가한 SSN(주민등록번호) 컬럼 제거
ALTER TABLE TBL_TEST
DROP COLUMN SSN;

-- ALTER TABLE 테이블명
-- DROP COLUMN 컬럼명;

 

- 데이터 삽입(등록)하기 : INSERT

INSERT INTO TBL_TEST VALUES (10,'Eun');

--INSET INTO 테이블명 VALUES (형식에 맞는 데이터들);

 

- 데이터 수정하기 : UPDATE

UPDATE MY_HSB
SET BIGO = '공략대상', JOB = '꼭배우여야만하는거아니지만' 
WHERE BIGO = '미혼';

UPDATE 테이블명
SET 변경컬럼 = 변경내용, 변경컬럼2 = 변경내용2
WHERE 조건;

 

- 데이터 삭제하기 : DELETE

DELETE 
FROM MY_HSB
WHERE BIGO = '기혼'; -- 잘가라...
-- BIGO가 기혼인 레코드 모두 삭세

DELETE
FROM 테이블명
WHERE 조건;

 

- 테이블과 컬럼에 커멘트 등록하기

-- 테이블 레벨의 커멘트 정보 입력
COMMENT ON TABLE TBL_TEST IS '테스트용';

-- COMMENT ON TABLE 테이블명 IS '커멘트';

SELECT *
FROM USER_TAB_COMMENTS;
--==>> TBL_TEST  TABLE  테스트용

-- 테이블에 소속된 컬럼에 대한 커멘트 데이터 입력
COMMENT ON COLUMN TBL_TEST.NAME IS '이름';

-- COMMENT ON COLUMN 테이블명.컬럼명 IS '커멘트';

SELECT *
FROM USER_COL_COMMENTS
WHERE TABLE_NAME = 'TBL_TEST';
--==>>
/*
TBL_TEST  NO
TBL_TEST  NAME  이름
*/

 

- 테이블 복사하기

CREATE TABLE TBL_TEST3
AS
SELECT *
FROM TBL_TEST;

 

- 테이블 데이터 전체 삭제

DELETE TBL_TEST3;

단, 테이블이 삭제되는 것이 아닌  테이블의 구조(뼈대, 특)는 그대로 남아있는 상태에서 데이터만 모두 소실(삭제)

테이블을 삭제하는 것은 DROP인데 휴지통에는 남아있기 때문에 PURGE RECYCLEBIN 문을 실행해주어야 됨.

DROP TABLE TBL_TEST3;

-- 휴지통으로 넘어한 DROP 된 테이블 영구삭제
PURGE RECYCLEBIN;