https://dev.mysql.com/downloads/mysql/
먼저, 들어가서 Mysql을 다운로드 받고 설치해줍니다.
MSI 파일을 받아도 되고 Archive를 받아도 됩니다. 받아서 설치설치 ~~!
제일 상위버전은 호환이 안되는지 설치가 되지 않아서, 8.0 버전 중에 제일 하위버전을 설치하였다.
MySQL Workbench 로 작업 준비 끝!
Localhost:3306으로 작업을 할 것이다.
데이터 : 컴퓨터 안에 기록되어 있는 숫자를 의미데이터 : 컴퓨터 안에 기록되어 있는 숫자를 의미
데이터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태 / 영구적으로 저장되는 데이터
주기억장치에만 데이터를 저장한다면 전원을 끄는 순간 삭제됨 → 비휘발성 저장장치에 저장
데이터베이스(DB)는 저장장치 내에 정리되어 저장된 데이터의 집합
, 이를 효율적으로 관리하는 소프트웨어를 → Database Management System(DBMS)
어떤 시스템이든 데이터 검색, 추가, 삭제, 갱신 필요 → 기본 기능을 DBMS가 제공 → 생산성 향상 도모
데이터베이스를 효과적으로 다룰 수 있는 기능 제공
대규모 요청에 대응하기 위한 신뢰성 향상. 확장성, 부하분산(Load Balancing) 구현 → 클러스터 구성, 스케일 아웃
간단한 백업 과정
- 많은 RDBMS가 클라이언트/서버 모델을 채택해 가동 중. 특히 웹 시스템과 연동하는 RDBMS라면, 접속자 수가 수백명에 달하는 전용 데이터베이스 서버를 운용하는 일도 드물지 않다.
- RDBMS는 복수의 클라이언트가 보내오는 요청에 응답할 수 있도록 클라이언트/서버 모델로 동작. 클라이언트는 서버에 접속 요청이나 SQL 명령 실행 요청을 보낼 수 있음. 서버는 이를 처리하고 클라이언트에 그 결과를 반환.
- 복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템
웹 애플리케이션은 일반적으로 웹 서버와 데이터베이스 서버의 조합으로 구축
웹 시스템 = 클라이언트 + 서버이며 브라우저가 클라이언트, 아파치(Apache)나 IIS와 같은 웹 소프트웨어가 서버 역할을 함. 클라이언트가 서버에게 요청하면 웹 서버는 클라이언트에게 응답.
- 웹 서버에서 동적으로 HTML을 생성하려면 제어용 프로그램이 필요, CGI라 불리는 동적 콘텐츠를 위한 확장 방식이 필요. 이 CGI를 이용하여 프로그램과 웹 서버 간을 연동, 통신하여 처리함
실제로 데이터베이스에 접속하는 것은 CGI 프로그램
데이터베이스 서버를 사용하기 위해서는 먼저 데이터베이스 서버와의 접속이 성립되어야 한다.
그 후 데이터베이스에 필요한 SQL 명령을 전달하고, 실행 결과는 클라이언트로 되돌아간다.
이때 웹 서버의 CGI 프로그램이 데이터베이스의 클라이언트가 된다.
SQL → Relational Database Management System과 관계가 깊음.
SQL, IBM이 개발한 SEQUEL이라는 관계형 데이터베이스 조작용 언어를 기반으로 만들어졌음. 현재는 표준화된 언어.
SQL기초
전체
특정
중복제거
별칭
- LIMIT 행수
- OFFSET 위치
- WHERE절은 데이터의필터링 역할을 한다.
- 조건식
- 연산자 비교
- NULL값 검색
- 다중조건 결합한 필터링
- 부정조건 사용
- 패턴 매칭
집계함수에 대해서 알아보도록 한다.
GROUP BY절은 특정 집단의 특성으로 데이터를 구조화 해주는 역할을 한다.
Having 요약된 결과에서 원하는 값들을 선택하는 필터링 역할을 한다.
산출된 결과를 각 행의 순서를 변경하여 정리할 수 있다.
데이터 형식과 형 변환
데이터 타입을 변환하는 함수는 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
수식이 참 또는 거짓인지 결과에 따라서 2중 분기한다.
SELECT IF(100>200, 'TRUE', 'FALSE');
수식1이 NULL이 아니면 수식1이, 수식1이 NULL이면 수식2가 반환된다.
SELECT IFNULL(NULL,'NULL임')
, IFNULL('NOTNULL', '낫널');
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 ;
특정키워드의 첫번째 자리수의 위치를 반환한다.
SELECT INSTR('AAAAKB', 'K')
소문자를 대문자로(UPPER) / 대문자를 소문자로 반환한다.(LOWER)
select LOWER('AAAAKB') 소문자
, UPPER('aaaakb') 대문자
문자열을 길이만큼 늘린 후에, 빈 곳을 채울 문자열로 채운다.
select LPAD('이것이', 5, '##')
, RPAD('이것이', 5, '##')
문자열에서 원래 문자열을 찾아 바꿀 문자열로 바꿔 준다.
SELECT REPLACE('이것이 MYSQL', '이것이', 'THIS IS')
시작 위치부터 길이만큼 문자를 반환한다. 길이가 생략되면 문자열의 끝까지 반환한다.
select substring('THIS IS MYSQL', 1, 4);
select substr('THIS IS MYSQL', 1, 4);
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