반응형

 

1. 데이터 베이스 특징

  • 독립성(물리적 / 논리적)
  • 무결성(잘못된 데이터 발생 하는 경우 수 방지 => 유효성 검사 통해 구현)
  • 보안성(인가된 사용자들만 자원에 접근)
  • 일관성(연관된 정보 논리적 구조로 관리)
  • 중복 최소화(자료 중복, 데이터 중복 문제 해결)

2. 데이터베이스 성능 

  • 디스크 I/O 를 줄이는 것에서 시작
  • 디스크 헤더 위치 이동 없이 얼마나 많은 데이터를 한번에 기록하느냐에 결정됨
  • DB 쿼리 튜닝 : 랜덤 I/O 자체 줄여주는 것 목적

3. 인덱스 (= 색인)

  • DBMS 에서 저장 성능 희생하여 데이터 읽기 속도 높이는 기능 
  • 데이터가 정렬되어 들어간다 
  • 양이 많은 테이블에서 일부 데이터만 불러 올 때, 풀 스캔 시 처리 성능 떨어짐 
  • 종류
    • B +- Tree 인덱스 : 원래 값 이용해 인덱싱
    • Hash 인덱스 : 칼럼 값으로 해시 값 계산하여 인덱싱 / 메모리 기반 DB 에서 많이 사용 
    • B > Hash  -> 왜? ==> SELECT 질의 시 부등호 연산 포함되어 = 연산에 특화된 Hash는 적합하지 않다 
  • 생성 시 고려 해야 할 점 
    • 테이블 전체 로우 수 15 % 이하 데이터 조회 시 생성
    • 테이블 건수가 적으면 인덱스 생성 X -> 풀 스캔이 빠름
    • 컬럼 : 유일성이 좋거나 범위가 넓은 값을 가지고 NULL 값이 많이 없는 것을 지정
    • 자주 쓰는 컬럼을 앞으로 지정 
    • DML(insert, delete, update) 시 인덱스에도 수정 작업이 동시에 발생하기에 많은 인덱스 생성 시 성능 부하 
    • DML 이 많은 테이블은 인덱스 생성 X
    • SQL 쿼리가 인덱스를 활용할 수 있게끔 짜기 

4. 클러스터 인덱스 vs 넌클러스터 인덱스 (oracle)

  • 클러스터 인덱스 : 실제 DB의 데이터 파일에 정렬되어 있는 상태로 디스크 저장/  테이블 당 한개
                                     / 기본키 값이 비슷한 레코드 끼리 묶어 저장 
  • 넌클러스터 인덱스 : 실제 DB의 데이터 파일에 정렬되지 않는 상태로 디스크 저장 / 테이블 당 여러 개 

5. 정규화 

  • 중복 저장 시 갱신 이상 발생 -> 이를 해결하기 위해 정규화 과정 거침
  • X의 값이 Y의 값을 유일하게 결정하면, "X는 Y를 함수적으로 결정"
  • 갱신 이상 종류 
    • 삽입 이상 
    • 삭제 이상
    • 수정 이상
  • 정규화란?
    • RDB 에서 중복을 최소화 하기 위해 데이터를 논리적으로 구조화하는 작업
    • 1NF : 원자값을 가진다
    • 2NF : 완전 함수적 종속 
    • 3NF : 이행적으로 종속되지 않는다
    • BCNF
  • 단점 : JOIN 연산이 많아져 , 질의에 대한 응답시간이 느려질 수 있음 

6. 트랜잭션 

 

  • 작업의 완전성 보장 
  • 논리적 작업 셋이 모두 완벽하게 처리하거나 또는 처리하지 못할 경우 원상태로 복구해서 작업의 일부만 적용되는 현상 발생하지 않게 만들어주는 기능 
  • 성질 : ACID(원자성 + 일관성 + 고립성 + 지속성)
  • LOCK : 동시성 제어 VS 트랜잭션 : 데이터 정합성 보장 기능 

