< 테이블 타입 >
현재는 InnoDB 가 많이 쓰인다.
과거에는 Myisam 가 많이 쓰였음
< Auto Increment Value 기능>
번호를 자동으로 생성하는 기능.(Oracle의 시퀀스와 같다.)
'다음에 적을 번호를 나타냄'
ex) 만약 ' Auto Increment Value = 2 ' 라면. 현재 1번에 DB가 들어 있다는 뜻
DB의 마지막 숫자+1
ex) 1~9까지가 비어있고, DB에 '10' 이라는 결과물이 존재한다면 Auto Increment Value가 '11'이 되어야 한다.
- Auto Increment 값을 수동으로 수정하는 방법
< 필드 생성 시 사용하는 blob(블랍) 타입 >
이미지나 파일 같은 것들을 DB에 저장하려고 할 때 사용하는 타입
< 필드 생성 시 숫자와 문자타입>
숫자타입은 length를 따로 설정하지 않아도 자동으로 채워짐 (int는 '11'이 자동으로 채워지고, double, float 등..은 '0'으로 두면 된다.)
글자타입은 length를 직접줘야한다. (모르겠으면 '255'로 준다)
- null 과 empty 를 구분하자.
null -> 공간은 있지만 값이 없다.
empty -> 값이 있지만 비어있다.
ex) String value ; -> null
ex) String value =" "; -> empty
null + null = null (인식못해 오류가 날 수 있음)
empty + empty = empty (오류안남)
문자열의 Default 값은 -> empty를 직접 입력해줘야함. (Default값을 안주면 null로 설정 되어버리기 때문)
숫자의 Default 값은 -> 0 을 직접 입력해줘야함.
tip)
글자 length를 어느정도로 지정해줄지 모를때는 일반적으로 255를 주면된다.
< 필드 생성 시 날짜타입>
date, datetime -> Default 값을 null로 준다. 날짜는 empty가 안 됨. (0000-00-00 또는 1900-01-01 으로도 줌)
length는 '0'으로 주면 됨.
일반적으로 allow null 허용함
- 생성일과 수정일을 구분하자.
생성일과 수정일은 보통 타입을 timestamp로 준다. 이렇게 설정할 시 생성일과 수정일을 구분을 해야하는데,
생성일은 Default값을 CURRENT_TIMESTAMP라고 입력해줘야하고 On Update CURRENT_TIMESTAMP란에는 체크해제.
수정일은 Default값을 Null로 설정하고 On Update CURRENT_TIMESTAMP란에 체크를 해줘야 함.
< index(indexes) 지정하기>
index는 검색 속도를 높이기 위한 색인 기술로 테이블마다 자주 검색되는 컬럼을 선택해 꼭 index를 지정해줘야한다.
index지정시 주의 사항은 특정 숫자(금액, count 등)와 같이 직접 검색어로 입력하기 힘든 필드는 index로 지정안하는것이 좋다. 특히 숫자류..
참고사항
- 테이블명, 컬럼(필드)명 모두 한글로 작성 가능하다.
- 숫자타입의 tinyint 는 True, False와 같이 boolean에 사용됨
- 숫자타입의 컬럼에 한에서 Unsigned라는 항목을 체크할 수 있는 옵션이 생기는데, 이부분을 체크하면 마이너스 정수를 쓰지않겠다는 뜻으로 사용할 수 있는 양의 정수의 숫자가 2배로 늘어난다.
- navicat에서 design table 이용시 단축키 ctrl+D => design table의 준말
- 주로 작업하는 공간을 떠나 다른장소에서도 DB에 접속하고자 할 때 phpMyAdmin이라는 프로그램이용한다.
- php버전에 따라 https://oopshug.cafe24.com/phpMyAdmin4 or https://oopshug.cafe24.com/phpMyAdmin5 로 접속할 수 있다.
< 실제로 생성한 4개의 테이블 Dump SQL FILE 로 export >
- zproduct 테이블
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `zproduct`
-- ----------------------------
DROP TABLE IF EXISTS `zproduct`;
CREATE TABLE `zproduct` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pname` varchar(255) DEFAULT '' COMMENT '제품명',
`psize` varchar(255) DEFAULT '' COMMENT '규격',
`barcode` varchar(30) DEFAULT '' COMMENT '바코드',
`location` varchar(255) DEFAULT '' COMMENT '위치',
`price` double DEFAULT '0' COMMENT '단가',
`dtcreate` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
`dtedit` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '수정일',
PRIMARY KEY (`id`),
KEY `idx_pname` (`pname`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='제품관리';
-- ----------------------------
-- Records of zproduct
-- ----------------------------
INSERT INTO `zproduct` VALUES ('1', 'cpu', '300cm', '1234567890123', 'TA-0123', '100000', '2023-02-14 17:34:47', '2023-02-15 09:41:08');
INSERT INTO `zproduct` VALUES ('2', '키보드', '30cm', '1234567890124', 'TA-0123', '150000', '2023-02-14 17:34:49', '2023-02-15 09:41:14');
INSERT INTO `zproduct` VALUES ('3', 'ram', '10cm', '1234567890125', 'TA-3456', '20000', '2023-02-14 17:34:58', '2023-02-15 09:41:16');
INSERT INTO `zproduct` VALUES ('4', '메인보드', '20cm', '1234567890126', 'TA-3456', '400000', '2023-02-14 17:35:01', '2023-02-15 09:41:17');
INSERT INTO `zproduct` VALUES ('5', 'hdd', '15cm', '1234567890127', 'TA-3456', '200000', '2023-02-14 17:35:05', '2023-02-15 09:41:19');
- zpan 테이블
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `zpan`
-- ----------------------------
DROP TABLE IF EXISTS `zpan`;
CREATE TABLE `zpan` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`indate` date DEFAULT NULL COMMENT '날짜',
`type` varchar(20) DEFAULT '' COMMENT '구분 (매입,매출)',
`cid` int(11) DEFAULT '0' COMMENT '거래처ID (zcompany.id)',
`pid` int(11) DEFAULT '0' COMMENT '제품ID (zprocudt.id)',
`cnt` double DEFAULT '0' COMMENT '수량',
`price` double DEFAULT '0' COMMENT '단가',
`total` double DEFAULT '0' COMMENT '합계',
`dtcreate` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
`dtedit` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '수정일',
PRIMARY KEY (`id`),
KEY `idx_indate` (`indate`),
KEY `idx_type` (`type`),
KEY `idx_cid` (`cid`),
KEY `idx_pid` (`pid`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='판매관리';
-- ----------------------------
-- Records of zpan
-- ----------------------------
INSERT INTO `zpan` VALUES ('1', '2023-02-14', '매출', '3', '2', '20', '150000', '3000000', '2023-02-14 15:45:36', '2023-02-15 09:04:58');
INSERT INTO `zpan` VALUES ('2', '2023-01-01', '매출', '3', '1', '1', '100000', '100000', '2023-02-14 17:36:25', '2023-02-15 09:05:29');
INSERT INTO `zpan` VALUES ('3', '2022-01-01', '매입', '2', '3', '2', '20000', '40000', '2023-02-14 17:36:27', '2023-02-15 09:08:43');
INSERT INTO `zpan` VALUES ('4', '2021-11-23', '매출', '4', '5', '10', '200000', '2000000', '2023-02-14 17:36:28', '2023-02-15 09:06:45');
INSERT INTO `zpan` VALUES ('5', '2020-07-25', '매입', '5', '1', '4', '100000', '400000', '2023-02-14 17:36:30', '2023-02-15 09:08:03');
INSERT INTO `zpan` VALUES ('6', '2011-01-03', '매출', '2', '1', '2', '100000', '200000', '2023-02-14 17:36:32', '2023-02-15 09:09:52');
INSERT INTO `zpan` VALUES ('7', '2001-06-18', '매입', '3', '3', '5', '20000', '100000', '2023-02-14 17:36:34', '2023-02-15 09:22:37');
INSERT INTO `zpan` VALUES ('8', '2015-03-22', '매출', '4', '4', '3', '400000', '1200000', '2023-02-14 17:36:35', '2023-02-15 09:10:24');
INSERT INTO `zpan` VALUES ('9', '2017-04-22', '매입', '1', '1', '4', '100000', '400000', '2023-02-14 17:36:37', '2023-02-15 09:10:30');
INSERT INTO `zpan` VALUES ('10', '2009-01-31', '매출', '5', '3', '5', '20000', '100000', '2023-02-14 17:36:42', '2023-02-15 09:10:36');
- zmoney 테이블
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `zmoney`
-- ----------------------------
DROP TABLE IF EXISTS `zmoney`;
CREATE TABLE `zmoney` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`indate` date DEFAULT NULL COMMENT '날짜',
`type` varchar(20) DEFAULT '' COMMENT '구분 (입금,지급)',
`cid` int(11) DEFAULT '0' COMMENT '거래처ID (zcompany.id)',
`method` varchar(20) DEFAULT '' COMMENT '결제방법 (현금,카드,통장,기타)',
`money` double DEFAULT '0' COMMENT '금액',
`dtcreate
dtcreate` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
`dtedit` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '수정일',
PRIMARY KEY (`id`),
KEY `idx_indate` (`indate`),
KEY `idx_type` (`type`),
KEY `idx_cid` (`cid`),
KEY `idx_method` (`method`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='자금관리';
-- ----------------------------
-- Records of zmoney
-- ----------------------------
INSERT INTO `zmoney` VALUES ('1', '2022-01-01', '입금', '3', '카드', '3000000', '2023-02-15 09:11:58', '2023-02-15 09:18:29');
INSERT INTO `zmoney` VALUES ('2', '2021-04-05', '입금', '3', '카드', '100000', '2023-02-15 09:12:14', '2023-02-15 09:19:00');
INSERT INTO `zmoney` VALUES ('3', '2021-07-06', '출금', '2', '카드', '40000', '2023-02-15 09:12:18', '2023-02-15 09:19:04');
INSERT INTO `zmoney` VALUES ('4', '2021-08-09', '입금', '4', '기타', '2000000', '2023-02-15 09:12:26', '2023-02-15 09:19:10');
INSERT INTO `zmoney` VALUES ('5', '2021-03-14', '출금', '5', '현금', '400000', '2023-02-15 09:12:26', '2023-02-15 09:19:13');
INSERT INTO `zmoney` VALUES ('6', '2021-06-30', '입금', '2', '카드', '200000', '2023-02-15 09:12:35', '2023-02-15 09:19:15');
INSERT INTO `zmoney` VALUES ('7', '2022-01-31', '출금', '3', '현금', '100000', '2023-02-15 09:12:39', '2023-02-15 09:23:12');
INSERT INTO `zmoney` VALUES ('8', '2021-01-05', '입금', '4', '카드', '1200000', '2023-02-15 09:12:47', '2023-02-15 09:19:23');
INSERT INTO `zmoney` VALUES ('9', '2021-03-11', '출금', '1', '카드', '400000', '2023-02-15 09:12:50', '2023-02-15 09:19:26');
INSERT INTO `zmoney` VALUES ('10', '2021-02-22', '입금', '5', '현금', '100000', '2023-02-15 09:12:54', '2023-02-15 09:19:28');
- zcompany 테이블
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `zcompany`
-- ----------------------------
DROP TABLE IF EXISTS `zcompany`;
CREATE TABLE `zcompany` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cname` varchar(255) DEFAULT '' COMMENT '거래처명',
`cnumber` varchar(12) DEFAULT '' COMMENT '사업자번호',
`ceo` varchar(255) DEFAULT '' COMMENT '대표자',
`address` varchar(255) DEFAULT '' COMMENT '위치',
`tel` varchar(255) DEFAULT '' COMMENT '전화',
`hp` varchar(255) DEFAULT '' COMMENT '핸드폰',
`smoney` double DEFAULT '0' COMMENT '기초잔액',
`tmoney` double DEFAULT '0' COMMENT '거래잔액',
`dtstart` date DEFAULT NULL COMMENT '사업시작일',
`dtend` date DEFAULT NULL COMMENT '사업종료일',
`dtcreate` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '생성일',
`dtedit` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '수정일',
PRIMARY KEY (`id`),
KEY `idx_cname` (`cname`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='거래처관리';
-- ----------------------------
-- Records of zcompany
-- ----------------------------
INSERT INTO `zcompany` VALUES ('1', 'LG전자', '123-68-45895', '구창모', '서울 종로구 평창동 109-1', '02-394-2340', '010-2349-3949', '10000000', '0', '2000-01-14', null, '2023-02-14 15:43:47', '2023-02-15 09:40:19');
INSERT INTO `zcompany` VALUES ('2', '삼성전자', '123-86-12452', '이재용', '서울 노원구 평창동 57-1', '02-396-0239', '010-2302-2302', '103000000', '0', '2003-02-11', null, '2023-02-14 15:43:51', '2023-02-15 09:40:19');
INSERT INTO `zcompany` VALUES ('3', 'ASUS', '526-12-56235', '맥아더', '서울 강남 개포동', '02-391-7484', '010-2321-2355', '122200000', '0', '2003-01-11', null, '2023-02-14 15:43:53', '2023-02-15 09:40:20');
INSERT INTO `zcompany` VALUES ('4', 'MSI', '856-84-25631', '야마구치', '광주', '062-442-2402', '010-2426-6565', '100000000', '0', '1999-02-14', null, '2023-02-14 17:31:22', '2023-02-15 09:40:20');
INSERT INTO `zcompany` VALUES ('5', 'Apple', '485-86-23561', '안형수', '대구', '036-454-34-444', '010-2302-2302', '1000000000', '0', '2001-09-01', null, '2023-02-14 17:33:09', '2023-02-15 09:40:20');
INSERT INTO `zcompany` VALUES ('11', '재민전자', '123-45-12345', '정재민', '광주광역시', '062-123-1234', '010-1234-1234', '0', '0', '0000-00-00', null, '2023-02-15 09:35:49', '2023-02-15 09:37:20');
'PHP > DB' 카테고리의 다른 글
[DB] DB sql문 (group by, union all) (0) | 2023.02.17 |
---|---|
[DB]SQL문 작성하기 이론 및 팁 (0) | 2023.02.15 |
[PHP][DB]PHP로 DB를 연결해 HTML로 쏴주는 게시판 만들기 (0) | 2023.02.13 |
[PHP][DB] PHP에서 select구문 작성 (0) | 2023.02.13 |
[PHP][DB]PHP와 DB연결하는 코드 (0) | 2023.02.13 |