23.11.27 TIL(Today I Learned) - SQL, 테이블 선언, 데이터 타입, SQL문법, Sakila

Innes·2023년 11월 27일
0

TIL(Today I Learned)

목록 보기
5/147
post-thumbnail

💡 SQL이란 무엇인가?

1. SQL(Structured Query Language) 이란?

  • 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어

  • 정보를 표 형식으로 저장

  • SQL언어 사용하여 데이터베이스에서 정보를 저장, 업데이트, 제거, 검색 및 검색할 수 있음

  • Query = 코드, 언어

    • Python : 컴퓨터에 명령 내리는 언어
    • SQL : 데이터베이스에 명령 내리는 언어(한줄의 명령)
      (프로그래밍 언어와는 다른 형태임)


2. SQL명령 3가지

① db, 테이블, 컬럼 생성 명령
② 테이블에 행 데이터 넣기, 읽기, 수정, 삭제 명령
③ db 관리 명령

  • MySQL(가장 많이 쓰이는 오픈 소스 관계형 데이터베이스 관리 시스템)
  • 설치 시 : Workbench와 함께 설치


3. 데이터베이스와 테이블 선언하는 문법

  • 참고) SQL 언어를 3가지로 요약
    ① 테이블을 정의하는 언어
    ② 테이블에서 데이터를 다루는 언어
    ③ 데이터 자체를 다루는 명령은 따로 있음

  • 데이터를 정의하는 언어 DDL - Data Definition Language

3-1. 테이블을 만드는 명령

1) 데이터베이스 이름(박스) 만들기

(데이터베이스 만들고 그 안에 테이블 여러개 만드는 구조)

① 데이터베이스 생성
CREATE DATABASE dbname;

참고)

  • SHOW DATABASES;
    -> 데이터베이스 몇개 있는지 볼 수 있음

  • DROP DATABASE dbname;
    -> 해당 데이터베이스 삭제

2) 데이터베이스 안으로 들어가는 명령

  • use dbname;
    (데이터베이스 안에 테이블 만들려면 데이터베이스 안으로 들어가야함)

3) 데이터베이스 삭제(만약 있으면!)

DROP DATABASE IF EXISTS dbname;
-> 없으면 말고!
(해당 데이터베이스가 이미 없는 것일지라도 다음 명령들이 이상없이 실행됨)


3-2. 테이블 여러개 만들기

  • 꼭 대문자 아니어도 되는데, 보기 쉽고 구별하기 쉬우려고 대문자 소문자로 쓰는 것
  • 기본 문법(CREATE TABLE 구문)
CREATE TABLE 테이블명(
  컬럼명 데이터형,
  컬럼명 데이터형,
  ...
  기본키 셋
);

(컬럼 : 세로줄)

1) 데이터베이스 만들고, 데이터베이스 안으로 들어가기까지 해놓기

CREATE DATABASE dbname;
use dbname;

2) 테이블 만들기

CREATE TABLE tablename (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT
);

(참고- 숫자형 데이터 타입만 해도 엄청 많음)

  • id : 컬럼 이름

  • INT : 컬럼에 대한 데이터 타입 선언(문자, 숫자 등)

  • UNSIGNED : 옵션 사항-숫자에서만(0부터로 할지)
    (ex. TINYINT 로 지정시
    -128~ +127
    TINYINT UNSIGNED 지정시
    0~ 255)

  • NOT NULL : 빈칸으로 두는걸 허락하지 않겠어!

  • AUTO_INCREMENT : 지정해서 데이터 적지 않아도 알아서 직전값에 +1 해서 작성됨-숫자에서만
    (ex. 엑셀에서 숫자쓰고 쭉 드래그 하는 것처럼)

  • PRIMARY KEY에서 지정하는 값은 주로 AUTO_INCREMENT, INT, NOT NULL 값을 씀
    (다 작성하고 맨끝에 PRIMARY KEY(컬럼명1, 컬럼명2,...))

3) 다 작성한 후 표 조회

SHOW TABLES;

4) 테이블 삭제

DROP TABLE tablename;
(DROP TABLE IF EXISTS 테이블명;)
명령이 길어질수록 테이블 지웠었는지 헷갈릴때도 있으니 IF EXISTS 활용하자

5) 테이블 구조 확인해보기

  • DESC 테이블명;

5) 테이블 만들기예시

CREATE TABLE mytable (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  modelnumber VARCHAR(15) NOT NULL,
  series VARCHAR(30) NOT NULL,
  PRIMARY KEY(id)
);

