본문 바로가기

자바스프링웹공부(2024)/마이에스큐엘

테이블 삽입/수정/삭제

반응형

- primary key : not null + unique의 성격을 모두가짐.  단, 테이블당 한번만 선언가능.

stu_no(학번) stu_name(이름) level(학년) jumin  phone  email
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으로 변경한다고 하니까 에러가 난다. 

반응형