Create Opportunities

[패스트 캠퍼스] SQL 기초 강의 (1주차) 본문

SQL

[패스트 캠퍼스] SQL 기초 강의 (1주차)

kimjaeyoon 2023. 3. 15. 12:52

Day 1

데이터, 데이터베이스 그리고 DBMS

데이터 베이스의 특징 : 자료를 구조화 / 여러 사용자가 동시에 사용 / 응용 프로그램을 사용

응용 프로그램은 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