본문 바로가기

DBMS

(6)
[MySQL] SQL_CALC_FOUND_ROWS와 FOUND_ROWS() 게시판 서비스를 만들 때, 페이징 기능은 거의 필수적이라고 볼 수 있습니다.기능을 구현하기 위해서는 전체 페이지 수가 필요합니다.SELECT COUNT(*) FROM post;전체 페이지를 구하는 일반적인 쿼리는 다음처럼 작성할 수 있습니다.하지만, 게시글도 조회해야 하기 때문에 쿼리를 두 번 사용해야 한다는 문제점이 있습니다.이번 글은 이러한 문제점을 개선하기 위한 글입니다.📃 SQL_CALC_FOUND_ROW쿼리에 LIMIT 옵션을 주면 그 수만큼 레코드를 검색하고 종료합니다.하지만 SQL_CALC_FOUND_ROW라는 힌트를 주게 되면,조건에 부합하는 레코드 검색이 끝나더라도 끝까지 검색을 수행합니다.SELECT SQL_CALC_FOUND_ROWS, * FROM post LIMIT 5 OFFSET..
[SQL] IN 연산자 알아보기 우리는 조건과 일치하는 행을 보고 싶을 때 WHERE 절을 이용합니다.예를 들어 딸기와 메론이 들어가는 아이스크림을 찾고 있다면 이렇게 쿼리를 보낼 것입니다.SELECT *FROM icecreamWHERE ingredient = '딸기' OR ingredient = '메론';그렇다면 추가로 수박이 들어가는 아이스크림을 찾고 싶다면?계속 OR 절을 붙여 늘려가야 하는 것일까요?👆 IN값을 하나만 지정할 수 있는 = 연산자와 다르게 여러 개의 데이터를 지정할 수 있습니다.위 예시에서 IN 절을 넣어 쿼리를 수정해보겠습니다.SELECT *FROM icecreamWHERE ingredient IN ('딸기', '메론');연산자가 줄어서 쿼리가 간단해지고 이해하기 쉬워졌습니다.이번 글은 짧게 마무리 되었네요.글..
[SQL] JOIN으로 테이블을 합쳐보자 지난번 포스트에서 정규화를 알아보았습니다.종속 관계인 속성을 제거하였지만, 테이블을 다시 합쳐 사용할 때가 생깁니다.예를 들어서 한 유저가 작성한 댓글들을 모아서 확인할 때,우리는 유저 테이블과 댓글 테이블을 조합해야 합니다.🍡 테이블을 하나로 연결하는 JOINJOIN은 SQL을 사용하면 빼놓을 수 없는 키워드입니다.사전적인 정의는 연결하다, 잇다 등으로데이터베이스에서는 두 개 이상의 테이블을 결합하는 데 사용합니다./* JOIN 예시 */SELECT * FROM `user`JOIN `comment`ON `user`.id = `comment`.user_id;  이제부터 다양한 유형의 JOIN에 대해서 알아보겠습니다. 💡 (INNER) JOININNER JOIN은 두 테이블을 비교하여 일치하는 부분만 ..
[SQL] Time Zone 설정하기 진행하고 있는 미니 프로젝트에서 데이터베이스로부터 읽어온 시간이 다르게 표기되었습니다.데이터베이스에서 제공하는 날짜 타입은 무척 편리하다고만 생각했는데,해결하지 않으면 의도와 다른 동작을 하는 서비스가 될 가능성이 높습니다.어떻게 해결하면 좋을지 미리 작성해두어서 추후에 생길 문제를 예방하고자 합니다.⏳ MariaDB 시간대MariaDB는 다양한 시간대 설정을 가지고 있습니다.SELECT @@global.time_zone, @@session.time_zone, @@system_time_zone;@@global.time_zone@@session.time_zone@@system_time_zoneSYSTEMSYSTEMUTCglobal.time_zone: 현재 서버에서 사용하는 시간대입니다.session.tim..
[SQL] 데이터를 내 마음대로, DML 이전 포스트에서 CRUD를 언급한 적이 있습니다.관계형 데이터베이스에서는 매우 직관적인 키워드로 데이터의 처리를 돕고 있습니다.이러한 쿼리 언어를 SQL이라고 하고, 그 중 데이터를 조작하는 쿼리를 DML이라고 합니다.🔎 SELECTSELECT '컬럼명' FROM '테이블명';데이터베이스에 있는 데이터를 사용하는 가장 기본적인 명령어입니다.SELECT로 가져오고 싶은 컬럼을 선택하고 FROM으로 정보가 있는 테이블을 선택합니다. 🔎 INSERTINSERT INTO `테이블명` (`컬럼1`, `컬럼2`, `컬럼3`)VALUES (`값1`, `값2`, `값3`);테이블에 새로운 레코드를 입력하는 명령어입니다.삽입할 컬럼과 값을 동일한 개수로 입력해줍니다.만약, 모든 컬럼에 값을 추가할 시에는 컬럼을 생략..
[RDBMS] 데이터베이스 정규화 우리는 필요한 데이터를 데이터베이스에 저장하여 집합을 생성합니다.이러한 집합으로 필요한 정보를 생산하기 위해서는 데이터베이스 설계가 중요합니다.기사 시험을 공부할 때도 빠지지 않는 내용인 정규화를 지금부터 알아볼까요?테이블을 잘못 설계하면 이상현상이 발생합니다.이상현상을 예방하기 위해서는 데이터베이스 정규화가 필요합니다. 📌 제1 정규화테이블의 속성이 원자값을 가지도록 테이블을 분해하는 과정입니다.이 테이블은 제품의 알레르기 성분이 하나의 튜플에 복수로 존재합니다.제1 정규화를 거쳐 아래처럼 하나의 값만 가지도록 변경합니다. 📌 제2 정규화테이블의 부분 함수 종속을 제거하는 과정입니다.부분 함수 종속이란 기본키를 구성하는 여러 속성 중에 일부분에만 종속되어 있음을 의미합니다.이 테이블에서 고객 코드와..