7. DeadLock

  • 정의 : 두 개 이상의 트랜잭션이 특정 자원의 잠금(lock)을 획득한 채 다른 트랜잭션이 소유하고 있는 잠금을 요구하면 아무리 기다려도 상황이 바뀌지 않는 상태
  • 빈도 낮추는 방법
    • 트랜잭션을 자주 커밋 
    • 정해진 순서로 테이블 접근
    • 읽기 잠금 획득 사용 피함
    • 복수 행의 연결에서 잠금을 획득해 갱신을 직렬화 하면 동시성은 떨어지지만 데드락 회피 가능 
  • 데드락 발생 순서 
    • 트랜잭션 1 -> B t 첫번째 행 잠금 획득
    • 트랜잭션 2 => A t 첫번쨰 행 잠금 획득
    • 트랜잭션 commit 하지 않은 채 서로의 첫 번째 행에 대한 잠금 요청 시 데드락 발생
//잠금 획득 
Transaction 1> create table B (i1 int not null primary key) engine = innodb;
Transaction 2> create table A (i1 int not null primary key) engine = innodb;

Transaction 1> start transaction; insert into B values(1);
Transaction 2> start transaction; insert into A values(1);

//commit 없이 잠금 요청
Transaction 1> insert into A values(1);
Transaction 2> insert into B values(1);
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction

 

8. VIEW

  • 정의 : 물리적인 테이블을 근거한 논리적인 가상 테이블
  • 이유 
    • 복잡하고 긴 쿼리문을 뷰로 정의하면 접근 단순화 시킬 수 있다
    • 보안 유리 

9. 데이터 무결성 제약조건 

  • 정의 : 테이블에 부적절한 자료가 입력된 것을 방지하기 위해 컬럼에 대해 정의하는 여러 가지 규칙
  • 무결성 제약 조건 종류
    • NOT NULL : NULL X
    • UNIQUE : 중복된 값 X / 항상 유일값
    • PK : NULL  X / 중복된 값 X  / 테이블 한 개에 유일하게 존재 
    • FK : 참조되는 테이블 칼럼 값 존재 시 허용 / 부모 키가 부모 테이블의 PK 나 UNIQUE 로 설정되어 있어야
    • CHECK : 저장 가능한 데이터 값의 범위 , 조건 지정해 설정한 값(타당한 값)만 허용 

10. 시퀀스(오라클)

  • 시퀀스 생성 시 PK와 같이 유일한 숫자를 자동을 생성하는 발생기 
  • 보통 PK로 설정하여 사용 
  • 사용 이유 : 캐쉬에 상주하고 있어 데이터 불러오는 속도가 빠름 

11. 트리거

  • 정의 : 자동으로 실행되게 정의한 저장 프로시저, INSERT / UPDATE/ DELETE 문에 대한 자동 호출
  • 사용 이유 : 데이터 무결성 강화 / 업무 처리 자동화 / 업무 규칙 보장 

12. 데이터웨어하우스 

  • DB 축적 데이터를 공통의 형식으로 변환해 의사결정에 도움 주는 DB

13. ORACLE DB VS MySQL

  • ORACLE : 대규모 트랜잭션 처리 / 여러 서버에 대용량 DB 분산 / 절차 언어 통해 DB 내장 프로그램 작성 지원(트리거 , 독립실행)
  • MySQL : 단일 DB / 대용량 DB X / DB 복원 저장점 없음 (COMMIT, ROLLBACK만 존재)

14. JOIN 

  • 카티션 곱(Cartesian Product)
    • 두 개 이상의 테이블에 대해 연결 가능한 행을 모두 결합하는 조인 방법이며, WHERE 절에서 조인 조건절을 생략하거나 조인 조건을 잘못 설정하여 양쪽 테이블을 연결하여 조건에 만족하 는 행이 하나도 없는 경우에 발생 합니다. 
    • 예) SELECT * FROM DEPT A, EMP B 

 

  •  EQUI JOIN
    • SQL 문에서 가장 많이 사용되는 조인으로 조인 대상 테이블에서 공통 칼럼을 ‘=’ 비교를 통해 같은 값을 갖는 행에 대해서 연결하여 결과를 생성하는 조인 방법입니다.
    • 예) SELECT A.name FROM DEPT A, EMP B WHERE A.code = B.code 

 

  •  NON-EQUI JOIN
    •  조인 조건에서 ‘<’,’>’, BETWEEN a AND b’와 같이 ‘=’ 조건이 아닌 다른 종류의 연산자를 사용 하는 조인 방법입니다.
    • 예) SELECT A.name FROM DEPT A, EMP B WHERE A.code > B.code

 

  •   OUTER JOIN
    • 두 개 이상의 테이블 조인 시 한쪽 테이블의 행에 대해 다른 쪽 테이블에 일치하는 행이 없더 라도 다른 쪽 테이블의 행을 NULL로 하여 행을 Return하는 것이 OUTER JOIN 입니다.연산자 로는 (+)기호를 사용합니다.
    • 조인 조건에 만족하지 않는 행도 나타냄 
    • 예) SELECT A.name FROM DEPT A, EMP B WHERE A.code = B.code(+)

 

  •   SELF JOIN
    • 한 테이블 내 두 개의 칼럼을 연결하여 EQUI JOIN을 하는 방법

