학교와 학생에 관계를 생각해 봅시다. 학교와 학생에 관계를 차수로 표현 한다면 관계 차수는 1 : N 관계가 된다.

 

학생과 학교에 관계를 차수로 표현 한다면 관계 차수 표현은 N : 1 관계가 된다.

 

관계 차순을 표현할 때 기준을 따로 두지 않는다면 N 쪽 다수 쪽을 뒤로 표현 하는 것을 권장 합니다.

야구 선수와 야구팀에 관계 차수은 어떻게 될까?

하나의 야구팀은 여러명의 야구선수를 포함하고 있으므로, 야구팀과 야구선수는 1:N 관계를 가지게 됩니다.

 

부모 테이블과 자식 테이블은 RDBMS에서 테이블 간의 관계를 표현하는 데 사용되는 용어입니다.
부모 테이블은 관계에서 상위에 위치하며, 자식 테이블은 하위에 위치합니다. 
부모 테이블은 일반적으로 자식 테이블에 대한 주요 키(PK)를 가지고 있으며, 
자식 테이블은 부모 테이블의 키를 참조하는 외래 키(FK)를 가지고 있습니다.

MySQL에서 FK(외래키)는 다른 테이블의 기본키(primary key)를 
참조하여 현재 테이블의 필드를 정의할 때 사용되는 제약 조건입니다. 
즉, FK를 사용하여 두 개 이상의 테이블 간에 관계를 설정할 수 있습니다.


부모 테이블과 자식 테이블은 일반적으로 1:N 관계를 가집니다. 
부모 테이블에서는 고유한 값으로 이루어진 기본 키(primary key)를 가지고 있으며, 
자식 테이블에서는 부모 테이블의 기본 키를 외래키(foreign key)로 가지고 있어서 
부모 테이블과 자식 테이블 사이에 관계가 형성됩니다. 
이 관계에서 부모 테이블은 하나의 레코드가 자식 테이블에서 여러 번 참조될 수 있지만, 
자식 테이블에서는 각 레코드가 부모 테이블에서 오직 하나의 레코드만 참조하게 됩니다. 
따라서 이러한 관계를 1:N 관계라고 부릅니다.

 

'MYSQL' 카테고리의 다른 글

1 : 1 관계  (0) 2023.03.16
1 : N 관계와 INSERT 구문  (0) 2023.03.16
관계 차수  (0) 2023.03.16
요구 분석과 시스템 설계 모델링  (0) 2023.03.15
DELETE 구문과 조건절  (0) 2023.03.15

RDBMS에 의미 ,관계 차수에 의미

데이터베이스(Database)에서 테이블(Table)은 릴레이션(Relation) 또는 엔터티(Entity)라고도 합니다.

릴레이션(Relation)이라는 용어는 관계형 데이터베이스에서 데이터의 저장 및 관리를 위한 개념으로, 테이블과 동일한 개념을 의미합니다. 관계형 데이터베이스에서는 테이블을 여러 개 만들고, 이들 간의 관계를 설정하여 데이터를 구성하게 됩니다.

 

관계 차수

1:1 관계 (One-to-One Relationship)

1:N 관계 (One-to-Many Relationship)

N:1 관계 (Many-to-One Relationship)

N:M 관계 (Many-to-Many Relationship)

 

1:1 관계 (One-to-One Relationship)

  • 두 개의 테이블 간에 각각 하나의 레코드만 매칭되는 관계
  • 보통 기본키와 외래키를 사용하여 연결

1:N 관계 (One-to-Many Relationship)

  • 한 테이블의 레코드가 다른 테이블의 여러 레코드와 매칭되는 관계
  • 보통 외래키를 사용하여 연결

N:1 관계 (Many-to-One Relationship)

  • 다른 테이블의 여러 레코드가 한 테이블의 레코드와 매칭되는 관계
  • 보통 외래키를 사용하여 연결

N:M 관계 (Many-to-Many Relationship)

  • 두 개의 테이블 간에 다수의 레코드가 매칭되는 관계
  • 중간에 연결테이블을 만들어서 각각의 테이블과 연결함으로써 구현 

'MYSQL' 카테고리의 다른 글

1 : N 관계와 INSERT 구문  (0) 2023.03.16
1 : N (One-to-Many Relationship) 차수에 대한 고찰  (0) 2023.03.16
요구 분석과 시스템 설계 모델링  (0) 2023.03.15
DELETE 구문과 조건절  (0) 2023.03.15
UPDATE 구문과 조건절  (0) 2023.03.13

