반응형

전체 글 2826

MySQL : 데이터베이스, 테이블 생성 : 방법, 예제, 팁

데이터 베이스 만들기 데이터 베이스 생성은 create database 구문을 사용합니다. create database 이름 생성한 데이터베이스는 use 문을 이용하여 선택해야 합니다. utf-8 인코딩 타입의 한글을 저장하기 위해서는 언어 타입을 지정해주어야 합니다. create table 이름 character set = 'utf8' collate = 'utf8_general_ci'; 데이터 베이스를 선택한 후에는 create table 명령문을 이용해, 테이블을 생성합니다. create table 이름( 컬럼이름 자료형 제약조건, 컬럼이름 자료형 제약조건 ); 자료형 char(n) : 고정 길이 문자열 ( 최대 225 바이트) varchar(n) : 가변 길이 문자열 (최대 65535바이트) int..

SW/MySQL 2020.01.26

MySQL : 서브쿼리 : 조건문 : 사용방법, 예제

서브 쿼리 쿼리문 안에 쿼리문이 있는 것을 서브 쿼리라고 합니다. 조건문을 만들 떄 값을 직접 지정하지 못하고, 쿼리문을 통해 구해와야 할 경우가 있습니다. 이 떄 서브 쿼리를 통해 값을 구해와 조건문을 완성할 수 있습니다. 예제 # 현재 받는 급여와 평균보다 많이 받는 사원들의 사원 번호, 급여액을 가져옵니다. select emp_no, salary from salaries where salary > (select avg(salary) from salaries where to_date='9999-01-01') and to_date='9999-01-01'; 평균을 가져오는 쿼리를 사용하여, 구하는 예제입니다. # d001 부서에 근무화고 있는 사원들의 사원 번호와 first_name을 가져옵니다. sel..

SW/MySQL 2020.01.25

MySQL : SET(집합 연산) : 합집합, 교집합, 차집합 : 사용방법, 예제

SET 두 select 문을 통해 얻어온 결과를 집합 연산을 통해 하나의 결과로 만드는 것을 set이라고 부릅니다. 합집합, 교집합, 차집합 등 집합 연산을 할 수 있습니다. 집합 연산을 하기 위해서는 두 select문을 통해 가져오는 컬럼이 같아야 합니다. 합집합 두 select 문의 결과를 모두 포함하는 최종 결과를 반환합니다. UNION 중복되는 데이터를 하나만 가져옵니다. UNION ALL 중복되는 데이터도 모두 가져옵니다. 교집합 두 select 문의 결과 중 중복되는 부분만 가져옵니다. 교집합은 join 문을 사용합니다. 차집합 두 select 문에서 중복되는 부분을 제거하고 첫 번째 select 문 결과만 가져옵니다. 차집합은 서브 쿼리를 이용합니다. 예제 select emp_no from ..

SW/MySQL 2020.01.24

MySQL : 그룹함수 : 카운트, 총합, 평균, 최대값, 최저값 : 예제, 사용방법

