#9 DBMS _DataType, DDL

정진형·2021년 11월 8일
0

DBMS

목록 보기
9/11
post-thumbnail

oracleDB XE11g R2, DBeaver 21.2.3

wihdow10

  1. Oracle Data Type

1-1. 데이터 타입

  • 데이터 타입이란 컬럼에 저장되는 데이터 유형을 말한다
  • 기본 데이터 타입은 문자형, 실수, 소수, 자료형 등의 여러 데이터를 식별하는 타입이있다

1-2. 문자형 데이터 타입

  • CHAR(), VARCHAR2()
  • 가변길이란, 실제 입력된 데이터 길이에 따라 크기가 변하는것을 의미한다(VARCHAR2)
  • 가변형 문자형 데이터 타입인 VARCHAR2()에 10만큼의 데이터 공간을 할달하고 abc라는 3의 크기에 데이터를 입력하면 나머지 7의 데이터 공간은 없어지고 최종 크기는 3이된다 하지만 최대 입력 크기는 10까지이다
  • 고정형 문자형 데이터 타입인 CHAR()에 10만큼의 데이터 공간을 할당하면 얼마를 입력하든 최종 크기는 10이다

1-3. 숫자형 데이터 타입

  • 대부분 NUMBER()형을 사용한다
NUMBER(P,S) -- P : 소수점을 포함한 전체 다릿수 S : 소수점 자릿수
-- NUMBER()도 가변형 타입으로 P와 S를 입력하지 않으면 저장 데이터 크기에 맞게 자동 조절된다
-- NUMBER(P) : 정수 NUMBER(S) : 실수
-- 최대 38자리(10의 38승 -1 만큼이 아니다)

-- 입력값 : 123.89
NUMBER()	: 123.89
NUMBER(2)	: error
NUMBER(3)	: 124
NUMBER(3,2)	: error
NUMBER(4,1)	: 123.9
NUMBER(4,2)	: error
NUMBER(5)	: 124
NUMBER(5,0)	: 124
NUMBER(5,2)	: 123.89
NUMBER(6,1)	: 123.9

-- P < S
0.01234	NUMBER(4,5)
0.00012	NUMBER(2,5)
	NUMBER(3,5)
        NUMBER(4,5)
        
-- 입력값 : 0.000127
NUMBER(4,5)	: 0.00013
NUMBER(2,7) 	: 0.0000012

-- S가 음수
-- 입력값 : 123.54
NUMBER(7,-1)	: 120	//소수점을 기준으로 앞 자리를 반올림 하고 뒷 자리를 잘라준다
-- 입력값 : 125.54
NUMBER(7,-1)	: 130
-- 입력값 : 123.894
NUMBER(6,-2)	: 100

1-4. 날짜 데이터 타입

  • 가장 일반적으로 쓰는 데이터 타입은 DATE 타입이다

1-5. LOB 타입

1-6. DDL(Data Definition Language)

  • 데이터 구조를 정의 하기 위한 테이블 생성, 삭제 같은 명령어
  • CREATE : 테이블 생성
  • DROP : 테이블 삭제
  • ALTER : 테이블 수정
  • TRUNCATE : 테이블에 있는 모든 데이터 삭제
  1. 데이터 조작어(Data Manipulation Language)

2-1. 데이터 조작어란

  • 데이터의 조회 및 변형을 위한 명령어

2-2. 데이터 조작어의 종류

  • SELECT : 데이터 조회(R)
  • INSERT : 데이터 입력(C)
  • UPDATA : 데이터 수정(U)
  • DELETE : 데이터 삭제(D)

2-3. SELECT

SELECT	컬럼
FROM	테이블
WHERE	조건;

2-4. INSERT

INSERT INTO 테이블명 (컬럼1, 컬럼2, ...) -- 특정 컬럼
VALUES (1,2, ...);

INSERT INT 테이블명 VALUES (1,2, ...);  -- 전체 컬럼

2-5. UPDATE

UPDATE 테이블 SET 컬럼1 =1, 컬럼2 =2, ...
WHERE 조건;

2-6. DELETE

DELETE 테이블 WHERE 조건;

2-7. TRUNCATE와 DELETE와 DROP 차이점

  • DROP
    테이블 존재 자체를 삭제
  • TRUNCATE
    데이터만 통으로 삭제
    데이블을 DROP했다가 CREATE한다
    조건절이 없다
    모든 행을 삭제하는 데에는 가장 빠르고 효율적이다
  • DELETE
    데이터를 골라서 삭제
    조건절이 있다
    한줄 한줄 삭제한다
-- DDL
-- 테이블 생성 CREATE
-- 테이블, 칼럼등에 변화가 있으면 목록에서 새로고침을 해주어야 보인다
CREATE TABLE EMPLOYEES2 (
	EMPLOYEE_ID	NUMBER(10),
    	NAME		VARCHAR2(20),
        SALARY		NUMBER(7,2)
);

