DB - RDBMS, SQL

이상해씨·2022년 9월 8일
0

웹 풀스택(JAVA)

목록 보기
41/54

✔ RDBMS

  • 관계형(Relational) 데이터베이스 시스템
    • 테이블 기반의 DBMS
    • 데이터를 테이블 단위로 관리.
      • 하나의 테이블은 여러 개의 컬럼(Column)으로 구성
    • 중복 데이터 최소화.
      • 같은 데이터가 여러 컬럼 또는 테이블에 존재할 경우, 데이터 수정시 문제가 발생할 가능성이 높아짐. (정규화)
    • 여러 테이블에 분산되어 있는 데이터를 검색시 테이블 간의 관계(join)을 이용하여 필요한 데이터 검색.
  • RDBMS 저장 구조 : Table

✔ SQL(Structured Query Language)

  • Database에 있는 정보를 사용할 수 있도록 지원하는 언어.
    • 모든 DBMS에서 사용 가능
    • 대소문자 구분 X(단, 데이터의 대소문자는 구분.)
  • 명령어 : DCL(제어), DDL(정의), DML(조작)
    • DCL(Data Control Language) : GRANT, REVOKE
    • DDL(Data Definition Language) : CREATE, ALTER, DROP, RENAME
    • DML(Data Manipulation Language) : INSERT, UPDATE, DELETE, SELECT
    • COMMIT, ROLLBACK : DML 명령문 수행한 변경 관리.

1. DDL(Data Definition Language)

  • 데이터 정의어
    • 데이터베이스 객체(table, view, index, ...) 구조 정의
    • 테이블 생성, 컬럼 추가, 타입 변경, 제약조건 지정, 수정 등.
SQL문설명
create데이터베이스 객체 생성
drop데이터베이스 객체 삭제
alter기존에 존재하는 데이터베이스 객체 수정

◾ 데이터베이스 생성.

  • create database 데이터베이스명 [default character set 값 collate 값];
    • Character set : 문자가 컴퓨터에 저장될 때 어떤 코드로 저장될지 규칙의 집합.
    • collate : 특정 문자 셋에 의해 데이터베이스에 저장된 값들을 비교, 검색, 정렬 등의 작업을 위해 문자들을 서로 비교할 때 사용하는 규칙들의 집합.

◾ 데이터베이스 변경.

  • alter database 데이터베이스명 [default character set 값 collate 값]

◾ 데이터베이스 삭제

  • 데이터베이스 삭제 : drop database 데이터베이스명;
  • 데이터베이스 사용 : use 데이터베이스명;

◾ table 생성.

  • 데이터 타입
    • 문자형 데이터
      • CHAR(M) : 고정 길이 M 문자열. 1~255.
      • VARCHAR(M) : 가변 길이 M 문자열. 1~65535.
      • TEXT(M) : 최대 65535bytes.
    • 숫자형 데이터
      • INT(M) : (signed)-2147483648~2147483647, (unsigned)0~4294967295
      • DOUBLE, FLOAT, REAL 등
    • 날짜형 데이터
      • DATE : YYYY-MM-DD
      • DATETIME : YYYY-MM-DD HH:MM:SS
      • TIMESTAMP(M) : 1970-01-01~2038-01-19 03:14:07까지 지원. (1970-01-01 00:00:00을 1초 단위로 표기.)
    • 이진 데이터
  • 테이블 생성
    • optional attributes
      • NOT NULL
      • DEFAULT value
      • UNSIGNED
      • AUTO INCREMENT
      • PRIMARY KEY
    • 제약 조건 : 컬럼에 저장될 데이터의 조건 설정.
      • constraint로 지정하거나 ALTER로 설정.
create table 테이블명(
	column_name1 Type [option],
    column_name2 Type [option],
    ...						  ,
    column_nameN Type [option],
    [constaint 제약 조건]
);
  • 스키마 : 데이터베이스의 테이블에 저장될 데이터의 구조와 형식 정의.

2. DML(Data Manipulation Language)

  • 데이터 조작어
    • Data 조작 가능
    • 테이블의 레코드를 CRUD(Create, Retrieve, Update, Delete)
