제약조건
AUTO_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성해 준다.
CREATE TABLE 테이블이름
(
필드이름 필드타입 AUTO_INCREMENT,
// id bigint AUTO_INCREMENT,
...
);
NOT NULL : 해당 필드는 NULL 값을 저장할 수 없게 된다.
CREATE TABLE 테이블이름
(
필드이름 필드타입 NOT NULL,
...
);
UNIQUE : 해당 필드는 서로 다른 값을 가져야만 한다.
CREATE TABLE 테이블이름
(
필드이름 필드타입 UNIQUE,
...
);
PRIMARY KEY : 해당 필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 된다.
CREATE TABLE 테이블이름
(
필드이름 필드타입 PRIMARY KEY,
...
);
FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장해준다.
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...
FOREIGN KEY(필드이름)
REFERENCES 테이블이름(필드이름)
);
CASCADE : FOREIGN KEY로 연관된 데이터를 삭제, 변경할 수 있다.
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...
FOREIGN KEY(필드이름)
REFERENCES 테이블이름(필드이름) ON DELETE CASCADE
//ON UPDATE CASCADE
);
Intellij 에서 Mysql 연동하는 방법
Intellij 우측에 Database 클릭
Database는 미리 만들어둔 academy를 사용했다. 여기서 database를 만드는법을 설명하진 않겠다.
OK를 누르기 전에 Test Connection을 눌러본다.
Succeeded가 뜨면 연동이 성공했다는 뜻이다. 이제 OK를 누른다.
만약 Database 콘솔창을 닫았다면 이렇게 다시 열 수 있다. 이 콘솔창에서 SQL을 사용한다.
MAJOR 테이블 생성
이 코드를 실행시켜서 MAJOR 테이블과 속성을 만든다.
STUDENT 테이블 생성
EXAM 테이블 생성
테이블간의 관계를 보기
테이블이 모여있는 tables를 통해 이렇게 들어가면
이렇게 다이어그램으로 관계를 보여준다.
ALTER
1. EXAM 테이블의 student_code, exam_seq 두 개의 컬럼을 조합하여 복합 기본키를 만드는 것이다.
2. EXAM 테이블의 student_code 속성을 STUDENT 테이블의 student_code 필드를 참조하는 외래키로 만드는 것이다. CONSTRAINT 옆의 exam_fk_student_code는 임의로 이름을 지어주는 것이다. 즉, 내 맘대로 짓는것이다.
그 후 새로고침을 해주고 tables에서 Show Diagram...을 눌러보면
이렇게 변경된다.
MAJOR INSERT
Ctrl + A로 전체를 선택한 후 실행해야 한꺼번에 실행된다. 그렇지 않으면 한줄 한줄 선택해서 실행해야 한다.
현재 MAJOR 필드는 3개이고 따로 필드를 지정하지 않고 값을 3개를 넣으면 모든 필드에 값이 들어가는 것이다.
STUDENT INSERT
EXAM INSERT
UPDATE, INSERT INTO
현재 STUDENT 테이블에는 s0 번호를 가진 학생은 없다. 그래서 추가를 하고싶다면 이런식으로 하면 된다.
UPDATE는 현재 STUDENT 테이블에서 student_code가 s0인 행의 major_code를 m2로 바꾸는 것이다.
DELETE
SELECT
JOIN
해석
1. STUDENT와 MAJOR 테이블과 조인을 할건데, 그 조건으로 (ON) STUDENT 테이블의 major_code와 MAJOR 테이블의 major_code가 같은것으로 연결을 하겠다. 그 결과물을 STUDENT의 name, major_code와 MAJOR 테이블의 major_name 필드만 골라서 출력하라
'Spring 입문주차 > 1주차' 카테고리의 다른 글
20. JDBC란 무엇일까 (0) | 2024.08.15 |
---|---|
18. SQL (0) | 2024.08.14 |
17. Database (0) | 2024.08.14 |
16. Update, Delete 구현하기 (0) | 2024.08.14 |
15. Create, Read 구현하기(DTO) (0) | 2024.08.14 |