일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 프로세스 마이닝
- Grad-CAM
- SQL 데이터 분석 첫걸음
- Petri net
- OCSVM
- Clustering 기반 이상탐지
- 국비지원교육
- Sequence data
- Random Undersampling
- 거리 기반 이상탐지
- Process Mining
- Generative modeling
- Data Imbalance
- Condensed neares neighbor rule
- GAN
- Fixed Learning
- Digital Pathology
- auto encoder
- 병리 AI
- One-Sided Selection
- Text generation
- multi modal
- 밀도 기반 이상탐지
- XAI
- Tomek links
- Inatance segmentation
- 딥러닝
- PM4Py
- Meta heuristic
- Gausian Density Estimation
- Today
- Total
Create Opportunities
[패스트 캠퍼스] SQL 기초 강의 (1주차) 본문
Day 1
데이터, 데이터베이스 그리고 DBMS
데이터 베이스의 특징 : 자료를 구조화 / 여러 사용자가 동시에 사용 / 응용 프로그램을 사용
응용 프로그램은 DBMS라고 한다. 사용자들은 데이터 베이스에 접근을 할 때 DBMS를 통해서만 접근할 수 있다.
종류는 뭐가 있을까? 대표적으로 아래의 네 가지를 얘기해볼 수 있다.

Day 2
데이터베이스 다루기
MySQL에서 사용 가능한 데이터 타입 종류 ? → 정수형/실수형/문자형/날짜형
- 데이터를 저장하기 전에 저장 공간의 데이터 타입을 미리 지정해야 하기 때문에 데이터 타입을 잘 알아야 한다. 해당 저장 공간에서 미리 정해둔 데이터 타입이 아닐 경우, 데이터 저장이 불가능하다.
- 정수형 데이터 타입 안에서도 또 한 번 Byte(컴퓨터 저장 공간의 단위) 수에 따라서 분류가 가능하다. Byte 수에 따라서 저장 및 표현이 가능한 숫자의 범위가 달라진다는 말이다. (Ex. INT 타입 : 약 -21억 ~ +21억 표현 가능)
- 문자형은 CHAR(n) 과 같이 n을 지정해주어야 한다. 얼만큼의 저장 공간을 사용할 것인지를 의미한다. CHAR는 최대 255까지 지정할 수 있다. n을 입력해주지 않으면 자동 1 입력이다. VARCHAR는 꼭 n을 지정해야 하며, 65535까지 지정 가능하다. VARCHAR는 변동 길이 문자열이라고 하는데, 사용하지 않는 공간을 자동으로 지워줄 수 있는 특징이다. 좋으니깐 더 자주 사용한다.
- 날짜형 데이터 타입에는 DATE, DATETIME, TIME, YEAR 가 있다.
- 데이터 타입 간 서로 변환이 가능하다. (Ex. CAST, CONVERT, DATE_FORMAT)
! 테이블과 데이터베이스의 생성은 보통의 경우, DB를 생성한 후에 특정 DB 내에 테이블을 생성한다.
DB 관련 쿼리문 → CREATE DATABASE [DB 명]; SHOW DATABASES; USE [DB 명];
테이블 생성 → CREATE TABLE [테이블 이름]([컬럼 이름] [데이터 타입]…);
테이블 이름 변경 → Ex) ALTER TABLE customer RENAME customers;
새로운 컬럼 추가 → Ex) ALTER TABLE customers ADD COLUMN age INT;
기존 컬럼 타입 변경 → Ex) ALTER TABLE customers MODIFY COLUMN age FLOAT;
컬럼 이름과 타입 변경 → Ex) ALTER TABLE customers CHANGE COLUMN age new_age FLOAT;
컬럼 지우기 → Ex) ALTER TABLE customers DROP COLUMN new_age;
DB 지우기(테이블 지우기도 동일) → Ex) DROP DATABASE [DB 명];
테이블 값만 지우기 → Ex) TRUNCATE TABLE [TABLE 명];
존재한다면 지워달라 → EX) DROP DATABASE IF EXISTS [DB 명];
데이터 삽입 → Ex) INSERT INTO [테이블 이름]([컬럼1 이름], [컬럼2 이름]) VALUES ([컬럼1 값], [컬럼2 값]);
데이터 삭제 → Ex) DELETE FROM [테이블 이름] WHERE [조건 값];
데이터 수정 → Ex) UPDATE [테이블 이름] SET [컬럼 이름] = [새 값] WHERE [조건 값];
Day 3
데이터 가져오기 (SELECT)
값을 가져올 컬럼을 선택하는 키워드
- SELECT 데이터 형식으로 사용 (숫자, 문자 데이터 가져오기)
- SELECT [컬럼 이름] 형식으로 사용 (컬럼 전체 가져오기)
- SELECT * 형식으로 사용 (컬럼 전체 가져오기)
테이블에서 데이터 가져오기 (FROM)
- SELECT [컬럼 이름] FROM [DB 이름].[TABLE 이름];
- SELECT [컬럼 이름],[컬럼 이름] FROM [DB 이름].[TABLE 이름];
- SELECT * FROM [DB 이름].[TABLE 이름];
별명 붙이기 (AS)
가져온 데이터에 별명을 지정하기 위한 키워드
실제 테이블의 컬럼 이름은 안변함.
SELECT [컬럼 이름] AS [컬렴 별명] FROM [DB 이름][TABLE 이름];
데이터 일부만 가져오기 (LIMIT)
가져올 데이터의 로우 개수를 지정하는 키워드
- LIMIT [로우 수] 형식으로 사용
- 쿼리의 가장 마지막에 위치
- 만약 입력한 숫자가 전체 row보다 크면, 있는 row 까지만 가져옴
중복 제거하기 (DISTINT)
중복된 데이터는 제외하고 같은 값은 한 번만 가져오는 키워드
- DISTINCT [컬럼 이름] 형식으로 사용
- SELECT 절에 위치하여 컬럼의 유일한 값들을 가져옴.
- Ex) SELECT DISTINCT type FROM pokemon.mypokemon;
Day 4
조건에 맞는 데이터 가져오기 (WHERE)
- WHERE [조건식] 형식으로 사용.
- 조건식이 TRUE (참)인 ROW만 가져옴.
비교 연산자 (=, ≠, >, ≥, <, ≤)
Ex) SELECT number FROM mypokemon WHERE name=’pikachu’;
논리 연산자 (NOT, AND, OR)
Ex) SELECT name FROM mypokemon WHRER speed ≤ 100 AND type = ‘electric’;
- NOT 연산자는 NOT(조건) 으로 사용
기타 주요 연산자 (BETWEEN, IN, LIKE)
- BETWEEN
- Ex) SELECT name FROM mypokemon WHERE speed BETWEEN 50 AND 100; → 비교 연산자 사용과 동일하게 사용.
- IN : 목록 내 포함되는 데이터 선택
- Ex) SELECT name FROM mypokemon WHERE type IN (’bug’, ‘normal’); → OR 연산자와 동일하게 사용.
- LIKE : 특정 문자열이 포함된 데이터 선택
- % : 0개 이상이 문자 → 알 수 없음
- _ : 1개의 문자 (__ : 2개의 문자)
- _% : 1개 이상의 문자
- Ex) SELECT name FROM mypokemon WHERE name LIKE ‘%chu’;
NULL
- 데이터 값이 존재하지 않는 경우
- 0 이나 공백이 아닌. “알 수 없는 값” 을 의미.
- IS NULL 연산 → SELECT name FROM mypokemon WHERE number IS NULL; (number = NULL은 사용 불가!)
Day 5
데이터 줄세우기 (ORDER BY)
- Ex) SELECT number, name FROM mypokemon ORDER BY number DESC, defense; → number이 같으면 defense는 오름차순(default) 로 정렬
데이터 순위 만들기 (RANK, ROW_NUMBER)
- 데이터를 정렬해서 순위를 만드는 함수
- 항상 ORDER BY와 함께 사용됨
- Ex) SELECT name, attack, RANK() OVER (OVER BY attack DESC) AS attack_rank FROM mypokemon;
- DENSE_RANK, ROW_NUMBER도 유사하게 순위를 만든다.
문자형 데이터 정복 함수
- LOCATE : LOCATE(’A’, ‘값 또는 컬럼)’ → 값 또는 컬럼에서 A가 몇 번째에 있는가.
- SUBSTRING : SUBSTRING(’ABC’, 2) : ABC의 2번째 문자부터 반환
- RIGHT, LEFT : RIGHT(’ABC’, 1) : ABC 오른쪽에서 1번째 문자까지 반환
- UPPER, LOWER : UPPER(’abc’) → 모두 대문자로
- LENCTH : len 반환
- CONCAT : CONCAT(’ABC’, ‘DEF’) → 합쳐서 반환
- REPLACE : REPLACE(’ABC’, ‘A’, ‘Z’) → ZBC로 반환
숫자형 데이터 정복 함수
- ABS : 숫자의 절댓값 반환
- CEILING : 숫자를 정수로 올림해서 환
- FLOOR : 숫자를 정수로 내림해서 반환
- ROUND : ROUND(숫자, 자릿수) → 소수점 자릿수까지 반올림해서 반환
- TRUNCATE : 소수점 자릿수까지 버림해서환
- POWER : POWER(숫자A, 숫자B) → A의 B제곱 반환
- MOD : MOD(숫자A, 숫자B) → A를 B로 나눈 나머지 반환
날짜형 데이터 정복 함수
- NOW, CURRENT_DATE, CURRENT_TIME : 현재 날짜 시간 반환
- YEAR, MONTH, MONTHNAME : 입력값 필요 → 날짜의 연도, 월 반환
- DAYNAME, DAYOFMONTH, DAYOFWEEK, WEEK : 날짜의 요일, 일, 해당 연도의 몇 번째 주인지 반환
- HOUR, MINUTE, SECOND : 시간 입력 → 시, 분, 초 반환
- DATE_FORMAT(날짜/시간, 형식) : 형식으로 잘 맞춰서 반환
- DATEDIFF, TIMEDIFF : 날짜의 차이, 시간의 차이를 반환
!! 국비지원교육_SQL 데이터 분석 첫걸음 !!
'SQL' 카테고리의 다른 글
[Hacker Rank] 231206 (0) | 2023.12.06 |
---|---|
[패스트 캠퍼스] SQL 기초 강의 (2주차) (0) | 2023.03.21 |