풀스택 웹개발 부트캠프 6주차 (1)

syxxne·2023년 8월 23일
0

부트캠프

목록 보기
14/42

SQL문

SQL 공통

  • 데이터베이스 목록 보기
  SHOW DATABASES;
  • 데이터베이스 이용하기
  USE 데이터베이스명;
  • 테이블 목록 보기
  SHOW TABLES;
  • 테이블 구조 보기
  DESC 테이블명;

DDL

  • Data Definition Language
  • 데이터베이스 or 테이블을 정의하는 언어
  • create : 데이터베이스 또는 테이블 생성
CREATE TABLE 테이블명 (
  컬럼명 타입
 );
  • alter : 테이블의 특정 컬럼(열)을 삭제하거나 추가, 변경
    1. 컬럼 삭제
    ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
    1. 컬럼 추가
    ALTER TABLE 테이블명 ADD 컬럼명 타입;
    1. 컬럼 속성 변경
    ALTER TABLE 테이블명 MODIFY 컬럼명 타입;
  • drop : 테이블 삭제
  DROP TABLE 테이블명;
  • truncate : 테이블 초기화 (테이블의 모든 row 데이터 일괄 삭제)
  TRUNCATE TABLE 테이블명;

DML

  • Data Manipulation Language
  • 데이터베이스의 내부 데이터를 관리하기 위한 언어

CRUD

  • 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 처리 기능

    기능SQL
    CreateINSERT
    ReadSELECT
    UpdateUPDATE
    DeleteDELETE
  • insert : 데이터 추가
INSERT INTO 테이블명 (필드1, 필드2, 필드3) VALUES (1,2,3);
// 테이블의 모든 컬럼에 값을 추가할 때만 아래처럼 필드를 명시하지 않고 insert 가능
INSERT INTO 테이블명 VALUES (1,2,3);
  • select : 데이터 검색
SELECT 필드1, 필드2, 필드3 FROM 테이블명 WHERE 필드1 = 조건값1 
ORDER BY 필드1 ASC LIMIT 개수;
  • update : 데이터 수정
UPDATE 테이블명 SET 필드1 =1 WHERE 필드2 = 조건값2;
  • delete : 데이터 삭제
DELETE FROM 테이블명 WHERE 필드1 =1;

Join

  • 두 개 이상의 테이블에서 데이터를 결합하여 새로운 결과를 생성
  • 테이블 간의 관계를 통해 의미있는 정보를 얻어내야 할 때, 조인을 사용하여 관련된 데이터를 결합하고 원하는 정보를 추출
  • inner join : 공통된 값만을 가진 행 반환
  • left join : 왼쪽 테이블의 모든 행을 포함하며, 오른쪽 테이블과 일치하는 경우 함께 반환
  • right join : 오른쪽 테이블의 모든 행을 포함하며, 왼쪽 테이블과 일치하는 경우 함께 반환
  • full join : 양쪽 테이블 모든 행을 포함하며, 일치하는 경우 함께 반환
  • cross join : 두 테이블의 모든 가능한 조합 반환
SELECT 필드명 FROM 테이블명 INNER JOIN 조인할 테이블명 ON 일치해야 할 필드명;

Relationship

  • 테이블들은 서로 관계를 맺을 수 있으며, 이를 통해 복잡한 데이터 구조를 단순화하고 관리함
  • 1 : 1
  • 1 : 다
  • 다 : 다

1 : 1 관계

  • 하나의 레코드가 다른 하나의 레코드와 관련되어 있는 관계
  • 각 레코드는 서로 한 가지 정보만을 공유
  • ex) 사용자 - 프로필, 직원 - 연차, 주문 - 송장
User.hasOne(Profile, { foreignKey: "user_id", onDelete: "CASCADE" });
Profile.belongsTo(User, { foreignKey: "user_id", onDelete: "CASCADE" });
  • hasOne : 한 모델 (테이블)이 다른 모델을 가리키는 1 : 1 관계를 설정
  • belongsTo : 다른 모델이 한 모델을 가리키는 1 : 1 (1 : 다) 관계를 설정

1 : 다 관계

  • 한 쪽 레코드가 다른 쪽 레코드 여러 개 와 관련되어 있는 관계
  • 보통 부모 엔티티와 자식 엔티티 사이의 관계를 나타내는 데 사용
  • ex) 부서 - 직원, 고객 - 주문, 학교 - 학생
Customer.hasMany(Order, { foreignKey: "customer_id" });
Order.belongsTo(Customer, { foreignKey: "customer_id" });
  • hasMany : 한 개의 모델이 다른 모델과 1 : n 관계를 가질 때 사용
  • belongsTo : 다른 모델이 한 모델을 가리키는 1 : 1 (1 : 다) 관계를 설정

다 : 다 관계

  • 한 쪽 레코드가 다른 쪽 레코드 여러 개와 관련되고, 그 반대쪽 레코드도 다른 쪽 레코드 여러 개와 관련되어 있는 관계
  • 중간 테이블을 사용하여 구현
  • 학생 - 과목, 주문 - 제품, 배우 - 영화
Student.belongsToMany(Teacher, { through: StudentTeacherRelation });
Teacher.belongsToMany(Student, { through: StudentTeacherRelation });
  • belongsToMany : 다 : 다 관계를 설정

💥 다 : 다 관계는 설계와 처리 모두 복잡하므로 최대한 1 : 다 관계로 설계하는 것이 좋음

0개의 댓글