요구 사항 분석 과정

1.건물을 짓는다 라고 가정을 하면 사용자에게 어떤 건물을 만들고 싶은지 물어 보는 단계이다. (별장, 아파트, 주택)

 

시스템 설계

1.바로 땅부터 파는 작업을 하는 것이 아니라 설계 도면을 먼저 그려야 한다.

시스템 설계는 데이터베이스 시스템을 구축하는 초기 단계로, 시스템을 구축하기 위해 필요한 요구사항과 이를 충족시키기 위한 설계 계획을 수립하는 작업입니다. 시스템 설계를 통해 데이터베이스의 구조와 기능, 인터페이스, 보안 등을 정의하여 데이터를 체계적으로 관리하고 활용할 수 있도록 합니다.

 

모델링

1.시스템에 사용될 어떤 데이터들을 모우고 어떻게 관리할지 설계하는 것을 모델링이라고 생각하면 된다.

 

밑 블로그를 참조

https://blog.naver.com/devnote1/222578900678

'MYSQL' 카테고리의 다른 글

1 : N (One-to-Many Relationship) 차수에 대한 고찰  (0) 2023.03.16
관계 차수  (0) 2023.03.16
DELETE 구문과 조건절  (0) 2023.03.15
UPDATE 구문과 조건절  (0) 2023.03.13
SELECT 구문과 조건절  (0) 2023.03.13

DELETE 구문

DELETE 구문은 특정 테이블에서 특정 조건을 만족하는 행을 삭제하는 데 사용됩니다.

DELETE 구문을 사용할 때는 삭제할 행을 신중하게 선택해야 합니다.

DELETE 구문을 사용하여 데이터를 삭제하면 복구하기 어렵거나 불가능할 수 있습니다. 따라서 DELETE 구문을 사용하기 전에 데이터를 백업하거나, 테스트용 데이터를 사용하거나, WHERE 절을 사용하여 조건을 만족하는 행을 선택하는 데 주의해야 합니다.

-- member 테이블에서 id가 3인 행 삭제
DELETE FROM member WHERE id = 3;

-- member 테이블에서 gender가 'F'이고 age가 20보다 큰 행 삭제
DELETE FROM member WHERE gender = 'F' AND age > 20;

'MYSQL' 카테고리의 다른 글

관계 차수  (0) 2023.03.16
요구 분석과 시스템 설계 모델링  (0) 2023.03.15
UPDATE 구문과 조건절  (0) 2023.03.13
SELECT 구문과 조건절  (0) 2023.03.13
AUTO_INCREMENT 란 ?  (0) 2023.03.13

UPDATE 구문은 이미 존재하는 테이블의 레코드를 수정하는 명령문입니다. 이 구문은 WHERE 절을 포함하여 사용됩니다. WHERE 절을 사용하여 특정 조건에 해당하는 레코드만 수정할 수 있습니다.

UPDATE 구문은 다음과 같은 형식으로 작성합니다.

UPDATE [테이블 이름]
SET [칼럼 이름1] = [새로운 값1], [칼럼 이름2] = [새로운 값2], ...
WHERE [조건];

위의 구문에서 SET 절은 테이블의 특정 칼럼 값을 변경하는 부분입니다. WHERE 절은 조건에 해당하는 레코드만 변경할 수 있도록 필터링 합니다.

예를 들어, student 테이블에서 grade 가 2 인 학생들의 major 값을 '전자공학과' 로 변경하려면 다음과 같이 작성할 수 있습니다.

UPDATE student
SET major = '전자공학과'
WHERE grade = 2;

UPDATE 구문은 매우 강력하므로 사용할 때는 주의가 필요합니다. 특히 WHERE 절을 사용할 때는 조건을 신중하게 선택하여야 합니다.

'MYSQL' 카테고리의 다른 글

요구 분석과 시스템 설계 모델링  (0) 2023.03.15
DELETE 구문과 조건절  (0) 2023.03.15
SELECT 구문과 조건절  (0) 2023.03.13
AUTO_INCREMENT 란 ?  (0) 2023.03.13
DATE 타입 형식을 사용할 때 값을 넣는 방법  (0) 2023.03.13

조건절이란 (WHERE)

