데이터베이스는 논리적이고 구조화된 방식으로 저장된 데이터 모음이다. 데이터가 구성되는 방식을 통해 데이터를 효율적으로 검색할 수 있다. 필요에 따라 데이터를 보고, 삽입하고, 업데이트하고, 삭제할 수 있다. 대부분의 최신 데이터베이스는 Microsoft Access, SQL Server, MySQL 등과 같은 데이터베이스 소프트웨어로 구축된다. 그러나 엄밀히 말하면 데이터베이스는 Excel 스프레드 시트 나 텍스트 파일처럼 간단히 할 수도 있다. 사실 데이터베이스가 반드시 컴퓨터에 있을 필요는 없다. 데이터베이스는 종이 기반으로도 가능하다. 이것은 컴퓨터가 생성되기 전에 데이터가 저장되는 방식이다. 데이터베이스가 나오기 이전에는 기업과 정부 기관은 모든 데이터를 종이에 보관하고 대형 파일 캐비닛에 보관하..
외래 키는 두 테이블 간의 관계에서 다른 테이블의 기본 키 필드에 연결된 필드이다. 관계형 데이터베이스 관리 시스템에서 관계는 둘 이상의 테이블 간의 관계를 정의한다. 즉, 한 테이블의 데이터는 다른 테이블의 데이터와 관련이 있다. 한 테이블에는 기본 키가 있고 다른 테이블에는 외래 키가 있다. 테이블 간의 관계를 설정할 때 외래 키를 기본 키와 연결한다. 이 시점부터 외래 키 필드의 값은 다른 테이블의 기본 키 필드 값과 일치해야 한다. 위의 예에서 Customer 테이블의 CityId 필드는 외래 키이다. 기본 키인 City 테이블의 CityId 필드에 연결된다. 주어진 레코드에 대해 Customer.CityId 값은 City.CityId 값과 일치한다. 따라서 외래 키는 관계형 데이터베이스 시스템의..
기본 키는 테이블의 고유 식별자 필드로 구성된 하나 이상의 열이다. 대부분의 기본 키는 단일 열로 구성되지만 여러 열로 구성될 수도 있다. 기본 키 필드에 저장된 모든 값은 해당 레코드에 고유하다. 다른 레코드에는 해당 값이 없다. 값은 고유 식별자이다. PK 기본 키 예시 고유 식별자는 종종 증가하는 숫자 (예 : 1, 2, 3…)이지만 필수 사항은 아니다. 고유 식별자는 고유 한 문자열이면 된다. 예를 들어 기본 키 필드는 다음과 같다. 자동생성 번호 이메일 주소 자동차 번호 면허번호 고유한 문자열 PK 기본 키 필요한 이유 몇 가지 (인수 가능한) 예외를 제외하고 관계형 데이터베이스의 모든 레코드에는 기본 키가 있어야 한다. 기본 키 필드가 없으면 관계형 데이터베이스 쿼리에 문제가 발생한다. 사실,..
관계형 데이터베이스 디자인에는 세 가지 유형의 관계가 있다. One-to-One One-to-Many (Many-to-One) Many-to-Many One-to-One 테이블 A의 행은 테이블 B에서 일치하는 행을 하나만 가질 수 있으며 그 반대의 경우도 마찬가지이다. 테이블 B에 저장된 데이터가 테이블 A에 쉽게 저장될 수 있기 때문에 일반적인 관계 유형이 아니다. 그러나 이 관계 유형을 사용하는 몇 가지 유효한 이유가 있다. 일대일 관계는 보안 목적, 대형 테이블 분할 및 기타 다양한 특정 목적으로 사용될 수 있다. 위의 예에서 우리는 HourlyRate 필드를 Employee 테이블에 직접 입력하고 Pay 테이블에 신경 쓰지 않을 수 있다. 그러나 시간당 요금은 특정 데이터베이스 사용자만 볼 수 ..
-- 엔진별 용량 확인 SELECT ENGINE , COUNT(1) AS 'TABLES' , CONCAT(ROUND(SUM(TABLE_ROWS) / (1024 * 1024), 2), 'M') AS 'TABLE_ROWS_SIZE' , CONCAT(ROUND(SUM(DATA_LENGTH) / (1024 * 1024 * 1024), 2), 'G') AS 'DATA_SIZE' , CONCAT(ROUND(SUM(INDEX_LENGTH) / (1024 * 1024 * 1024), 2), 'G') AS 'IDX_SIZE' , CONCAT(ROUND(SUM(DATA_LENGTH + INDEX_LENGTH) / (1024 * 1024 * 1024), 2), 'G') AS 'TOTAL_SIZE' , ROUND(SUM(IN..
[데이터베이스/SQL] - [SQL] DBMS 종류에 따른 페이징 쿼리(분할 쿼리) [SQL] DBMS 종류에 따른 페이징 쿼리(분할 쿼리) TEMP 테이블 DBMS 종류에 따른 분할 쿼리 방식은 조금씩 다르다. 페이징을 하거나, 데이터를 끊어 읽을 때 사용된다. Oracle 변수 처리 시 start, end로 데이터를 제한하여 분할하면 된다. ex) WHERE TOTAL.RNU reference-m1.tistory.com 지난 포스팅에 DBMS 종류별 페이징을 소개 한적이 있었다. 목록성 화면에서 페이징이 있는 경우 많이 사용하는 방법이다. 오늘은 위에 소개한 쿼리를 Mybatis를 활용하여 공통적으로 적용하는 방법이다. 아래의 예시는 MySQL로 작성되었다. CommonMapper.xml SELECT..
쿼리를 사용하다 보면 WHERE 1=1을 종종 사용할 때가 있다. 처음 접하시는 분들은 정확한 의미를 모르고 사용하기도 한다. 근데 사용하다 보면 의문이 든다. 왜 써야 하는가? 1=1의 의미는 단순히 항상 참이다. 보통은 SQL Client에서 데이터를 뽑기 위해 쿼리 문을 작성할 때 WHERE 절에 1=1로 조건을 걸고 이후 AND 조건을 자유자재로 넣고 빼기 위해서 사용한다. SELECT * FROM USER_BAS WHERE 1=1 AND DEL_YN = 'N' -- AND USE_YN = 'Y' AND USER_ID = 'U000000001'; 쿼리문 작성 이후 Mybatis로 옮길 때는 WHERE 1=1은 의미가 없기 때문에 빼고 작성해야 한다. 고정적인 필수 선행 조건이 있다면 WHERE 절..
MySQL에 제공하는 시간을 반환하는 함수에는 SYSDATE(), NOW() 두 가지 있다. 종종 오라클에서 제공하는 SYSDATE와 같은 기능으로 생각하고 SYSDATE()를 사용하는 분도 있다. 하지만 이 두 가지 함수에는 차이가 있다. 둘 다 현재 날짜 값을 가지고 오지만, 현재라는 기준이 다르다. 이 차이는 쿼리의 실행계획에 상당한 영향을 미칠 정도로 영향력이 있다. 아래 예제에서 확인해보자. SELECT NOW() AS NOW_START , SLEEP(1) , NOW() AS NOW_END , SYSDATE() AS SYSDATE_START , SLEEP(1) , SYSDATE() AS SYSDATE_END; NOW()와 SYSDATE() 차이를 확인하기 위해 쿼리문 SLEEP()을 주어보았다...
MENU_BAS라는 테이블에 MENU_ID, UPR_MENU_ID의 관계를 가지고 하위에서 상위까지 데이터를 조회하는 방법이다. WHTH RECURSIVE를 통해 데이터를 조회하는 점을 기억하자. WITH RECURSIVE MENU (MENU_ID, UPR_MENU_ID, MENU_NM, MENU_URL) AS ( SELECT MENU_ID , UPR_MENU_ID , MENU_NM , MENU_URL FROM MENU_BAS WHERE MENU_ID = #{menuId} AND DEL_YN = 'N' UNION ALL SELECT R.MENU_ID , R.UPR_MENU_ID , R.MENU_NM , R.MENU_URL FROM MENU_BAS R INNER JOIN MENU ON R.MENU_ID =..
국립국어원에 따르면 사전적 기준으로 보면 한 주의 시작은 월요일, 한 주의 마지막 날은 일요일로 되어있다. 외국에서는 일부 국가에서 일요일을 시작일로 정하는 경우가 있지만 일반적으로 월요일을 시작으로 한다. 우리나라도 월요일을 시작을 하고 있지만 이상하게 달력은 일요일이 처음에 오도록 제작한다. 기준일에 따라 통계가 달라지기 때문에 한 주의 시작일은 중요하다. 고객의 요구사항에 맞게 월별 통계를 어떻게 보여줄 것인가는 개발자의 몫이다. 고객이 한 주의 시작을 일요일, 월요일로 요청할지 아무도 모른다. 특히 해외 프로젝트일 경우에는 재차 확인을 해야 한다. 1. 주의 시작일 월요일, 일요일 결정 2. 월이 겹치는 주의 기준은 시작일이 일요일이면 수요일, 월요일이면 목요일이 어느 월에 속해 있는가로 결정(시..
- 리액트
- 성능분석
- 경력관리
- 제주도 3박4일 일정
- Collection
- Eclipse
- Tomcat
- Linux 명령어
- 프로그래머
- SQL
- 개발환경
- spring
- 오라클 내장 함수
- 정렬 알고리즘
- 리눅스 명령어
- effective java
- 자바
- Maven
- 오라클
- 회고
- 소프트웨어공학
- 리액트 16
- React
- javascript
- 자바스크립트
- 제주도 여행
- sort algorithm
- 이직
- Java
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |