INNER JOIN
LEFT (OUTER) JOIN
RIGHT (OUTER) JOIN
FULL (OUTER) JOIN
CROSS (OUTER) JOIN
예시
SELECT 조회할 필드 FROM 테이블명 INNER JOIN 조인할테이블명 ON 일치해야할 필드
//ex)
SELECT orders.order_id, customers.customer_name FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
1:1관계
hasOne
으로 연결CREATE TABLE user(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
password VARCHAR(100) NOT NULL
};
CREATE TABLE profile(
id INT PRIMARY KEY,
user_id INT,
introduce VARCHAR(100),
FOREIGN KEY (user_id REFERENCES user(id)
);
// JOIN
User.hasOne(Profile, {foreignKey:'user_id', onDelete: 'CASCADE'});
Profile,belongsTo(User, {foreignKey: 'user_id', onDelete: 'CASCADE'});
hasOne
: 한 모델이 다른 모델을 가리키는 1:1 관계를 설정하는데 사용belongsTo
: 다른 모델이 한 모델을 가리키는 1:1(1:다) 관계를 설정하는데 사용1:다 관계
hasMany
로 연결CREATE TABLE customers(
customer_id INT PRIMARY KEY AUTO INCREMENT,
customer_name VARCHAR(255),
customer_email VARCHAR(255)
);
CREATE TABLE orders(
order_id INT PRIMARY KEY,
order_date DATE,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id);
// JOIN
Customer.hasMany(Order, {foreignKey : 'customer_id'});
Order.belongsTo(Customer, {foreignKey : 'customer_id'});
hasMany
: 한 개의 모델(테이블)이 다른 모델과 1:n 관계를 가질 때 사용belongsTo
: 다른 모델이 한 모델을 가리키는 1:1(1:다) 관계를 설정하는데 사용다:다
belongsToMany
로 연결CREATE TABLE Students(
StudentID INT PRIMARY KEY,
StudentName VARCHAR(50)
);
CREATE TABLE Teachers(
TeacherID INT PRIMARY KEY,
TeacherName VARCHAR(50)
);
CREATE TABLE StudentTeacherRelation (
RelationID INT PRIMARY KEY,
StudentID INT,
TeacherID INT,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID),
FOREIGN KEY (TeacherID) REFERENCES Teachers(TeacherID)
);
belognsToMany
: 다:다 관계를 설정할 때 사용되는 메서드