1. MySQL 다운로드
https://print-blue.tistory.com/207
2. MySQL 기초 문법
데이터베이스 선택
use 데이터베이스명;
데이터베이스 목록 확인
show databases;
테이블 구조 확인
desc 테이블명;
테이블 조회
select * from 테이블명;
* : 모든 것
Limit : 결과행 제한하기
- 문법 1 : limit 몇 개;
- 문법 2 : limit offset, 몇 개;
select * from employees; # 전체 조회할 때
select * from employees limit 3; # 시작부터 3개까지 조회하고 싶을 때
select * from employees limit 4, 3; # 시작이 되는 위치에서부터 4만큼 떨어진 것
MySQL 워크벤치에서는 따로 설정 하지 않는 한 기본값으로 limit 이 1,000개로 제한 되어 있다
Distinct : 중복 제거
주의점 : 한 컬럼이 아닌 한 row 의 모든 데이터가 겹쳐야 중복이라고 볼 수 있음
select dept_no, emp_no from dept_manager; # 24 rows
select distinct dept_no, emp_no from dept_manager; # 24 rows
order by : 정렬
# database/p240605/select-order-by.sql
쓰는 이유 : 데이터를 출력할 때 개발자가 보기 편하게 하기 위해서
order by 컬럼명 asc, 컬럼명 desc
[ SELECT ]
select 컬럼명
from 테이블명
where 조건
order by 컬럼명 asc, 컬럼명 desc;
[문제 1] 연봉을 오름차순, 업무 시작일을 내림차순으로 하여 사번, 연봉, 업무 시작일 조회
select emp_no, salary, from_date
from salaries
order by salary asc, from_date desc;
[문제 2] 직책을 오름차순, 업무 시작일을 내림차순으로 하여 사번, 연봉, 업무 시작일 조회
select emp_no, title, from_date
from titles
order by title asc, from_date desc;
null 을 뒤로 보내고 싶을 때
기본 동작은 정렬 후 null 이 앞으로 오기 때문에
null 을 뒤로 보내고 싶을 때 is null asc 하면 된다
order by 컬럼명, is null asc;
3. MySQL 사용법
파일 저장될 때 확장자는 .sql
MySQL csv 파일이란 ?
https://print-blue.tistory.com/206
DBMS의 핵심 엔진, 옵티마이저란 ?
https://print-blue.tistory.com/209
특정 DB 다운 받고, MySQL 워크벤치에서 실행할 때
DB 예제 다운로드
https://github.com/datacharmer/test_db
D:\fullstack\database\test_db>mysql -u root -p < employees.sql
4. SQL
SQL 은 크게 정의어/조작어/제어어 3개로 나뉘어 진다.
DDL / DML / DCL / TCL
명령어 종류 | 명령어 | 설명 |
DDL 데이터 정의어 (Data Definition Language) |
create : 생성 alter : 변경 drop : 삭제 truncate : 모든 row 삭제 |
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어 생성, 변경, 삭제 등 이름을 바꾸는 데이터 구조와 관련된 명령 |
DML 데이터 조작어 (Data Manipulation Language) |
select : 조회 | 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어 |
update : 수정 delete : 삭제 insert : 추가 |
데이터베이스의 테이블에 들어있는 데이터에 변형하는 명령어 | |
DCL 데이터 제어어 (Data Control Language) |
grant : 부여 revoke : 회수 |
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어 |
TCL 트랜잭션 제어어 (Transaction Control Language) |
commit : 완료 rollback : 취소/복구 |
논리적인 작업의ㅏ 단위를 묶어 데이터 조작어(DML)에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어 |
SQL 의 언어적 특성
- 구조화된 질의 언어, 질의어
- 데이터베이스에서 데이터를 추출, 조작하는데 데이터 처리 언어
- 대소문자 구분 안함
- 명령어는 반드시 세미콜론(;) 으로 끝나야 함
- 고유의 값은 따옴표(' ')로 감싸줘야 함
- 객체를 나타낼 때는 백틱(` `)으로 감싸줘야 함
- 주석은 일종의 도움말로, 주석 처리된 문장은 프로그램에서 동작되지 않음
- 쿼리를 작성하고 서버에 보낸다라는 말을 쿼리 날린다 라고 많이 표현
쿼리 튜닝이란 ?
데이터베이스에서 쿼리의 성능을 최적화하는 과정으로 시스템의 구성, 인덱스 사용, 쿼리의 구조 등을 파악하고
최적화하여 실행 소요 시간과 리소스를 최소화하고 쿼리의 처리 속도를 빠르게 만들어 주는 작업이다 !
쉽게 말해 쿼리의 속도를 최대한 빠르게 해주는 작업 ~!
쿼리 튜닝하는 여러가지 방법
- 인덱스 사용
- 적절한 JOIN 사용
- 서브쿼리 최소화
- 쿼리 실행 계확 확인하기
- 쿼리 성능 모니터링
- 쿼리 최적화
5. SQL 연산자, 데이터형
https://print-blue.tistory.com/228
https://print-blue.tistory.com/229
6. 그룹/집계 함수
https://print-blue.tistory.com/232
7. JOIN
https://print-blue.tistory.com/230
8. 서브쿼리
https://print-blue.tistory.com/231
9. DDL, DML, DCL, TCL 개념과 종류
DML : 데이터 조작어
https://print-blue.tistory.com/224
DDL : 데이터 정의어
https://print-blue.tistory.com/225
DCL : 데이터 제어어
https://print-blue.tistory.com/226
TCL : 트랜잭션 제어어
https://print-blue.tistory.com/227
공부하기 !!!
스키마와 오라클 아키텍처
나중에 알고리즘에 대해 공부를 한다면
정렬 광범위에 대한 내용이 나옴
정렬은 왜 한다 !? 개발자가 보기 편하기 위해서 -> 부가적인 작업
DBMS 에서는 데이터양이 많을수록 하나하나 비교하고 정렬하기 때문에 메모리 더 차지 하게 됨
쓸데없이 정렬하면 메모리 낭비, 성능 저하
그래서 정렬은 꼭 필요하지 않는 한 쓰지 않는ㄷㅏ !
많은 데이터를 정리할 때 다른 방법으로도 정렬을 할 수 있고, 한다면 사용자가 접속을 하지 않는 밤이나 새벽에 하는 경우도 많다고 함 !
그리고 기본키 기준으로 정렬하는게 좋다 !
'Others > 데이터베이스' 카테고리의 다른 글
[SQL] DDL (정의어) 문법 정리 및 예제 (1) | 2024.06.16 |
---|---|
[SQL] DML (조작어) 문법 정리 및 예제 (0) | 2024.06.16 |
006. 관계형 데이터베이스 SQL 및 모델링 - 1편 DB, DBMS, RDBMS (1) | 2024.06.16 |
[MySQL] 자료형 CHAR 와 VARCHAR 의 차이점 (0) | 2024.06.13 |
[SQL] 예제 모음 - 1 (0) | 2024.06.12 |