🔥 실제 면접 질문에서 자주 물어보는 내용이다. 아래와 같은 내용의 면접 질문을 받았을 때, 어떻게 대답할 건지 정리해봐라.
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으로 기본 값 설정하는 것 -> 해결함!