2023.05.17 ~ 2023.05.18
교육을 들으며 기록한 내용입니다.
잘못된 내용이 있으면 댓글로 알려주시면 감사하겠습니다:)
* 개발툴 STS를 사용
* 백엔드서버 : 스프링
->스프링부트(기술 + 도구)
- 톰캣(무료웹서버)을 포함함
* JSP/Servelt 맛보기
REST방식의 서버로 프로젝트
-JSON
* 게시판 CRUD를 활용하여 만들기
● DDL(Data Definition Language)
- create : 데이터베이스, 테이블등을 생성
- alter : 테이블을 수정
- drop : 데이터베이스, 테이블을 삭제
- truncate : 테이블을 초기화
▷CREATE 구조
CREATE TABLE 테이블명 (컬럼정보);
* 컬럼정보 = 컬럼명 데이터타입 NOT NULL | NULL DEFAULT 기본값 기본키(데이터의 정렬을 위한 키)
* 작성법
- mariadb : 식별자구분기호 백틱(` `) 사용 - 변수
- oracle : 식별자구분기호 큰따옴표(" ") 사용 - 변수
- 식별자 이름에 공백문자, 특수기호(_제외)는 지양하기
- 문자열 상수값을 작은따옴표('') 사용
- 각 컬럼의 구분은 콤마(,) 사용
● CREATE 실습
- 상품관리게시판 만들기
1. 상품테이블 만들기(goodsinfo)
DROP table if exists `goodsinfo`; -- 중복값 제거
CREATE table `goodsinfo` (
goodscd CHAR(5) NOT NULL COMMENT '상품코드',
goodsname VARCHAR(20) NOT NULL COMMENT '상품명',
unitcd CHAR(2) NOT NULL COMMENT '단위코드',
unitprice DECIMAL(5, 0) NOT NULL DEFAULT '0' COMMENT '단가',
stat ENUM('Y', 'N') NOT NULL DEFAULT 'Y' COMMENT '상태',
insdtm DATETIME NULL DEFAULT current_timestamp() COMMENT '등록일시',
moddtm DATETIME NULL DEFAULT NULL COMMENT '탈퇴일시',
PRIMARY KEY(goodscd)
);
* DECIMAL(M, N) : 소수점자리수를 조정(정밀도), 금융/과학기술용에서 사용
-> M : 앞자리 소수 부분을 포함한 실수의 총 자릿수
-> N : 소수점 자리 수
* ENUM : 데이터 한정(제약조건), 변수에서 찍을 수 있는 값을 정함
('Y', 'N')이면 2개만 사용 가능
('MONDAY', 'TUESDAY'...)이면 7개만 사용 가능
* PRIMARY KEY
- 키를 기준으로 정렬이 됨
- 값의 중복을 허용하지 않음
- NOT NULL(값이 꼭 있어야 함)
* VARCHAR : 가변길이 문자열 타입
- 타입의 크기만큼의 데이터가 들어오지 않더라도 이후의 공간을 스페이스로 채워넣지 않음
* CHAR : 고정길이 문자열 타입
- 타입의 크기만큼의 데이터가 들어오지 않은경우 이후의 공간을 스페이스로 채움
2. 상품주문테이블(order_h)
DROP table if exists `order_h`;
CREATE TABLE order_h(
orderno CHAR(9) NOT NULL COMMENT '주문번호',
orderdt DATE NOT NULL COMMENT '주문일',
memid VARCHAR(10) NOT NULL COMMENT '주문자ID', -- 외부키
orderamt DECIMAL(7, 0) NOT NULL DEFAULT 0 COMMENT '주문총액',
cancel ENUM('Y', 'N') NOT NULL DEFAULT 'N' COMMENT '주문상태',
canceldtm DATETIME NULL DEFAULT NULL COMMENT '주문취소일시',
insdtm DATETIME NULL DEFAULT current_timestamp() COMMENT '등록일시',
moddtm DATETIME NULL DEFAULT NULL COMMENT '변경일시',
PRIMARY KEY(orderno)
);
- memid : 외래키(FOREIGN KEY) 다른곳에서 데려와서 사용 / 데이터베이스 내의 두 테이블을 이어줌
3. 상품주문테이블상세(order_d)
CREATE TABLE order_d(
orderno CHAR(9) NOT NULL COMMENT '주문번호',
goodscd CHAR(5) NOT NULL COMMENT '상품코드',
unitcd CHAR(2) NULL DEFAULT NULL COMMENT '단위코드',
unitprice DECIMAL(5, 0) NOT NULL DEFAULT 0 COMMENT '단위가격',
gty DECIMAL(3, 0) NOT NULL DEFAULT 0 COMMENT '주문수량',
amt DECIMAL(7, 0) NOT NULL DEFAULT 0 COMMENT '주문금액',
insdtm DECIMAL NOT NULL DEFAULT current_timestamp() COMMENT '등록일시',
moddtm DECIMAL NULL DEFAULT NULL COMMENT '변경일시',
PRIMARY KEY(orderno, goodscd) -- 유일한 식별키(복잡할 경우 2~3개 넣어 활용)
);
* 실무에서 이력을 기록하는 것은 중요하다!
ex) insdtm DATETIME NULL DEFAULT current_timestamp() COMMENT '등록일시';
- 제품은 입고된 일자마다 가격이 다를 수 있음(단가가 상이)
하지만 출고는 한번에 이뤄진다면 어떤 가격에 팔아야할까?
-> 이런것을 결정/판단하는 것이 비즈니스 로직
'백엔드 > 데이터베이스' 카테고리의 다른 글
데이터베이스 - 자바와 연결하기(JDBC) (1) | 2023.05.21 |
---|---|
데이터베이스 - INSERT, ALTER (2) | 2023.05.19 |
데이터베이스 - 기본명령어 (0) | 2023.05.16 |
데이터베이스 - 명령어 (0) | 2023.05.15 |
데이터베이스 - 테이블 만들기 (0) | 2023.05.14 |