SQL
SQL
데이터베이스 명령어
- 테이블 생성
CREATE DATABASE 데이터베이스_이름;
- 데이터베이스 사용
USE 데이터베이스_이름;
- 테이블 생성
CREATE TABLE user ( id int PRIMARY KEY AUTO_INCREMENT, name varchar(255), email varchar(255) );
- 테이블 정보확인
mysql> describe user; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | email | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
SQL 명령어
- SELECT
SELECT 'hello world'
- FROM: 테이블과 관련한 작업을 할 경우 반드시 입력해야 합니다. FROM 뒤에는 결과를 도출해 낼 데이터베이스 테이블을 명시합니다.
SELECT 특성_1 FROM 테이블_이름
- WHERE: 필터 역할을 하는 쿼리문입니다. WHERE은 선택적으로 사용할 수 있습니다.
SELECT 특성_1, 특성_2 FROM 테이블_이름 WHERE 특성_1 = "특정 값" // 동일한 데이터 찾기 WHERE 특성_2 <> "특정 값" // 제외한 값을 찾기 WHERE 특성_2 LIKE "%특정 문자열%" // 비슷한 값들을 필터할 때에는 'LIKE'와 '\%' 혹은 '\*'를 사용 WHERE 특성_2 IN ("특정값_1", "특정값_2") // 리스트의 값들과 일치하는 데이터를 필터할 때에는 'IN' WHERE 특성_1 IS NULL // NULL'을 찾을 때에는 'IS' WHERE 특성_1 IS NOT NULL // 값이 없는 경우를 제외할 때에는 'NOT'
- ORDER BY: 돌려받는 데이터 결과를 어떤 기준으로 정렬하여 출력할지 결정합니다.
SELECT * FROM 테이블_이름 ORDER BY 특성_1 //기본: 오름차순 ORDER BY 특성_1 DESC // 내림차순
- LIMIT
SELECT * FROM 테이블_이름 LIMIT 200 // 200개만 출력
- DISTINCT
SELECT DISTINCT 특성_1 // 특성_1을 기준으로 유니크한 값들만 선택 FROM 테이블_이름 // SELECT DISTINCT // 특성_1, 특성_2, 특성_3의 유니크한 '조합' 값들을 선택 특성_1 ,특성_2 ,특성_3 FROM 테이블_이름
- OUTER JOIN
SELECT * FROM 테이블_1 LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B // 'LEFT OUTER JOIN'으로 LEFT INCLUSIVE을 실행 RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B // 'RIGHT OUTER JOIN'으로 RIGHT INCLUSIVE을 실행
SQL 명령어 예시
– 데이터베이스 생성
CREATE DATABASE my_database;
– 테이블 생성
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
– 데이터 삽입
INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com');
– 데이터 조회
SELECT * FROM users;
– 조건부 데이터 조회
SELECT * FROM users WHERE id = 1;
– 데이터 업데이트
UPDATE users SET email = 'john_new@example.com' WHERE id = 1;
– 데이터 삭제
DELETE FROM users WHERE id = 1;
SQL vs. NoSQL 데이터베이스
차이점
데이터 저장 (Storage)
- SQL: 테이블 형태로 구조화된 데이터 저장.
- NoSQL: 다양한 방식(key-value, document, wide-column, graph)으로 데이터 저장.
스키마 (Schema)
- SQL: 고정된 형식의 스키마 필요. 수정 시 전체 데이터베이스 수정 필요.
- NoSQL: 동적으로 스키마 관리 가능. 새로운 열 추가 시 즉시 가능.
쿼리 (Querying)
- SQL: SQL을 사용하여 구조화된 쿼리 언어로 데이터 요청.
- NoSQL: 비구조화된 쿼리 언어로 데이터 그룹 조회.
확장성 (Scalability)
- SQL: 주로 수직적 확장으로 높은 비용 소요.
- NoSQL: 주로 수평적 확장으로 비용 저렴.
사용 케이스
SQL 데이터베이스
- ACID 성질 필요한 경우: 금융 서비스 등.
- 구조화된 데이터 사용: 데이터 일관성이 필요한 경우.
NoSQL 데이터베이스
- 구조화되지 않은 대용량 데이터 저장: 블로그, SNS 등.
- 비용 효율적 확장이 필요한 경우: 클라우드 서비스 활용.
- 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트: 프로토타입, 개발 초기 단계.
결론
어떤 데이터베이스를 선택할지는 사용 사례에 따라 다릅니다.
보통은 ACID 성질이 필요한 경우에는 SQL, 대용량 및 빠른 확장이 필요한 경우에는 NoSQL을 사용합니다.
종종 두 가지를 혼합하여 사용하여 최상의 결과를 얻습니다.