Cute Running Puppy
본문 바로가기
개발일기/SQL

SQL 정리

by 징구짱 2023. 2. 25.
728x90

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하면 아주아주 많은 중복 데이터가 쏟아질것....)

728x90

'개발일기 > 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