여태껏 SQL 문제를 풀면서 `SELECT` 로 조회하는 것만 해봤었는데 CRUD에 사용할 수 있는 여러가지 함수와 타입을 알아봤다. 그 중 많이 쓰는 것 같은 걸 정리해보았다.
타입
- 숫자형
- INT (4Byte) : signed -2147483648 ~ 2147483647 / unsigned 0 ~ 4294967295
- BIGINT (8Byte) : signed 약 -900경 ~ + 900경 / unsigned 0 ~ 약 1800경
* Signed 과 Unsigned 는 음수를 표현하느냐 아니냐 차이
- 문자형
- CHAR(1~255)
- VARCHAR(1~65535)
- TEXT : 게시글처럼 긴 문자열을 저장할 때 사용
그 외에 엄청 많은데 그건 그때그때 필요하면 찾아보자.
제약조건
- AUTO_INCREMENT : 고유번호 자동생성 ( 1씩 증가 )
- NOT NULL : NULL 값 저장 불가
- UNIQUE : 서로 다른 값을 가져야 함. ( ex - 이메일 )
- PRIMARY KEY : 고유 식별 값 / NOT NULL 과 UNIQUE 를 모두 가진다
- FOREIGN KEY : 다른 테이블의 PRIMARY KEY 값을 참조로 설정
- CASCADE : 참조의 무결성을 유지하기 위해 동작을 정의하는 규칙
ON DELETE CASCADE - 부모 테이블의 행이 삭제되면, 참조하는 자식 테이블의 관련 행들도 자동 삭제
ON UPDATE CASCADE - 부모 테이블의 기본 키가 업데이트되면, 참조하는 자식 테이블의 외래 키 값도 자동으로 변경 - DEFAULT : 기본 값을 설정
함수
CREATE : student 테이블 생성
CREATE TABLE student
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '학생 식별자',
name VARCHAR(100) COMMENT '이름',
age INT COMMENT '나이',
grade VARCHAR(10) COMMENT '등급'
);
ALTER : 기존 데이터베이스 구조를 수정
-- students 테이블에 email 컬럼 추가
ALTER TABLE student ADD COLUMN email VARCHAR(100) NOT NULL;
-- major 테이블의 name 컬럼의 길이 변경
ALTER TABLE major MODIFY COLUMN name VARCHAR(100);
-- major 테이블의 튜터 UNIQUE 제약조건 설정
ALTER TABLE major ADD CONSTRAINT UNIQUE(tutor);
INSERT : 테이블에 데이터 추가
INSERT INTO student (name, age, grade, email) VALUES('학생1', 20, 'AAA', 'a@a.com');
UPDATE : 기존 데이터 수정
UPDATE student SET age = 21 WHERE name = '학생1';
DELETE : 데이터 삭제
DELETE FROM student WHERE id = 1;
'개발 > 내일배움캠프 TIL' 카테고리의 다른 글
[TIL #33] 컴포넌트 스캔 탐색 위치와 기본 스캔 대상 (0) | 2024.12.04 |
---|---|
[TIL #32] Spring 일정 관리 앱 과제 트러블 슈팅 + 디버그로 원인 찾기 (0) | 2024.12.03 |
[TIL #30] HttpEntity (0) | 2024.12.01 |
[TIL #29] @RestController (0) | 2024.11.30 |
[TIL #28] Spring 1주차에서 알게 된 것 (0) | 2024.11.29 |