15. DB 설계 시 중요

  • 무결성을 보장하는 것
  • 무결성 보장 방법
    • (애플리케이션) 데이터를 조작하는 프로그램 내에서 데이터 생성, 수정, 삭제 시 무결성 조건 검증
    • (DB트리거) 트리거 이벤트 시 저장 SQL실행, 무결성 조건 실행
    • (제약조건) DB제약조건 기능 선언하여 무결성 유지

16. SQL 문장 종류

명령어 종류 

명령어 

설명 

데이터 조작어

(DML :  Data Manipulation Language

SELECT 

 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 한다.

INSERT

UPDATE

DELETE 

 데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어들을 말한다. 데이터 삽입, 수정, 삭제

 데이터 정의어

(DDL : Data Definition Language)

CREATE

ALTER

DROP

RENAME

TRUNCATE 

 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 그러한 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들을 DDL이라고 부른다.

데이터 제어어

(DCL : Data Control Language) 

GRANT

REVOKE 

 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어를 DCL이라고 한다. 

트랜잭션 제어어

(TCL : Transaction Control Language)

COMMIT

ROLLBACK

SAVEPOINT 

 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말한다. 

17. 데이터 유형

 데이터 유형

설 명 

CHAR(s) 

- 고정 길이 문자열 정보

- s는 기본 길이 1바이트, 최대 길이 Oracle 2000바이트 SQL Server 8000바이트 

- s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당도니 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다.

VARCHAR(2) 

- CHARACTER VARYING의 약자로 가변 길이 문자열 정보(Oracle은 VARCHAR2 로 표현, SQL Server는 VARCHAR로 표현)

- s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000 바이트

- s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다. 

NUMERIC 

- 정수, 실수 등 숫자 정보 (Oracle은 NUMBER로, SQL Server는 다양한 숫자 타입 지원)

- Oracle은 처음에 전체 자리 수를 지정하고, 그 다음 소수 부분의 자리 수를 지정한다.

ex> 정수 부분이 6자리이고 소수점 부분이 2자리인 경우 NUMBER(8,2) 

DATE

- 날짜와 시각 정보

- Oracle은 1초 단위, SQL Server는 3.33ms(millisecond) 단위 관리 

 

 

반응형
반응형

Mongodb - Limit Records

-find() 메소드를 더욱 더 활용에 필요한 sort(), limit() , skip() 메소드

-find() 메소드를 사용했을 시  cursor 형태의 결과값을 반환, 이 객체가 가지고 있는 limit() , skip()메소드를 통해 보이는 출력물의 갯수를 제한, sort() 메소드를 사용하여 데이터를 순서대로 나열

 

1. limit() //db.콜렉션명.find().limit(number)

이 메소드는 출력할 데이터 갯수를 제한할 때 사용. value 파라미터는 출력 할 갯수 값

>db.mycol.find({}, {"title" : 1, _id:0}).limit(2)
  { "title" : "Mongodb"}
  { "title" : "Nosql"}

 

2. Skip() //db.콜렉션명.find().limit(number).skip(number)

출력 할 데이터의 시작부분을 설정할 때 사용.  value 값 갯수의 데이터를 생략하고 그 다음부터 출력

>db.mycol.find({}, {"title" : 1, _id : 0}).limit(1).skip(1)
  { "title" : "Mongodb"}

3.Sort() //db.콜렉션명.find().sort({key : 1})

이 메소드는 데이터를 정렬할 때 사용. 매개변수로는 어떤 KEY 를 사용하여 정렬 할 지 알려주는 document 를 전달

KEY 는 데이터의 field 이름이고, value 의 값은 1 혹은 -1 . 이 값을 1로 설정하면 오름차순으로, -1로 하면 내림차순으로 정렬

또한 여러 KEY를 입력 할 수 있고 먼저 입력한 KEY가 우선권을 가짐.

>db.mycol.find({}, "title" : 1, _id:0}).sort({"title" : -1}) //역순 출력

