SQL_03

functionMan·2024년 1월 28일

SQL

목록 보기
3/5
post-thumbnail

1. SQL

  • SQL Structured Query Language 구조화된 질의 언어

    • 사람과 DBMS가 소통하기 위한 언어
    • SQL은 자바 같은 완전한 프로그래밍 언어가 아니고, 데이터 부속어이다.
    • SQL은 DBMS에 직접 삽입하거나, Workbench같은 개발도구 또는 자바나 C로 만들어진 서버/
      클라이언트 응용프로그램 코드에 삽입하여 사용할 수 도 있다.
  • SQL은 기능에 따라 크게 3가지로 분류

    • DDL Data Definition Language : 데이터 정의어
      데이터베이스 객체(테이블,뷰,인덱스...)의 구조 정의

    • DML Data Manipulation Language : 데이터 조작어
      테이블에 저장된 데이터 검색,삽입, 삭제, 갱신 등 데이터 처리

    • DCL Data Control Language : 데이터 제어어
      데이터 사용의 권한을 제어함. 관리자 또는 관리 권한이 있는 사용자만 사용 가능

    • 그 외 명령어 : TCL Transaction Control Language 트랜젝션 제어어

    • Transaction 트랜젝션
      더이상 쪼갤 수 없는 업무 처리의 최소 단위

  • SQL 기본사항

    • 명령문이 끝나면, 세미콜론(;) 작성
    • 주석: --한줄주석 /여러줄주석/
    • 명령문 작성시 띄어쓰기 주의.
    • 키워드 대소문자 구분 X
    • 하나의 작업 단위인 트랜젝션이 끝나면 COMMIT; 명령어로 변경된 데이터를 영구 저장해야 한 다.
      DML : INSERT, DELETE, UPDATE 사용 후 커밋!
    • Workbench에서 쿼리문을 실행하기 전에, 데이터베이스 명시 필요!

2. MySQL 데이터 타입

  • 문자형 데이터 타입
    • CHAR(n)
      -> 고정 길이 데이터 타입
    • VARCHAR(n)
      -> 가변 길이 데이터 타입(65535byte)
      -> ex. VARCHAR(255) <--- Java - String
    • ENUM(val1, val2, val3,...)
      -> val 중 하나의 값을 저장할 수 있는 enum 타입. 문자열 데이터 타입. <--- Java - enum
    • TINYTEXT(n) max 255Byte
    • TEXT(n) max 65535Byte
    • MEDIUMTEXT(n) max 16777215Byte
    • LONGTEXT(n) max 약42억Byte JSON : JSON문자열 데이터 타입
  • 숫자형 데이터 타입
    • BIT(n) 비트 값 타입. n은 1~64 지정가능 <-- Java - Boolean TINYINT(n) 정수형 데이터 타입 1byte
    • SMALLINT(n) 정수형 데이터 타입 2byte
    • MEDIUMINT(n) 정수형 데이터 타입 3byte
    • INT(n) / INTEGER(n) 정수형 데이터 타입 4byte <--- Java - Integer BIGINT(n) 정수형 데이터 타입 8byte <--- Java - Long
    • FLOAT(길이, 소수) 부동 소수형 데이터 타입 4byte <--- Java - Double DECIMAL(길이, 소수) 고정 소수형 데이터 타입
    • DOUBLE(길이, 소수) 부동 소수형 데이터 타입 8byte
  • 날짜형 데이터 타입
    • DATE 날짜 데이터 타입 TIME 시간 데이터 타입
    • DATETIME 날짜와 시간 데이터 타입 8byte <-- Java - LocalDateTime
    • TIMESTAMP 날짜와 시간 데이터 타입 4byte
    • YEAR
  • 데이터 타입 선택 방법
    • 타입은 작을 수록 좋다
    • 타입은 단순한 게 좋다
    • 가능하면 NULL을 쓰지 말자. NULL 대신 기본값, 숫자0,빈문자열,NONE 특수한 값을 지정.
  • MySQL과 Java 데이터 타입 호환

3. DML - SELECT (질의어)

  • 데이터를 검색(조회) 하는 명령어로 특별히 질의어라고 한다.

  • SELECT문은 검색한 결과를 테이블 형태로 출력

  • 기본 문법 구조

    • 여러줄 나눠서 작성 가능, 키워드나 컬럼명, 테이블명 등은 분리해서 작성하거나 띄어쓰기가 없으면 에러.
    • SELECT 절 뒤에 반드시 FROM 절이 와야 한다.
    • 전체 컬럼조회 : 표현식 * 을 사용
    • 원하는 컬럼만 조회 : 컬럼명을 쉼표로 구분하여 나열
  • 옵션들이 추가되는 버전

  • Alias 별칭

    • 조회 시, 컬럼이나 테이블에 별칭을 붙히는 것
    • 원본 테이블이나 컬럼명이 영구적으로 바뀌는 것이 아니라, 조회 시 한번만 변경되어 조회됨.
    • as or AS 는 생략 가능 ('리터럴값' 뒤에는 as 붙혀주기)
    • 별칭은 겹따옴표("") 로 묶거나 생략 가능 하나, 별칭에 공백이 포함되면 반드시 묶어준다.
    • 테이블이 여러개일 경우, 테이블 뒤에 별칭을 붙혀준다. 이때 SELECT절 뒤 컬럼명은 별칭으로 구분해 작성
  • ALL | DISTINCT : 중복 / 중복제거

    • ALL : 중복까지 포함해서 조회 (생략시 이 값이 default)
    • DISTINCT : 중복된 데이터 한개만 조회. 반드시 SELECT키워드 뒤에 작성, 작성한 모든 컬럼에 적용되므로 결과에 유의
  • WHERE : 조건

    • 조건에 맞는 데이터를 검색 할 때 사용
    • FROM절 뒤에 작성
    • 조건식에 사용하는 연산자
      • 비교연산자
        • 숫자, 날짜, 문자 비교에 사용가능
        • 숫자에 천단위 구분 쉼표를 붙히지 않는다.
        • 같다는 = 을 한개만 작성 (자바와 혼동 금지)
      • 복합 조건
        • AND : 자바의 &&
        • OR :자바의||
        • NOT : 자바의 !
        • 우선순위 : AND > OR
      • BETWEEN | NOT BETWEEN
        • 컬럼 BETWEEN a AND B 컬럼 NOT BETWEEN a AND b
        • a와 b 사이 값을 조건으로 제시(포함)
        • 앞쪽에 작은수, 뒤에 큰수 작성
        • 컬럼 >= a AND 컬럼 <= b 와 동일한 효과
      • IN (리스트) | NOT IN (리스트)
        • 리스트의 나열된 값들 중 일치하는 것들을 조회
        • 리스트는 범위가 아니라, 각 값들을 나열한 것
        • price IN (1000, 2000, 3000) = price = 1000 OR price = 2000 OR price = 3000
      • LIKE
        • 컬럼 LIKE '비교문자열'
        • 비교 문자열에 와일드문자 사용가능
          • % : 임의의 문자를 대신하는 기호 (%는 0개 이상을 표현)
            • % : 임의의 문자를 대신하는 기호 (%는 0개 이상을 표현)
            • 문자% : 해당 문자로 시작하는
            • %문자 : 해당 문자로 끝나는
            • %문자% : 위치 상관없이 해당 문자를 포함하는
          • _ :특정위치에임의의문자1개를대신
            • _A% :두번째문자가A인것
      • IS NULL | IS NOT NULL
        - price = NULL --> X : null은 = 으로 비교 불가!!!
        - NULL 값 비교 : --> O
profile
functionMan

0개의 댓글