- primary key : not null + unique의 성격을 모두가짐. 단, 테이블당 한번만 선언가능.
stu_no(학번) | stu_name(이름) | level(학년) | jumin | phone | |
not null | not null | not null | not null | not null | |
unique | unique | unique | unique |
=> 위의 테이블의 컬럼3개 중에 뭘 primary key로 할것인가? 이 테이블의 대표컬럼이 된다는 것은 노출이 될 확률이 높다는 뜻이다. 따라서 개인정보가 있는 나머지인 stu_no(학번)을 primary key로 등록하는 것이 좋다.
- column level 문법 : 제약조건을 한칸띄우고 쓰는 것. pk, uk, ck, fk, nn
table level 문법 : 제약조건을 아래에 따로 쓰는 것. pk, uk, ck, fk
fk는 table level 문법을 많이 이용하고, 나머지는 전부 column level문법을 많이 이용한다.
- 테이블만드는 순서가 있어야 하는 이유? members, product 테이블을 만들고나서 order 테이블을 만듦. 그 이유는 fk(member_id, prod_id)를 사용하여야 하기 때문이다.
- auto_increment 속성 : 시작값, 증가값 변경 가능함. 조건 : 1) 숫자 형식의 데이터 타입에만 활용 가능함. 2) pk, uk 제약조건이 선언된 컬럼에만 활용 가능함. auto_increment 속성이 지정된 컬럼은 데이터 삽입(insert)시 null값을 지정하면 자동으로 고유한 값이 반환됨.
문법 : 컬럼1 int auto_increment primary key,
- insert 작업시 table 명 뒤에 컬럼명 생략한 경우 values 절 뒤에 기본 컬럼 순서대로 모든 값을 나열해야 함.
> insert into members values ( 100, '홍길동', '1991-12-30', '학생', '010-1111-1111', '부산 부산진구 부전동');
- default 값 수동으로 삽입하는 방법. 직접 default를 입력한다.
ex. insert into orders values (3, 106, 50, default);
- default 값 자동으로 삽입하는 방법 : 디폴트 컬럼을 빼고 삽입하면 자동으로 default 값이 들어간다.
- auto_increment 사용시 시작값 변경하는 방법
> alter table stu20 auto_increment =100; -- > auto_increment 값을 100부터 시작하고 싶다.
(여전히 증가값은 1이다.)
- auto_increment 사용시 증가값 변경하는 방법
> set @@auto_increment_increment = 5;
(증가값이 5씩 증가한다. )
- null 값으로 update 하는 방법 : null을 수동으로 넣어주면 됨.
> update members set job=null where member_id=104
*각종 오류들*
- Field 'birth' doesn't have a default value
birth 컬럼은 not null 제약조건을 부여했기 생략하고 insert하면 에러가 난다.
- Error Code:1062. Duplicae entry '010-1111-1111' for key 'members.phone'
phone 은 unique 제약조건이 있기때문에 중복 데이터를 넣을 수 없어서 에러가 남.
- Error Code:1136. Column count doesn't match value count at row1.
primary 값이 중복되어서 삽입할 수 없다는 에러가 난다.
- Error Code:1364. Field 'member_id' doesn't have a default value.
'member_id' 는 primary key 값을 생략하니 null은 삽입이 안되어서 뜨는 오류
- update orders set member_id =120 where order_num=2
: 현재 member_id 는 10 ~ 110까지 입력되어 있는 상태. 테이블에 없는 값을 입력함.
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`shopdb`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`member_id`) REFERENCES `members` (`member_id`)) 0.000 sec
=> 부모값인 member_id가 110번까지밖에 업는데 120으로 변경한다고 하니까 에러가 난다.
'자바스프링웹공부(2024) > 마이에스큐엘' 카테고리의 다른 글
2024.08.05. join (0) | 2024.08.05 |
---|---|
2024.08.01. MySQL Workbench를 이용한 ERD 만들기 ( 리버스 모델링 ) (0) | 2024.08.01 |
2024.08.01. select - 2 (0) | 2024.08.01 |
2024.07.31. MySQL SELECT(조회) - 1 (0) | 2024.07.31 |
2024.07.22. DB 오리엔테이션 (0) | 2024.07.28 |