CREATE
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 '합불'
)
COMMENT '시험성적' charset=utf8;
- IF NOT EXISTS : 존재하지 않을 때만 만들어라!
- student_code : 컬럼명
- varchar(100) : 타입 ( int, char, varchar, varchar2 ... )
- not null : 제약조건
잘못된 데이터가 들어오지 않도록 제약 조건을 걸 수 있음- AUTO_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하여 고유번호를 생성
- NOT NULL : NULL 값을 저장할 수 없게함
- UNIQUE : 서로 다른 값을 가져야함
- PRIMARY KEY : NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가짐
- FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장
FK 를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야 함 - CASCADE : FOREIGN KEY 로 연관된 데이터를 삭제,변경할 수 있음
테이블 생성할 때 조건을 추가하지 못했더라도 테이블 수정을 통해 제약 조건을 수정할 수 있음
-- pk 설정하기
ALTER TABLE EXAM ADD PRIMARY KEY(student_code, exam_seq);
-- fk 설정하기
ALTER TABLE EXAM ADD CONSTRAINT exam_fk_student_code FOREIGN KEY(student_code) REFERENCES STUDENT(student_code);
- comment '수강생코드' : 컬럼의 설명 입력
테이블마다 같은 이름의 컬럼이더라도 name : 이름 / name : 매니저 이름 처럼 헷갈릴 수 있으니 잘 정의하는게 좋겠징? - COMMENT '시험성적' charset=utf8 : 테이블의 설명 입력
INSERT
INSERT INTO EXAM VALUES('s1', 1, 8.5, 'P');
INSERT INTO STUDENT( student_code, exam_seq, score, result ) VALUES( 's1', 1, 8.5, 'P' );
위에는 컬럼 순서대로 값을 입력하면 자동으로 저장되고
아래는 컬럼값을 직접 입력하여 해당 값을 지정
테이블이 자주자주 바뀔수도 있으니까 값을 지정하는게 낫겠징?
UPDATE
UPDATE STUDENT SET major_code= 'm2'
모든 데이터의 major_code를 m2로 변경
UPDATE STUDENT SET major_code= 'm2' where student_code= 's0';
조건을 추가하여 원하는 데이터의 값만 변경
DELETE
DELETE FROM STUDENT
모든 데이터를 삭제
DELETE FROM STUDENT WHERE student_code = 's0';
조건을 추가하여 원하는 데이터의 값만 삭제
SELECT
SELECT * FROM STUDENT;
STUDENT테이블의 모든 데이터 검색
SELECT * FROM STUDENT WHERE STUDENT_CODE = 's1';
조건을 추가하여 원하는 데이터의 값만 검색
SELECT name, major_code FROM STUDENT WHERE student_code = 's1';
원하는 컬럼만 보이도록 검색
SELECT * FROM STUDENT s, MAJOR m WHERE s.major_code = m.major_code;
JOIN을 통해 테이블을 합쳐서 보여줄 수 있음 (잘못 JOIN하면 아주아주 많은 중복 데이터가 쏟아질것....)
'개발일기 > SQL' 카테고리의 다른 글
ORACLE 숫자 함수 (0) | 2023.06.22 |
---|---|
[프로그래머스 SQL] 입양 시각 구하기(2) (0) | 2023.06.21 |
쿼리 삽질 기록 (0) | 2023.04.20 |
ERD 그리기 (0) | 2023.03.07 |
SQL 연습하기 (H2, IntelliJ) (0) | 2023.02.25 |