개발 공부

SQL연습

king yun bell 2022. 12. 26. 17:46
  • 제약조건

AUTO_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성해 줍니다.

NOT NULL : 해당 필드는 NULL 값을 저장할 수 없게 됩니다.

UNIQUE : 해당 필드는 서로 다른 값을 가져야만 합니다.

PRIMARY KEY : 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 됩니다.

FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장해 줍니다.

CASCADE : FOREIGN KEY 로 연관된 데이터를 삭제,변경할 수 있습니다.

 

  • 코드

1.테이블 생성(CREATE)

CREATE TABLE IF NOT EXISTS MAJOR
(
    major_code varchar(100) primary key comment '주특기코드',
    major_name varchar(100) not null comment '주특기명',
    tutor_name varchar(100) not null comment '튜터'
)

MAJOR테이블 생성

STUDENT 테이블 생성(MAJOR테이블에 foreign key 추가 (의존하게 만듦))

CREATE TABLE IF NOT EXISTS STUDENT
(
	student_code varchar(100) primary key comment '수강생코드', 
	name varchar(100) not null comment '이름',
	birth varchar(8) null comment '생년월일',
	gender varchar(1) not null comment '성별',
	phone varchar(11) null comment '전화번호',
	major_code varchar(100) not null comment '주특기코드',
	foreign key(major_code) references major(major_code)
)

EXAM 테이블 생성

CREATE TABLE IF NOT EXISTS EXAM
(
        student_code varchar(100) not null comment '수강생코드', 
        exam_seq int not null comment '시험주차', 
        score decimal(10,2) not null comment '시험점수',
        result varchar(1) not null comment '합불'
)

ERD

2.ALTER

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);

3. INSERT

INSERT INTO MAJOR VALUES('m1', '스프링', '남병관');

4.UPDATE

UPDATE STUDENT SET major_code= 'm2' where student_code= 's0';

5.SELECT

//STUDENT 전체 불러오기
SELECT * FROM STUDENT;
//특정 STUDENT row 불러오기
SELECT * FROM STUDENT WHERE STUDENT_CODE = 's1';
//특정 STUDENT row의 특정 칼럼 불러오기
SELECT name, major_code FROM STUDENT WHERE student_code = 's1';

6.JOIN(합치기)

SELECT s.name, s.major_code, m.major_name FROM STUDENT s JOIN MAJOR m ON s.major_code = m.major_code;
SELECT s.name, s.major_code, m.major_name FROM STUDENT s, MAJOR m WHERE s.major_code = m.major_code;
//둘다 같은동작을 함.

MAJOR 와 STUDENT의 값을 NAME, MAJOR_CODE, MAJOR_NAME값으로 매칭.