[Database] MySQL -01 (실습 위주)

Dev_Honey·2022년 8월 2일
1

데이터베이스

목록 보기
3/7

MySQL 설치

https://dev.mysql.com/downloads/mysql/
먼저, 들어가서 Mysql을 다운로드 받고 설치해줍니다.
MSI 파일을 받아도 되고 Archive를 받아도 됩니다. 받아서 설치설치 ~~!

제일 상위버전은 호환이 안되는지 설치가 되지 않아서, 8.0 버전 중에 제일 하위버전을 설치하였다.

MySQL Workbench 로 작업 준비 끝!
Localhost:3306으로 작업을 할 것이다.


MySQL 시작 !! 데이터베이스?

데이터 베이스

데이터 : 컴퓨터 안에 기록되어 있는 숫자를 의미데이터 : 컴퓨터 안에 기록되어 있는 숫자를 의미
데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태 / 영구적으로 저장되는 데이터
주기억장치에만 데이터를 저장한다면 전원을 끄는 순간 삭제됨 → 비휘발성 저장장치에 저장

DB와 DBMS

데이터베이스(DB)는 저장장치 내에 정리되어 저장된 데이터의 집합
, 이를 효율적으로 관리하는 소프트웨어를 → Database Management System(DBMS)

DBMS가 필요한 이유

어떤 시스템이든 데이터 검색, 추가, 삭제, 갱신 필요 → 기본 기능을 DBMS가 제공 → 생산성 향상 도모
데이터베이스를 효과적으로 다룰 수 있는 기능 제공
대규모 요청에 대응하기 위한 신뢰성 향상. 확장성, 부하분산(Load Balancing) 구현 → 클러스터 구성, 스케일 아웃
간단한 백업 과정


데이터 베이스 서버

  • 많은 RDBMS가 클라이언트/서버 모델을 채택해 가동 중. 특히 웹 시스템과 연동하는 RDBMS라면, 접속자 수가 수백명에 달하는 전용 데이터베이스 서버를 운용하는 일도 드물지 않다.
  • RDBMS는 복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트/서버 모델로 동작. 클라이언트는 서버에 접속 요청이나 SQL 명령 실행 요청을 보낼 수 있음. 서버는 이를 처리하고 클라이언트에 그 결과를 반환.
  • 복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템

웹 애플리케이션의 구조

웹 애플리케이션은 일반적으로 웹 서버와 데이터베이스 서버의 조합으로 구축
웹 시스템 = 클라이언트 + 서버이며 브라우저가 클라이언트, 아파치(Apache)나 IIS와 같은 웹 소프트웨어가 서버 역할을 함. 클라이언트가 서버에게 요청하면 웹 서버는 클라이언트에게 응답.

  • 웹 서버에서 동적으로 HTML을 생성하려면 제어용 프로그램이 필요, CGI라 불리는 동적 콘텐츠를 위한 확장 방식이 필요. 이 CGI를 이용하여 프로그램과 웹 서버 간을 연동, 통신하여 처리함
    실제로 데이터베이스에 접속하는 것은 CGI 프로그램

    데이터베이스 서버를 사용하기 위해서는 먼저 데이터베이스 서버와의 접속이 성립되어야 한다.
    그 후 데이터베이스에 필요한 SQL 명령을 전달하고, 실행 결과는 클라이언트로 되돌아간다.
    이때 웹 서버의 CGI 프로그램이 데이터베이스의 클라이언트가 된다.

데이터베이스를 조작하는 언어 SQL

SQL → Relational Database Management System과 관계가 깊음.
SQL, IBM이 개발한 SEQUEL이라는 관계형 데이터베이스 조작용 언어를 기반으로 만들어졌음. 현재는 표준화된 언어.


테이블

SQL기초

SQL작성과 실행순서

SELECT

  • SELECT절은 컬럼을 선택하는 역할을 한다.

    전체
    특정
    중복제거
    별칭

FROM

  • FROM절은 데이터를 선택 및 접근하는 역할을 한다.

결과 행 제한하여 출력하기 - LIMIT

  • 출력된 결과의 행을 제한적으로 출력할 수 있다.
  • LIMIT 행수
  • OFFSET 위치

WHERE

  • WHERE절은 데이터의필터링 역할을 한다.
  • 조건식
  • 연산자 비교
  • NULL값 검색
  • 다중조건 결합한 필터링
  • 부정조건 사용
  • 패턴 매칭

집계함수

집계함수에 대해서 알아보도록 한다.

GROUP BY

GROUP BY절은 특정 집단의 특성으로 데이터를 구조화 해주는 역할을 한다.

Having

Having 요약된 결과에서 원하는 값들을 선택하는 필터링 역할을 한다.

Order by

