티스토리 뷰

최근 JPA를 많이 이용하면서 JPA, JPQL, QueryDSL등 ORM을 많이 다루다보니 쿼리를 날릴기회가 많이 없습니다

 

하지만 때때로 데이터를 조회하기 위해서 DB Tool을 통해 쿼리를 날리곤 하는데요 insert나 update도 헷갈릴때가 있습니다...

 

복습을 하는 기분으로 간단한 CRUD를 기록해보려고 합니다.

 

DB 구조

movie

ID (auto increment) NAME KIND DIRECTOR OPEN_DATE
BIGINT VARCHAR VARCHAR VARCHAR DATE

 

삽입 INSERT 문

1. INSERT INTO TABLE(column1, column2 ...) value(value1, value2 ...);
ex) INSERT INTO movie(NAME, KIND, DIRECTOR, OPEN_DATE) VALUE("about time", "romance", "Richard Curtis", "2013-08-08");


2. INSERT INTO TABLE VALUES(value1, value2 ...);
ex) INSERT INTO movie VALUES(NULL, "about time", "romance", "Richard Curtis", "2013-08-08");

2번 문법의 경우 삽입할 필드를 생략할 수 있으며 데이터베이스 스키마 순서대로 삽입되게 됩니다.

이때 다음에 해당하는 필드는 생략할 수 있습니다.

  • NULL이 허용된 필드
  • AUTO_INCREMENT 키워드가 설정된 필드
  • DEFAULT 제약 조건이 설정된 필드

 

ID의 경우 auto_increment 설정을 했기때문에 NULL값을 줘서 생략하였습니다.

 

추가로 아래와 같이 한번에 여러개의 레코드를 삽입할 수 있습니다

INSERT INTO movie VALUES
(NULL, "about time", "romance", "Richard Curtis", "2013-08-08"),
(NULL, "Avengers: Endgame", "action", "Russo brothers", "2019-04-22"),
(NULL, "Bohemian Rhapsody", "drama", "Bryan Singer", "2018-10-24");

 

 

조회 SELECT 문

데이터베이스를 다룰때 CUD에 비해서 R 즉 select를 할 일이 일반적으로 훨씬 많습니다 또한 select를 하는 방법또한 조회하고자 하는 필드와 DB의 구조에 따라서 달라지기 때문에 모든것을 다루는것은 어렵습니다 여기서는 간단한 조회만 다루려고 합니다

 

모든 데이터 조회하기

SELECT * FROM movie;

 

원하는 필드만 조회하기

SELECT NAME, DIRECTOR FROM movie;

 

원하는 레코드만 조회하기

SELECT ID, NAME, DIRECTOR, OPEN_DATE
FROM movie
WHERE id = 1;

 

조회하고자 하는 데이터에 제한을 두고싶을때는 WHERE를 활용할 수 있습니다

ID 필드값이 1인 데이터만 조회를 하였습니다. 이외에 다른 필드에도 조건을 줄 수 있으며 문자열 값을 조건으로 줄때는 "" 로 감싸주어야 합니다

 

수정 UPDATE 문

UPDATE [TABLE]
SET [field1] = [value1],
[field2] = [value2] ...
    
ex)
UPDATE movie
SET NAME = "change time"
WHERE id = 1;

 

UPDATE 쿼리는 저장된 데이터를 수정합니다 조건을 걸지않으면 모든 데이터가 변경되어버리기 때문에 주의가 필요한 쿼리입니다

 

삭제 DELETE 구문

DELETE FROM [TABLE];

ex)
DELETE
FROM movie
WHERE id = 1;

DELETE 쿼리는 저장된 데이터를 삭제합니다 UPDATE와 마찬가지로 조건이 없을경우 모든 데이터가 삭제되므로 주의가 필요합니다 레코드 단위로 삭제되기때문에 필드는 필요하지 않습니다

 

 

'데이터베이스' 카테고리의 다른 글

MySQL 기본적인 DDL (CREATE, ALTER, DROP, TRUNCATE)  (0) 2020.07.31
댓글
공지사항
최근에 올라온 글