Computer Science/Database :: 데이터베이스

데이터베이스 5강 :: 데이터 조작 언어 INSERT, UPDATE, DELETE, SELECT

HJPlumtree 2022. 3. 4. 12:32

데이터베이스 5강을 보며 배운내용

 

 

들어가기전

4강에서 데이터베이스를 정의하는

데이터 정의 언어를 알아봤다

이번 강의에서는 SQL을 이용해서

데이터 CRUD를 알아볼 듯 싶다

 

 

정리(TL;DR)

DB조작한다고 SQL 어렵게만 생각했는데
직접 보니까 꽤 직관적인 녀석이다
아직 이론만 배워서 그럴지 몰라도 현재까지 GOOD

레코드 삽입
INSERT INTO 테이블이름(컬럼1, 컬럼2)
  VALUES 값1, 값2

레코드 수정
UPDATE 테이블이름
  SET 컬럼 = 값
  [선택]WHERE 컬럼제목 = 값

레코드 삭제
DELETE FROM 테이블이름
  [선택]WHERE 컬럼제목 = 값


레코드 전체 검색

SELECT *
  FROM 테이블이름


레코드 부분 컬럼 검색

SELECT 찾을컬럼1, 찾을컬럼2
  FROM 테이블이름
  [선택]ORDEB BY
  [선택]WHERE 조건
  ...

 

 

데이터 조작 언어

DML: Data Manipulation Language

데이터 삽입, 수정, 삭제

 

정의된 테이블에 레코드 삽입, 수정, 삭제, 검색에 사용되는 명령어 집합

종류

  • INSERT: 테이블 스키마에 레코드 삽입
  • UPDATE: 특정 레코드 컬럼값 수정
  • DELETE: 특정 레코드 삭제
  • SELECT: 테이블에서 레코드 검색

 

 

INSERT

테이블에 새로운 레코드 삽입

모든 속성(컬럼) or 부분 속성에 속성값 삽입

INSERT INTO 테이블이름
  VALUES(값1, 값2, 값3)

선택된 컬럼에 값 넣을시

INSERT INTO 테이블이름(컬럼1, 컬럼2)
  VALUES(값1, 값2)

 

 

UPDATE

저장된 레코드의 특정 값 수정

UPDATE 테이블이름
  SET 컬럼1 = 값1
  WHERE조건[선택]

여러개 한번에 고칠 수 있다

UPDATE 테이블이름
  SET [컬럼1=값1, 컬럼2=값2]
  WHERE조건[선택]

수식도 넣을 수 있다

UPDATE 테이블이름
  SET 컬럼1=수식1
  WHERE조건[선택]

예시

학과이름(컬럼)이 '농학과'인 곳의 졸업학점 변경

UPDATE
  SET 졸업학점=140
  WHERE 학과이름='농학과'

잔액이 50,0000원 이상이 학생에 이자 2% 지급

UPDATE 학과
  SET 잔액=잔액*1.02
  WHERE 잔액>=500000

 

 

DELETE

조건에 일치하는 레코드 집합을 테이블에서 삭제

DELETE FROM 테이블이름
  WHERE조건[선택]
WHERE 조건문이 없으면 이 테이블 레코드 전체 삭제된다

예시) 소속학과 '컴퓨터과학과'인 교수 레코드 삭제

DELETE FROM 교수
  WHERE 소속학과='컴퓨터과학과'
삭제가 안되면 기본키가 참조되고 있을 경우가 대다수

예시) 모든 강의 레코드 삭제

DELETE FROM 강의
실제 운영중일때는 이렇게 레코드 전체 삭제 명령어는 오지 않을 것 => 개발자 실수, 해킹을 의심
그래서 SAFE UPDATES 모드가 기본값으로 켜져있다

 

 

SELECT

데이터 검색

레코드 가져오기 위한 명령어

모든 연산 명령어 가지고 있다

(관계 대수 셀렉션, 프로젝션, 조인, 카티션 프로덕트 등)

 

SELECT 각 절의 기능

  • SELECT[필수]
    결과에 포함되는 컬럼 지정
  • FROM
    조건을 적용할 테이블 지정
  • ON/WHERE
    조인 조건/검색한 레코드 조건 지정
  • GROUP BY
    레코드 그룹화 할 때 그룹 조건 지정
  • HAVING
    그룹에 대한 조건 지정
  • ORDER BY
    정렬 기준 조건

 

단순 질의문

전체 테이블 검색

SELECT *
  FROM 테이블

부분 컬럼 검색

SELECT 컬럼1, 컬럼2, 컬럼3
  FROM 테이블

예시) 교수테이블에서 '소속학과'컬럼 선택해서 출력

SELECT 소속학과
  FROM 교수

예시) 교수테이블에서 '소속학과'컬럼 선택해서 값 중복 없이 출력

SELECT DISTINCT 소속학과
  FROM 교수

예시) 교수테이블의 모든 컬럼 가져오기

SELECT *
  FROM 교수

 

 

조건 질의문

조건 만족하는 레코드만 검색

조건 종류

  • 산술 연산자: +, -, *, /, % 등
  • 비교 연산자: =, <, <=, >=, !=, <> 등
  • 논리 연산자: &&, ||, ! 등

 

예시) 이수 구분이 '전공필수'인 과목의 과목명, 학점, 선수과목 출력

SELECT 과목명, 학점, 선수과목
  FROM 과목
  WHERE 이수구분='전공필수'

예시) 남학생중 2000년 이전에 태어난 학생의 학생번호, 학생이름, 전화번호, 나이 출력

SELECT 학생번호, 학생이름, 전화번호, 나이
  FROM 학생
  WHERE 성별='남' AND 생년월일 < '2000-1-1'

 

 

데이터 정렬

ORDER BY절 사용

오름차순: ASC

내림차순: DESC

예시) 학생 계좌정보를 '잔액'기준 오름차순

SELECT *
  FROM 계좌
  ORDER BY 잔액 ASC

 

 

특수 연산자

관계형 DBMS에서만 사용되서 특수 연산자라고 부른다

BETWEEN 예시) 잔액이 20만원이상 40만원이하 계좌의 계좌번호, 잔액, 학생번호 출력

SELECT 계좌번호, 잔액, 학생번호
  FROM 학생
  WHERE 잔액 BETWEEN 200000 AND 400000

IN 예시) 소속학과가 '컴퓨터과학과', '경영학과'인 교수의 교수이름, 직위, 소속학과 출력

SELECT 교수이름, 직위, 소속학과
  FROM 교수
  WHERE 소속학과 IN('컴퓨터과학과', '경영학과')

LIKE 예시) 과목 코드가 'COM'으로 시작하는 과목의 과목코드, 과목명 출력

SELECT 과목코드, 과목명
  FROM 과목
  WHERE 과목코드 LIKE'COM%'
LIKE는 부분일치, %의 방향에 따라 접두어, 접미어 구분 가능

 

 

SQL 함수

위의 DDL, DML을 통해서는 꽤 간단한 조작만 가능한다

SQL 함수를 사용하면 더 복잡한 것들을 조작 가능할 듯

함수는 정리잘된 SQL cheatsheet 같은 거 찾아서 보자 

 

 

참고 링크

SQL 연습은 여기서 해보자

프로그래머스 SQL 고득점 Kit

=> https://programmers.co.kr/learn/challenges?tab=sql_practice_kit

 

 

SQL by Sunder Muthukumaran #unsplash