Mongodb 메뉴얼 (튜토리얼에는 없지만 중요하다)

Embbedded Document(내장형문서) 조회

 

MongoDB에서는 JSON객체 형태의 문서로 데이터를 저장하는데 문서안에 다시 문서의 내장된 문서의 형태로도 데이터를 저장할 수 있습니다. 그러한 내장형 문서를 조회를 해보겠습니다. 

 

연습을 위해 아래의 데이터를 Insert 합니다.

db.inventory.insertMany( [     
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" } ,
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" } ,
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" } ,
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" } ,
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

 

아래는 위에서 실습한 기본적인 형태의 동등 조건의 조회식

 

size가 h 14이며 w 가 21 uom 이 cm 인 값을 찾습니다.

db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )

이러한 형태는 하위 문서와 완전히 똑같은 문서만 찾을 수 있습니다.

 

 

아래는  하위문서와 특정 필드에 조건을 걸어 구하는 식.

 

-size 아래 문서 중 uom 값이 cm 인 값을 구하는 식.

db.inventory.find( { "size.uom": "cm" } )

-size 값 중 h값이 10보다 작은 값. 

db.inventory.find( { "size.h": {$lt : 10} } )


-size 값 중 h값이 10보다 작고 status 가 A 인 문서.

db.inventory.find( { "size.h": {$lt : 10}, status : "A"} )

 

배열값 조회

MongoDB는 배열형태의 값을 저장할 수 있습니다. 

 

연습을 위해 아래의 데이터를 저장합니다.

db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] } ,
{ item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ] } ,
{ item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ] },
{ item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ] } ,
{ item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ] }
]);


tags 필드에 오직 red값과 blank값만 배열에 존재하는 문서를 조회.

db.inventory.find( { tags: ["red", "blank"] } )
//위 경우는 red와 blank 만 포함된 경우만 출력합니다. 다른 것이 포함된 경우는 출력되지 않습니다.

 

 

 tags값에 red와 blank 값이 모두 존재하는 문서를 조회.

db.inventory.find( { tags: { $all: ["red", "blank"] } } )
//이 경우는  red와 blank를 포함하고 다른 것들이 포함된 경우도 함께 출력됩니다.

 

 

배열이 포함된 필드에 배열 조회가 아닌 단일 값만 조회 값으로 입력했을때의 결과.

db.inventory.find( { tags: "red"} )
//위 결과는 red가 배열에 포함된 모든 문서를 출력합니다.

 

 dim_cm 필드에 25이상 값이 포함된 문서를 출력.

db.inventory.find( { dim_cm: {$gte : 25}} )


 dim_cm필드에서 1번째 위치 즉 0번 인덱스에 있는 값 중 14이상인 값.

db.inventory.find( { "dim_cm.0": {$gte : 14}} )

 

tags 배열의 크기가 2인 문서를 조회합니다.

db.inventory.find( { tags : {$size : 2}} )

 

Embbedded Document내에서 배열값 조회

 

연습을 위해 아래 데이터를 입력.

db.inventory.insertMany( [     
{ item: "journal", instock: [ { warehouse: "A", qty: 5 } ,
{ warehouse: "C", qty: 15 } ] }
, { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] } ,
{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] } ,
{ item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] } ,
{ item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);

instock 필드에서 { warehouse : "A", qty : 5 } 값을 가지는  document를 조회.

db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )

그러면 아래의 식은 조회가 될까요?

db.inventory.find( { "instock": { qty: 5, warehouse: "A" } } )

 문서(객체)를 동등 비교하는 경우 순서 포함하여 모든 값이 일치해야합니다. -> 조회 안됨

 

 

instock 1번째 배열의 qty 값이 40 이상인 값을 조회.

db.inventory.find( { 'instock.0.qty': { $gte: 40 } } )


 instock 필드에서 qty가 5이고 warehouse 값이 A인 문서를 조회.  순서는 상관 없습니다.

db.inventory.find( { "instock": { $elemMatch: { qty: 5, warehouse: "A" } } } )


조회 결과에서 필드 표시 여부

 

find 명령어 두번째 파라미터에서 field 를 표시할지 여부를 지정.

기본적으로 파라미터가 없으면 모두 표시.

 

document 에  기본적으로 포함된 _id필드를 제외하고 나머지 필드의 경우 '표시할 필드만 입력' 하거나 '표시하지 않을 필드를 표시' 해야 함. 

 