MySQL에서 WHERE 절은 SELECT, UPDATE, DELETE 문에서 조건을 지정하여 해당하는 데이터를 선택하거나 수정하거나 삭제할 때 사용하는 절입니다.

WHERE 절은 기본적으로 조건식을 포함하며, 조건식은 연산자와 피연산자로 이루어져 있습니다. 연산자는 비교 연산자(=, <>, <, <=, >, >=)나 논리 연산자(AND, OR, NOT) 등이 있으며, 피연산자는 컬럼명, 상수값, 서브쿼리 등이 올 수 있습니다.

예를 들어, 아래의 SELECT 문에서는 WHERE 절에 "age >= 20" 이라는 조건식을 포함하고 있습니다.

SELECT * FROM users WHERE age >= 20;

이렇게 WHERE 절을 사용하여 쿼리를 작성하면 해당하는 조건을 만족하는 데이터만 선택되어 결과로 반환 됩니다. WHERE 절을 사용하지 않으면 모든 데이터가 선택되어 반환 됩니다.

 

또한, WHERE 절은 여러 조건식을 조합하여 사용할 수도 있습니다. 이때 논리 연산자인 AND나 OR, NOT을 사용하여 조건식들을 연결합니다. 예를 들어, 아래의 SELECT 문에서는 WHERE 절에 "age >= 20 AND gender = 'M'" 이라는 두 개의 조건식을 AND로 연결하여 사용하고 있습니다.

 

AND 그리고는 논리 곱 —> 두개 조건 식 전부 true 이여 한다.

OR 또는 → 논리 합 → 둘 중 하나라도 참이면 true 입니다.

SELECT * FROM users WHERE age >= 20 AND gender = 'M';

이렇게 WHERE 절을 사용하여 쿼리를 작성할 때는 조건식을 명확하게 지정해야 하며, 잘못된 조건식을 사용하면 의도하지 않은 결과가 나올 수 있습니다. 따라서 조건식을 작성할 때는 문법적인 오류를 방지하기 위해 괄호를 사용하거나, 필요한 경우에는 서브쿼리를 사용하여 복잡한 조건식을 작성할 수도 있습니다.

 

조건절에서 사용할 수 있는 대표 연산자

  • = (equal)
  • > (greater than)
  • < (less than)
  • = > (greater than or equal to)
  • <= (less than or equal to)
  • <> or != (not equal to)
  • BETWEEN (between a range of values)
  • LIKE (search for a pattern)
  • IN (search for multiple values)
-- student 테이블 에서 학과가 '컴퓨터공학과' 학생들에 이름과 학번을 조회하고 싶을 때 
-- 사용하는 쿼리문 작성해 보자. 
SELECT * FROM student;

select student_id, name
from student
where major = '컴퓨터공학과';

where 절 연습 1

기본테이블을 생성 하고 샘플데이터를 밀어 넣고 연습을 하여보자

CREATE TABLE subject (
  subject_id INT AUTO_INCREMENT PRIMARY KEY,
  subject_name VARCHAR(50) NOT NULL,
  credit INT NOT NULL,
  department VARCHAR(50) NOT NULL,
  professor VARCHAR(50) NOT NULL
);


CREATE TABLE customer (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(50),
  address VARCHAR(100) NOT NULL
);

-- subject 테이블 샘플 데이터 

INSERT INTO subject (subject_id, subject_name, credit, department, professor)
VALUES
(1, '영어회화', 3, '외국어학과', '김영희'),
(2, '프로그래밍 기초', 3, '컴퓨터공학과', '박철수'),
(3, '데이터베이스 개론', 3, '컴퓨터공학과', '이승호'),
(4, '컴퓨터 시스템 개론', 3, '컴퓨터공학과', '홍길동'),
(5, '선형대수학', 3, '수학과', '김영수'),
(6, '미적분학', 3, '수학과', '박순영'),
(7, '국어문학사', 3, '국어국문학과', '최지혜'),
(8, '국어문법론', 3, '국어국문학과', '이상호'),
(9, '일본어회화', 3, '외국어학과', '김현진'),
(10, '중국어학', 3, '외국어학과', '최영식'),
(11, '미국사', 3, '사학과', '박영진');


-- customer 샘플 데이터 

