SQL_9일차

서창민·2023년 3월 21일
0

SQL

목록 보기
9/10
post-thumbnail

23.03.21 화 9일차

9일차 수업내용

테이블 작성

  • 테이블 기본 틀 작성
create table userTBL0321(
    userid      char(8) not null,
    username  nvarchar2(10) not null,
    birthyear   number(4) not null,
    addr        NCHAR(2) not null,
    mobile1    char(3),
    mobile2    char(8),
    height      number(3),
    mdate      date    
);
create table buyTBL0321(
    idnum        number(8),
    userid         char(8),
    prodname    nchar(6),
    groupname   nchar(4),
    price           number(8),
    amount        number(3)
);
  • 뷰 테이블 만들기
    : 보안에 도움이 됨
    : 복잡한 쿼리를 단순화
create or replace view v_buyTBL -- 만들거나 수정하기
as
select username as 이름, prodname as 상품명, price as 가격, amount as 수량 
from buyTBL1;
create view Vv_buyTBL
as
select 이름, 상품명 from v_buyTBL;
  • 뷰테이블 칼럼 값 수정
    : JOIN 된 뷰테이블은 수정 불가
update vv_buyTBL set "상품명" = '바지2'
where 이름='바비킴';
  • DML문으로 수정 불가능한 뷰테이블 만들기
    : WITH READ ONLY (읽기전용)
create or replace view Vv_buyTBL
as
select 이름, 상품명 from v_buyTBL
WITH READ ONLY; -- 읽기전용(수정 불가능)

select * from VV_buyTBL;
  • 트랜젝션
CREATE TABLE bankBook
(
  name NVARCHAR2(10),
  money INT ,
  CONSTRAINT CK_money CHECK (money >= 0)
);
insert  into bankBook values('영심이', 1000);
insert  into bankBook values('당탕이', 0);

commit;
ROLLBACK ;

select  *  from  bankBook;

begin
  update bankBook set  money = money -500 where name='영심이';
  update bankBook set  money = money +500 where name='당탕이';
end;
--begin을 잡아주면 트랜잭션 하는 블록으로 잡아줌
commit;
ROLLBACK ;

select * from bankbook;
  • 중간저장 및 복구
ROLLBACK; 
: DDL 만드는 즉시 Commit 되기 때문에 DDL 동작 이후 상태로 돌아감
: 세이브 포인트가 있더라도 이후에 Commit 동작시 Commit 동작한 상태로 돌아감
savepoint 세이브포인트명;-- 중간 저장 기능
ROLLBACK to 세이브포인트명; -- 세이브포인트명으로 복구
commit; -- UI에서 저장이 동기화되지 않으면 누락되는 경우가 있음
  • 인덱스 만들기 기본구조
create index 인덱스명 on 테이블명(컬럼명)
create 와 drop만 사용 : 추가및 수정이 불가능

백업과 복원

  • 백업
1. 전체 데이터 베이스를 백업할때
: EXP userid=SYSTEM/비밀번호@xe FULL=y FILE=백업할 경로 및 파일
2. 관리자(system)가 다른 스키마(=사용자) 전체를 백업할 때
: EXP userid=SYSTEM/비밀번호@xe OWNER=사용자명 
  FILE=백업할 경로 및 파일
3. 일반 사용자가 자신의 전체 스키마를 백업할때
: EXP userid=사용자명/비밀번호@xe FILE=백업할 경로 및 파일
4. 일반 사용자가 특정 테이블만 백업할때
: EXP userid=사용자명/비밀번호@xe FILE=백업할 경로 및 파일 
  TABLES=(테이블명 1, 테이블명 2...)
  • 복원
1. 전체 데이터 베이스를 복원할때
: IMP userid=SYSTEM/비밀번호@xe FULL=y FILE=백업할 경로 및 파일
2. 관리자(system)가 다른 스키마(=사용자) 전체를 복원할 때
: IMP userid=SYSTEM/비밀번호@xe FROMUSER=사용자명 TOUSER=사용자명 
  FILE=백업할 경로 및 파일
3. 일반 사용자가 자신의 전체 스키마를 복원할때
:  IMP userid=SYSTEM/비밀번호@xe  FILE=백업할 경로 및 파일
4. 일반 사용자가 특정 테이블만 복원할때
:  IMP userid=SYSTEM/비밀번호@xe FILE=백업할 경로 및 파일 
   TABLES=(테이블명 1, 테이블명 2...)
  • 전체백업
C:\exp userid=SYSTEM/1234@xe OWNER=sqlDB 
FILE=c:\DB백업\sqlDB01.dmp
  • 테이블 생성
create or replace table aaa(
    idx number(3)
);
  • 테이블 삭제
drop table bigdata;
  • 전체복원
C:\imp userid=system/1234@xe fromuser=sqlDB touser=sqlDB 
FILE=c:\db백업\sqlDB01.dmp
  • 특정 테이블 복원
C:\DB백업>imp userid=system/1234@xe fromuser=sqlDB touser=sqlDB 
FILE=c:\db백업\sqlDB01.dmp tables=(aaa)
  • 커맨드 단축키
cd / 폴더명명 -  해당 폴더로 이동
cd ./ - 현 디렉토리로 이동(사용성 ↓)
cd ../ - 상위 디렉토리로 이동
cd/ - 가장 초기 디렉토리로 이동 변경 (윈도우, UNIX, LINUX 가능)
cd \ - 가장 초기 디렉토리로 이동 변경 (윈도우에서만 가능)
  • 커맨드 경로 목록
절대경로 - C:\... 하드디스크 기준으로 경로(편의 ↑)
상대경로 - 현재 사용중인 파일의 기준의 경로
         (INCLUDE 동작시 경로가 변경될 수 있음)

mySQL 만들기 , 권한부여 하기

  • MYSQL 명령어
show database; 데이터 베이스 보기
use ppk; ppk 데이터베이스를 사용
show tables; 테이블 보기
  • MYSQL 데이터베이스 생성
create database ppk;  
  • MYSQL 권한부여
    (계정:ppk, 암호: 1234)
grant select, insert, update, delete, create, drop, alter 
on ppk.* to 'ppk'@'localhost' identified by '1234' ;

grant select, insert, update, delete, create, drop, alter 
on ppk.* to 'ppk'@'%' identified by '1234' ;

프로시저

desc buyTBL;
create or replace procedure  ps_buyTBL
(
  b1       VARCHAR2,
  b2       VARCHAR2, 
  b3       number,   
  b4       number
)
is
begin
  insert  into buyTBL (고객이름, 구매한물건, 단가, 수량)
  values(b1, b2, b3, b4);
end;

execute ps_buyTBL('김범수','노트북',1000,5);

select * from buyTBL;

오늘은 새로배운 복원과 백업이 기억에 남는다.
오라클 툴로 테이블을 생성하고 현재의 테이블을 더미파일로 작성하여
백업을 해둔다.
그리고 테이블을 삭제한 뒤에 다시 더미파일을 이용해 복원을 했다.
이때 CMD(커맨드)창을 활용하며 진행했다.
새로운걸 배우는건 항상 즐거운거 같다.

기본 개념부터 이해해서 지식을 활용하는 실력있는 개발자가 되고싶다.

profile
Back-end Developer Preparation Students

0개의 댓글