파이썬 강의가 끝난 뒤 팀 프로젝트를 하면서 파이썬을 익힐 수 있는 시간을 가졌다. 배우자마자 프로젝트를 해야하는 바람에 매우 힘들었다. 우여곡절 끝에 파이썬 파트는 끝이 났고 이번주부터 sql 강의가 이어졌다. 옛날에 SQLD를 취득하려고 SQL을 혼자 배운 적이 있는데 그래도 한 번 들었던 내용이어서 그런지 쉽게 쉽게 이번주는 흘러갔다.
1. SQL 데이터베이스 다루기
테이블이란? 데이터베이스에서 데이터를 형태를 정해 모아놓은 저장 공간이다.
컬럼과 로우로 이루어져 있으며 데이터를 저장하기 위한 하나의 틀이다.
column 1 | column 2 | column 3 | |
row1 | data1 | data2 | data3 |
row2 | data4 | data5 | data6 |
컬럼을 만들 때의 규칙
- 컬럼의 이름과 데이터 타입은 테이블을 만들 때 미리 정해진다.
- 컬럼의 이름은 동일한 테이블 내에서 중복될 수 없다.
- 테이블은 반드시 하나 이상의 컬럼을 가져야 한다.
- 하나의 로우는 하나의 관계된 데이터를 의미한다.
- 같은 테이블 안에서 로우는 항상 동일한 구조를 가진다.
- 로우를 단위로 데이터를 삽입한다.
데이터 베이스란? 테이블을 저장해두는 저장소 (= Schema)
보통 데이터베이스를 만들고 테이블을 그 안에 생성해 보관한다.
CREATE DATABASE databasename; - 데이터 베이스 생성
DROP DATABASE databasename; - 데이터 베이스 삭제
SHOW DATABASES; - 현재 존재하는 모든 데이터베이스 목록 표시
USE databasename; - 이제부터 데이터베이스를 사용한다는 의미
데이터 베이스에서 테이블을 생성, 삭제, 수정하는 등 데이터를 조작할 수 있는 명령어를 먼저 배웠다. DDL 이라고 하는데 테이블이나 인덱스 등 개체를 만들고 관리하는데 사용하는 명령어들이다.
TABLE 관련 쿼리들
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
--datatype은 varchar, int, date 등 varchar(10) 은 10비트의 문자
존재하는 테이블을 이용해서 새로운 테이블을 만들어 줄 수 있다. 이때에는 AS를 사용함.
CREATE TABLE new_table_name AS
SELECT column1, column2,...
FROM existing_table_name
WHERE ....;
Constraints로 칼럼에 제약 조건을 넣을수도 있다.
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);
제약조건은 테이블에 특별한 조건을 부여하기 위해 사용된다. 조건에 맞지 않는 값은 칼럼에 추가될 수 없으므로 데이터베이스의 정확도와 신뢰도를 높일 수 있다.
반대로 테이블을 지우고 싶으면 DROP이나 TRUNCATE 를 사용
DROP TABLE table_name;
TRUNCATE TABLE table_name;
DROP은 테이블 자체를 삭제하고 TRUNCATE는 테이블 내의 내용만 없애고 틀은 유지됨.
ALTER TABLE로 만들어진 테이블을 변경할 수 있다.
- 새로운 칼럼의 추가
ALTER TABLE table_name
ADD column_name datatype;
2. 기존 칼럼 제거
ALTER TABLE table_name
DROP COLUMN column_name;
3. 칼럼의 이름이나 데이터 타입 변경
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;
ALTER TABLE table_name RENAME new_table_name;
ALTER TABLE table_name
CHANGE COLUMN column_name new_column_name datatype;
테이블에 행 추가하기 INSERT INTO
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...),
(value1, value2, value3, ...),
(value1, value2, value3, ...); -- 여러개 추가
INSERT INTO table_name
VALUES (value1, value2, value3, ...); --모든 테이블의 컬럼에 추가하는 경우
UPDATE
테이블 내의 값을 바꿀 때에 사용된다. WHERE로 조건을 제대로 걸지 않으면 모든 테이블의 값이 변경되니 반드시 WHERE 조건문을 잘 확인해야 한다.
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
DELETE
테이블 내의 값을 제거할 때 사용. 마찬가지로 WHERE로 조건을 정확히 걸어줘야 모든 데이터가 날라가는 일을 막을 수 있다.
DELETE FROM table_name WHERE condition;
DELETE FROM table_name; -- 테이블을 남기고 모든 데이터 삭제, TRUNCATE랑 유사
2. 데이터 가져오기
테이블에서 데이터를 조회할 때에는 SELECT를 사용하여 볼 수 있다. SELECT에는 보고 싶은 칼럼의 이름을, FROM에는 볼 테이블 이름을 적어주면 테이블의 칼럼이 조회된다. 또한 WHERE 구문으로 원하는 데이터만 골라서 조회할 수 있다. SQL을 사용할 때 항상 등장하는 구문이기 때문에 매우 중요하다.
SELECT column1, column2, ...
FROM database_name.table_name;
USE database_name;
SELECT column1, column2, ...
FROM table_name;
만약 모든 컬럼을 보고 싶다면 *를 사용한다.
SELECT * FROM table_name;
ALIAS를 지정해 컬럼 별명을 지어줄 수 있다. 컬럼명 뒤에 AS를 붙이고 원하는 이름을 부여한다.
SELECT column1 AS alias_name1, column2 AS alias_name2, ...
FROM table_name;
SELECT DISTINCT 는 테이블의 컬럼을 조회할 때, 중복값을 제거하고 반환한다. 즉 어떤 값들이 들어있는지 확인하고자 할 때 사용한다.
SELECT DISTINCT Country FROM Customers;
SELECT COUNT(DISTINCT Country) FROM Customers;
LIMIT는 가져올 데이터의 로우 수를 지정하는 키워드이다.
쿼리의 가장 마지막에 위치하며 전체 로우 수보다 큰 값을 넣으면 전체 로우를 반환한다.
SELECT column1, column2, ...
FROM table_name
LIMIT 3;
만약 3개를 제외하고 다음으로 오는 2개를 보고싶다면 OFFSET을 활용한다. (4~6 로우 반환)
SELECT * FROM Customers
LIMIT 2 OFFSET 3;
LIMIT 3,2; --이렇게 간단히도 표현가능
'패스트캠퍼스' 카테고리의 다른 글
[패스트캠퍼스] 데이터 분석 부트캠프 13기 SQL(3) 윈도우 함수(Window function) (0) | 2024.04.18 |
---|---|
[패스트캠퍼스] 데이터 분석 부트캠프 13기 - SQL(2) (1) | 2024.04.12 |
[패스트캠퍼스] 데이터 분석 부트캠프 13기 4주차 (1) | 2024.03.15 |
[패스트캠퍼스] 데이터 분석 부트캠프 13기 3주차 (0) | 2024.03.08 |
[패스트캠퍼스] 데이터 분석 부트캠프 13기 2주차 (0) | 2024.02.29 |