INSERT INTO customer (id, name, email, address) VALUES
(1, '김철수', 'kim@example.com', '서울시 강남구'),
(2, '박영희', 'park@example.com', '서울시 서초구'),
(3, '이민수', NULL, '경기도 성남시 분당구'),
(4, '최영진', 'choi@example.com', '서울시 송파구'),
(5, '한미영', 'han@example.com', '경기도 수원시 장안구'),
(6, '강종현', 'kang@example.com', '서울시 강서구'),
(7, '신영수', 'shin@example.com', '경기도 의정부시'),
(8, '유승환', 'yoo@example.com', '경기도 부천시'),
(9, '서민지', 'seo@example.com', '서울시 종로구'),
(10, '임진우', 'lim@example.com', '경기도 안양시 동안구');
-- WHERE 사용해보기 

-- student 테이블 에서 학과가 '컴퓨터공학과' 학생들에 이름과 학번을 조회하고 싶을 때 
-- 사용하는 쿼리문 작성해 보자. 
SELECT * FROM student;

select student_id, name
from student
where major = '컴퓨터공학과';

-- student 
-- 1. grade가 3인 학생들 조회 하기 (특정 데이터를 지정하지 않으면 전부 출력 - 컬럼)
select * from student where grade = 3;

-- 2. 이름이 홍길동인 학생 조회 하기 
select * from student where name = '홍길동';

-- 3. 학번이 1부터 10까지인 학생들 조회하기 (between )
select * from student where student_id between 1 AND 10; 

-- 4. 학과가 컴퓨터 공학과 그리고, 학년이 2학년인 학생들만 조회 해줘 
select * from student where major = '디자인학과' and grade = 1; 

-- 5. 학과가 컴퓨터공학과 이거나(또는) 학년이 2학년인 학생들을 조회 해주세요 
select * from student where major = '컴퓨터공학과' or grade = 2; 

-- 6. 학생 이름이 홍길동이 아닌 학생들을 조회해주세요
select * 
from student
where name != '홍길동';

select * 
from student
where name <> '홍길동';

-- 7. 학생들의 학년이 2학년 이상인 사람들을 조회 
select * from student where grade >= 2;

-- 8. 학생들의 학년이 2학년 미만인 사람들을 조회 
select * from student where grade < 2;

-- 9. 학년이 1학년 이거나 3학년인, 4학년 학생들 조회하기 
-- IN 으로 사용 
select * from student where grade in(1, 3, 4);
select * from student where grade != 2;

연습 과제

 

1. 강남 3구 사는 사람들을 조회(서초구,송파구,강남구)

2. email을 입력하지 않은 사람의 데이터를 출력하세요

3. id가 5이상이며 주소가 서울시에 거주하는 사람 이름을 검색해라 단, 서울시는 다음과 같은 주소가 있다 강남구, 서초구, 송파구, 강서구 종로구

4. email이 NULL인 사람을 조회하는 쿼리 (IS NULL 을 사용해보세요)

5. 이메일이 NULL 이 아니고 주문 번호가 2번이 넘으며 종로구에 사시는분은

6. 주소가 '서울'이면서 id가 5이하인 고객 조회하는 쿼리

7. 서울시에 사는 고객들을 조회하는 쿼리 (LIKE 사용해보기) 8. 아이디가 3에서 8까지의 사람 중 '경기도 의정부'에 거주하고 있는 사람 중 이메일을 입력한 사람을 출력하시오

-- 1. 강남 3구에 사는 사람들을 조회(서초구, 송파구, 강남구)

SELECT *
FROM customer
WHERE address in ('서울시 강남구', '서울시 서초구', '서울시 송파구');

-- 2. email을 입력하지 않은 사람의 데이터를 출력하시오

SELECT *
FROM customer
WHERE email IS NULL;

-- 3. ID가 5이상이며 주소가 서울시에 거주하는 사람 이름을 검색해라

SELECT *
FROM customer
WHERE id >= 5 
    AND address IN ('서울시 강남구', '서울시 서초구', '서울시 송파구', '서울시 강서구', '서울시 종로구');

-- 4. 이메일이 NULL이 아니고 주문번호가 2번이 넘으며 종로구에 사시는 분을 검색해보자

SELECT *
FROM customer
WHERE email IS NOT NULL AND id > 2 AND address = '서울시 종로구';

-- 5. 주소가 '서울'이면서 id가 5 이하인 고객 조회하는 쿼리

SELECT *
FROM customer
WHERE address LIKE '서울%' AND id <= 5;

-- 6. 아이디가 3에서 8까지의 사람 중 '경기도 의정부시'에 거주하고 있는 사람 중 이메일을 입력한 사람을 출력하시오.