-- 테이블 삭제 DROP
DROP TABLE EMPLOYEES2;

-- 기존 테이블과 동일하게 작성
CREATE TABLE EMPLOYEES3
AS
SELECT * FROM EMPLOYEES e
;

-- 칼럼 추가 ALTER ADD
ALTER TABLE EMPLOYEES2 ADD (
	MANAGER_ID	VARCHAR2(20)
);

-- 칼럼 추가 ALTER ADD
ALTER TABLE EMPLOYEES2 ADD (
	MANAGER_I	VARCHAR2(20)
);


-- 알터문 작성시 크리에이트문에 추가해주는게 좋다
CREATE TABLE EMPLOYEES2 (
	EMPLOYEE_ID	NUMBER(10),
    	NAME		VARCHAR2(20),
        SALARY		NUMBER(7,2),
        MANAGER_ID	VARCHAR2(20)
);

-- 칼럼 삭제  ALTER DROP
ALTER TABLE EMPLOYEES2 DROP COLUMN MANAGER_I;

-- 칼럼 수정 ALTER MODIFY
ALTER TABLE EMPLOYEES2 MODIFY (
	MANAGER_ID	VARVCHAR2(20)
);

-- 칼럼 수정 ALTER MODIFY	
ALTER TABLE EMPLOYEES2 MODIFY (
	MANAGER_NAME	VARVCHAR2(20)	-- 모디파이는 이름을 기준으로 하기 때문에 칼럼명을 수정할 수 없다
);

-- 데이터 넣기 INSERT
INSERT INTO EMPLOYEES2 VALUES (1, '테스트', 3000);

-- 데이터 비워내기 TRUNCATE
TRUNCATE TABLE EMPLOYEES2;

-- 테이블 생성
CREATE TABLE SAMPLE (
	DEPTNO		NUMBER(20),
    	DEPTNAME	VARCHAR2(15),
        DEPLOC		VARCHAR2(15),
        DEPMANAGER	VARCHAR2(10
);

-- INSERT
INSERT INTO SAMPLE (DEPTNO, DEPTNAME, DEPLOC, DEPMANAGER)
VALUES (10, '기획실', '서울', '홍길동');

-- INSERT INTO SAMPLE (DEPTNO, DEPTNAME, DEPLOC, DEPMANAGER)
-- VALUES (20, '전산실', '부산', '김말똥');

-- INSERT INTO SAMPLE (DEPTNO, DEPTNAME, DEPLOC, DEPMANAGER)
-- VALUES (30, '영업부', '광주', 'NULL');

INSERT INTO SAMPLE
VALUES (20, '전산실', '부산', '김말똥');

INSERT INTO SAMPLE
VALUES (30, '영업부', '광주', 'NULL');

-- UPDATE
-- SAMPLE 테이블에서 DEPTNO = 50으로 UPDATE
-- 조건 : DEPTNO = 30
UPDATE SAMPLE SET DEPTNO = 50
WHERE DEPTNO = 30;

-- DELETE
-- DEPTNO = 50 데이터 삭제
DELETE SAMPLE WHERE DEPTNO = 50;

-- 테이블 생성
/*
* 테이블명 : TB_TEAM
* 칼럼명 : 	TEAM_ID		NUMBER(10)
*		LOCALS		VARCHAR2(10)
*		TEAM_NAME	VARCHAR2(10)
*		OPEN_DATE	DATE
*		PHONE_NUMBER	VARCHAR2(15)
*		HOME_PAGE	VARCHAR2(60)
*/

CREATE TABLE TB_TEAM(
 	TEAM_ID		NUMBER(10)
	LOCALS		VARCHAR2(10)
	TEAM_NAME	VARCHAR2(10)
	OPEN_DATE	DATE
	PHONE_NUMBER	VARCHAR2(15)
	HOME_PAGE	VARCHAR2(60)
);

-- INSERT
-- 100, '서울', '서울팀', '2021/02/02', '010-1234-4567', 'WWW.TJDNFXSLA.COM'
-- 200, '부산', '부산팀', '19/05/01', '010-987-6543'

INSERT INTO TB_TEAM
VALUES (100, '서울', '서울팀', '2021/02/02', '010-1234-4567', 'WWW.TJDNFXSLA.COM')

-- INSERT INTO TB_TEAM
-- VALUES (200, '부산', '부산팀', '19/05/01', '010-987-6543', 'NULL')

INSERT INTO TB_TEAM (TEAM_ID, LOCALS, TEAM_NAME, OPEN_DATA
VALUES (200, '부산', '부산팀', '19/05/01', '010-987-6543')

-- UPDATE
-- TEAM_ID 200인 팀의 홈페이지를 WWW.QNTKSXLA.COM
UPDATE TB_TEAM SET HOME_PAGE = WWW.QNTKSXLA.COM
WHERE TEAM_ID = 200;

-- DLETE TEAM_ID = 100
DELETE TB_TEAM WHERE TEAM_ID = 100;


0개의 댓글