DB/SQL 5

정규화

개요정규화 정규화는 관계형 데이터베이스에서 중복을 줄이고 무결성을 개선하기 위해 데이터를 구조화하는 작업을 말한다. 정규화에는 1차, 2차, 3차, 4차, 5차 정규화와 BCNF가 있는데, 이 글에서는 '주문장' 서류 예시를 통해 1~3차 정규화에 대해 알아볼 것이다. 함수적 종속정규화를 공부하다 보면 '함수적 종속'이라는 말이 자주 등장하는데, "Y가 X에 함수적 종속이다"는 구어체로 "X에 의해 Y가 결정된다"라는 뜻이다. 이를 X→Y로 표현한다. 예를 들어 회사에서는 한 사원의 사번을 알면 그 이름도 알 수 있다. 따라서 사원명은 사번에 함수적 종속이고, 사번 → 사원명이라고 쓸 수 있다. 그러나 사원의 이름에 의해 사번이 결정되는 것은 아니다. 동명이인이 있을 수 있기 때문이다. 따라서 사번은 사..

DB/SQL 2025.03.25

SQL SELECT문의 JOIN

개요다음 두 테이블을 이용해 홍길동 사원이 일하는 부서를 찾아보자.직원사번이름생년월일부서번호01홍길동2000.01.012002...1990.01.013003...1980.01.01.10............ 부서부서번호부서명지역10영업서울20회계부산30개발대전......... 직원 테이블에는 홍길동의 부서가 나와 있지 않다. 그러나 부서 테이블을 참조하면 홍길동이 회계부에서 일한 다는 사실을 쉽게 알 수 있다. 위 예시에서 우리의 생각의 흐름은 다음과 같다.직원 테이블에서 '홍길동'에 대한 행을 찾는다.해당 행의 부서번호인 20을 본다.부서 테이블에서 20번 부서의 부서명을 찾는다.부서 테이블에서 홍길동의 부서번호와 같은 부서번호의 부서명을 본다는 것이 중요하다. 이렇게 두 개 이상의 테이블을 조합해서..

DB/SQL 2025.03.22

SQL SELECT문의 WHERE 절

SELECT 문에서 조건 검색을 할 때는 WHERE 절을 쓴다. 기본형은 다음과 같다.SELECT [컬럼들]FROM [테이블명]WHERE [조건1][AND|OR] [조건2][AND|OR]...[AND|OR][조건n]; AND를 쓰면 양쪽 조건이 모두 참이어야 하고, OR를 쓰면 둘 중 하나만 참이면 된다. 조건을 어떻게 줄 수 있는지, 한 대학교의 학생에 대한 예시 테이블을 통해 알아보자. 테이블명: student컬럼명내용자료구조sno학번문자열sname이름문자열sex성별문자열syear학년숫자major학과문자열avr평점 (4.0 만점)숫자 비교 연산자비교 연산자 , =, =, != 등을 이용하여 조건 검색을 할 수 있다. 여기서 !=는 같지 않다는 뜻이다. 평점이 3점 이상인 학생을 검색한다.SELECT ..

DB/SQL 2025.03.18

SQL SELECT문의 ORDER BY 절

ORDER BY 절SELECT 문 검색 결과를 정렬하는 데에는 ORDER BY 절을 쓴다. ORDER BY 절의 형식은 다음과 같다.ORDER BY [컬럼1], [컬럼2],..., [컬럼n] [ASC|DESC] 정렬은 컬럼을 중심으로 한다. 컬럼 여러 개를 입력하면 먼저 컬럼1 중심으로 정렬이 되고, 컬럼1 값이 같은 행들은 다시 컬럼2 값 중심으로 정렬된다. 이 과정을 컬럼2...컬럼n에 대해 반복한다. 기본적으로 정렬이 오름차순(ASC)으로 되는데, DESC 옵션을 쓰면 내림차순이 된다. ORDER BY 절은 SELECT 문 내에서 단 한 번, 가장 마지막에 쓰인다. 아래와 같이 긴 SQL 문에서도 마찬가지다. 예시한 대학교의 학생 정보에 대한 테이블에서 예시를 들어보자. 테이블의 구조는 다음과 같..

DB/SQL 2025.03.13

SQL SELECT문의 기본

SQL에서 데이터를 읽는 SELECT 문의 기본형은 다음과 같다. 대소문자 구분을 할 필요는 없다. 컬럼의 순서는 원하는 대로 하면 된다.SELECT [컬럼1], [컬럼2],... FROM [테이블 이름]; 컬럼 명은 영문으로 되어 있는데, 이에 별명을 짓고 싶으면 띄어 쓰기를 하고 별명을 쓴다. 별명에 공백이 있으면 " "를 써 준다. SELECT [컬럼1] [별명1] [컬럼2] ["별명 2"] ... FROM course; 모든 컬럼을 다 읽을 때는 *를 쓴다.SELECT * FROM [테이블 이름]; 성별, 지역 등 중복값이 있는 컬럼에서 중복값을 제거하여 출력헐 때는 DISTINCT 키워드를 쓴다.SELECT DISTINCT [컬럼1], [컬럼2],... FROM [테이블 이름]; 현재 시간 (..

DB/SQL 2025.03.06