뭔가 많은 게 생략된 것 같지만 기분 탓이려니 하고 DB도 생성해보고 데이터 넣어보고 해 보자.
1. DB Table 생성
개발 연습을 하는데 DB Table이 없으면 섭섭하니 Table을 만들어 보자.
CREATE TABLE `od_mber` (
`MBER_SN` INT(11) NOT NULL AUTO_INCREMENT COMMENT '회원 일련번호 Auto',
`MBER_ID` VARCHAR(100) NOT NULL COMMENT '회원 아이디' COLLATE 'utf8_general_ci',
`MBER_PWD` VARCHAR(100) NOT NULL COMMENT '회원 비밀번호' COLLATE 'utf8_general_ci',
`MBER_NM` VARCHAR(100) NOT NULL COMMENT '회원 이름' COLLATE 'utf8_general_ci',
`MBER_MOBLPHON` VARCHAR(11) NULL DEFAULT NULL COMMENT '회원 휴대폰번호' COLLATE 'utf8_general_ci',
`RM` TEXT(65535) NULL DEFAULT NULL COMMENT '비고' COLLATE 'utf8_general_ci',
`REGIST_SN` INT(11) NOT NULL COMMENT '등록 일련번호',
`REGT_DTTM` VARCHAR(14) NOT NULL COMMENT '등록일시' COLLATE 'utf8_general_ci',
`UPDT_SN` INT(11) NOT NULL COMMENT '수정일련번호',
`UPDT_DTTM` VARCHAR(14) NOT NULL COMMENT '수정일시' COLLATE 'utf8_general_ci',
PRIMARY KEY (`MBER_SN`) USING BTREE,
UNIQUE INDEX `UIX_OD_MBER` (`MBER_ID`) USING BTREE
)
COMMENT='olDev 회원 테이블'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;



모델링이 어쩌고 정규화가 어쩌고 하는 건 미뤄두자 우선은 JAVA WEB을 이해하는 쪽으로다가... 모델링은 어려우니까...
테이블도 하나 생성했으니 데이터를 1건 넣어보자. HeidSql 쿼리 탭에 아래 SQL을 입력하고 실행하자.
INSERT INTO od_mber
(
MBER_ID
, MBER_PWD
, MBER_NM
, MBER_MOBLPHON
, RM
, REGIST_SN
, REGT_DTTM
, UPDT_SN
, UPDT_DTTM
)
VALUES
(
'test'
, '1234'
, '홍길동'
, '01012345678'
, null
, '1'
, DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
, '1'
, DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
);

아무리 그래도 테이블을 생성했는데 간단하게 문법 정도는 알아두자.
2. Table 생성 문법
정말 간단하게 테이블 생성 문법 몇 가지만 알고 넘어가자 적어도 위에 적혀있는 Create Table OD_MBER 정도만...
- 테이블 생성

create table <table name> 이란 것은 xxx 이름으로 테이블을 만들겠다는 선언이다.
테이블이 혼자 덜렁 있을 순 없고 뭔가를 담아야 하고 담을 때 막담으면 안되니 속성도 적고 제약도 하고 종합해서 생성하게 된다. 그리고 DB Engine을 설정할 수 있는데 엔진의 정보는 아래 링크를 참조하자.
Engine 속성 참고 : https://stackoverrun.com/ko/q/996558
MySQL 데이터베이스 엔진이란 무엇입니까?
나는 주위를 둘러 보았고 innodb와 MyISAM이라는 MySQL 엔진을 발견했다. 아마 더 많은 것이있을 것입니다. 내 질문은 이러한 데이터베이스 엔진은 무엇입니까? 다른 MySQL 엔진의 차이점은 무엇입니까
stackoverrun.com
- 속성 정의 (Column)

속성 이름이라고 적어뒀지만 column(칼럼) name이 명칭이고 속성 타입은 column data type이라 읽는다 column data type의 길이니깐 column data length(size)라 이해하자.
속성 이름 : column name
속성 타입 : column data type
속성 길이 : column data length(size)
그래서 1번 내용을 읽어 보자면 이름이 MBER_SN인 11자리 숫자를 담는 column을 내장 객체인 auto_increment 님께서 알아서 넣어주시옵고 이 녀석은 회원 일련번호로 사용할 것을 의미한다.
그리고 column data type으로 많은 내용들이 있는데 몇 가지만 알고 가자 (더 많은 내용은 아래 링크를 참고하자)
char : 문자이고 고정된 자릿수를 가지는 타입 (10자리 해두고 1자리만 넣으면 9자리는 공백이 들어감)
varchar : 가변 문자 (10자리 해두고 1자리만 넣으면 1자리만 차지하고 공백이 들어가지 않음)
int : 숫자
text : 양이 많은 문자를 담을 때 사용 (varchar와 마찬가지로 들어온 데이터만큼만 채워줌)
date : 날짜
Data Type 참고 : https://www.w3resource.com/mysql/mysql-data-types.php
MySQL Data Types - w3resource
MySQL supports a number of data types in several categories: numeric types, date and time types, and string (character and byte) types. This article provides details of these data types.
www.w3resource.com
- 제약 조건

