애옹이

DB 관련 자료모음 (※SQL) (이론/문법/사용) 본문

DataBase/MySQL MariaDB

DB 관련 자료모음 (※SQL) (이론/문법/사용)

cat1005 2017. 8. 8. 10:54

▼데이터베이스 이론

 (1) 데이터베이스 개요 및 데이터베이스 시스템 

 http://seungp916.blog.me/220032468949


 (2) 데이터 모델 (Data Model)

 http://seungp916.blog.me/220062711372


 (3) 관계 데이터 모델 (Relationship Data Model)

 (4) 키 (Key) 와 무결성 제약조건 (Integrity Constraint)

 http://seungp916.blog.me/220064778834


 (5) 함수적 종속성 (Function Dependency)

 http://seungp916.blog.me/220067635834


 (6) 정규화 (Normalization)

 http://seungp916.blog.me/220068739736


 (7) 물리적 데이터베이스 모델링 (physical Database Modeling)

 http://seungp916.blog.me/220069966351


 (8) 관계 데이터 연산 (Relationship Data Opation)

 http://seungp916.blog.me/220071081876


 (9) SQL-DDL (데이터 정의어), DCL (데이터 제어어)

 http://seungp916.blog.me/220072108422


 (10) SQL-DML (데이터 조작어)

 http://seungp916.blog.me/220074891699


 (11) 고급 데이터베이스

 http://seungp916.blog.me/220076002821


 (12) 회복과 병행 제어

 http://seungp916.blog.me/220077134164


 (13) 기타 고급 데이터베이스 용어

 (14) OLAP의 연산 (2014년 3회 정보처리기사 DB 기출 용어) 

 http://seungp916.blog.me/220147027520



▼오라클 SQL 이론

 (01) 데이터베이스, SQL 개요

 http://aboutdh89.blog.me/220403714931


 (02) 테이블과 DDL

 http://aboutdh89.blog.me/220403735332


 (03) 데이터와 DML

 (04) 트랜잭션과 TCL(Transaction Control Language)

 (05) 검색조건 WHERE절

 (06) GROUP BY절, ORDER BY절, HAVING절

 (07) JOIN, 테이블의 연결

 (08) SET, SUBQUERY, 테이블의 연결

 http://aboutdh89.blog.me/220419530912



▼SQL 문법

 SQL 강좌 1편 - SQL이란?

 http://cafe.naver.com/windowsapi/316


 SQL 강좌 2편 - Select 문 (선택)

 SQL 강좌 3편 - Insert 문 (삽입)

 SQL 강좌 4편 - Delete 문 (row 삭제/롤백가능)

 SQL 강좌 5편 - Update 문 (값 갱신)

 SQL 강좌 6편 - Create 문 (생성)

 SQL 강좌 7편 - Drop 문 (row 삭제/구조삭제)
 
 SQL 강좌 8편 - Truncate 문 (row 삭제/롤백불가)

 SQL 강좌 9편 - Alter 문 (column 추가/삭제/수정)

 SQL 강좌 10편 - Join (테이블 병합검색)

 SQL 강좌 11편 - Constraints (테이블 데이터타입 제한)

 SQL 강좌 12편 - Comment (sql 구문 주석)

 SQL 강좌 13편 - AUTO_INCREMENT (삽입시 자동증가값)

 SQL 강좌 14편 - NULL 값 (비어있는 값)
 http://cafe.naver.com/windowsapi/339

 SQL 강좌 15편 - VIEW (조회용 가상테이블)

 SQL 강좌 16편 - 인덱스(INDEX)


▼MariaDB 사용법

 MySQL/MariaDB 설치 (for Windows)

 http://sqlmvp.kr/220325416253


 HeidiSQL 툴 살펴보기 (하이디SQL툴)

 http://sqlmvp.kr/220326270621


 MySQL/MariaDB - 데이터베이스 생성 삭제

 MySQL/MariaDB - 테이블 생성 삭제 / 데이터 입력 삭제

 MySQL/MariaDB - 데이터 타입

 MySQL/MariaDB - 외부접속 허용하기

 MySQL/MariaDB - ALTER, FOREIGN KEY, JOIN

 MySQL/MariaDB - 인덱스 생성

 MySQL/MariaDB - 설정 파일 구성 (my.ini) 및 시스템 변수 확인

 MySQL/MariaDB 서비스 시작, 종료

 MySQL/MariaDB 프로시저 생성, 수정, 삭제

 MySQL/MariaDB 에러로그파일

 MySQL/MariaDB 제네럴 로그 파일 (General log file)

 MySQL/MariaDB 슬로우 쿼리 로그

 MySQL/MariaDB 로그 저장기간 변경

 MySQL/MariaDB 현재 실행중인 쿼리 보기

 MySQL/MariaDB 프로세스 강제 종료

 MySQL/MariaDB Memory 관련 설정 변수

 MySQL/MariaDB Connection 관련 설정 변수

 MySQL/MariaDB 복제구축

 MySQL/MariaDB 아키텍처 – Overview

 MySQL/MariaDB 아키텍처 – 스레딩 구조

 MySQL/MariaDB 아키텍처 – 메모리 할당 및 사용 구조

 MySQL/MariaDB 아키텍처 – 쿼리 실행 구조

 MySQL/MariaDB 백업 & 복원 - mysqldump

 MySQL/MariaDB 아키텍처- 쿼리 캐시(Query Cache)

 MySQL/MariaDB InnoDB 스토리지 엔진 특성

 MySQL/MariaDB MyISAM 스토리지 엔진 특성

 파일로 저장되어 있는 데이터를 테이블로 Bulk Insert 하기


