JDBC의 경우
// PrepareStatment로 값을 대입하는데, 첫 번째가 AUTO_INCREMENT가 적용될 행이고, 두 번째는 예시항목이다
String query="INSERT INTO 테이블명 VALUES(0, ?)";
- 데이터를 삽입하면 자동으로 번호를 생성해주는 AUTO_INCREMENT는, 일반 DB에서 생성할 경우 대입할 컬럼을 제외하고 값을 넣어주면 된다.
- 하지만 JDBC로 값을 대입해야할 경우, 조회할 항목의 컬럼을 받아와야하기 때문에 AUTO_INCREMENT가 추가된 컬럼을 제외할 수 없다. (에러 발생)
- 이때 AUTO_INCREMENT의 값보다 낮은 수를 대입한다. (1부터 시작할 거라면 0)
<트리거 사용>
DELIMITER $$
CREATE TRIGGER tg_product_insert
BEFORE INSERT ON product
FOR EACH ROW
BEGIN
-- product_seq에서 새로운 id 값을 생성
INSERT INTO product_seq VALUES (NULL);
-- ID를 'hm' + 숫자 형식으로 설정, 숫자는 100부터 시작
SET NEW.id = CONCAT('hm', LAST_INSERT_ID() + 99);
END$$
DELIMITER ;
insert into product values (0,'설명내용들','100원','a','담당자',now());
<조인부분>
select product.id, pt.productTypeName
from product, productType pt
where product.productCategory=pt.productType;
select product.productName, product.productDescription, product.productPrice " +
",pt.productTypeName, product.productManager, product.registrationDate " +
"from product, productType pt " +
"where product.productCategory=pt.productType
<테이블에 컬럼 추가할떄 그리고 어디 칼럼뒤에 둘지 after 뒤에 적어서 추가함>
alter table product add column productQuantity int not null after productDescription;
[mysql] 문자열과 정수로 된 기본키 자동 증가 구현하기
기본키의 값을 ABC00001와 같이 앞자리는 문자열 뒷자리는 숫자로 하고, 숫자는 자동 증가로 할 때 사용하는 방법입니다. table1_seq 테이블 : 임시 테이블로 기본키만 있으며, 이 테이블의 기본키 값
stajun.tistory.com
<시스템 날짜 > ---------------------------------------------------------------------------------------------------------------------------------------
이제 column에 들어갈 row를 생성해보겠습니다.
INSERT INTO tablename() VALUES();
괄호에서 column을 나열한 순서에 맞게 VALUES의 괄호 안에 row의 순서를 맞추어 생성하면 됩니다. Type이 datetime인 경우 직접 시간을 입력할 수도 있고 NOW() 함수를 사용하여 현재 시간을 입력할 수도 있습니다.
위와 같이 입력하면 입력한 데이터 값에 맞게 새로운 row가 생성됩니다.
'데이터베이스' 카테고리의 다른 글
sqld 자격증 실기 정리 (2) | 2025.02.26 |
---|---|
select문이란? (0) | 2025.01.08 |
정규화란? 정규화종류(1NF, 2NF, 3NF, BCNF, 4NF, 5NF) (4) | 2025.01.02 |
무결성이란? (0) | 2024.12.31 |
키(key)란? (0) | 2024.12.31 |
댓글