💡 SQL이란 무엇인가?
관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어
정보를 표 형식으로 저장
SQL언어 사용하여 데이터베이스에서 정보를 저장, 업데이트, 제거, 검색 및 검색할 수 있음
Query = 코드, 언어
① db, 테이블, 컬럼 생성 명령
② 테이블에 행 데이터 넣기, 읽기, 수정, 삭제 명령
③ db 관리 명령
참고) SQL 언어를 3가지로 요약
① 테이블을 정의하는 언어
② 테이블에서 데이터를 다루는 언어
③ 데이터 자체를 다루는 명령은 따로 있음
데이터를 정의하는 언어 DDL - Data Definition Language
(데이터베이스 만들고 그 안에 테이블 여러개 만드는 구조)
① 데이터베이스 생성
CREATE DATABASE dbname;
참고)
SHOW DATABASES;
-> 데이터베이스 몇개 있는지 볼 수 있음
DROP DATABASE dbname;
-> 해당 데이터베이스 삭제
use dbname;
DROP DATABASE IF EXISTS dbname;
-> 없으면 말고!
(해당 데이터베이스가 이미 없는 것일지라도 다음 명령들이 이상없이 실행됨)
CREATE TABLE 테이블명(
컬럼명 데이터형,
컬럼명 데이터형,
...
기본키 셋
);
(컬럼 : 세로줄)
CREATE DATABASE dbname;
use dbname;
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,...))
SHOW TABLES;
DROP TABLE tablename;
(DROP TABLE IF EXISTS 테이블명;
)
명령이 길어질수록 테이블 지웠었는지 헷갈릴때도 있으니 IF EXISTS 활용하자
DESC 테이블명;
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)
);
(**컬럼 끝나면 쉼표 주의!)
VARCHAR(n) : 가변 길이 데이터 타입(n <= 65535)
-> 글자수에 따라 사용되는 셀크기(데이터가 차지하는 공간)가 달라짐
-> 실제 값에 따라서 저장공간을 달리함
CHAR(n) : 고정 길이 데이터 타입(n <= 255)
-> 1글자든 5글자든 n글자수에 맞게 셀 크기가 지정됨
DATE : 날짜 다양한 형식 표현 가능
TIME : 시간
DATETIME : 날짜와 시간
💡 SQL언어를 활용한 테이블 생성 실습
💡 데이터 입력 SQL 문법 익히기
INSERT INTO 테이블이름 (컬럼명, ...) VALUES (컬럼값, ...)
전체 컬럼에 순서대로 데이터 넣을 경우
컬럼명 생략후 바로 VALUES(...); 하면 됨
다음 행은 PRIMARY KEY(AUTO_INCREMENT) 한 컬럼이 컬럼1인데, 그 다음 컬럼부터 값을 주고싶다?
-> 해당 컬럼명 빼고 INSERT INTO 테이블명(컬럼2, 컬럼3) VALUES(값2, 값3);
① 데이터 읽는 명령
테이블 전체 데이터 조회하기(추출)
SELECT * FROM 테이블이름;
특정 컬럼에 대한 값만 추출하기
SELECT 컬럼명, ... FROM 테이블이름;
특정 조건에 맞는 데이터만 보고 싶을 때
SELECT * FROM 테이블이름 WHERE 조건
② 일반적인 '조건'
③ 참고 : 문자열 검색
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 문법 익히기
UPDATE 테이블이름 SET 컬럼명=컬럼값, ... WHERE 조건;
DELETE FROM 테이블이름 WHERE 조건;
💡 sakila를 활용한 실제 데이터베이스 구축
실제로 쓸만한 데이터들을 데이터베이스에 넣고 이를 기반으로 데이터를 추출해보기!
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)