본문 바로가기

DataBase

(23)
서브쿼리 (SubQuery) (Maria DB) 서브쿼리 - 쿼리문 안에 쿼리문 ()안에 쿼리문을 작성하는 것을 서브쿼리라고 한다. SELECT 컬럼명 FROM 테이블명 WHERE 조건식 (서브쿼리); 예제1) Ipoh coffee 이름의 상품보다 큰 상품들을 조회하고 싶다. 1. Ipoh coffee 의 가격을 먼저조회 SELECT Price FROM products WHERE ProductName = 'Ipoh coffee'; -- 46.00 2. 서브 쿼리 없이 기존 조회 방법 (WHERE 절에 Ipoh coffee 가격을 비교연산자 통해 조회) SELECT ProductName, Price FROM products WHERE Price > 46.00 ORDER BY Price DESC; 3. 서브 쿼리 활용 - 1번의 조회 쿼리를 서브쿼리로 활..
JOIN - 테이블 끼리 결합 (Maria DB) JOIN - 테이블 끼리 결합 SELECT 컬럼명 FROM 첫번째 테이블명 JOIN 두번째 테이블명; -- ON과 WHERE가 들어간걸 많이 사용 SELECT 컬럼명 FROM 첫번째 테이블명 JOIN 두번째 테이블명 ON 테이블 조건식 WHERE 조건식; SELECT * FROM table_a JOIN table_b; -- 두 테이블 결합하면 -- 첫번째 테이블 왼쪽 끝에 두번째 테이블이 붙고 -- 조회된 레코드 수는 A테이블 row * B테이블 row -- 컬럼 수는 A테이블 열 + B테이블 열 올바르게 카테고리가 1. 음료수 / 2. 반찬인걸 정확하게 알고 싶다면 조건식을 추가해 조회 SELECT * FROM table_a JOIN table_b WHERE table_a.category_id = ta..
데이터베이스 정규화(Normalization) 데이터베이스 정규화 (NORMALIZATION) 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. 1. 첫번째 정규화(FIRST NORMAL FORM) 1NF 원자적 데이터를 가진 테이블, PK 컬럼이 있어야함 원자적 데이터란? 한 컬럼의 어떤 행에 하나의 데이터만 들어가있어야 함 1NF가 아닌 테이블 예) 1. skill 컬럼이 원자적 데이터 형태가 아님 2. PK컬럼이 없음 1NF 특징을 가진 테이블 2. 두번째 정규화 (SECOND NORMAL FORM) 2NF 1NF 조건을 충족시키고, 부분적 함수 의존이 없어야함 부분적 함수 의존 (partial functional dependency) 이란? -키가 아닌 컬럼의 값이 키 ..
DATABASE, SCHMA / Table 생성하기 (Maria DB) CREATE - DATABASE, SCHMA, Table 생성하기 DATABASE, SCHMA 만들기 -- DATABASE, SCHEMA 만들기 CREATE DATABASE 데이터베이스명; Table 만들기 CREATE TABLE 테이블명 (컬럼명 컬럼타입 제약사항, 컬럼명 컬럼타입 제약사항, ...); 컬럼 타입 INT (정수형) CREATE TABLE 테이블명 (컬럼명 INT, 컬럼명 INT); DEC (실수형) CREATE TABLE 테이블명 (컬럼명 DEC(길이, 소수점 자리 수)); -- DEC(2,1) := 1.2 -- DEC(3,2) := 12.3 -- DEC(5,2) := 123.45 VARCHAR (문자열) CREATE TABLE 테이블명 (컬럼명 VARCHAR(문자 길이)); CREAT..
Maria DB SQL 쿼리문 위 sql create schema 기준으로 작성 기본 문법 SELECT 칼럼명 FROM 테이블명 WHERE 조건식; SELECT 칼럼명 FROM 테이블명 - 조회 -- * 전체 SELECT * FROM customers; -- 필요한 컬럼만 조회 SELECT CustomerName, Country, CustomerID FROM customers; DISTINCT - 중복제거 SELECT DISTINCT 칼럼명 FROM 테이블명; -- DISTINCT 중복 제거 SELECT DISTINCT Country FROM customers; COUNT - 행의 수 SELECT COUNT(칼럼명) FROM 테이블명; -- COUNT 행(row, record)의 수 SELECT COUNT(Country) FROM c..
MYSQL merge into (update, insert) MYSQL pk 값 중 중복된 값이 있으면 update하고 값이 없으면 insert 하는 쿼리문 나는 기존에 각각 개별로 만들어서 사용했지만 해당 쿼리를 사용하면 한번에 처리 가능 INSERT INTO 테이블명(칼럼명, 칼럼명, 칼럼명, 칼럼명) VALUES (값, 값, 값, 값) ON DUPLICATE KEY UPDATE 칼럼명 = 값, 칼럼명 = 값, 칼럼명 = 값, 칼럼명 = 값; 1. pk 값으로 조회 됨 2. pk 값이 value 값에 무조건 포함
SQL 문법 예시 DB 문법 USE - 데이터 베이스를 지정할 때 SELECT, FROM, WHERE - 조회 / *이 세 개는 세트로 거의(99%) 같이 쓰인다 SELECT - 테이블 내 기준이 되는 목록을 지정 SELECT 별칭 FROM - DB안에 테이블을 지정 WHERE - 조회 조건을 지정 SELECT 열_이름 FROM 테이블_이름 WHERE 조건식 GROUP BY 열_이름 HAVING 조건식 ORDER BY 열_이름 LIMIT 숫자 SELECT SUM() ORDER BY / ASC, DESC LIMIT DISTINCT - SELECT 뒤에 GROUP BY(집계 함수) / HAVING(조건) 순서 잘 지켜야함 CREATE TABLE 테이블명 (기준목록1 데이터 타입, 기준목록2 데이터 타입, 기준목록3 데이..