SQL문설명
insert(c)데이터베이스 객체에 데이터 입력.
select(r)데이터베이스 객체에서 데이터 조회.
update(u)데이터베이스 객체에 데이터 수정.
delete(d)데이터베이스 객체에 데이터 삭제.

◾ INSERT

  • insert into 테이블명 VALUES (col_val1, col_val2, ..., col_valN);
  • insert into 테이블명 (col_name1, col_name2, ...col_nameN) VALUES (col_val1, col_val2, ..., col_valN);
  • 생략 가능한 Field
    • NULL이 허용된 컬럼.
    • DEFAULT가 설정된 컬럼.
    • AUTO INCREMENT가 설정된 컬럼.

◾ UPDATE

  • update 테이블명 SET col_name=col_val1, [...] WHERE 조건
  • WHERE 조건을 만족하는 레코드 값 변경
  • WHERE을 생략하면 모든 데이터 변경.

◾ DELETE

  • delete from 테이블명 wehre 조건
  • WHERE을 생략하면 모든 데이터 삭제.

◾ SELECT

  • select * | {[all|distinct] column | expression[alias], ...} from 테이블명 [wrere ... order by...];
      • : 모든 열 선택.
    • ALL : 선택된 모든 행 반환. (default)
    • DISTINCT : 선택된 행 중 중복 제거.
    • column : from 절에 나열된 테이블에서 지정된 열 선택.
    • expression : 표현식 값으로 인식되는 하나 이상의 값, 연산자 및 SQL 함수의 조합을 의미.
    • alias : 별칭
    • order by : 정렬 (default : asc)

3. DCL(Data Control Language)

  • 데이터 제어어
    • DB, Table 접근 권한이나 CRUD 권한 정의.
    • 특정 사용자에게 테이블의 검색 권한 부여/금지 등.
SQL문설명
grant데이터베이스 객체 권한 부여.
revoke데이터베이스 객체 권한 취소.

4. TCL(Transaction Control Language)

  • 트랜잭션 제어어
    • transaction : 데이터베이스 논리적 연산 단위.
SQL문설명
commit실행한 Query 최정적으로 적용.
rollback실행한 Query를 마지막 commit 전으로 취소시켜 데이터 복구.

5. MySQL 내장 함수

◾ 숫자

  • ABS() : 절대값
  • CEILING() : 값보다 큰 정수 중 가장 작은 수
  • FLOOR() : 값보다 작은 정수 중 가장 큰 수
  • ROUND() : 숫자를 자릿수 기준으로 반올림.
  • TRUNCATE() : 숫자를 자릿수 기준으로 버림.
  • POW(), POWER() : X의 Y승
  • MOD() : 분자를 분모로 나눈 나머지
  • GREATEST() : 가장 큰 수.
  • LEAST() : 가장 작은 수.

◾ 문자

  • ASCII() : 문자의 아스키 코드 값.
  • CONCAT(문자열1, 문자열2, ...) : 문자열 결합.
  • INSERT(문자열, 시작위치, 길이, 새로운 문자열) : 시작 위치부터 길이만큼 새로운 문자열로 대치.
  • REPLACE(문자열, 기존 문자열, 바뀔 문자열) : 기존 문자열을 바뀔 문자열로 대치.
  • INSTR(문자열, 찾는 문자열) : 찾는 문자열의 위치 값.
  • MID(문자열, 시작위치, 개수) : 문자열 중 시작위치부터 개수만큼 리턴.
  • SUBSTRING(문자열, 시작위치, 개수) : 문자열 중 시작위치부터 개수만큼 리턴.
  • LTRIM(), RTRIM(), TRIM() : 왼쪽, 오른쪽, 양쪽 공백 제거.
  • LCASE(), LOWER() : 소문자로 변경.
  • UCASE(), UPPER() : 대문자로 변경.
  • LEFT(문자열, 개수) : 문자열 중 왼쪽에서 개수만큼 추출.
  • RIGHT(문자열, 개수) : 문자열 중 오른쪽에서 개수만큼 추출.
  • REVERSE(문자열) : 문자열 반대로 나열.

