Database
-
NOT NULL 해당 컬럼에는 NULL 값을 입력해서는 안된다. CREATE TABLE 테이블명 ( 컬럼명 int NOT NULL ); UNIQUE 해당 컬럼 안에서는 모든 행의 데이터가 각각 다른 데이터여야한다. CREATE TABLE 테이블명 ( 컬럼명 int UNIQUE ); 가장 하단에 UNIQUE(컬럼명1, 컬럼명2, ...) 처럼도 사용할 수 있다. CREATE TABLE 테이블명 ( 컬럼명1 int, 컬럼명2 varchar(100), UNIQUE(컬럼명1, 컬럼명2) ); 그러나 이렇게 사용할 경우, 컬럼명1과 컬럼명2의 값이 둘 다 같을 경우에만 제약을 건다. 즉, 컬럼명1의 데이터는 같지만 컬럼명2의 데이터만 다르다면 저장을 허용한다. CHECK( ) check() 안에 컬럼에 들어갈 제..
[MySQL] 컬럼에 Constraints 설정NOT NULL 해당 컬럼에는 NULL 값을 입력해서는 안된다. CREATE TABLE 테이블명 ( 컬럼명 int NOT NULL ); UNIQUE 해당 컬럼 안에서는 모든 행의 데이터가 각각 다른 데이터여야한다. CREATE TABLE 테이블명 ( 컬럼명 int UNIQUE ); 가장 하단에 UNIQUE(컬럼명1, 컬럼명2, ...) 처럼도 사용할 수 있다. CREATE TABLE 테이블명 ( 컬럼명1 int, 컬럼명2 varchar(100), UNIQUE(컬럼명1, 컬럼명2) ); 그러나 이렇게 사용할 경우, 컬럼명1과 컬럼명2의 값이 둘 다 같을 경우에만 제약을 건다. 즉, 컬럼명1의 데이터는 같지만 컬럼명2의 데이터만 다르다면 저장을 허용한다. CHECK( ) check() 안에 컬럼에 들어갈 제..
2023.03.06 -
DDL (Data Definition Language) 데이터베이스 생성 CREATE DATABASE 데이터베이스명 데이터베이스 삭제 DROP DATABASE 데이터베이스명 데이터베이스에 테이블 생성 CREATE TABLE 데이터베이스명.테이블명 ( 컬럼1명 datatype, 컬럼2명 datatype, ... ); ※ 마지막 컬럼에는 "," 가 들어가서는 안된다! mart라는 데이터베이스에 id, 상품명, 가격 정보가 들어있는 product 테이블을 만들고 싶다. CREATE TABLE mart.product ( id int, 상품명 varchar(100), 가격 int ); 컬럼에 데이터를 넣어줄 때, 특정 값에는 값이 없다면 DEFAULT를 통해 default 값을 설정해줄 수 있다. CREATE T..
[MySQL] DDL (테이블/컬럼 생성/수정/삭제)DDL (Data Definition Language) 데이터베이스 생성 CREATE DATABASE 데이터베이스명 데이터베이스 삭제 DROP DATABASE 데이터베이스명 데이터베이스에 테이블 생성 CREATE TABLE 데이터베이스명.테이블명 ( 컬럼1명 datatype, 컬럼2명 datatype, ... ); ※ 마지막 컬럼에는 "," 가 들어가서는 안된다! mart라는 데이터베이스에 id, 상품명, 가격 정보가 들어있는 product 테이블을 만들고 싶다. CREATE TABLE mart.product ( id int, 상품명 varchar(100), 가격 int ); 컬럼에 데이터를 넣어줄 때, 특정 값에는 값이 없다면 DEFAULT를 통해 default 값을 설정해줄 수 있다. CREATE T..
2023.03.06 -
IF 조건에 따라 값을 넣고 싶을 경우 사용 IF(조건식, 조건이 참일 때 출력값, 조건이 거짓일 때 출력값) 게임들 중 다운로드 수가 40이상인 것은 "추천", 아니면 "보통"이라는 값을 출력하고 싶다. SELECT 다운로드, IF(다운로드 >=40, "추천", "보통") FROM steam.game; CASE IF는 양자택일만 가능하나, CASE는 여러 조건을 사용 가능하다. 문자나 숫자같은 데이터넣는 자리에 CASE 문법을 넣을 수 있다. CASE WHEN 조건식1 THEN 결과값1 WHEN 조건식2 THEN 결과값2 WHEN 조건식3 THEN 결과값3 END 다운로드가 40회 이상이면 "A", 40회 미만 10회 이상이면 "B", 10회 미만이면 "C" 등급을 매기고 싶다. SELECT 다운로드,..
[MySQL] IF / CASEIF 조건에 따라 값을 넣고 싶을 경우 사용 IF(조건식, 조건이 참일 때 출력값, 조건이 거짓일 때 출력값) 게임들 중 다운로드 수가 40이상인 것은 "추천", 아니면 "보통"이라는 값을 출력하고 싶다. SELECT 다운로드, IF(다운로드 >=40, "추천", "보통") FROM steam.game; CASE IF는 양자택일만 가능하나, CASE는 여러 조건을 사용 가능하다. 문자나 숫자같은 데이터넣는 자리에 CASE 문법을 넣을 수 있다. CASE WHEN 조건식1 THEN 결과값1 WHEN 조건식2 THEN 결과값2 WHEN 조건식3 THEN 결과값3 END 다운로드가 40회 이상이면 "A", 40회 미만 10회 이상이면 "B", 10회 미만이면 "C" 등급을 매기고 싶다. SELECT 다운로드,..
2023.03.04 -
GROUP BY 1. GROUP BY 컬럼명 → 컬럼명 같은 값끼리 모아줌 2. 집계함수 사용 (avg, count ...) 게임 카테고리 별로 평균 가격을 계산하고 싶다. SELECT 카테고리, avg(가격) FROM steam.game GROUP BY 카테고리; GROUP BY 컬럼명 HAVING 조건식 GROUP BY한 결과를 필터링 하고 싶을 때 사용 게임 카테고리 별로 평균 가격을 계산한 것 중 RPG랑 생존 카테고리의 게임만 보고 싶다. SELECT 카테고리, avg(가격) FROM steam.game GROUP BY 카테고리 HAVING 카테고리 IN ("RPG", "생존"); 게임 카테고리 별로 평균 가격을 계산한 것 중 로그라이크 라는 단어가 들어간 카테고리의 게임만 보고 싶다. SELE..
[MySQL] 그룹지어 통계내기 (GROUP BY)GROUP BY 1. GROUP BY 컬럼명 → 컬럼명 같은 값끼리 모아줌 2. 집계함수 사용 (avg, count ...) 게임 카테고리 별로 평균 가격을 계산하고 싶다. SELECT 카테고리, avg(가격) FROM steam.game GROUP BY 카테고리; GROUP BY 컬럼명 HAVING 조건식 GROUP BY한 결과를 필터링 하고 싶을 때 사용 게임 카테고리 별로 평균 가격을 계산한 것 중 RPG랑 생존 카테고리의 게임만 보고 싶다. SELECT 카테고리, avg(가격) FROM steam.game GROUP BY 카테고리 HAVING 카테고리 IN ("RPG", "생존"); 게임 카테고리 별로 평균 가격을 계산한 것 중 로그라이크 라는 단어가 들어간 카테고리의 게임만 보고 싶다. SELE..
2023.03.04 -
1개의 문자나 숫자를 뱉는 SELECT 문만 서브쿼리로 사용할 수 있다. 서브쿼리를 사용할 때 소괄호를 사용해야한다. 가격이 전체 게임의 평균 가격보다 높은 게임만 출력하고 싶다. SELECT * FROM steam.game WHERE 가격 > (SELECT avg(가격) FROM steam.game) 게임명, 다운로드, 게임의 다운로드 수와 평균 다운로드 수의 차이를 DIFF 라는 컬럼의 이름으로하는 세가지 정보를 출력하고 싶다. SELECT 게임명, 다운로드, 다운로드 - (SELECT AVG(다운로드) FROM steam.game) AS DIFF FROM steam.game; ※ 그러나 IN( )안에 서브쿼리를 사용할 때는 1개의 문자나 숫자를 뱉는 SELECT 문만 사용할 수 있는 것이 아니다! ..
[MySQL] 서브쿼리1개의 문자나 숫자를 뱉는 SELECT 문만 서브쿼리로 사용할 수 있다. 서브쿼리를 사용할 때 소괄호를 사용해야한다. 가격이 전체 게임의 평균 가격보다 높은 게임만 출력하고 싶다. SELECT * FROM steam.game WHERE 가격 > (SELECT avg(가격) FROM steam.game) 게임명, 다운로드, 게임의 다운로드 수와 평균 다운로드 수의 차이를 DIFF 라는 컬럼의 이름으로하는 세가지 정보를 출력하고 싶다. SELECT 게임명, 다운로드, 다운로드 - (SELECT AVG(다운로드) FROM steam.game) AS DIFF FROM steam.game; ※ 그러나 IN( )안에 서브쿼리를 사용할 때는 1개의 문자나 숫자를 뱉는 SELECT 문만 사용할 수 있는 것이 아니다! ..
2023.03.04 -
컬럼 데이터 사칙연산 모든 게임 가격을 10% 할인된 가격으로 계산해서 확인하고 싶다. SELECT 게임명, 가격 * 0.9 FROM steam.game; 문자끼리 이어붙이기 (CONCAT) "게임명_카테고리"로 붙여서 출력하고 싶다. SELECT concat(게임명, "_" ,카테고리) FROM steam.game; 문자 좌우 공백제거 (TRIM) 파이썬의 strip같은 역할 SELECT TRIM(게임명) FROM steam.game; 기존 저장되어있는 단어를 바꿔서 출력 (REPLACE) REPLACE(컬럼명, 바뀔단어, 바꿀단어) 카테고리의 "퍼즐"을 "puzzle"로 영어로 바꿔서 출력하고 싶다. SELECT 게임명, REPLACE(카테고리, "퍼즐", "puzzle") FROM steam.gam..
[MySQL] 컬럼 데이터 조작 (CONCAT, TRIM, REPLACE, SUBSTR, INSERT)컬럼 데이터 사칙연산 모든 게임 가격을 10% 할인된 가격으로 계산해서 확인하고 싶다. SELECT 게임명, 가격 * 0.9 FROM steam.game; 문자끼리 이어붙이기 (CONCAT) "게임명_카테고리"로 붙여서 출력하고 싶다. SELECT concat(게임명, "_" ,카테고리) FROM steam.game; 문자 좌우 공백제거 (TRIM) 파이썬의 strip같은 역할 SELECT TRIM(게임명) FROM steam.game; 기존 저장되어있는 단어를 바꿔서 출력 (REPLACE) REPLACE(컬럼명, 바뀔단어, 바꿀단어) 카테고리의 "퍼즐"을 "puzzle"로 영어로 바꿔서 출력하고 싶다. SELECT 게임명, REPLACE(카테고리, "퍼즐", "puzzle") FROM steam.gam..
2023.03.03 -
최대/최소값 찾기 (MAX/MIN) steam 게임들 중 제일 비싼 가격의 게임을 찾고싶다. → MAX() steam 게임들 중 제일 싼 가격의 게임을 찾고싶다. → MIN() SELECT max(가격) FROM steam.game; 게임들 중 최대 가격과 최대 다운로드 수를 확인하고 싶다. SELECT MAX(가격) AS 최대가격, MAX(다운로드) AS 최대다운로드수 FROM steam.game; ※ MIN/MAX를 사용하지 않고 최대/최소를 구하기 → 데이터가 너무 많은 경우 정렬을 한다음 맨 위의 자료를 가져오는게 더 빠를 때도 있다. # 정렬 후 제일 상단 값 가져오기 SELECT 가격 FROM steam.game ORDER BY 가격 ASC LIMIT 1; SELECT 가격 FROM steam..
[MySQL] 통계 (MIN, MAX, AVG, SUM)최대/최소값 찾기 (MAX/MIN) steam 게임들 중 제일 비싼 가격의 게임을 찾고싶다. → MAX() steam 게임들 중 제일 싼 가격의 게임을 찾고싶다. → MIN() SELECT max(가격) FROM steam.game; 게임들 중 최대 가격과 최대 다운로드 수를 확인하고 싶다. SELECT MAX(가격) AS 최대가격, MAX(다운로드) AS 최대다운로드수 FROM steam.game; ※ MIN/MAX를 사용하지 않고 최대/최소를 구하기 → 데이터가 너무 많은 경우 정렬을 한다음 맨 위의 자료를 가져오는게 더 빠를 때도 있다. # 정렬 후 제일 상단 값 가져오기 SELECT 가격 FROM steam.game ORDER BY 가격 ASC LIMIT 1; SELECT 가격 FROM steam..
2023.03.03 -
특정 단어 검색 (LIKE) ▮ % 카테고리가 로그라이크 장르인 게임들만 출력하고 싶다. (액션 로그라이크도 포함해서) LIKE 뒤에 검색어를 적으면 그 글자만 정확히 들어있는 행만 찾아주기 때문에 와일드카드인 %를 붙여주어야 한다. (%는 아무 글자를 의미한다고 보면 된다.) SELECT * FROM steam.game WHERE 카테고리 LIKE "%로그라이크%"; 카테고리에 로그라이크가 들어있거나 RPG가 들어있는 게임들만 출력하고 싶다. SELECT * FROM steam.game WHERE 카테고리 LIKE "%로그라이크%" OR 카테고리 LIKE "%RPG%"; ▮ _ "_"도 "%"처럼 아무 글자를 의미하는데 차이점이 있다면 % : 아무 글자 0자부터 무한개까지를 의미 _ : 아무 글자 딱 ..
[MySQL] 특정 단어 검색 (LIKE)특정 단어 검색 (LIKE) ▮ % 카테고리가 로그라이크 장르인 게임들만 출력하고 싶다. (액션 로그라이크도 포함해서) LIKE 뒤에 검색어를 적으면 그 글자만 정확히 들어있는 행만 찾아주기 때문에 와일드카드인 %를 붙여주어야 한다. (%는 아무 글자를 의미한다고 보면 된다.) SELECT * FROM steam.game WHERE 카테고리 LIKE "%로그라이크%"; 카테고리에 로그라이크가 들어있거나 RPG가 들어있는 게임들만 출력하고 싶다. SELECT * FROM steam.game WHERE 카테고리 LIKE "%로그라이크%" OR 카테고리 LIKE "%RPG%"; ▮ _ "_"도 "%"처럼 아무 글자를 의미하는데 차이점이 있다면 % : 아무 글자 0자부터 무한개까지를 의미 _ : 아무 글자 딱 ..
2023.03.03