Database
[MySQL]집계 함수에 관하여
집계 함수란? 집계 함수는 결과 레코드들에 대한 레코드의 개수, 값들의 합, 최대값, 최소값, 평균 등 산술적인 연산의 결과를 얻을 수 있게 해줌 !!! 또한, 여러 행으로부터 하나의 결과값을 반환하는 함수임. 집계 함수에는 COUNT(), SUM(), MAX(), MIN(), AVG()이 있다 ! COUNT(컬럼명) NULL 값을 제외한 레코드의 수 SUM(컬럼명) 컬럼명의 값들의 합 MAX(컬럼명) 컬럼명의 값들 중 가장 큰 값 MIN(컬럼명) 컬럼명의 값들 중 가장 작은 값 AVG(컬럼명) 컬럼명의 값들의 평균 COUNT(*) NULL을 포함한 모든 레코드의 수 -> 어떤 컬럼 A의 NULL값의 개수를 알고 싶으면 COUNT(*) - COUNT(A)라고 하면 되겠지 ? 중요 포인트 SELECT, H..
[RDB 공통]SQL 쿼리 문법 작성 순서, 실행 순서 처리 과정
SQLD 공부 빠짝할 때만 해도 외우고 있었는데 오랜만에 쿼리 짜보려니까 까먹어서 글을 올려본다 !! SQL 쿼리 문법 작성 순서 SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY SQL 쿼리 실행 순서 문법에서는 SELECT가 제일 먼저 와서 보통 SELECT가 제일 먼저 실행될 것이라고 많이들 생각하지만 그렇지 않음. 상세한 순서는 이렇다 ! FROM - ON - JOIN - WHERE - GROUP BY - CUBE | ROLLUP - HAVING - SELECT - DISTINCT - ORDER BY - TOP 하지만 보통 이것보다는 이렇게만 알고 있어도 될 듯 ??? FROM - WHERE - GROUP BY - HAVING - SELECT - ORD..
[MySQL]MySQL에서의 INDEX
INDEX 레코드 검색 기준: 책 목차 개념 PK 컬럼에는 자동으로 인덱스 객체 생성 검색 속도 빠름 CUD: 레코드 추가, 변경, 삭제 속도 저하 where 조건절에 많이 사용하는 컬럼에 인덱스 추가 인덱스 선정 기준 분포도가 좋은 컬럼 자주 조합되어 사용되는 컬럼들 수정이 빈번하지 않은 컬럼 Foreign Key로 사용되는 컬럼 MIN 또는 MAX 값을 자주 구하는 컬럼 정렬 기준으로 자주 사용되는 컬럼 예제 예제와 함께 SQL 쿼리들을 쭉 실행해보는 느낌으로다가 ㄱㄱ -- 테이블 생성된 인덱스 조회 show index from employees; -- 테이블 생성된 인덱스 조회 show index from departments; -- 인덱스 타는지 확인: 안탐 -> type은 all(full sca..
[MySQL]MySQL에서의 VIEW
VIEW 가상 테이블 보안: 일부 칼럼에 대해서만 접근, 조회 전용 편리성 view 생성 create view 뷰이름 as select구문; view 삭제 drop view 뷰이름; 30번 부서원들의 부서번호, 사번, 이름, 급여정보를 갖는 view 생성 view 이름: view_emp30 예제 예제와 함께 SQL 쿼리들을 쭉 실행해보는 느낌으로다가 ㄱㄱ use ssafydb; -- 30번 6명 -- 조회 select department_id, employee_id, first_name, salary from employees where department_id=30; -- view 생성 create view view_emp30 as select department_id, employee_id, firs..
[MYSQL]MYSQL 기본 문법: TCL
TCL이란??? TCL은 Transaction Control Language로 트랜잭션 제어 언어의 약자이다. 말 그대로 트랜잭션을 제어하는 언어인데, 이때 트랜잭션이란, 트랜잭션은 데이터베이스의 논리적 연산단위이다! 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함되며 분할할 수 없는 최소의 단위이다. 즉 ALL OR NOTHING. 트랜잭션의 특성도 몇가지가 있다. 특성 설명 원자성 (Atomicity) 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아있어야 한다. ( All Or Nothing ) 일관성 (Consistency) 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있..
[MySQL]MYSQL 기본 문법: SELECT절 - NULL과 ORDER BY, GROUP BY, HAVING
NULL null 의미는 어떠한 값인지 알 수 없음 연산 수행 불가 true and null ⇒ null false and null ⇒ false 오름차순정렬: null → 작은값 → 큰값 ifnull(값1, 값2) → 값1이 null이면 값2로 대체 nullif(값1, 값2) 값1 = 값2 null 반환 값1 ≠ 값2 면 값1 반환 ORDER BY 정렬 방법 오름차순: asc(생략 기본) 내림차순: desc(명시적 표기) 정렬데이터 순서 abc, 가나다 숫자, 날짜: 작은것 ~ 큰것 정렬대상 컬럼명 컬럼에 대한 별명 select 항목에 대한 index번호: index 시작 1번 수식 실습: -- 직원 부서번호, 사번, 직무, 입사일 정보 조회 select department_id, employee_id..
[MySQL]MYSQL 기본 문법: SELECT절 - 여러가지 함수 사용해서 조회하기
함수 작성자 기준 ANSI 표준 함수 특정 DBMS 벤더 전용 함수: MYSQL 전용, ORACLE 전용 사용자 정의 함수 PL/SQL Stored Function, Stored Procedure 수행결과 반환 기준 단일행 함수 하나의 레코드에 대해서 하나의 결과를 반환하는 함수 length(), trim() 그룹(복수행 함수) 여러개의 레코드에 대해서 연산 후 하나의 결과를 반환하는 함수 count(*), max() 문자 관련 함수 length() 문자길이 반환 영문, 숫자는 한자리는 1byte 한글 한자리는 2byte, 3byte 반환: db설정에 따라 다름 테이블 설계 시에 한글데이터 컬럼의 경우는 길이 * db설정byte길이 -- 문자 관련 함수 select length('abc12'), leng..
[MySQL]MYSQL 기본 문법: DML - INSERT, UPDATE, DELETE
DML이란??? DML은 Data Manipulation Language로 데이터 조작어의 약자이다. 말 그대로 데이터를 조작할 때 사용되는 언어로 좀만 생각해봐도 당연히 CRUD가 되겠지? 라는 생각이 든다. DML에는 INSERT(C), SELECT(R), UPDATE(U), DELETE(D)가 있다. INSERT INSERT 형식 1. 테이블 구조에 맞는 모든 컬럼에 매핑되는 값을 지정, 데이터가 없는 컬럼인 경우에도 값을 지정(누락되면 안됨, 기본값을 임의 지정하거나, null 사용 가능) 주의: 테이블 구조의 모든 칼럼에서 누락된 칼럼이 있어서는 안됨 insert into 테이블명 values (컬럼값1, 컬럼값2, 컬럼값X); 2. 사용자가 지정한 컬럼명에 매핑되는 값을 지정 생략 가능한 컬럼..