반응형
DB 관련
DB 생성
CREATE DATABASE `DB이름` CHARACTER SET utf8 COLLATE utf8_general_ci
CHARACTER SET utf8 COLLATE utf8_general_ci
는 한글인코딩 설정
DB 삭제
DROP DATABASE `DB이름`
DB 확인
SHOW DATABASES
선택
USE `DB이름`
테이블 관련
테이블 생성
CREATE TABLE table_name (
column_name1 data_type,
column_name2 data_type
) [ENGINE=engine_name] [DEFAULT CHARSET=utf8]
- InnoDB, Cluster (NDB), myisam 등의 엔진존재
테이블 확인
SHOW tables;
스키마 확인
DESC `테이블명`
테이블 제거
DROP TABLE `테이블명`
삽입
INSERT INTO table_name VALUES (value1, value2, value3,...)
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
변경
UPDATE table_name SET column_name1=value1, column_name2=value2 WHERE column_name=value
- cf. WHERE로 특정 raw를 지정해주지 않으면 모든 값이 변경됨.
삭제
DELETE FROM table_name [WHERE column_name=value]
- 테이블의 특정 raw 삭제
TRUNCATE table_name
- 테이블 전체 데이터 삭제
DROP TABLE table_name
- 테이블 자체 삭제
조회
SELECT column_name1, column_name2
[FROM table_name]
[WHERE column_name=value]
[GROUP BY column_name]
[ORDER BY column_name [ASC | DESC]]
[LIMIT offset, number]
- *로 전체조회가능
- GROUP BY : 특정 데이터를 기준으로 분류. sum(),avg()
- ORDER BY : 오름차순 내림차순, 여primary key러개 지정가능(먼저 적은 것이 우선기준)
- cf. id와 같은 값은 primary key로 테이블 전체에 통틀어 중복되지 않는 값을 지정해야한다. where문을 이용해 접근시 가장 접근속도가 빠르다.
Join
- 테이블간의 관계성에 따라서 복수의 테이블을 결합, 하나의 테이블인 것처럼 결과를 출력
- OUTTER JOIN : 매칭되는 행이 없어도 결과를 가져오고 매칭되는 행이 없는 경우 NULL로 표시한다. LEFT JOIN과 RIGHT JOIN이 있다.
- INNER JOIN : 조인하는 두개의 테이블 모두에 데이터가 존재하는 행에 대해서만 결과를 가져온다.
SELECT s.name, s.location_id, l.name AS address, l.distance FROM student AS s LEFT JOIN location AS l ON s.location_id = l.id;
- student table을 s로, location table을 l로 가져온다. 이 둘을 LEFT JOIN하고 이 중 s의 name, s의 location_id, l의 name, l의 distance를 가져온다. 그런데 이중 l.name은 address라는 이름으로 가져온다. LEFT JOIN의 대상 기준은 s의location_id와 l의id가 같을 경우이다.
- JOIN의 경우 직접해보면서 감을 익히는 것이 좋다.
반응형
'💻 CS > 데이터베이스' 카테고리의 다른 글
개체와 속성 (0) | 2021.05.04 |
---|---|
데이터베이스 모델링 개념 (0) | 2021.05.02 |
SQLite - 기본함수 (0) | 2020.07.08 |
SQLite - DB 생성과 변경 (0) | 2020.07.08 |
SQLite - 기초문법 (0) | 2020.07.07 |