SQL 연습하기

김나영·2023년 6월 24일
0

Spring

목록 보기
1/38

CREATE 제약 조건

  • AUTO_INCREMENT

    • 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성
  • NOT NULL

    • 해당 필드는 NULL 값을 저장할 수 없게 됨
  • UNIQUE

    • 해당 필드는 서로 다른 값을 가져야만 함
  • PRIMARY KEY

    • 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 됨
  • FOREIGN KEY

    • 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장해줌
  • CASCADE

    • FOREIGN KEY로 연관된 데이터를 삭제, 변경할 수 있음
CREATE TABLE IF NOT EXISTS 만들 테이블명
(
);

ALTER

  • 어떤 기능을 부여하고자 할 때 사용
ALTER TABLE MANAGER MODIFY COLUMN id bigint auto_increment;
  • MANAGER 테이블의 id 컬럼에 AUTO_INCREMENT 기능을 부여
ALTER TABLE EXAM ADD PRIMARY KEY(student_code, exam_seq);
ALTER TABLE EXAM ADD CONSTRAINT exam_fk_student_code FOREIGN KEY(student_code) REFERENCES STUDENT(student_code);
  • EXAM 테이블에 PRIMARY KEY(pk) 설정

  • EXAM 테이블에 FOREIGN KEY 설정

  • exam_fk_student_code : FOREIGN KEY의 제약 조건에 이름을 정해주는 것(임시로 적은 것)

  • REFERENCES STUDENT(student_code) : STUDENT의 student_code를 참조


INSERT

INSERT INTO MAJOR VALUES('m1', '스프링', '남병관');
INSERT INTO MAJOR VALUES('m2', '노드', '강승현');
INSERT INTO MAJOR VALUES('m3', '플라스크', '이범규');
INSERT INTO MAJOR VALUES('m4', '루비온레일즈', '차은서');
INSERT INTO MAJOR VALUES('m5', '라라벨', '구름');
INSERT INTO MAJOR VALUES('m6', '리엑트', '임민영');
INSERT INTO MAJOR VALUES('m7', '뷰', '김서영');
INSERT INTO STUDENT(student_code, name, gender, major_code) VALUES('s12', '권오빈', 'M', 'm3');
  • values 뒤에 소괄호 후 데이터를 넣어주게 되면 MAJOR 전체 데이터를 다 넣는 것

  • 테이블 이름 뒤에 소괄호 후 데이터를 넣어주게 되면 STUDENT의 필드들을 넣을 수 있음


UPDATE

INSERT INTO STUDENT VALUES('s0', '수강생', '20220331', 'M', '01000000005', 'm1');
UPDATE STUDENT SET major_code= 'm2' where student_code= 's0';
  • 's0'의 수강생 추가

  • student_code = 's0'인 수강생의 major_code를 'm2'로 바꿈


DELETE

DELETE FROM STUDENT WHERE student_code = 's0';
  • WHERE : 조건을 달 수 있음

  • WHERE student_code = 's0' : 해당 필드값이 's0'인 그 row를 지움


SELECT

SELECT * FROM STUDENT;
SELECT * FROM STUDENT WHERE STUDENT_CODE = 's1'; // s1만 보겠다
SELECT name, major_code FROM STUDENT WHERE student_code = 's1';
  • ' * ' : 모든 column을 다 볼 수 있음

  • 전체 column을 보고 싶지는 않고 이름과 major_code만 보고 싶을 때는 * 대신 필드명을 적어주면 됨


JOIN

  • 나누어진 테이블을 하나로 합치기 위해 데이터베이스가 제공하는 기능

  • ON 이라는 키워드를 통해 기준이 되는 컬럼을 선택하여 2개의 테이블을 합쳐 줌

  • 적어도 하나의 컬럼을 서로 공유하고 있어야 하기 때문에 테이블에 외래 키가 설정 되어 있다면 해당 컬럼을 통해 JOIN을 하면 조건을 충족할 수 있음

    ❗️ JOIN을 하기 위해 외래 키를 설정하는 것이 항상 좋은 선택이 아닐 수도 있음

    • 외래 키를 설정하면 데이터 무결성을 확인하는 추가 연산이 발생함

    • 또한 무결성을 지켜야하기 때문에 상황에 따라 개발하는데 불편할 수 있음

0개의 댓글