본문 바로가기

개발/Database30

외래 키 설정하기, 1NF (테이블 쪼개기) 제약조건 참조키 설정, 테이블 연산으로 값 채우기 제약조건 참조키(Foreign Key) 설정 CREATE TABLE department( _id INT PRIMARY KEY AUTO_INCREMENT, department_code CHAR(5) NOT NULL ); INSERT INTO department(department_code) SELECT belong FROM student ORDER BY belong; INSERT INTO 테이블(컬럼명) + 넣을 데이터 위의 결과에서 중복된 데이터 제거 DELETE FROM department; INSERT INTO department(department_code) SELECT DISTINCT(belong) FROM student ORDER BY belon.. 2024. 2. 4.
정규화(Normalization) 정규화(Normalization) 데이터를 중복으로 젖아하면 일관되지 않은 데이터, 비정상적인 삽입 갱신 삭제 처리, 디스크 공간 낭비 등 많은 문제를 일으킨다. 중복 데이터를 저장하면서 일으키는 문제점을 없애기 위해서 정보를 주제별로 분할하는 프로그램 테이블 간에 중복된 데이터를 허용하지 않는다. 무결성을 유지 할 수 있다. 데이터를 보호하고, 항상 정상인 데이터를 유지하는 것 DB 저장 용량을 줄일 수 있다. 정규화 단계 1NF (제 1 정규화) 테이블의 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분해하는 것 한 컬럼에는 하나의 값만 들어갈 수 있게 하는 것 2NF(제 2정규화) 제 1정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것 완전 함수 종속 기본키의 부분집합이.. 2024. 2. 4.
키(Primary Key, Foreign Key)의 종류와 함수적 종속 키의 종류 (Primary Key, Foreign Key) 후보키(Candidate Key) 테이블을 구성하는 열 중에서 유일하게 식별 할 수 있는 열 기본키(Primary Key) 테이블에서 유일하게 식별하기 위해 사용하는 키 대체키(Alternate Key) 후보키 중 기본키를 제외한 나머지 후보키 외래키(Foreign Key) 테이블 내의 열 중 다른 테이블의 기본키를 참조하는 열 Parent Key 외래키가 참조하는 테이블의 기본키 Parent Table Parent Key를 가진 테이블 외래키를 사용하는 이유 외래키로 설정을 하면 데이터를 삭제할 때, 해당 테이블을 참조하는 테이블에서 관련 데이터를 삭제 할 수 있다. 참조 무결성 외래키는 참조하는 테이블에 실제로 있는 값만 사용 할 수 있다. .. 2024. 2. 4.
데이터의 그룹별 선택 (GROUP BY) 데이터의 그룹별 선택 (GROUP BY) 특정 belong 별로 인원수가 몇명인지 확인 GROUP BY 컬럼명 : 컬럼명의 행 별로 구분 지을 때 사용 SELECT belong, COUNT(*) FROM student GROUP BY belong; 주의 할 점 SELECT name, belong, COUNT(*) FROM student GROUP BY belong; Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.student.name' which is not functionally dependent on columns in GROUP BY clause.. 2024. 2. 3.
문자열을 다루는 내부함수 사용하기 (RIGHT, SUBSTRING_INDEX, UPPER) 문자열을 다루는 내부함수 사용하기 (RIGHT, SUBSTRING_INDEX, UPPER) 1. RIGHT(컬럼명, 자리수) : 선택한 컬럼의 데이터를 오른쪽부터 자리수 만큼 잘라서 반환 SELECT _id, phone, Right(phone, 4) FROM student WHERE belong = 'IDE'; 2. AS (변수명) : 쿼리 결과의 컬럼며을 통해 필드값에 접근 하기 때문에 의미에 맞는 변수명을 지어준다. SELECT _id, phone, Right(phone, 4) AS phone_last FROM student WHERE belong = 'IDE'; 3. SUBSTRING(컬럼명, 시작 인덱스, 시작 인덱스부터의 자리수) : 시작 인덱스 위치부터 선택한 컬럼의 데이터를 자리수 만큼 반환.. 2024. 2. 3.
내부 함수를 사용하기 (SUM, COUNT, AVG) 내부 함수를 사용하기 (SUM, COUNT, AVG) 1. SUM(컬럼명) + 조건절 : 선택한 컬럼의 조건절에 부합하는 데이터의 합을 반환 belong이 IDE인 사람들의 status의 합 SELECT SUM(status) FROM student WHERE belong = 'IDE'; 2. COUNT(컬럼명) + 조건절 : 선택한 컬럼에서 조건절에 부합하는 데이터의 개수 반환 belong이 IDE인 사람의 수 SELECT COUNT(status) FROM student WHERE belong = "IDE"; 3. AVG(컬럼명) + 조건절 : 선택한 컬럼에서 조건절에 부합하는 데이터의 평균 반환 SELECT AVG(status) FROM student WHERE belong = "IDE"; 이 외에도 .. 2024. 2. 3.
생성문 보기 (SHOW) 생성문 보기 (SHOW) SHOW는 데이터베이스 목록이나, 테이블 목록 등 다양한 정보를 보기 원할 때 사용하는 명령어입니다. SHOW 명령어 참고 https://extbrain.tistory.com/59 [MySQL] SHOW 명령어 ▶MySQL SHOW 명령어 ▶설명 SHOW는 데이터베이스 목록이나, 테이블 목록 등 다양한 정보를 보기 원할 때 사용하는 명령어입니다. ▶데이터베이스/테이블 관련 명령어 목록 데이터베이스 목록 (현재 extbrain.tistory.com 특정 데이터베이스를 만들기 위한 SQL 쿼리 가져오기 SHOW CREATE DATABASE study_db; 특정 테이블을 만들기 위한 SQL 쿼리 가져오기 SHOW CREATE TABLE hero; 특정 테이블의 인덱스 보기 SHOW .. 2024. 2. 2.
데이터 변경 (UPDATE) 데이터 변경 (UPDATE) UPDATE 테이블명 변경할 테이블 선택 SET SET 바꿀 컬럼 WHERE 조건 UPDATE hero SET belong = 'ZER' WHERE status = 0; SELECT * FROM hero; 변경할 테이블 선택 status 값이 0인 레코드의 belong을 ZER로 변경 UPDATE hero SET status = status + 200 WHERE _id LIKE '2009%'; SELECT * FROM hero; _id가 2009로 시작하는 데이터의 status를 기존 status 값에 200을 더한 값으로 초기화 2024. 2. 2.