🔥 실제 면접 질문에서 자주 물어보는 내용이다. 아래와 같은 내용의 면접 질문을 받았을 때, 어떻게 대답할 건지 정리해봐라.
DDL
은 데이터베이스 객체를 생성, 수정, 삭제하기 위한 언어입니다.CREATE
, ALTER
, DROP
등이 있습니다.CREATE
문은 테이블, 인덱스, 뷰 등의 객체를 생성합니다.ALTER
문은 객체의 구조를 변경합니다.DROP
문은 객체를 삭제합니다.SELECT
, INSERT
, UPDATE
, DELETE
등이 있습니다.SELECT
문은 데이터를 조회합니다.INSERT
문은 데이터를 추가합니다.UPDATE
문은 데이터를 수정합니다.DELETE
문은 데이터를 삭제합니다.DCL
은 데이터베이스에 접근하는 권한을 제어하기 위한 언어입니다. 대표적으로 GRANT
, REVOKE
등이 있습니다.GRANT
문은 데이터베이스 사용자에게 권한을 부여하고 REVOKE
문은 권한을 회수합니다.원자성
: 트랜잭션은 모두 성공하거나, 모두 실패해야 한다. 트랜잭션 내에 포함된 모든 작업이 완료되지 않으면 이전 상태로 롤백된다. 일관성
: 트랜잭션의 시작 상태와 종료 상태가 데이터베이스의 일관성을 유지해야 한다.격리성
: 트랜잭션은 다른 트랜잭션의 영향을 받지 않는다. 즉, 동시에 실행되는 다른 트랜잭션으로 인해 결과가 변경되지 않는다.지속성
: 트랜잭션이 완료된 후에는 결과가 영구적으로 저장된다. 시스템 장애나 다른 문제로 인해 발생한 손실을 방지하기 위해 이러한 결과는 롤백할 수 없다.컬럼명 | 데이터타입 | 조건 |
---|---|---|
id | bigint | primaray key, not null, auto increment |
name | varchar | not null |
class | varchar | 미입력 시 default값인 ‘basic’으로 저장되도록 |
테이블 생성하기
데이터 추가 하기
데이터 보기
id
는 AUTO_INCREMENT
방식으로 자동으로 들어갔고
class
는 직접 설정하지 않아 디폴트 값 basic
로 잘 들어간 것을 확인할 수 있다.
select animal_id
from animal_ins
where name is not null
order by animal_id
select max(price) as max_price
from product
select animal_id, name
from animal_ins
order by animal_id
select flavor
from first_half
order by total_order desc, shipment_id
select book_id, date_format(published_date, "%Y-%m-%d") as publish_date
from book
where category='인문'
and year(published_date) = 2021
order by published_date
@DynamicInsert
@Entity
@Table
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(name = "class")
@ColumnDefault("'basic'")
private String classes;
}
"basic"
을 기본값으로 설정했더니 인텔리제이가 table이 만들어지지 않는다고 "basic"
근처에서 문제를 찾아보라고 말해줬다. "basic"
이 아니라 "'basic'"
으로 해줘야 하는 이유는 string이기 때문인 것이다...기본생성자
를 만들지도 않았는데 꼭 만들어야 한다. (프록시 생성을 위해)protected
레벨로 만들었다. (public/protected 둘 중 하나여야 함)
이제 블로그 글을 쓰면서 ‘기록하는 습관’을 들여볼겁니다. 블로그 글에 작성해야 되는 내용은 아래와 같습니다.
spring data jpa
로 테이블 만들기, 칼럼의 기본 값 설정 방법spring data jpa
는 영한님 입문 강의에서 맛보고 그 뒤로 써본 적이 없는데 새롭게 시작하는 프로젝트에서 적용해보고 싶다. 꼭 제대로 공부하고 사용하자. 편한만큼 대충 공부하고 쓰면 정말 위험할 것 같다.basic
으로 기본 값 설정하는 것 -> 해결함!