아래의 식은 에러가 발생합니다.

db.inventory.find( { status: "A" }, { item: 1, status: 0 } )


아래의 식은 item 필드와, status 필드 그리고 _id필드가 표시

db.inventory.find( { status: "A" }, { item: 1, status: 1 } )

 

아래의 식은 item필드와 status필드를 제외한 필드가 표시.

db.inventory.find( { status: "A" }, { item: 0, status: 0 } )

 

 Embedded(내장) 된 문서의 필드 표시는 아래와 같습니다.

db.inventory.find( { status: "A" }, { item: 1, status: 1, "size.uom": 1 } )

 

Null 값과 필드 존재여부 조회

 

아래의 식은 item 필드가 null 인 값도 조회 하지만, item 필드가 존재하지 않는 문서도 조회가 됩니다.

db.inventory.find( { item: null } )

item 필드가 존재하지 않는 문서를 조회합니다.

db.inventory.find( { item : { $exists: false } } )

 

이름설명

$exists 특정 필드를 가지고 있으면 반환
$type 특정 타입의 필드가 있으면 반환

Cursor 반복문

find 명령어는 cursor형태의 객체로 반환이 됩니다.

변수를 할당하고 아래와 같이 javascript 반복문을 활용할 수 있습니다.

var myCursor = db.users.find( { type: 2 } ); while (myCursor.hasNext()) {     printjson(myCursor.next()); }

아래와 같이도 가능 합니다.

var myCursor = db.users.find( { type: 2 } ); myCursor.forEach(printjson);

cursor객체를 array(배열) 로 변환할 수 있습니다.

var myCursor = db.inventory.find( { type: 2 } ); var documentArray = myCursor.toArray(); var myDocument = documentArray[3];
출처: https://cionman.tistory.com/48 [Suwoni블로그]
반응형
반응형

데이터베이스 기본 쿼리

 

데이터베이스 생성

create database 데이터베이스이름;

 

데이터베이스 삭제

drop database 데이터베이스이름;

 

데이터베이스 조회

show databases;

 

데이터베이스 사용

use 데이터베이스이름;

 


테이블

 

테이블 정보

desc 테이블이름;

 

테이블 삭제

drop table 테이블이름;


레코드

 

레코드 추가

insert into 테이블이름 value('A','B','C');

insert into 테이블이름(FieldA,FieldB,FieldC) value('A','B','C');

 

레코드 조회

select * from 테이블이름;

select FieldA, FieldB from 테이블이름;

select * from 테이블이름 where FieldA = 'Content';

select distinct FieldA 테이블이름;                      중복제거

select * from 테이블이름 where FieldB between 00:00:00 and 12:00;00   //00시~12시 사이

select * from 테이블이름 where FieldB in (A, B);                                //A와 B 중에서

select * from 테이블이름 where FieldB LIKE '%단어%';                       //단어가 포함된 레코드 조회

select * from 테이블이름 where FieldB is null;    not is null                 //null일때

 

레코드 삭제

delete from 테이블이름 where Field = 'Content';

 

레코드 수정

update 테이블이름 set FieldA='바꿀내용' where FieldA='기존데이터';

 


내장함수

 

