jh-data1og 님의 블로그
패스트캠퍼스 ㅣ 데이터분석부트캠프 18기 7주차 ㅣ MYSQL 기초 본문
MYSQL 설치
워크벤치 -> 비밀번호 입력 -> 쿼리 탭 생성
- 기본 용어 정리
- 데이터 : 컴퓨터가 처리할 수 있는 문자, 숫자, 소리, 그림 따위의 형태로 된 정보
- MYSQL 데이터 타입 : 숫자형(정수형, 실수형), 문자형, 날짜형
-> 데이터 타입을 알아야하는 이유!
1 ) MYSQL에서는 데이터 저장하기 전에 저장 공간의 데이터 타입을 미리 정해줘야함
2 ) 해당 저장공간에서 미리 정해둔 데이터 타입이 아니면, 데이터 저장 불가능
★ 정수형(INT), 실수형(FLOAT), 문자형(VARCHAR(n)) 주로 사용
★ 데이터 타입 간 변환가능 : 함수를 사용해 서로 타입 변환이 가능 - 테이블 : 데이터베이스에서 데이터를 형태를 정하여 모아놓은 저장공간
즉, 행(로우)과 열(컬럼)로 이루어진 데이터 표 - DB (database) : 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 데이터 저장소 & 테이블 저장소
-> 생성 순서 : 데이터베이스 생성 후 테이블 생성 - 자료 구조화 저장/ 여러 사용자 동시에 사용 가능/ 응용프로그램 활용
- DBMS (data management system) : 데이터베이스의 기능을 제공하는 프로그램
- SQL (structured query language) : 데이터베이스와 대화하기위해 사용하는 언어
- 쿼리: SQL로 쓰인 데이터베이스에 명령을 내리는 문장
- 알아둬야할 것
- Ctrl + Enter : 실행
- ";" 콜론으로 끝내야함
- #이나 —: 주석처리
- /* 마지막에 */로 끝내야함 : 여러줄 메모처리
★쿼리 | |
데이터베이스 만들기 | CREATE DATABASE [데이터베이스 이름]; |
데이터베이스 목록 보기 | SHOW DATABASES; |
데이터베이스 사용하기 | USE [데이터베이스 이름]; |
테이블 만들기 | CREATE TABLE [테이블 이름] ( [컬럼 이름] [데이터 타입], [컬럼 이름] _ (한칸 띄기) [데이터 타입],(쉼표로 연결) ... ); |
테이블 이름 변경하기 | ALTER TABLE [테이블이름] RENAME [테이블이름]; |
새로운 컬럼 추가하기 | ALTER TABLE [테이블 이름] ADD COLUMN [컬럼 이름] [데이터 타입]; |
기존 컬럼 타입 변경하기 | ALTER TABLE [테이블 이름] MODIFY COLUMN [컬럼 이름] [새로운 데이터 타입]; |
기존 컬럼 이름과 타입 변경하기 | ALTER TABLE [테이블 이름] CHANGE COLUMN [컬럼 이름] [새로운 컬럼 이름] [새로운 데이터 타입]; |
컬럼 지우기 | ALTER TABLE [테이블 이름] DROP COLUMN [컬럼 이름]; |
데이터베이스 지우기 | DROP DATABASE [데이터베이스 이름]; |
테이블 지우기 | DROP TABLE [테이블 이름]; |
테이블 값만 지우기 | TRUNCATE TABLE [테이블 이름]; |
데이터베이스/테이블이 존재한다면 지우기 | DROP DATABASE/TABLE IF EXISTS [데이터베이스 이름]; |
데이터 하나 삽입하기 | INSERT INTO [테이블 이름] ([컬럼1 이름], [컬럼2 이름], [컬럼3 이름]) VALUES ([컬럼1 값], [컬럼2 값], [컬럼3 값]); -> 로우마다 괄호 여닫기, 쉼표 -> 두 개의 리스트 갯수는 일치해야함! |
데이터 삭제하기 | DELETE FROM [테이블 이름] WHERE [조건 값]; |
데이터 수정하기 | UPDATE [테이블 이름] SET [컬럼 이름] = [새 값] WHERE [조건 값]; |
원하는 데이터 가져오기 | |
SELECT [컬럼 이름] SELECT * (컬럼 전체 가져오기) |
가져올 데이터를 선택/ 값을 가져올 컬럼을 선택 *컬럼 선택 전, 테이블 먼저 선택 |
FROM [데이터베이스 이름].[테이블 이름]; FROM [테이블 이름]; ㄴUSE [데이터베이스 이름]; -- 데이터베이스 지정 시 |
데이터를 가져올 테이블을 지정 |
AS [컬럼 별명] ex) SELECT [컬럼 이름] AS [컬럼 별명] |
가져온 데이터에 별명을 지정 테이블 내의 실제 컬럼 이름은 변하지 않음 |
LIMIT [로우 수] | 가져올 데이터의 로우 개수를 지정 쿼리의 가장 마지막에 위치 |
DISTINCT [컬럼 이름] | 중복된 데이터는 제외하고, 같은 값은 한 번만 가져옴 컬럼에 어떤 값들이 있는 지 확인하고 싶을 때 사용함 |
조건에 맞는 데이터 가져오기 | |
WHERE 조건식 | 가져올 데이터의 조건을 지정 조건식이 True(참)이 되는 로우만 선택 연산자 사용해 조건식 작성 |
연산자 종류 | |
비교 연산자 | ![]() |
논리 연산자 | AND : A와 B 모두 True이면 True OR : A와 B 둘 중 하나만 True이면 True NOT : A가 아니면 True |
기타 주요 연산자 | [컬럼 이름] BETWEEN A AND B : 특정 범위 내의 데이터를 선택할 때 사용 * [컬럼 이름] BETWEEN A AND B 쿼리는 A <= [컬럼 이름] AND [컬럼 이름] <= B와 동일 |
[컬럼 이름] IN ([조건 1], [조건 2], ...) : 목록 내 포함되는 데이터를 선택할 때 사용 * [컬럼 이름] IN (A, B) 쿼리는 [컬럼 이름] = A OR [컬럼 이름] = B와 동일 |
|
[컬럼 이름] LIKE [검색할 문자열] | 특정 문자열이 포함된 데이터를 선택 * % : 0개 이상의 문자 _ : 1개의 문자 * '%e' : e로 끝나는 문자열, '%e%' : e가 포함된 문자열 etc |
NULL | 데이터 값이 존재하지 않는다 / 0 이나 공백이 아닌 알 수 없는 값을 의미 |
[컬럼 이름] IS NULL/IS NOT NULL | 데이터가 NULL인지 아닌지를 확인 * [컬럼 이름] = NULL 또는 [컬럼 이름] != NULL 과 같은 표현은 사용하지 않음 |
원하는 데이터 만들기 | |
ORDER BY [컬럼 이름] ORDER BY [컬럼 이름] DESC ORDER BY [컬럼 1], [컬럼 2] |
가져온 데이터를 정렬 * 기본 정렬 규칙은 오름차순 / DESC 내림차순 * [컬럼 1] 기준으로 정렬 -> [컬럼 1] 값이 동일한 로우 간에 [컬럼 2] 기준으로 정렬 * 컬럼 번호로도 정렬 가능 |
RANK() OVER (ORDER BY [컬럼 이름]) | 데이터를 정렬해 순위를 만들어주는 함수 * SELECT절에 사용, 정렬된 순서에 순위를 붙인 새로운 컬럼을 보여줌 * 테이블의 실제 데이터에는 영향을 미치지 않음 * 공동 순위가 있으면 다음 순서로 건너 뜀 |
DENSE_RANK() OVER (ORDER BY [컬럼 이름]) | 공동 순위가 있어도 다음 순위를 뛰어 넘지 않음 |
ROW_NUMBER() OVER (ORDER BY [컬럼 이름]) | 공동 순위를 무시함 |
- 함수 사용해서 데이터 타입 변형하기
문자형 데이터 함수 | ![]() |
숫자형 데이터 함수 | ![]() |
날짜형 데이터 함수 | ![]() ![]() |