CREATE TABLE 테이블_이름
INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name CHAR(4),
age INT);
SELECT 문의 열의 개수는 INSERT 할 테이블의 열 개수와 같아야 합니다.
INSERT INTO 테이블_이름 (열_이름1, 열_이름2, ...)
SELECT 문 ;
UPDATE 테이블_이름
SET 열1 = 값1, 열2 = 값2, ...
WHERE 조건;
DELETE FROM 테이블_이름 WHERE 조건;
TRUNCATE TABLE 테이블_이름;
DROP TABLE 테이블_이름;
USE
기존에 쓰던 거랑 다른 새로운 데이터베이스를 쓸 때
DESC
테이블 구조 확인(DESCRIBE 명령)
DESC TABLE 테이블_이름;
사용 방법 : Spring에서는 일종의 어댑터인 LocalValidatorFactoryBean가 제약 조건 검증을 처리한다. 이를 이용하려면 LocalValidatorFactoryBean을 빈으로 등록해야 하는데, gradle에 SpringBoot에서는 아래의 의존성만 추가해주면 해당 기능들이 자동 설정된다.
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation'
사용 방법 : 컨트롤러의 메소드에 @Valid를 붙여주면 유효성 검증이 진행된다.
컨트롤러에서만 동작하며, 기본적으로 다른 계층에서는 검증이 되지 않는다.
다른 계층에서 파라미터를 검증하기 위해서는 @Validated와 결합되어야 한다.
데이터베이스의 테이블의 생성, 변경, 삭제를 담당하는 명령어입니다.
대표적으로 CREATE, ALTER, DROP, RENAME, TRUNCATE가 있습니다.
NPE를 피하려면 null 여부를 검사해야 하는데, null 검사를 해야하는 변수가 많은 경우 코드가 복잡해지고 번거롭다. 그래서 null 대신 초기값을 사용하길 권장하기도 한다.
Java8에서는 Optional<> 클래스를 사용해 NPE를 방지할 수 있도록 도와준다.
Optional<>는 null이 올 수 있는 값을 감싸는 Wrapper 클래스로, 참조하더라도 NPE가 발생하지 않도록 도와준다.
Optional은 null 또는 값을 감싸서 NPE(NullPointerException)로부터 부담을 줄이기 위해 등장한 Wrapper 클래스이다. Optional은 값을 Wrapping하고 다시 풀고, null 일 경우에는 대체하는 함수를 호출하는 등의 오버헤드가 있으므로 잘못 사용하면 시스템 성능이 저하된다. 그렇기 때문에 메소드의 반환 값이 절대 null이 아니라면 Optional을 사용하지 않는 것이 좋다.
에러메세지
에러 : Non-static method 'save(S)' cannot be referenced from a static context

userRepository.save(user); 로 고치고 해결.
위에서 final로 선언해놓은 변수 userRepository가 아니라 UserRepository를 가져오라고 해서 생긴 오류.
static 은 이미 객체화되어 있어서 바로 사용할 수 있는 것,
non-static 은 아직 객체화되어 있지 않아서(아직 존재하지 않음), new 키워드를 통해서 객체화한 후(생성 후)에 사용할 수 있는 것.
2번째 에러 : NULL not allowed for column "USERNAME"; SQL statement:
해결 : postman 에서 body 이름을 user라고 한 오타 때문. username 이라고 고치고 해결.