◾ 날짜

  • NOW(), SYSDATE(), CURRENT_TIMMESTAMP() : 현재 날짜와 시간.
  • CURDATE(), CURRENT_DATE : 현재 날짜.
  • CURTIME(), CUREENT_TIME() : 현재 시간.
  • DATE_ADD(날짜, 인터벌, 기준값) : 날짜에서 기준 값 만큼 더한다.
  • DATE_SUB(날짜, 인터벌, 기준값) : 날짜에서 기준 값 만큼 뺀다.
  • YEAR(날짜) : 연도.
  • MONTH(날짜) : 월.
  • MONTHNAME(날짜) : 월 (영어)
  • DAYNAME(날짜) : 요일 (영어)
  • DAYOFMONTH(날짜) : 월별 일자.
  • DAYOFWEEK(날짜) : 주별 일자[일(1), ... 토(7)]
  • WEEKDAY(날짜) : 주별 일자[일(0), ..., 토(6)]
  • WEEK(날짜) : 일년중 몇 번째 주인지
  • FROM_DAYS(날수) : 00년 00월 00일부터 날 수만큼 경과한 날의 날짜 리턴.
  • TO_DAYS(날짜) : 00년 00월 00일부터 날짜까지의 일자 수 리턴.
  • DATE_FORMAT(날짜, '형식') : 날짜를 형식에 맞게 반환.

◾ 논리

  • IF(논리식, 값1, 값2) : 참일 경우 값1, 거짓이면 값2 반환.
  • IFNULL(값1, 값2) : 값1이 NULL이면 값2로 대치. NULL이 아니면 값1 반환.
  • NULLIF(값1, 값2) : 값1 = 값2 TRUE이면 NULL 그렇지 않으면 값1 리턴.

◾ 그룹

  • COUNT() : 레코드의 수.
  • SUM() : 레코드 값의 합계.
  • AVG() : 레코드 값의 평균.
  • MAX() : 레코드 값 중 최대값.
  • MIN() : 레코드 값 중 최소값.

6. Aggregation Function

  • 집계(그룹, 집합) 함수는 하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등의 결과 반환
    • sum : 그룹의 누적 합계.
    • avg : 그룹의 평균.
    • count : 그룹의 null 제외 총 개수.
      • 중복 제거를 하고 싶다면 distinct 키워드 사용.
    • max : 그룹의 최대값.
    • min : 그룹의 최소값

7. GROUP BY

  • group by
    • SELECT 문에서 GROUP BY절을 사용하여 쿼리된 테이블의 행을 그룹으로 묶음.
    • 집계 함수각 그룹에 대해 단일 결과 행으로 반환.
    • GROUP BY 절을 생략하면 집계 함수는 모든 행에 적용.
    • SELECT 절의 모든 요소는 GROUP BY절의 표현식, 집계 함수를 포함하는 표현식 또는 상수만 가능.
  • having
    • group by한 결과에 조건을 추가할 경우 사용.
    • aggregate 조건은 where절이 아닌 having에 사용.

      SELECT 실행 순서

    • SELECT columns : 5
    • FROM table_name : 1
    • WHERE conditions : 2
    • GROUP BY grouping column : 3
    • HAVING grouping conditions : 4
    • ORDER BY col [ASC|DESC] : 6

8. SET(집합 연산자)

  • 모든 집합 연산자는 동일한 우선 순위.
  • select 절에 있는 column의 개수와 type이 일치해야한다.
  • SET : MySQL은 UNION만 지원.
    • UNION(합집합) : 두 쿼리에서 선택된 모든 행 반환(중복은 한 번만 포함)
    • UNION ALL(합집합) : 두 쿼리에서 선택된 모든 행 반환(모든 중복 포함)
    • INTERSECT(교집합) : 두 쿼리에서 선택된 모든 중복 행 반환.
    • MINUS(차집합) : 첫 번째 쿼리에서 선택한 행 반환(중복행 제거)

9. Transaction

  • 트랜잭션 : 데이터베이스의 상태를 변화시키는 일종의 작업 단위.
  • 트랜잭션 도구
    • START TRANSACTION : COMMIT, ROLLBACK이 나올 때까지 실행되는 모든 SQL.
    • COMMIT : 모든 코드 실행.
    • ROLLBACK : START TRANSACTION 실행 전 상태로 되돌림.
profile
후라이드 치킨

0개의 댓글