PRIMARY KEY는 설명 쓰는 것도 웃기긴 하지만 이건 해당 데이터의 주민등록번호라 할 수 있겠다.
테스트로 넣은 홍길동의 테이터 회원 일련번호, 회원 아이디, 회원 이름 등등 column 중 회원 일련번호를 PK로 잡았다는 것은 이 데이터의 고유 식별 값으로 사용한다는 것이고 이는 빈 값일 수 없고 유일무이한 값임을 증명한다는 것임 즉 회원 일련번호 1은 무조건 홍길동의 데이터임
UNIQUE INDEX 요고 중복될 수 없는 유일한 값임 빈 값이 포함될 수 있음 이미지를 보면 PK는 제약 조건 이름이 없는데 UNIQUE INDEX는 이름을 지정할 수 있다. PK는 단일이던 복합이던 한 테이블에 하나만 존재하는데 UNIQUE INDEX는 필요에 따라서 여러 개를 만들수 있다. 여러개 만들면 구분 어찌할 거임? 이름 정도는 줘야지... 뭐 그렇다..
BTEEE 알고리즘... 인간적으로 넘어가자...
두 가지 제약 조건을 설정해봤는데 더 많은 제약조건은 아래 링크에서 참고하자.
제약 조건 참고 : https://www.w3resource.com/mysql/creating-table-advance/constraint.php
>MySQL Constraint - w3resource
Mysql constraint is used to add mysql constraint, MySQL CREATE TABLE CONSTRAINT. Constraint in mysql is used to define rules to allow or bar what values can be stored in columns.
www.w3resource.com
- 변경과 삭제
테이블 이름을 변경하고 싶을 때
RENAME TABLE <이전 이름> TO <새 이름>;
ALTER TABLE <이전 이름> RENAME <새 이름>;
ALTER TABLE OD_MBER RENAME OD_MBER2;
테이블을 삭제할 때 (안에든 데이터도 테이블도 정말 없어지니 주의하자)
DROP TABLE <테이블 이름>;
DROP TABLE OD_MBER;
칼럼 변경 : MODIFY
ALTER TABLE <테이블 이름> MODIFY <칼럼 이름> <데이터 타임>(<데이터 길이>);
ALTER TABLE OD_MBER MODIFY MBER_NM VARCHAR(30);
컬럼 추가 : ADD
ALTER TABLE <테이블 이름> ADD COLUMN <추가 컬럼 이름> <데이터 타입>(<데이터 길이>) NOT NULL or 생략;
ALTER TABLE OD_MBER ADD COLUMN MBER_SEX CHAR(1) NOT NULL;
컬럼 삭제 : DROP
ALTER TABLE <테이블 이름> DROP COLUMN <컬럼 이름>;
ALTER TABLE OD_MBER DROP COLUMN MBER_SEX;
제약 조건 : NOT NULL
ALTER TABLE <테이블 이름> MODIFY <컬럼 이름> <데이터 타입>(<데이터 길이>) NOT NULL;
ALTER TABLE OD_MBER MODIFY MBER_SEX CHAR(1) NOT NULL;
등등 내용 외에도 존재하는 명령어는 상당히 많다.
예를 들어 UNIQE INDEX를 추가하고 싶으면 Google God님께 'MySQL UNIQUE INDEX 추가'를 입력하고 도움을 받자.
3. SELECT, UPDATE, INSERT 그리고 DELETE SQL
Table도 만들었고 데이터도 조회하고 추가하고 변경도 삭제도 할 텐데 기본 문법만 좀 알고 넘어가자.
- SELECT

