Day10. MySQL_1

박경희·2023년 6월 7일
0

강의 복습 및 정리

목록 보기
17/38
  1. Q. name 브론즈, 전기와 같은 과 사람을 찾으세요
select *
from student
where 
name in ("브론즈") or major in ("전기"))

  • 나는 이렇게 풀어보았다. 그러나 문제 취지는 이름이 브론즈와 전기인 사람의 같은 과 사람들을 찾는 것!! 문제 의도를 잘못 파악했다!
select *
from student where
major in (
select major
from student
where 
name in ("브론즈") or name in ("전기"))

-> 이렇게 select문을 두번 넣어서 찾는 것! 이런걸 sub query라고 한다.

  • explain -> 이 테이블을 한번 설명해줘~ 라는 것. 성능 테스트 같은 것이다.
  1. tcl 트랜젝션 제어어
    -- delete from student;
    이런걸 사용 하면 싹다 날라간다 그래서 이런걸 제어하기 위해서 사하는 것이 트랜젝션 제어어이다.
start transaction; 		//1.먼저 누르고
delete from student; 	//2. 테이블 지움
select * from student; 	//3. 확인해보니 없음
rollback;				//4. 테이블이 다시 돌아옴!
  • 2-2
    스타트 누르고
    새로운것 추가하고
    롤백하면 다시 사라진다.
    그런데 이걸 저장하고 싶다면 롤백 전에
    commit;을 해줘야 한다.
start transaction;                       //1. start를 누른다.
insert into student(name, major, birth)	 //2. 넣는다.
values("화학1", "화학", "2020-06-03");
commit;						             //3. 커밋해서 저장한다.
delete from student;					 //4. delete를 한다.
rollback; 								 //5. 롤백을 하면 3번 저장한 상태로 돌아간다.

// 6.또는 4번을 진행하지 않고 5번을 진행해도 3번 커밋을 해서 3번이 마지막 저장 지점이기 때문에 
되돌아갈 곳이 없어 바뀌는 것이 없다.
  • 권한을 준 다른 사람의 로컬에 접속해서 내가 데이터베이스를 만들었는데 다른 사람이 롤백을 해도 사라지지 않는다.
    이는 나만의 트랜젝션이기 때문이다. 각각 형성된다.

0개의 댓글