1. 숫자 관련 함수 
▶ ABS(숫자) - 절대값 출력. 
▶ CEILING(숫자) - 값보다 큰 정수 중 가장 작은 수. 
▶ FLOOR(숫자) - 값보다 작은 정수 중 가장 큰 수[실수를 무조건 버림(음수일 경우는 제외)]. 
▶ ROUND(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 반올림.(자릿수는 양수,0,음수를 갖을 수 있다.) 
▶ TRUNCATE(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 버림. 
▶ POW(X,Y) or POWER(X,Y) - X의 Y승 
▶ MOD (분자, 분모) - 분자를 분모로 나눈 나머지를 구한다.(연산자 %와 같음) 
▶ GREATEST(숫자1,숫자2,숫자3...) - 주어진 수 중 제일 큰 수 리턴. 
▶ LEAST(숫자1,숫자2,숫자3...) - 주어진 수 중 제일 작은 수 리턴. 
▶ INTERVAL(a,b,c,d.....) - a(숫자)의 위치 반환 


2. 문자 관련 함수 
▶ ASCII(문자) - 문자의 아스키 코드값 리턴. 
▶ CONCAT('문자열1','문자열2','문자열3'...) - 문자열들을 이어준다. 
▶ INSERT('문자열','시작위치','길이','새로운문자열') - 문자열의 시작위치부터 길이만큼 새로운 문자열로 대치 
▶ REPLACE('문자열','기존문자열','바뀔문자열') - 문자열 중 기존문자열을 바뀔 문자열로 바꾼다. 
▶ INSTR('문자열','찾는문자열') - 문자열 중 찾는 문자열의 위치값을 출력 
▶ LEFT('문자열',개수) - 문자열 중 왼쪽에서 개수만큼을 추출.
▶ RIGHT('문자열',개수) - 문자열 중 오른쪽에서 개수만큼을 추출. 
▶ MID('문자열',시작위치,개수) - 문자열 중 시작위치부터 개수만큼 출력 
▶ SUBSTRING('문자열',시작위치,개수) - 문자열 중 시작위치부터 개수만큼 출력 
▶ LTRIM('문자열') - 문자열 중 왼쪽의 공백을 없앤다. 
▶ RTRIM('문자열') - 문자열 중 오른쪽의 공백을 없앤다. 
▶ TRIM('문자열') - 양쪽 모두의 공백을 없앤다. 
▶ LCASE('문자열') or LOWER('문자열') - 소문자로 바꾼다. 
▶ UCASE('문자열') or UPPER('문자열') - 대문자로 바꾼다. 
▶ REVERSE('문자열') - 문자열을 반대로 나열한다. 


3. 논리 관련 함수 
▶ IF(논리식,참일 때 값,거짓일 때 값) - 논리식이 참이면 참일 때 값을 출력하고 논리식이 거짓이면 거짓일 때 출력한다. 
▶ IFNULL(값1,값2) - 값1이 NULL 이면 값2로 대치하고 그렇지 않으면 값1을 출력 


4. 집계 함수 
▶ COUNT(필드명) - NULL 값이 아닌 레코드 수를 구한다. 
▶ SUM(필드명) - 필드명의 합계를 구한다. 
▶ AVG(필드명) - 각각의 그룹 안에서 필드명의 평균값을 구한다. 
▶ MAX(필드명) - 최대값을 구한다. 
▶ MIN(필드명) - 최소값을 구한다. 


5. 날짜 관련 함수 
▶ NOW() or SYSDATE() or CURRENT_TIMESTAMP() - 현재 날짜와 시간 출력 
▶ CURDATE() or CURRENT_DATE() -현재 날짜 출력 
▶ CURTIME() or CURRENT_TIME() -현재 시간 출력 
▶ DATE_ADD(날짜,INTERVAL 기준값) -날짜에서 기준값 만큼 더한다. 
※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 
▶ DATE_SUB(날짜,INTERVAL 기준값) -날짜에서 기준값 만큼 뺸다. 
※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 
▶ YEAR(날짜) -날짜의 연도 출력. 
▶ MONTH(날짜) -날짜의 월 출력. 
▶ MONTHNAME(날짜) -날짜의 월을 영어로 출력. 
▶ DAYNAME(날짜) -날짜의 요일일 영어로 출력. 
▶ DAYOFMONTH(날짜) -날짜의 월별 일자 출력. 
▶ DAYOFWEEK(날짜) -날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6)) 
▶ WEEKDAY(날짜) -날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6)) 
▶ DAYOFYEAR(날짜) -일년을 기준으로 한 날짜까지의 날 수. 
▶ WEEK(날짜) -일년 중 몇 번쨰 주. 
▶ FROM_DAYS(날 수) --00년 00월 00일부터 날 수 만큼 경과한 날의 날짜 출력. 
▶ TO_DAYS(날짜) --00 년 00 월 00일 부터 날짜까지의 일자 수 출력. 
▶ DATE_FORMAT(날짜,'형식') : 날짜를 형식에 맞게 출력 

 


JOIN

 

반응형

'Database Study > SQL' 카테고리의 다른 글

[Oracle DB] 커서 (CURSOR)  (0) 2020.01.06
[Oracle DB]PL / SQL 기초  (0) 2020.01.06
[Oracle DB] 오라클_SQL (쿼리문) 처리 및 실행 순서  (0) 2020.01.06
Select query 튜닝  (0) 2020.01.03
[MySQL]JOIN (조인) 문법  (0) 2019.09.12

+ Recent posts