이미지의 순서대로 차례로 읽어보면 1. 검색한다 2. OD_MBER에서 3. 회원 아이디 test를 찾아서 4. 일련번호, 아이디., 비밀번호 등등 내가 적은 거 갖다 줘 정도겠다. 예를 들어 이름이 홍길동인 데이터를 찾겠다 한다면 MBER_NM = '홍길동'으로 변경하면 된다. 물론 아이디가 test이고 이름이 홍길동인 거 찾겠다 하면 AND 키워드를 추가해주면 된다.
SELECT MBER_SN
, MBER_ID
, MBER_PWD
, MBER_NM
, MBER_MOBLPHON
, RM
, REGIST_SN
, REGT_DTTM
, UPDT_SN
, UPDT_DTTM
FROM OD_MBER
WHERE MBER_ID = 'test'
AND MBER_NM = '홍길동'
;
WHERE MBER_ID = 'test' AND MBER_NM = '홍길동'을 보는 것과 같이 이것도 맞고 저것도 맞고(둘 다 맞을 때) 할 땐 AND 키워드를 추가하여 사용하면되고 이것이거나 저것일때(하나라도 맞으면) 할땐 OR를 추가하면 되겠다.
SELECT option이 너무나 많아... 링크도 하나하나 찾아서 달기도 힘들다. Google God님의 힘을 빌려 쓰도록 하자.;
진행하다 보면 테이블도 늘어날 것이고 차차 하나씩... 아는 걸로...
- UPDATE

SELECT와 마찬가지로 1. OD_MBER 수정할꺼야 2. 아이디가 test이고 회원 이름이 홍길동인 녀석의 3. 회원 이름은 홍길순, 수정 일련번호는 1, 수정 일자는 현재일자로 하겠다 정도 되겠다. UPDATE 구문에서도 SELECT 한 결과로 수정 할 수도 있고 뭐 option이 있지만 기본만 알고 넘어가자.
UPDATE OD_MBER
SET MBER_NM = '홍길순'
, UPDT_SN = '1'
, UPDT_DTTM = DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
WHERE MBER_ID = 'test'
AND MBER_NM = '홍길동'
;
한 땀 한땀 키보드 치기 귀찮으면 긁어쓰자. ㅎ
- INSERT

INSERT INTO는 내가 적어둔 칼럼의 수만큼 맞춰서 값을 넣어주면 된다. 예를 들어 회원 가입을 만든다면 저기에 고정된 값을 화면에서 받은 값을 넣어주면 끝난다. SELECT INSERT도 있고 MERGE 등등 있지만 기본만 알고 넘어가자. 위에서 언급한 대로 차차 하나씩 알아가는 걸로 어디까지나 기본만... 알고 넘어가자.
- DELETE

UPDATE, INSERT와 마찬가지로 SELECT 한 결과를 지우거나 MERGE에서 맞이 않는 애기들을 지우는 것도 가능하나 기본만 알고 넘기자.
DELETE FROM OD_MBER
WHERE MBER_SN = '1'
;
SELECT, UPDATE, INSERT, DELETE 기본 문법을 살펴보았다.
INSERT를 제외하고 SELECT, UPDATE, DELETE를 문법을 작성할 땐 WHERE 절 첫 번째 인자로 가능하다면 PK column을 명시하는 것이 좋다. 앞서 얘기한 대로 홍길동의 데이터를 식별하고 보장하는 것은 PK이므로 가능하다면 PK column을 명시하도록 하자.
SELECT 구문으로 PK column 명시할 때
-- 회원 목록 조회시 PK를 모르니깐 통으로 조회 (실제론 다른 조건이 있을꺼임)
SELECT MBER_SN
, MBER_ID
, MBER_PWD
, MBER_NM
, MBER_MOBLPHON
, RM
, REGIST_SN
, REGT_DTTM
, UPDT_SN
, UPDT_DTTM
FROM OD_MBER
;
-- 회원 상세를 조회하면 회원을 선택하게 되니깐 선택된 놈의 MBER_SN을 주자
SELECT MBER_SN
, MBER_ID
, MBER_PWD
, MBER_NM
, MBER_MOBLPHON
, RM
, REGIST_SN
, REGT_DTTM
, UPDT_SN
, UPDT_DTTM
FROM OD_MBER
WHERE MBER_SN = '1' -- PK column에 전달
;
테이블 만들고 SELECT, UPDATE, INSERT, DELETE 바로 만들어 보려고 했으나... 막상 기본적인 건 좀 알고 해야 할 것 같아서 또 주저리주저리 써버렸다.. 쩝...
'JAVA_JSP' 카테고리의 다른 글
| 초보의 JSP 개발 데이터 등록 (0) | 2020.11.12 |
|---|---|
| 초보의 JSP 개발 데이터 조회하기 (0) | 2020.11.11 |
| 초보의 JSP 개발 JSP Servlet 비교 (0) | 2020.11.09 |
| 초보의 JSP 개발 프로젝트 생성 (0) | 2020.11.06 |
| 초보의 JSP 개발 프로젝트 비교 (0) | 2020.11.06 |
댓글