: 지정한 칼럼에 데이터 삽입
insert into 테이블_이름 (칼럼1, 칼럼2...)
values (값1, 값2..)
: 칼럼리스트 생략하면 모든 칼럼에 데이터 삽입한다는 뜻
INSERT INTO 테이블 VALUES(값1, 값2)
update 테이블_이름 set 칼럽1 = 값1, 칼럼2=값2, ...
where 조건식; (조건식 현재까지 in, between 배움)
(where 안적어주면 전체 값이 모두 수정됨)
DLELTE FROM 테이블_이름
WHERE 조건식; -- 주의 : 이거 없으면 테이블 전체를 지운다는 뜻이됨
부서번호가 3인 부서의 부서번호를 6으로 수정
→ DEPARTMENT의 부서번호를 EMPLOYEE가 참조중이므로 수정이 안 됨
해결책 :
-외래키 일시중지
-수정
-외래키 재시작
ALTER TABLE EMPLOYEE
DISABLE CONSTRAINT FK_EMPLOYEE_DEPARTMENT; -- 외래키 중지
UPDATE EMPLOYEE
SET DEPART = 6
WHERE DEPART = 3;
UPDATE DEPARTMENT
SET DEPT_NO = 6
WHERE DEPT_NO = 3;
ALTER TABLE EMPLOYEE
ENABLE CONSTRAINT FK_EMPLOYEE_DEPARTMENT; -- 외래키 시작
수정하고 싶은 내용이 여러개라면 set절에 , 찍어서 계속 적어줌.
update~
set~
where~
각각은 절이라고 함. 업뎃절.셋절.
-트랜잭션이 필요한 SQL
INSERT UPDATE DELETE 했다 -- 작업의 완료상태가 아님. 작업을 해도 작업이 완료된 상태가 아님 왜이러냐면 취소하기 위해서
따라서 이 셋은 취소가 가능한 특징이 있다
실제로 INSERT했다, 삽입된것처럼, 작업이 완료된 것처럼 보이지만 DB에 저장된게 아님.
트랜잭션을 (dcl)의 종류로 봄/ DCL : < GRANT , REVOKE 권한 부여 회수 데이터 콘트롤 렝기쥐. >
이체의 하나의 작업을 트랜잭션이라고 함 1.뺀다. 2.보낸다 이 두개를 합쳐서 하나의 트랜잭션이 된다. -- 이를 묶는걸 스프링에서 배울거임
-특징-
트랜잭션으로 묶어놓고 둘다 성공이면 COMMIT으로 나오고
둘중 하나 실패하면 ROLL BACK 실행됨.
DML 2개 이상을 처리할 때 이걸 반드시 트랜잭션 처리를 해야함.
안하면 하나 실패 하나 성공을 그대로 유지. 이체에서 돈을뺏는데 다른 계좌로 가고 막
회원탈퇴
1. 회원 DELETE
2. 탈퇴 INSERT
이 2개를 트랜잭션처리 해야함.
어느 하나라도 실패했을 때 회원탈퇴가 실패할 수 있도록.
@Transactionul - 이런 코드가 들어감
DDL의 대상 : DB object (테이블, 사용자.. 등) // 커밋 필요없음
DML의 대상 : ROW, //커밋 필요함
https://mockaroo.com/?subid1=20220825-1545-038c-8fac-dd4d6adf1a03
DQL-SELETE
FUNTION-함수
JOIN-테이블 2개 이상헤서 내가 원하는 데이터를 가져오는 것
서브쿼리 - 쿼리안에 쿼리가 들어가는 중첩을 의미함
시퀀스 - 은행 번호표 같은거 번호증가역할