(**컬럼 끝나면 쉼표 주의!)


4. 데이터 타입의 다양한 유형(기초)

1) 문자형 데이터 타입 중 예시

  • VARCHAR(n) : 가변 길이 데이터 타입(n <= 65535)
    -> 글자수에 따라 사용되는 셀크기(데이터가 차지하는 공간)가 달라짐
    -> 실제 값에 따라서 저장공간을 달리함

  • CHAR(n) : 고정 길이 데이터 타입(n <= 255)
    -> 1글자든 5글자든 n글자수에 맞게 셀 크기가 지정됨

2) 시간형 데이터 타입

DATE : 날짜 다양한 형식 표현 가능
TIME : 시간
DATETIME : 날짜와 시간


💡 SQL언어를 활용한 테이블 생성 실습


💡 데이터 입력 SQL 문법 익히기

1. SQL DML(Data Manipulation Language)

  • 데이터 넣고, 읽고, 갱신하고, 삭제하는 명령
  • 데이터 관리 CRUD : Create 생성, Read 읽기, Update 갱신, Delete 삭제
  • 테이블에 데이터 넣어보기


2. 데이터 입력 SQL 문법

2-1. 데이터 넣는 명령

INSERT INTO 테이블이름 (컬럼명, ...) VALUES (컬럼값, ...)

  • 전체 컬럼에 순서대로 데이터 넣을 경우
    컬럼명 생략후 바로 VALUES(...); 하면 됨

  • 다음 행은 PRIMARY KEY(AUTO_INCREMENT) 한 컬럼이 컬럼1인데, 그 다음 컬럼부터 값을 주고싶다?
    -> 해당 컬럼명 빼고 INSERT INTO 테이블명(컬럼2, 컬럼3) VALUES(값2, 값3);

2-2. 데이터 읽는 명령

① 데이터 읽는 명령

  • 테이블 전체 데이터 조회하기(추출)
    SELECT * FROM 테이블이름;

  • 특정 컬럼에 대한 값만 추출하기
    SELECT 컬럼명, ... FROM 테이블이름;

  • 특정 조건에 맞는 데이터만 보고 싶을 때
    SELECT * FROM 테이블이름 WHERE 조건


② 일반적인 '조건'

  • 컬럼 = 컬럼값
  • 컬럼A = 컬럼값 AND 컬럼B = 컬럼값
  • 컬럼A = 컬럼값 OR 컬럼B = 컬럼값
  • 컬럼! = 컬럼값(특정 컬럼의 값이 컬럼값이 아닌 경우만 추출)

③ 참고 : 문자열 검색
EX 1) 홈으로 시작되는 값을 모두 찾을 경우
SELECT * FROM 테이블명 WHERE 필드명 LIKE '홈%'
(* 필드명=컬럼명)

-> 활용
맨끝 글자가 홈으로 끝나는 값 모두 찾을 경우
(위와 같은 명령에서 %홈)

EX 2) 홈이 들어간 값을 모두 찾을 경우
SELECT * FROM 테이블명 WHERE 필드명 LIKE '%홈%'

EX 3) series컬럼 중 Alder 항목이면서 modelnumber컬럼 항목이 12700인 열(row) 조회하기

SELECT *
FROM mytable
WHERE series = 'Alder' AND modelnumber = '12700';



💡 데이터 수정,삭제 SQL 문법 익히기

1. 테이블 데이터 수정 : UPDATE 명령

  • UPDATE 테이블이름 SET 컬럼명=컬럼값, ... WHERE 조건;
    (*컬럼값 -> 바꿀 컬럼값 기입)

2. 테이블 데이터 삭제 : DELETE 명령

  • DELETE FROM 테이블이름 WHERE 조건;
    (테이블의 전체 데이터 삭제 : DELETE FROM 테이블이름;)

💡 sakila를 활용한 실제 데이터베이스 구축

1. 실제 데이터베이스 구축해보기

  • 실제로 쓸만한 데이터들을 데이터베이스에 넣고 이를 기반으로 데이터를 추출해보기!

  • Sakila 데이터로 익히는 데이터 분석과 SQL

  • sakila 다운로드 링크 : https://dev.mysql.com/doc/index-other.html
    Example Databases > sakila database
    (압축파일 다운, 압축풀기)

  • Open SQL script하여 sakila폴더 안의 schema, data 파일 열기

(sakila_schema -> 테이블 정의
sakila_data -> 테이블에 데이터 넣는 SQL)

profile
무서운 속도로 흡수하는 스폰지 개발자 🧽

0개의 댓글