산출된 결과를 각 행의 순서를 변경하여 정리할 수 있다.

데이터 조인

데이터 형식과 형 변환
데이터 타입을 변환하는 함수는 CAST()와 CONVERT()가 있다.
형식 :
CAST(expression as 데이터형식[(길이)])
CONVERT(expression , 데이터형식[(길이)])

-- EX) employees 테이블의 department_id ->  numeric to char casting
select cast(department_id as char(8)) as dept1
     , convert(department_id, char(8)) as dept2
     , cast(avg(salary) as signed int) as avg_sal
from employees e

MySQL 내장함수

1. IF(수식, 참, 거짓)

수식이 참 또는 거짓인지 결과에 따라서 2중 분기한다.

SELECT IF(100>200, 'TRUE', 'FALSE');

2. IFNULL(수식1, 수식2)

수식1이 NULL이 아니면 수식1이, 수식1이 NULL이면 수식2가 반환된다.

SELECT IFNULL(NULL,'NULL임')
    , IFNULL('NOTNULL', '낫널');

3. CASE ~ WHEN ~ ELSE ~ END

CASE는 내장 함수가 아니며 연산자(다중 조건 연산자)로 구분 되지만 같이 알아 두는 것이 좋다.

select case 10 
    when 1 then '일'
    when 5 then '오'
    when 10 then '십' else '모름' end as 'CASE CHK ';


select case when DEPARTMENT_ID is null then 99 
             else DEPARTMENT_ID  end DEPT 
from employees e ;

4. INSTR(문자열, '특정문자')

특정키워드의 첫번째 자리수의 위치를 반환한다.

SELECT INSTR('AAAAKB', 'K')

5. UPPER(문자열) / LOWER(문자열)

소문자를 대문자로(UPPER) / 대문자를 소문자로 반환한다.(LOWER)

select LOWER('AAAAKB') 소문자
    , UPPER('aaaakb') 대문자

6. Lpad(문자열, 길이, 채울문자열), RPAD(문자열, 길이, 채울 문자열)

문자열을 길이만큼 늘린 후에, 빈 곳을 채울 문자열로 채운다.

select LPAD('이것이', 5, '##')
    ,  RPAD('이것이', 5, '##')

7. REPLACE(문자열, 원래 문자열, 바꿀 문자열)

문자열에서 원래 문자열을 찾아 바꿀 문자열로 바꿔 준다.

SELECT REPLACE('이것이 MYSQL', '이것이', 'THIS IS')

8. SUBSTRING / SUBSTR(문자열, 시작위치, 길이)

시작 위치부터 길이만큼 문자를 반환한다. 길이가 생략되면 문자열의 끝까지 반환한다.
select substring('THIS IS MYSQL', 1, 4);

select substr('THIS IS MYSQL', 1, 4);

MYSQL 실습

  • create databse test01;

  • drop database test01;

  • UI로도 만들기 !

작성순서

1. SELECT
2. FROM
3. WHERE
4. GROUP BY
5. HAVING
6. ORDER BY

-- 데이터 접근
SELECT * FROM EMPLOYEES;
-- TABLE CHARACTER SET
ALTER TABLE '테이블 명' convert to character set utf8;
-- 컬럼선택
SELECT LASTNAME, FIRSTNAME, JOBTITLE FROM EMPLOYEES;
-- 작성하는 방법
절 소문자
컬럼명 뒤에 콤마
컬럼명은 대문자
;

SELECT LASTNAME
	, FIRSTNAME 
FROM EMPLOYEES;
(이런 느낌으로 작성하는 것이 좋다.)
SELECT LASTNAME 성
FROM EMPLOYEES;
(컬럼 이름 바꿀 수 있다.)

SELECT DISTINCT JOBTITLE 직업
FROM EMPLOYEES;
(JOBTITLE의 고유 TITLE을 볼 수 있음)

-- SELECT 컬럼 선택
-- 전체열 선택 *
-- 데이터 값 중복 제거 DISTINCT
-- 컬럼명에 별칭 ALIAS AS 라고 한다.
-- ALIAS,AS 사용하는 방법(AS 생략 가능)
SELECT JOBTITLE (AS) 직업
FROM EMPLOYEES
;

-- 데이터 선택
-- 필터링
-- WHERE
-- WHERE 사용방법 컬럼명
SELECT *
FROM employees
WHERE OFFICECODE =1
;

-- OFFICECODE가 2인 EMPLOYEES TB의
-- LASTNAME, FIRSTNAME, EXTENSION, JOBTITLE을
-- 출력하는 SQL을 작성하시오

SELECT LASTNAME, FIRSTNAME, EXTENSION, JOBTITLE FROM employees where officecode = 2

profile
자습서 같은 공부 블로그 만들기!

0개의 댓글