SW과정 Database/Spring 9일차 - 0805

JongseokLee·2021년 8월 5일
0
post-thumbnail

SW과정 Database/Spring 9일차 - 0805

1. 시퀀스

게시판에서 글을 작성하면 목록 숫자가 1씩 증가하는 방식
아래 정렬로 숫자를 밑으로 내림

목록ID날짜제목
001data01012021.08.05데이터베이스 재밌다
002java1232021.09.11자바가 더 재밌다
003python_hon2021.10.12파이썬은 재밌다
004c_lang_882021.10.28C언어가 제일 재밌다
005sql_data562021.11.11데이터베이스 재밌다

2. Inlineview

From 절 뒤에 오는 서브쿼리(이해를 돕기 위한 설명이고, 일반적으로 서브쿼리라고 부르지 않음)
일반적인 서브 쿼리는 where문 뒤에 옴

3. 데이터베이스 답글 기능 없애는 이유

데이터 부하가 2배로 걸림(컬럼이 2개가 필요함)
관공서의 경우 여러가지 민원이 걸릴 수가 있으므로 폐지함

4. DML 끝

select rownum, employees.*
from employees

select rownum, employees.*
from employees
where rownum between 1 and 17

-- 2~17은 안됨, rownum라는 가상의 컬럼은 select문이 수행된 결과값앞에 생성됨
-- rownum =1을 포함하는 값을 오라클이 내부적으로 읽어 올 수 있음
-- 그 외에는 읽어 올 수 없음
Oracle 순서 
1) select을 먼저 읽음 
2) where이 두번째 
3) 마지막에 from으로 table을 찾아봄
inline view 

    1.  select rownum, employees.*
        from employees
        where rownum between 2 and 17

    2. 첫번째 해결방법, 또 다른 문제가 있다. rownum 익명으로 사용
        select *
        from (select rownum as rm, employees.*
              from employees)
        where rm between 3 and 5
        /*rownum를 익명으로 써야함*/
        
        select *
        from employees
        order by employee_id desc
        /* select 하고나서 rownum가 나오기 때문에 숫자가 뒤틀려서 나온다*/
    
    3. 정렬을 했을때도 우리가 원하는 값이 나오는 최종버전
      
      -- 내코드  
        select *
        from (select rownum as rm, employees.*
              from employees
              order by employee_id desc)
        where rm between 3 and 5
        
      -- 강사님 코드
        select *
        from (select rownum rm, tt.*
            from( select *
                  from employees
                  order by first_name desc) tt)
            where rm between 3 and 5
        -- 사번 순서라서 정렬이 됨, 이름 순서로 하면 정렬이 안됨 
        -- 인라인뷰를 두번 써야지 정확한 값이 나옴
        
        그간 배운 건 DML 이제 배울 것 DDL
        Data Definition language

5. 테이블 만들기

create user human identified by 1234
grant resource, connect to human

Oracle 접속 → 우클릭 → 새접속

6. 개발 방법론

애자일 : 사용자의 요구사항을 받아서 즉각적으로 반응하면서 프로그램을 제작하는 방법
TDD : 코딩을 하기전에 모든 사항을 다 테스트를 해보고 시작함
CPDD : Copy and Paste 기법😋

7. DDL

 -----------DDL 문장 실습---------------
 create user human identified by 1234
 grant resource, connect to human
    오라클 테이블 컬럼의 타입
    1. number : 숫자(정수, 실수)
        ex) articleNum number(10) : 정수 10개
        ex) articleNum number(10,3) : 전체 자리수는 10개까지 올수가 있는데 소수점 아래는 3개 자리까지
            
    2. varchar2(50) : 가변 문자 타입 (바캐릭터2) 영어 1byte 한글 2byte(25자 까지 가능)
                      최대 4,000byte
       char(6) : 고정 길이 문자
       
    3. date : 날짜 자료 타입
    
    4. 대용량의 자료를 저장할 때
        clob
        blob
        -- blob: 2진 파일 저장
        
    5. create table bbs(--(Bulletin Board System)
            articleNum number primary key,
            id varchar2(500) not null,
            title varchar2(200) not null,
            content clob not null,
            writeDate date not null
        )
        
        drop table comments -- 삭제 커맨드
        create table comments(
            commentNum number primary key, --제약 조건 ntt 무결성 제약조건 null이 올 수 업음
            id varchar2(500) not null,
            commentContent varchar2(2000) not null,
            commentDate date not null,
            articleNum number not null,
            
            constraint comment_articleNum_fk foreign key(articleNum)
            references bbs (articleNum)
            )
            
            --c는 체크옵션 u는 유니크
        
        
        -- Java articleNum// Oracle article_num
    
        -- 오라클에서 컬럼의 값을 자동증가 시키기 위해서는 Sequence 객체를 사용함
        
    create sequence bbs_seq
    start with 1
    increment by 1
    
    -- 오류가 나더라도 시퀀스의 값은 증가함
    
    insert into bbs values(bbs_seq.nextval, 'a', 'a', 'a', sysdate)
    -- 시퀀스의 현재 값을 읽어올때 : bbs_seq.currval
    commit
    
    delete
    from bbs
    
    commit
    
    rollback
    
    --auto commit -> ddl, sql developer 정상종료 시킬 때, ddl 문장을 수행 시키다가 
    --오타가 발생하면 auto commit이 발생함
    
    --truncate는 삭제하는 ddl문임(auto commit 발생함), 롤백이 안됨 
    
    truncate table bbs
    
    alter table bbs add(cell varchar2(20) not null)
    alter table bbs modify(cell varchar2(200))
    alter table bbs drop column cell
    
    create table emp1
    as
    select * 
    from bbs
    
    create table emp2
    as
    select * 
    from bbs
    where 1 = 2000 --false라서 아무런 값도 안가져옴

8. Spring

스프링 다운로드 바로가기

MVC(Model View Controller : 웹개발 프로그램)

패키지명 3단계로 하는 이유 : 프로젝트 안에서 도메인을 주소로 하기 위해서 ex)com.naver.www(도메인)

JAR(Java Archive, 자바 아카이브) 는 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷이다.

Jar 파일 생성되는 장소

WAS(Web Application Server) : JEUS tool - 티맥스소프트(점유율 50%), Tomcat

웹 애플리케이션 서버(Web Application Server, 약자 WAS)는 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크이다. 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)로 볼 수 있다. 웹 애플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행이 된다. 한국에서는 일반적으로 "WAS" 또는 "WAS S/W"로 통칭하고 있으며 공공기관에서는 "웹 응용 서버"로 사용되고, 영어권에서는 "Application Server" (약자 AS)로 불린다.

톰캣 다운로드 바로가기

Demon

사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다.

profile
DataEngineer Lee.

0개의 댓글