본문 바로가기

전체 글128

CODO Day38_DB_JDBC(Board&Join) 게시판(DB 활용) Controller package kr.co.web.controller; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import kr.co.web.service.Model; @WebServlet(urlPatterns = .. 2023. 3. 28.
CODO Day37_DB_JDBC(Java Data Base Connectivity) JDBC(Java Data Base Connectivity) Java & Data Base 연결에 필요한 프로그래밍 JAVA 와 DB 연결 프로그래밍 DB 쿼리 실행 프로그래밍 DB 쿼리 반환 값 추출 프로그래밍 # but 라이브러리를 활용하면 간단하게 가능 아래 파일을 다운받은 후 WEB-INF.lib에 copy 직접 연결 방법 STS 사용 시 더이상 MVC 패턴을 사용하지 않아, Model 대신 Service로 사용하나 비슷한 역할 Service : Controller에서 받은 작업 중 DB와 연결해야하는 작업을 DAO로 넘김 Package : Controller / DAO / Service DAO & DTO DAO DB 연결 및 쿼리문 실행 DTO DAO에서 주고 받는 데이터를 저장하기 위한 데이터.. 2023. 3. 27.
CODO Day36_DB_ERD(논리설계/물리설계) ERD를 활용한 논리설계 SNS Service 설계 Shopping Mall Service 설계 2023. 3. 24.
CODO Day35_DB(정규화&역정규화) 정규화(normalization)와 역정규화(denormalization) RDBMS 설계에서 중복이 최소화 되도록 데이터를 구조화 하는 프로세스 자료 중복으로 인해 이상현상이 발생할 수 있어 이를 최소화하기 위해서 사용 이상 현상을 최소화 하기 위해 테이블을 쪼개는 작업 삭제 이상 원치 않는 데이터도 삭제 member 의 id 를 삭제하려 했는데 모두 삭제 삽입 이상 원치 않는 데이터가 삽입 profile 의 name 을 넣었는데 grade 에도 삽입 갱신 이상 데이터 일부만 갱신 모든 id 를 변경 하려 했는데 grade 의 id 만 변경 정규화(normalization) 과정은 총 여섯 과정이 있음 실제로는 3NF까지만 사용(3NF가 되면 정규화가 된 것으로 간주) 각 정규형은 이전 단계들을 모두 .. 2023. 3. 24.
CODO Day35_DB(Auto_increment/Limit&offset/Function) Auto_increment 자동으로 증가하는 속성 Table 생성 시 속성으로 지정하거나 이미 생성된 Table에 추가 auto increment 속성이 사용되는 컬럼은 key 설정이 되어 있어야 함 무조건 들어가고 절대 중복되지 않기 때문에 PK로 활용 자동증가하는 속성으로 중복값이 있으면 안되기 때문 테이블 생성 시 지정 create table auto_inc( no int(10) auto_increment primary key ,name varchar(10) not null ); desc auto_inc; insert into auto_inc (name) values ('kim'); insert into auto_inc (name) values ('lee'); insert into auto_inc .. 2023. 3. 24.
CODO Day35_DB(In&Exists/Any&All/Index/View) In&Exists IN : '=' 비교만 가능, OR 조건의 검색결과 내용을 가져옴 select ename, job from emp e where deptno in(2,4); -- 서브쿼리가 먼저 동작된 후 메인쿼리가 동작 select ename, job from emp e where deptno in(select deptno from dept where loc = 'LA' or loc = 'boston'); EXISTS : 메인쿼리 실행 후 서브쿼리 조건을 비교 해당 결과가 있는지 1과 0을 반환 결과값 1 = 데이터를 보여줌 / 결과값 0 = 보여주지 않음 / 결과값 0&1 = 1인 데이터만 보여줌 메인쿼리가 먼저 실행된 후 서브쿼리 실행 EXISTS가 IN 보다 사용은 복잡하지만 속도가 빠름 IN은.. 2023. 3. 22.
CODO Day34_DB(Join/Set) JOIN 여러 문장을 서브쿼리로 작업할 경우 복잡해지기 때문에 JOIN을 사용 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법 두개 테이블을 select문장으로 조인하려면 적어도 하나의 컬럼이 공통으로 존재해야 함 일반적으로 PK(primary key)와 FK(foreign key)를 활용(묶어주기 위해서 사용,필수x) JOIN 종류 CROSS JOIN(잘 사용X), EQUI JOIN*(등가조인, 내부조인) NON EQUI JOIN(거의 사용X - 교재에만 수록) SELF JOIN, OUTER JOIN* CROSS JOIN(사용X) CROSS JOIN은 카다시안 곱을 수행 후 결과를 반환 카다시안 곱 : 짝을 지어줄 경우 모든 경우의 수를 계산 CROSS JOIN은 양 테이블의 모든 컬럼의 조합을 보.. 2023. 3. 22.
CODO Day33_DB(Constraint/Relation/Sub Query) CONSTRAINT(제약조건) 기본키 제약조건(PK - Primary Key) 컬럼에 데이터를 넣을 때 특정조건을 만족시켜야 하는 경우 사용 no : 중복 X / Null X(PRIMARY KEY) name : 중복 O / Null X 테이블 종속적(빌려줄 수 없음, 테이블이 사라지면 함께 사라짐, 테이블에 1개만 가능) ex) 신체 하나 이상의 컬럼으로 구성됨(최대 16개) 생성방법 테이블 생성시 함께 생성(많이 사용)* create table pk_test( first_col int(3) primary key, second_col varchar(4) ); desc pk_test; insert into pk_test (first_col)values(1); -- Error : Field 'first_co.. 2023. 3. 21.
CODO Day32_DB(Table/Data/Commit/Transaction) Table 테이블은 특정 데이터베이스 안에 존재 데이터 베이스에서 테이블은 여러 데이터의 집합체 JAVA의 Class와 비슷함(객체로 봄) show databases; -- 현재 존재하는 데이터베이스 create database mydb; -- mydb라는 데이터베이스 생성 use mydb; -- mydb라는 데이터베이스를 사용 show tables; -- 현재 데이터베이스 내 테이블 목록 보기 테이블 생성 CREATE TABLE [테이블 명]( [컬럼명] [데이터 타입] (사이즈), [컬럼명] [데이터 타입] (사이즈) ); 데이터타입 종류(자주 쓰는 일부) 문자타입 고정형 : char(바이트 수) 가변형 : varchar(바이트 수) text : 65,535 byte longtext : 4,294,9.. 2023. 3. 20.