Day058

RISK_TAKER·2023년 4월 21일
0

DDL(Data Definition Language), 데이터 정의어, p311

DDL은 데이터베이스 데이터를 보관하고 관리하기 위해 제공되는 여러 객체(object)의 생성/변경/삭제 관련 기능을 수행한다.

  • CREATE : 테이블을 생성
  • ALTER : 테이블을 변경(ADD, RENAME, MODIFY, DROP)
  • RENAME : 테이블의 이름을 변경
  • TRUNCATE : 테이블의 데이터를 삭제
  • DROP : 테이블을 삭제

Data Dictionary, 데이터 사전, p327

  • 데이터베이스를 구성하고 운영하는 데 필요한 모든 정보를 저장하는 특수한 테이블
  • 데이터베이스가 생성되는 시점에 자동으로 만들어진다.
  • 데이터베이스 메모리, 성능, 사용자, 권한, 객체 등 데이터베이스 운영에 중요한 데이터가 보관되어 있다.

DML(Data Manupulation Language), P266

데이터를 추가, 변경, 삭제할 때 사용되는 명령어로 이루어져 있다.

  • INSERT : 테이블에 데이터를 추가한다.
  • UPDATE : 테이블에 있는 데이터를 수정한다.
  • DELETE : 테이블에 있는 데이터를 삭제한다.

TRANSACTIOIN(트랜잭션), p291

관계형 데이터베이스에서 하나의 작업 또는 밀접하게 연관되어 있는 작업 수행을 위해 나눌 수 없는 최소 수행 단위

  • TCL : 트랜잭션을 제어하기 위해 사용하는 명령어(ROLLBACK, COMMIT)

INDEX(인덱스), p334

  • 데이터 검색 성능의 향상을 위해 테이블 열에 사용하는 객체를 의미한다.
  • 테이블에 보관된 특정 행 데이터의 주소, 위치 정보를 책 페이지처럼 목록으로 만들어 놓은 것.
--DDL
--테이블 생성하기
CREATE TABLE new_table
(     
    name VARCHAR2(30), --한글이 한글자에 3Byte, 최대 10글자
    score NUMBER(3) DEFAULT 0,
    phone VARCHAR2(16) DEFAULT 'EMPTY',
    address VARCHAR2(512)
);

SELECT *
FROM human_table;

--컬럼명 변경하기
ALTER TABLE new_table RENAME COLUMN phone TO mobile;

--테이블명 변경하기
RENAME new_table TO human_table;

--테이블을 복사한 후 테이블 생성하기
CREATE TABLE dept3
AS
    SELECT * FROM dept2;
    
--데이터 없이 테이블의 구조(컬럼)만 복사해서 테이블 생성하기
CREATE TABLE dept4
AS
    SELECT * FROM dept2
    WHERE 1=2;

ALTER TABLE new_table
ADD (major VARCHAR2(128));

SELECT * FROM dept3;

--모든 데이터 삭제하기
TRUNCATE TABLE dept3;

--테이블 삭제하기
DROP TABLE dept3;

SELECT *
FROM USER_CONSTRAINTS;

SELECT *
FROM USER_INDEXES;

CREATE table new_emp
(
    no NUMBER(5),
    name VARCHAR2(20),
    hiredate DATE,
    bonus NUMBER(6,2)
);

SELECT * FROM new_emp;
CREATE table new_emp2
AS
    SELECT no, name, hiredate FROM new_emp;
    
SELECT * FROM new_emp2;


CREATE table new_emp3
AS
    SELECT no, name, hiredate FROM new_emp WHERE 1=2;
    
SELECT SYSDATE FROM dual;

ALTER TABLE new_emp2
ADD (birthday DATE DEFAULT SYSDATE);

--new_emp2 테이블의 birthday 컬럼 이름을 birth로 변경
ALTER TABLE new_emp2 
RENAME COLUMN birthday TO birth;

--new_emp2 테이블의 no 컬럼의 길이를 NUMBER(7)로 변경
ALTER TABLE new_emp2
MODIFY (no NUMBER(7));

--new_emp2 테이블의 컬럼 중에서 birth 컬럼을 삭제
ALTER TABLE new_emp2
DROP COLUMN birth;
SELECT * FROM new_emp2;

--new_emp2 테이블의 컬럼은 남겨 놓고 데이터만 지우는 쿼리를 작성
TRUNCATE TABLE new_emp2;

--new_emp2 테이블을 완전히 삭제하는 쿼리를 작성
DROP TABLE new_emp2;

--DML
SELECT * FROM dept2;

--INSERT
INSERT INTO dept2 (dcode, dname, pdept, area)
VALUES ('9000', 'temp_1', '1006', 'temparea');

--전체 컬럼에 대한 데이터를 입력할 경우 컬럼명을 생락할 수 있다.
INSERT INTO dept2
VALUES ('9001', 'temp_2', '1006', 'Temp Area2');

INSERT INTO dept2
VALUES ('9002', 'temp_3', '1006', null);

INSERT INTO professor (profno, name, id, position, pay, hiredate)
               VALUES (5001, 'James Bond', 'Love_me', '정교수', 510, '2014-10-23');
SELECT TO_CHAR(hiredate, 'YYYY-MM-DD HH24:MI:SS')
FROM professor
WHERE profno = 5001;
INSERT INTO professor (profno, name, id, position, pay, hiredate)
               VALUES (5002, 'James Bond2', 'Love_me2', '정교수2', 510, SYSDATE);

SELECT *
FROM professor;


CREATE TABLE prof
AS
SELECT profno, name, id FROM professor
WHERE 1=2;

SELECT * FROM prof;

INSERT INTO prof VALUES (1, '교수1', 'PR1');
INSERT INTO prof
SELECT profno, name, id
FROM professor
WHERE profno IN (1001, 1002, 1003);

UPDATE prof
SET id = 'newid'
WHERE profno IN (1001, 1002);

UPDATE prof
SET id = 'where없이';

UPDATE prof
SET name = '새로운이름',
    id = '새로운ID'
WHERE profno = 1002;

--DELETE할때 미리 사전에 확인한 후 삭제를 하는 것이 안전하다.
SELECT * FROM prof
--DELETE FROM prof
WHERE profno > 1;


--rollback, commit
INSERT INTO prof
SELECT profno, name, id
FROM professor;

commit;

SELECT * FROM prof;

rollback;

--profno = 1002 삭제를 하려다가 실수로 전체를 삭제한 경우
DELETE FROM prof --실수로 삭제
WHERE profno = 1001;
rollback; --되돌리기

SELECT * FROM prof
--DELETE FROM prof
WHERE profno IN (5001, 5002);

commit;

--제약조건
SELECT *
FROM USER_CONSTRAINTS
WHERE table_name = 'PROFESSOR';

--빨리 찾기 위해서 인덱스를 걸어둔다.
--따로 관리해서 속도를 줄이게끔 한다.
SELECT *
FROM USER_INDEXES
WHERE table_name = 'PROFESSOR';

--DBMS 이름
--ip 주소 = localhost : cmd -> ipconfig
--포트 확인 cmd -> lsnrctl status 
             --or D:\oracle\WINDOWS.X64_193000_db_home\network\admin\tnsnames.ora
--계정 scott
--비밀번호 tiger
SELECT *
FROM ALL_USERS;

--로그
--오라클 > diag > rdbms > orcl > orcl > trace
--D:\oracle\diag\rdbms\orcl\orcl\trace
--운영 시 오류, 문제, 경고 등을 확인한다.

0개의 댓글