그룹 함수 조건에 맞는 로우의 컬럼에 대해 집계 값을 가져오는 함수입니다. COUNT(컬럼명) 가져온 로우의 개수를 반환합니다. SUM(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값의 총합을 구합니다. AVG(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값의 평균을 구합니다. MAX(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값 중 최대 값을 가져옵니다. MIN(컬럼명) 가져온 로우의 해당 컬럼에 저장된 값 중 최소 값을 가져옵니다. 예제 # 남자 사원의 수를 구합니다. select count(*) from employees where gender = "M"; # d005 부서 현재 근무하고 있는 사원들의 수를 가져옵니다. select count(*) from dept_emp where dept_no = ..

SW/MySQL 2020.01.23

MySQL : 날짜 함수 : 형식, 날짜, 연산 방법 : 개요, 예제, 방법

날짜 함수 날짜에 대한 작업을 하는 함수들에 대해 알아보겠습니다. now(), sysdate(), current_timestamp() 현재 날짜와 시간을 반환합니다. curdate(), current_date() 현재 날짜를 반환합니다. curtime(), current_time() 현재 시간을 반환합니다. date_add(날짜, INTERVAL 기준값) 날짜에서 기준값 만큼 더합니다. (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND) date_sub(날짜, INTERVAL 기준값) 날짜에서 기준값 만큼 뺴줍니다. (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND) YEAR(날짜) 날짜의 연도를 가져옵니다. Month(날짜) 날짜의 월을 가져옵니다. MONTH..

SW/MySQL 2020.01.22

MySQL : 문자열 함수 : 합치기, 삽입, 교체, 찾기, 공백 제거, 소문자, 대문자, 거꾸로 : 사용방법, 예제

문자열 함수 컬럼에 저장되어 있는 문자열에 대한 작업을 할 수 있는 함수를 의미합니다. CONCAT(문자열1, 문자열2, ...) 문자열을 합칩니다. INSERT(문자열, 시작위치, 길이, 새로운 문자열) 문자열의 시작위치부터 길이 만큼의 문자열을 제거하고 그 자리에 새로운 문자열을 삽입합니다. REPLACE(문자열, 기존문자열, 새로운 문자열) 문자열에서 기존 문자열을 찾아 제거하고 그자리에 새로운 문자열을 삽입합니다. INSTR(문자열, 문자열2) 문자열1에서 문자열2를 찾아 위치를 반환합니다. 위치는 1부터 시작하며 문자열2를 찾지 못하면 0을 반환합니다. LEFT(문자열, 개수) 문자열의 좌측부터 개수만큼 가져옵니다. RIGHT(문자열, 개수) 문자열의 우측부터 개수만큼 가져옵니다. MID(문자열..

SW/MySQL 2020.01.21

MySQL : 숫자 함수 : 절대값, 올림, 내림, 반올림, 버림, 제곱, 나머지, 최대값, 최소값 : 사용법, 예제

숫자와 관련된 작업을 하는 함수에 대해 알아보도록 하겠습니다. ABS(숫자) : 절대값을 구합니다. CEIL(숫자) : 값보다 큰 정수 중 가장 작은 정수를 구합니다. 소수점 이하 올림을 의미합니다. FLOOR(숫자) : 값보다 작은 정수 중 가장 큰 정수를 구합니다. 소수점 이하 버림을 의미합니다. ROUND(숫자, 자릿수) : 자릿수를 기준으로 반올림합니다. TRUNCATE(숫자, 자릿수) : 자릿수를 기준으로 버림합니다. POW(X, Y) , POWER(X, Y) : X의 Y승을 의미합니다. MOD(분자, 분모) : 분자를 분모로 나눈 나머지를 구합니다. GREATEST(숫자1, 숫자2, ...) : 주어진 숫자 중에 가장 큰 값을 반환합니다. LEAST(숫자1, 숫자2, ...) : 주어진 숫자 ..

SW/MySQL 2020.01.20

머신러닝 : 단순 선형 회귀 분석 : 잔차의 의미 : 추정 방법

잔차의 의미 (Residual) 회귀 계수의 추정에 대해 이해하기 위해서는 잔차를 이해해야 한다고 합니다. 잔차는 실제 출력 변수와 예측한 출력 변수의 차를 의미합니다. 그 차이를 표현하면 위 수식으로 표현할 수 잇습니다. 잔차를 그림으로 본다면 위와 같습니다. 즉, 예측한 식과 실제 값과의 거리들이 표현되고 있는 것을 알 수 있습니다. 잔차의 제곱합 SSE는 아래와 같습니다. 그렇다면 가장 예측력이 좋은 회귀식을 가져오기 위해서는 이러한 SSE 값을 최소화하는 방식으로 추정해나가야 하는 것입니다. 따라서 SSE를 최소화하기 위해 편미분을 합니다. 이러한 방식을 최소자승법이라고도 하며 OLS라고도 합니다. OLS는 ordinary least square method라고 부릅니다. SSE가 가장 작은 지점..

SW/머신러닝 2020.01.19

머신러닝 : 단순 선형 회귀분석 : 개념, 기능, 방법, 개요

회귀분석이란 입력 데이터와 출력 데이터 간의 상호 관련성을 찾으려는 시도가 많이 있었습니다. 따라서, 두 변수 간의 관계식, 관계 정도에 대한 연구가 진행되었습니다. 회귀분석은 주어진 데이터를 기반으로 입력 데이터와 출력 데이터 사이에 수학적 관계에 대한 모형을 추정하는 방법론이라 할 수 있습니다. 회귀분석을 통해 2가지를 기대할 수 있습니다. 변수들 간에 함수 관계가 성립하는지, 만약 성립한다면 입력 변수의 중요도를 파악할 수 있습니다. 또한, 함수 관계를 바탕으로 입력 변수로 출력 변수 값을 추정 또는 예측하는 데 사용가능합니다. 단순 선형 회귀의 회귀식은 위와 같이 나타낼 수 있습니다. B0는 절편, B1은 기울기를 의미합니다. 실제 값은 구하기 어려우며, 추정을 통해 얻어내는 것입니다. 이렇게 추..

SW/머신러닝 2020.01.18

MySQL : 정렬 : order by : 사용법, 기능, 개념

정렬 데이터를 가져올 떄 오 찬수 혹은 내림 차순으로 정렬하여 가져올 수 있습니다. order by 컬럼명 asc : 오름 차순으로 정렬합니다. asc는 생략 가능합니다. order by 컬럼명 desc : 내림 차순으로 정렬합니다. 정렬 기준은 숫자, 문자열, 날짜 모든 컬럼이 가능합니다. 예제 # 사원의 번화와 급여를 가져옵니다. select emp_no, salary from salaries order by salary asc; select emp_no, salary from salaries order by salary; # 사원의 번호와 급여를 가져옵니다. 급여를 기준으로 내림 차순 정렬합니다. select emp_no, salary from salaries order by salary desc;..

SW/MySQL 2020.01.17

머신러닝 : 분류 모형 성능 지표 : 종류, 개념, 정의, 공식

MSE f가 제대로 추정되었는지 평가하기 위함입니다. 예측한 값이 실제 값과 유사한지 평가하는 척도가 필요합니다. MSE ( mean squared error) 는 모형의 적합성(오류)를 평가하는 지표입니다. MSE는 실제 종속 변수와 예측한 종속 변수간의 차이를 의미합니다. 따라서 작을수록 좋지만, 과도하게 줄이면 과적합의 오류를 범할 가능성이 있습니다. 따라서, 검증 집합의 MSE를 줄이는 방향으로 f를 추정합니다. MAPE mean absolute percentage error는 모형의 적합성을 평가하는 지표입니다. MAPE는 퍼센트 값을 가지며 0에 가깔우수록 회귀 모형의 성능이 좋다고 할 수 있습니다. 0% ~ 100% 사이의 값을 가져 이해하기 쉬울 수 있습니다. 성능 비교 해석이 또한 가능합..

SW/머신러닝 2020.01.16

머신러닝 : k-Fold 교차 검증 (k-Fold Cross Validation) : 개념, 방식

k-Fold 교차 검증 (k-Fold Cross Validation) 모형의 적합성을 보다 객관적으로 평가하기 위한 방법입니다. 데이터를 k개로 나누어 줍니다. 그 중 하나를 검증 집합, 나머지를 학습 집합으로 분류합니다. 위 과정을 k 번 반복합니다. 그 다음 k 개의 성능 지표를 평균하여 모형의 적합성을 평가합니다. LOOCV ( Leave One Out Cross Validation ) 데이터의 수가 적을 떄 사용하는 교차 검증 방법입니다. 총 n 개의 모델을 만듭니다. 각 모델은 하나의 샘플만 제외합니다. 모델을 만들고 제외한 샘플로 성능 지표를 계산합니다. 이렇게 도출된 n 개의 성능 지표를 평균 내어 최종 성능 지표를 도출합니다.

SW/머신러닝 2020.01.15

머신러닝 : 데이터 분할 : 방법, 방식, 절차

데이터 분할 과적합을 방지하기 위해서는 전체 데이터를 학습 데이터, 검증 데이터, 테스트 데이터로 나누어야 합니다. 보통 비율은 5 : 3 : 2 로 정합니다. 따라서 생각보다 많은 데이터를 보유해야만 좋은 모형을 만들 수 있습니다. 학습 데이터 : train data : 모형 f 를 추정하는 데 필요합니다. 검증 데이터 : validation data : 추정한 모형 f 가 적합한지 검증합니다. 테스트 데이터 : test data : 최종적으로 선택한 모형의 성능을 평가합니다. 데이터 분할 : 전체 데이터를 학습 데이터, 검증 데이터, 테스트 데이터로 나누어집니다. 모형 학습 : 학습 데이터를 사용하여, 각 모형을 학습합니다. 모형 선택 : 검증 데이터를 사용하여, 각 모형의 성능을 비교하고 선택합니다..

SW/머신러닝 2020.01.14

머신러닝 : 모형의 적합성 : 평가 방법

모형의 적합성을 평가하는 방법 모형의 복잡도에 따른 학습 집합의 MSE(회색)와 검증 집합의 MSE(빨간색)의 변화를 위 그림을 통해 알아보았습니다. 학습 집합의 MSE는 복잡한 모형일수록 감소합니다. 학습 데이터가 아닌 또 다른 데이터 (검증 데이터)의 MSE는 일정 시점 이후로 증가합니다. 증가하는 원인은 왼쪽 그림에 초록색처럼 학습 집합에 과적합되기 때문입니다. 그렇다면, 각 색깔마다 어떠한 결과가 나왔는 지 알아보도록 하였습니다. 검은색 : 실제 f를 나타내는 모형입니다. 노란색 : 가장 낮은 복잡도를 가지므로 편파성이 높아져 가장 높은 MSE 값을 가집니다. 초록색 : 가장 높은 복잡도를 가지므로 학습 집합에 과적합되어 있습니다. 분산이 높아집니다. 따라서, 검증 데이터의 MSE가 하늘색에 비해..

SW/머신러닝 2020.01.13

머신러닝 : 분산(variance)과 편파성(Bias)의 딜레마

분산(variance)과 편파성(Bias)의 딜레마 모형 f^(x)로 모집단의 전체 데이터를 예측하는 경우 발생하는 총 에러를 계산합니다. 이 떄 에러는 reducible error와 irreducible error로 표현됩니다. reducible 에러는 다시 분산과 편파성으로 구성됩니다. 분산은 전체 데이터 집합 중 다른 학습 데이터를 이용했을 떄, 추정한 f가 변하는 정도를 의미합니다. 복잡할 수록 분산이 높아집니다. 편파성은 학습 알고리즘에서 잘못된 예측을 할 떄, 발생하는 오차를 의미합니다. 간단할수록 편파성이 높습니다. 복잡한 모형 f^(x) 를 사용하여 편파성을 줄일 수 있습니다. 그러며 반대로 분산이 커지는 것입니다. 간단한 모형이라면 그 반대의 현상이 발생하는 것입니다. 따라서, 엔지니어들..

SW/머신러닝 2020.01.12

MySQL : like 연산자 : 문자열 검색 :사용방법, 예제

like 조건식을 만들어 줄때 문자열과 비교 시 사용합니다. 문자열 값을 비교할 때, =을 이용하면 지정된 문자열이 저장되어 있는 로우를 가져올 수 있습니다. like는 더욱 확장해서 조건을 만들 때 사용하는 것입니다. like는 와일드 카드라는 개념을 사용합니다. 와일드 카드는 모든 글자를 의미하는 특수 기호입니다. _ : 글자 하나를 의미합니다. % : 글자 수와 상관없이 모든 글자를 의미합니다. 사용 예제 # 이름이 Tommaso 사원의 사원번호, 이름을 가져옵니다. select emp_no, first_name from employees where first_name = 'Tommaso'; # 이름이 A로 시작하는 사원의 사원번호, 이름을 가져옵니다. select emp_no, first_name..

SW/MySQL 2020.01.11

MySQL : 논리 연산자 : and, or, not, between, in : 사용법, 예제

논리 연산자 두개 이상의 조건문을 작성할 떄 사용하는 연산자입니다. and : 양쪽 조건을 모두 만족해야 합니다 or : 양쪽 조건 중 하나만 만족해도 됩니다. not : 조건의 결과를 반대로 부정합니다. # d001 부서의 매니저 중에서 1990년 이후 부터 매니저인 사원의 사원 번호, # 부서 번호, 매니저, 시작날짜를 가져온다. select emp_no, dept_no, from_date from dept_manager where dept_no = 'd001' and from_date >= '1990-01-01'; # 1990년 이후에 입사한 남자 사원의 사원 번호, 성별, 입사일을 가져온다. select emp_no, gender, hire_date from employees where hire_..

SW/MySQL 2020.01.10

MySQL : where, 조건 연산자 : 사용방법, 예제

조건 사용하기 select구문에 where 절을 사용하면 조건을 설정할 수 있습니다. 컬럼에 저장되어 있는 데이터를 기준으로 검색합니다. 그러면 원하는 데이터만 가져올 수 있습니다. 조건 연산자 조건식을 만들 때 사용하는 연산자는 아래와 같습니다. = : 같다 > : 크다 = : 크거나 같다 150000; 위와 같이 범위를 활용하여서 해당 값들을 가져올 수 있습니다. 해당 쿼리는 급여가 15만 이상인 사람들의 사원 번호를 검색하는 쿼리입니다. 날짜 데이터 날짜 데이터를 조건절로 사용할 떄도 비교 연산자를 이용하면 됩니다. select emp_no, hire_date, last_name, first_name from employees where hire_date >= '1986-01-01' ..

SW/MySQL 2020.01.09

MySQL : 기본 연산자, 중복 제거 : 예제, 방법, 사용법

기본 연산자 사용하기 MySQL에서는 연산자를 사용할 수 있습니다. +, -, *, / 모두 가능합니다. select 20 + 10, 20 - 10, 20 * 10, 20 / 10; 위와 같이 연산 값이 나오는 것을 확인할 수 있습니다. select salary, salary + 1000, salary - 1000, salary * 1000, salary / 1000 from salaries; 컬럼 값에 숫자를 넣어 위와 같이 조정 가능합니다. 주의할 점은 문자열에 산술연산자를 사용한다면, 문자열 값은 0으로 생각하고 연산을 진행합니다. distinct 연산자 중복을 제거하는 연산자입니다. 즉, 가져온 결과에서 중복을 제거하는 것입니다. select distinct 컬럼명 from 테이블명 select ..

SW/MySQL 2020.01.09

MySQL : select 기본 문법, 예제, 사용법

테이블의 모든 정보 가져오기 selct * from 테이블 이름 select * from employees; employeses의 모든 사원 정보를 가져올 경우 다음과 같이 선언합니다. 일부 컬럼만 가져오기 select 컬럼명1, 컬럼명2 from 테이블명 select emp_no, first_name, last_name from employees 사원의 정보 중 번호, 이름만 가져올 경우 다음과 같이 선언합니다. *를 선언하기보다는 직접 컬럼명을 선언해주는 습관을 들이면 좋다고 합니다. 그 이유는, 작성한 쿼리에서 어떤 정보를 얻고 싶은 지, 나중에 보아도 알 수 있기 떄문입니다.

SW/MySQL 2020.01.08
반응형