SQL-DML(2)

Sejin·2025년 5월 21일
0

Data, DB공부

목록 보기
19/26

SELECT

테이블에 존재하는 레코드의 값을 조회

예제 데이터(학사정보.sql)

SELECT * FROM 테이블명;

해당 테이블의 모든 칼럼값 조회

SELECT [ALL/DISTINCT]칼럼1, 칼럼2, ... FROM 테이블명

ALL : 중복데이터 모두 출력(DEFAULT)


DISTINCT: 중복 데이터를 1건으로 출력

  • DISTINCT 키워드는 첫 칼럼의 앞에 위치해야 함
  • 칼럼의 조합에 대해 중복 체크
  • NULL 값도 하나의 값으로 간주함(NULL값도 1회만 표시)

구조 확인

DESC 학생;

모든 필드 조회

SELECT * FROM 학생 ;

특정필드 조회

SELECT 학번, 이름, 성별, 생년월일, 접공
FROM 학생;

별칭 사용

  • 조회 결과에 일종의 별칭(ALIAS)을 부여하여 칼럼 레이블을 변경함

  • 칼럼명과 별칭 사이에 AS 키워드를 사용(Optional)

  • 별칭이 공백, 특수문자 등을 포함하는 경우 큰 따옴표 사용


ORDER BY

출력 시 정렬 기준 설정, SQL 문장의 맨 마지막에 위치

  • 오름차순
    ASC(생략 가능)
  • 내림차순
    DESC

  • 참고 : ORACLE에서 NULL은 가장 큰 값으로 취급됨


WHERE

테이블에서 조건에 만족하는 칼럼값들을 조회

  • 형태

학생테이블에서 전공이 'AI'인 학생의 학번, 이름, 전공을 표시


연산자

WHERE - 연산자


연산자 우선 순위


산술 연산자

  • NUMBER와 DATE 자료형에 대해 적용

  • 연산자는 SELECT문에도 사용 가능


NULL 연산

NULL과 산술 연산한 결과는 NULL

  • 데이터 확인("라레"의 키가 null임)


NUMBER과 DATE 연산

  • 생년월일 확인
    2001년 3월 30일

  • 3개월 더하기

  • 3년 더하기


비교 연산자

  • 모든 자료형에 대해 적용함

  • 문자열의 크기 비교는 사전 순으로 수행됨
    예) '01' < '02'< '11' < '2'

  • NULL에는 비교 연산자 사용이 불가함


논리 연산자

모든 자료형에 대해 적용

  • 실행 결과가 나머지 두 가지와 다른 것?

  • 진리표

AND 연산
☑ 두 조건이 모두 참일 때 TRUE
☑ 하나라도 거짓이면 FALSE
☑ 하나라도 NULL이면 NULL (참이 보장되지 않음)

OR 연산
☑ 두 조건 중 하나라도 참이면 TRUE
☑ 모두 거짓일 때 FALSE
☑ 하나라도 NULL이면 결과는 TRUE나 NULL(다른 값에 따라 다름)

SQL 연산자 ||

합성(연결) 연산자
문자열과 문자열을 연결

  • 방법1
    CONTCAT(str1, str2)
  • 방법2
    str1 || str2


CONCAT은 두 개의 문자열만 연결할 수 있음.

SQL 연산자 (BETWEEN)

SQL 연산자 (IN)

SQL 연산자 (NOT IN)

SQL 연산자 (LIKE)

  • 문자열 비교 연산

  • 와일드 카드 사용가능

  • %
    임의의 문자 N개

  • _
    임의의 문자 1개

ROWNUM(TOP N개의 레코드 반환)

사용자가 아닌 시스템이 관리하는 Pseudo Column

사용 가능한 부등호

  • =1
  • <
  • <=

사용 불가능한 부등호

  • =2~= n
  • '>'
  • '>'=

  • ROWNUM을 이용하여 새로운 필드 생성
    업로드중..

업로드중..


INSERT, DELETE, UPDATE

INSERT

  • 테이블에 하나의 레코드를 추가함(여러 개 입력 시 INSERT ALL ~ 활용)

INSERT INTO 테이블명(COLUMN_LIST) VALUES (VALUE_LIST);
업로드중..

  • 일부 특정한 칼럼에 대응되는 값만 입력
  • 칼럼 순서는 실제 테이블의 칼럼 순서와 무관
  • 정의하지 않은 칼럼은 NULL 값이 입력됨

INSERT INTO 테이블명 VALUES (전체 COLUMN의 VALUE_LIST);
업로드중..

  • 전체 칼럼의 모든 값을 순서대로 입력해야 함
  • 빈 값은 NULL 또는 작은따옴표 둘(")로 입력(주의' ' 이 아님)

INSERT ALL

동시에 여러 레코드를 추가하는 경우

  • 테이블 생성 후 초기 데이터 일괄 업로드

INSERT ALL은 반드시 SELECT문을 사용해야 함

새로운 값을 직접 입력하는 경우 아래와 같이 DUAL 테이블을 사용함
업로드중..


DELETE

테이블에 존재하는 전체 레코드 삭제

DELETE 테이블명 / DELETE FROM 테이블명

  • DELETE FROM 장학금;
  • DELETE 장학금;
  • WHERE 절을 사용하여 특정 레코드를 삭제함
    업로드중..

UPDATE

테이블에 존재하는 값 변경

  • UPDATE 테이블명 SET 칼럼명 = 새로운 값

WHERE절을 사용하여 특정 레코드의 값을 변경함

  • UPDATE 과목 SET 학점 = 2;
  • UPDATE 학생 SET 몸무게=999 WHERE 이름='라레';
profile
Sejin's Journey for Developers

0개의 댓글