▼부가자료

 잠금에 관한 고찰(1) - 잠금(Lock) 매커니즘에 대하여

 http://kuaaan.tistory.com/97


 잠금에 관한 고찰(2) - 격리 수준(Transaction Isolation Level)에 대하여

 http://kuaaan.tistory.com/98


 잠금에 관한 고찰(3) - 교착상태(데드락,DeadLock)에 대하여

 http://kuaaan.tistory.com/100


 MariaDB 관리항목 및 설정

 http://miaeung.tistory.com/23


 MariaDB 사용자 권한 및 관리

 MariaDB 서비스용 데이터베이스에서 불필요한 권한 삭제

 MariaDB 유저 관리 - 1

 MariaDB 유저 관리 - 2

 http://back2dev.tistory.com/entry/MariaDB-%EC%9C%A0%EC%A0%80-%EA%B4%80%EB%A6%AC-2


 MariaDB 유저 관리 - 3

 http://back2dev.tistory.com/entry/MariaDB-%EC%9C%A0%EC%A0%80-%EA%B4%80%EB%A6%AC-3


 MairaDB Security (MariaDB 보안) - 1

 http://back2dev.tistory.com/entry/MairaDB-Security-MariaDB-%EB%B3%B4%EC%95%88-1


 MairaDB Security (MariaDB 보안) - 2



▼MariaDB 공식 한글설명 자료

 (1) MariaDB 에 대하여

 https://mariadb.com/kb/ko/mariadb-korean-mariadb/


 (2) MariaDB 와 MySQL - 기능

 https://mariadb.com/kb/ko/mariadb-vs-mysql-features/


 (3) MariaDB 입문 01 - 소개

 https://mariadb.com/kb/ko/a-mariadb-primer-01-intro/


 (4) MariaDB 입문 02 - 로그인

 https://mariadb.com/kb/ko/mariadb-02-/


 (5) MariaDB 입문 03 - 조회

 https://mariadb.com/kb/ko/mariadb-03-viewing/


 (6) MariaDB 입문 04 - 삽입

 https://mariadb.com/kb/ko/a-mariadb-primer-04-inserting/


 (7) MariaDB 입문 05 - 수정

 https://mariadb.com/kb/ko/a-mariadb-primer-05-modifying/


 (8) MariaDB와 MySQL의 호환성

 https://mariadb.com/kb/ko/mariadb-mysql/


 (9) MySQL에서 MariaDB로 업그레이드 하기

 https://mariadb.com/kb/ko/upgrading-from-mysql-to-mariadb/


 (10) 기본 SQL 문장

 https://mariadb.com/kb/ko/basic-sql-statements/


 (11) 암호화 Plugin

 https://mariadb.com/kb/ko/encryption-plugins/


 (12) MariaDB data를 암호화하는 이유

 https://mariadb.com/kb/ko/why-encrypt-mariadb-data/


 (12) SSL 개요

 https://mariadb.com/kb/ko/ssl-ssl/


 

▼아래 자료 출처

http://cafe.naver.com/windowsapi/


▼SQL이란?

 SQL은 데이터베이스(DB)에서 데이터를 조작하거나 접근할 수 있게 하는 언어이다.

 SQL언어는 ANSI 표준이지만, DB마다 약간씩 다르다.


 데이터베이스 테이블


 데이터베이스(database)는 하나 혹은 여러개의 테이블(tables)들을 포함하고 있다.

 테이블들은 각각 자기만의 명칭을 가지고 있고, 테이블들은 데이터의 레코드들을 가지고 있다.


 

 가로= 열,컬럼(column) 세로= 행,레코드(record)


 위의 테이블은 5개의 레코드들을 포함하고 있고,

 7개의 컬럼(EpID,LastName,FirstName,Title,DeptID,Email,Phone)을 포함한다.


 SQL문


 SELECT * FROM SCHOOL


 위의 SQL문은 SCHOOL 테이블의 모든 레코드들을 보여주는 SQL문중 하나이다.

 SQL문 마지막엔 세미콜론(;)을 찍는데, 이것은 어떤 DB에선 강제로 사용해야 되고 어떤 DB에선 안쓰이기도 한다.

 SQL 명령어중에서는 데이터베이스를 정의하거나 변경하는 데이터 정의어(DDL)과 데이터 삽입,삭제,검색,수정을 처리하는

 데이터 조작어(DML)과 데이터베이스에 대한 권한을 제어하는 데이터 제어어(DCL)로 분류한다.


 데이터 정의어(Data Defintion Language) - CREATE,DROP,ALTER

 데이터 조작어(Data Manipulation Language) - SELECT,INSERT,UPDATE,DELETE

 데이터 제어어(Data Control Language) - GRANT,REVOKE