SELECT *
FROM customer
WHERE (id between 3 and 8)
    AND address = '경기도 의정부시' AND email IS NOT NULL;

-- 7. email이 NULL인 사람을 조회하는 쿼리 (IS NULL 을 사용해보세요)

SELECT *
FROM customer
WHERE email IS NULL;

-- 8. 서울시에 사는 고객들을 조회하는 쿼리 (LIKE 사용해보기) 

SELECT *
FROM customer
WHERE address LIKE '서울시%';

'MYSQL' 카테고리의 다른 글

DELETE 구문과 조건절  (0) 2023.03.15
UPDATE 구문과 조건절  (0) 2023.03.13
AUTO_INCREMENT 란 ?  (0) 2023.03.13
DATE 타입 형식을 사용할 때 값을 넣는 방법  (0) 2023.03.13
NOT NULL 과 디폴트 값 사용  (0) 2023.03.13

오토 인크리먼트(auto-increment)는 MySQL과 같은 데이터베이스 시스템에서 자동으로 순차적인 번호를 생성해주는 기능입니다. 일반적으로 테이블에서 기본키(primary key)를 지정할 때 사용합니다. 즉, 새로운 레코드를 삽입할 때마다 기본키 값이 자동으로 증가하며, 중복된 값이 입력되지 않도록 보장합니다. 예를 들어, 1부터 시작하여 1씩 증가하는 번호를 자동으로 생성하도록 설정하면, 데이터를 삽입할 때마다 시스템이 자동으로 다음 번호를 생성하여 사용합니다. 이를 통해 데이터의 일련번호를 자동으로 생성하고, 중복된 값이 입력되지 않도록 보장할 수 있습니다.

 

-- AUTO_INCREMENT 사용하기  
-- 고객 테이블 생성 

CREATE TABLE customer(
	id INT AUTO_INCREMENT PRIMARY KEY, 
  name VARCHAR(50) NOT NULL, 
  email VARCHAR(50), 
  address VARCHAR(100) NOT NULL
);

INSERT INTO customer(name, email, address) 
VALUES 
	('김철수', 'A@naver.com', '서울시 강남구 역삼동'),
  ('박영희', 'B@naver.com', '서울시 강동구 천호동'),
  ('김철수', 'A@naver.com', '서울시 강남구 역삼동');

select * from customer;

 

'MYSQL' 카테고리의 다른 글

UPDATE 구문과 조건절  (0) 2023.03.13
SELECT 구문과 조건절  (0) 2023.03.13
DATE 타입 형식을 사용할 때 값을 넣는 방법  (0) 2023.03.13
NOT NULL 과 디폴트 값 사용  (0) 2023.03.13
INSERT 구문과 제약 사항  (0) 2023.03.13
```sql
-- 데이터 타입 형식에 DATE 값 입력에 이해 
-- 데이터를 입력하는 쿼리 구문을 작성해 주세요 
INSERT INTO `order` (id, customer_order, product_name, quantity, order_date) 
VALUES (1, '빠른 배송 바람', '신라면', 2, '2022-02-25');

select * from `order`;

INSERT INTO `order` (id, customer_order, product_name, quantity, order_date) 
VALUES (2, '빠른 배송 바람', '신라면', 2, 20220225);

-- DATE 타입에 값을 넣을 때 작은따옴표나 큰따옴표를 사용해도 되고 
-- 정수값을 입력하여도 된다. 단 날자 형식에 맞는 값이어양 한다. 
-- 1년은 12개월 인데 13이라는 값을 넣으면 알아서 오류를 일으켜 준다. 
INSERT INTO `order` (id, customer_order, product_name, quantity, order_date) 
VALUES (3, '빠른 배송 바람', '신라면', 2, 20222225);

INSERT INTO `order` (id, customer_order, product_name, quantity, order_date) 
VALUES (4, '빠른 배송 바람', '신라면', 2, '20222225');
```

 

'MYSQL' 카테고리의 다른 글

SELECT 구문과 조건절  (0) 2023.03.13
AUTO_INCREMENT 란 ?  (0) 2023.03.13
NOT NULL 과 디폴트 값 사용  (0) 2023.03.13
INSERT 구문과 제약 사항  (0) 2023.03.13
MySQL에서 가장 많이 사용하는 데이터 타입 알아보기  (0) 2023.03.13

+ Recent posts