SELECT 문 기초

 select 문은 테이블로부터 특정 데이터를 선택해서 보기 위해 사용된다.

 문법) SELECT 컬럼(column)1,컬럼(column)2... FROM 테이블명(table)


 전체 컬럼을 출력하기 위해서는 컬럼명 대신에 '*' 표시 하나만 넣으면 된다.


 

 ▲위 예제는 student라는 이름을 가진 테이블의 모든 컬럼의 레코드들을 출력하였다.


 

 위 예제는 id,name,grade 컬럼의 레코드들만 출력하게 하였다.


 DISTINCT


 테이블 안에서, 몇몇 컬럼들은 중복된 값을 포함하는 경우가 있다.

 이것은 절대로 문제가 되지는 않지만, 만약 테이블 내의 중복되지 않는

 다른 값들만 출력하기 원할때가 있을것이다.

 그럴때 DISTINCT 키워드를 사용하면 중복되지 않는 값들만 출력할 것이다.


 문법) SELECT DISTINCT 컬럼(column)1,컬럼(column)2... FROM 테이블명(table)

 컬럼명앞에 DISTINCT 키워드만 붙이면 된다.


 

 house 컬럼의 필드에는 군산시가 2개나 포함되있었지만 distinct를 사용하면 군산시는 하나만 출력된다.


 WHERE 절


 SELECT 문 뒤에는 몇몇 절들이 올 수가 있다.

 WHERE, GROUP BY, ORDER BY, HAVING, LIMIT 등등이 있다.

 그중에서 가장 기초가 되는건 WHERE절이다.

 WHERE절은 조건에 맞는 레코드들만 출력할 때 사용하는 절이다. 


 

 SELECT * FROM student WHERE house="군산시";

 이것은 house가 "군산시"인 사람들만 레코드로 출력된다.

 참고로 문자열의 경우 ""로 감싸야 되고, 숫자값일 경우에는 ""로 감싸지 않는다.


 위 예제의 house 컬럼은 문자열이므로 ""로 감쌌다.

 =말고도 다른 연산자들이 있으니 참고 바란다.



 논리 연산자 (AND,OR,NOT)


 AND 연산자는 첫번째 식과 두번째 식 둘다 참인경우에만 참이되고

 OR 연산자는 첫번째 식과 두번째 식중 하나만 참인경우인 경우에 참이된다.


 

 house가 "군산시"이고 name이 "이지영"인 사람에 해당하는 경우에만 레코드로 출력된다.


 

 house가 "군산시"이던지 아니면 name이 "이지영"이던지 하나의 조건에 만족하는 경우에만 레코드로 출력된다.

 유진주같은 경우에는 name이 이지영은 아니지만 house가 군산시라 레코드가 출력된 경우다.


 

 house는 "군산시"인데 name이 "이지영"이 아닌경우에만 레코드로 출력된다.

 유진주는 name이 이지영이 아니기 때문에 출력됐다.


 BETWEEN .. AND


 BETWEEN 연산자는 두 값의 데이터 사이의 범위에 있는 것들을 고른다.

 값들은 숫자,텍스트,날짜(dates)도 된다.


 

 문법) SELECT 컬럼들 FROM 테이블명 WHERE 컬럼 BETWEEN 값1(value) AND 값2(value)


 위 예제에서 첫번째는 성적(grade)이 55점부터 90점 사이의 사람들만 출력했고,

 아래는 id가 3과 5사이의 값을 가진 사람들을 출력하였다.


 LIKE

 

 LIKE 연산자는 컬럼에서 정해진 패턴에 따라 찾는다.

 패턴문은 ""혹은 ''으로 감싸야 한다.


 

 문법) SELECT 컬럼들 FROM 테이블 WHERE 컬럼 LIKE '패턴'


 이% 패턴은 이로시작하는 name들을 출력하라는 것이고,

 %주시는 house 이름이 ~주시로 끝나는 것들을 출력하라는 것이다.


 IN

 IN 연산자는 여러 개의 조건 값 중 하나 만 만족하면 된다.

 

 문법) SELECT 컬럼들 FROM 테이블 WHERE 컬럼 IN (값1,값2)