sql 12

MYSQL - CASE WHEN문

CASE WHEN문 MYSQL에서 다중 조건문을 사용하고 싶을 때 CASE 함수를 사용해서 처리 할 수 있다. CASE문은 WHEN의 조건을 순차적으로 체크하고 조건을 만족한다면 그에 해당하는 THEN 뒤에 있는 값을 반환한다. 모든 조건을 충족하지 않는다면 마지막 ELSE에 해당하는 값을 반환한다. 아래는 CASE함수의 기본 형식이다. CASE WHEN 조건1 THEN 반환값1 WHEN 조건2 THEN 반환값2 ... ELSE 반환값 END - CASE함수 예시 select *, case when price >= 10000 then '비쌈' when price >= 7000 then '적절' else '쌈' end as '가격' from my_db.menu; 메뉴 테이블 조회, 추가 컬럼으로 10000..

sql 2023.01.16

MYSQL - JOIN문

JOIN문 JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해주는 Relation Database에서 가장 많이 쓰이는 구문이다. INNER JOIN(내부 조인) 조인하는 테이블의 ON절의 조건이 일치하는 결과만 출력한다. select * from restaurant as a inner join menu as b on b.restId = a.no; A라는 RESTAURANT테이블과 B라는 MENU테이블의 restid와 no가 같은 교집합의 부분만 출력을 하도록 하는 INNER JOIN의 예시이다. LEFT / RIGHT OUTER JOIN(외부 조인) - LEFT OUTER JOIN 두 테이블이 합쳐질때 왼쪽이냐 오른쪽이냐를 기준으로 기준 테이블의..

sql 2023.01.16

MYSQL - transaction문

트랜잭션(transaction)이란? 트랜잭션(transaction)은 하나의 작업을 위해 더이상 분할될 수 없는 명령들의 모음으로 즉, 한꺼번에 수행되어야 하는 일련의 연산 모음을 의미한다. 예를 들어 계좌이체 과정에서 인출과 입금을 한다고 했을 때 입금하는 연산수행에서 문제가 있어 계속 인출만 되고 입금이 안된다고 했을 때 치명적인 결과가 나타날 수 있다. 그래서 입금수행 문제가 있다면 인출과 입금이 둘 다 불가능하도록 만들어야 한다. 이 두 과정은 동시에 성공하던지 동시에 실패하던지 해야하는데 이 과정을 묶는 것이 트랜잭션(transaction)이다! 트랜잭션(transaction)은 데이터베이스와 어플리케이션의 데이터거래에 있어서 안정성을 확보할 수 있도록 한다. 데이터베이스에서 테이블에 데이터를..

sql 2023.01.16

MYSQL - 숫자/문자열/시간을 다루는 함수

숫자를 다루는 함수 숫자를 다루는 함수들의 예시들이다. select abs(-33); select round(123.44, 1); select ceil(123.44); select floor(123.44); select pow(5,3); select rand(); select pi(); 기능 함수 구조 예시 결과 절댓값 abs(숫자) abs(-33) 33 반올림 round(숫자, 소수점자리) round(123.44, 1) 123.4 올림 ceil(숫자) ceil(123.44) 124 내림 floor(숫자) floor(123.44) 123 거듭제곱 pow(밑,지수) pow(5,3) 5^3 = 125 랜덤함수 rand() rand() 0부터 1사이의 랜덤 변수 파이(π) pi() pi() 3.141593 문..

sql 2023.01.16

MYSQL - CAST/ CONVERT 데이터 형 변환

타입변환 Cast / Convert Cast함수와 Convert함수를 이용하면 기존 있던 데이터를 다른 데이터 타입으로 형변환이 가능해진다. - CAST 함수 형식 CAST(데이터 AS 데이터 타입) - CONVERT 함수 형식 CONVERT(데이터, 데이터 타입) 데이터 타입 BINARY BINARY로 변환 CHAR 문자열로 변환 DATE yyyy-mm-dd의 date로 변환 DATATIME yyyy-mm-dd hh:mm:ss의 datetime으로 변환 DECIMAL 최대자리수와 소수점 이하 자릿수를 지정하여 decimal형으로 변환 SIGNED 값을 부호가 있는 64비트 정수로 변환 UNSIGNED 값을 부호가 없는 64비트 정수로 변환 TIME 값을 hh:mm:ss의 time으로 변환 사용할 수 있..

sql 2023.01.13

MYSQL - UNION/GROUP BY/HAVING/DISTINCT

UNION SELECT department_id, count(*) FROM employees WHERE department_id = 90 UNION SELECT department_id, count(*) FROM employees WHERE department_id = 60 UNION SELECT department_id, count(*) FROM employees WHERE department_id = 70; UNION연산자는 여러 테이블에 존재하는 같은 성격의 값을 한번의 쿼리로 추출할 수 있도록 도와줘서 한번에 값을 같이 보고싶을 때 사용한다. 주의 할 점은 대응하는 필드의 이름과 타입이 같아야 하기 때문에 필드의 이름은 AS를 사용해서 같은 값을 갖게 만든다. 위의 예시는 UNION 동작하는 것을..

sql 2023.01.12

MYSQL - 서브쿼리(Subquery)

서브쿼리(Subquery) 서브쿼리란 하나의 SQL문에 포함되어 있는 또 다른 SQL문을 의미한다. 서브쿼리는 다음과 같이 괄호()로 감싸져서 표현된다. -- IT로 시작하는 부서를 조회 SELECT department_id FROM departments WHERE department_name LIKE 'IT%'; -- 위 부서에서 일하는 직원들 조회 SELECT * FROM employees WHERE department_id IN (60,210,230); -- 위 두개 합치기 SELECT * FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE department_name LIKE 'IT%'); employ..

sql 2023.01.12

MYSQL - 합/평균/최대값/최솟값

필드 연산값 조회 -- 합 select sum(salary) from employees; -- 모든 직원의 연봉의 평균 select avg(salary) from employees; -- 연봉의 최대값 select max(salary) from employees; -- 연봉의 최솟값 select min(salary) from employees; -- 연봉의 최대값 - 최소값 select max(salary)- min(salary) from employees; -- 전화번호가 515로 시작하는 직원 수는? select count(*) from employees where PHONE_NUMBER like '515%'; 테이블을 조회하면서 필드 값의 합이나 평균, 최대값이나 최솟값을 조회하고 싶을 때가 있을 ..

sql 2023.01.12

MYSQL - 테이블 생성/삭제/수정

테이블 생성/삭제 -- 테이블 생성 CREATE table if not exists person( id INT PRIMARY KEY AUTO_INCREMENT, -- AUTO키 설정 name VARCHAR(10), -- 이름(가변길이 제한 10) age INT -- 나이(정수형) ); -- table 전체 없애기 DROP table person; CREATE문을 사용해서 테이블을 생성할 수 있고 필드의 이름과 datatype을 지정해줄 수 있다. 또한 기본키(primary key)를 지정해줄 수 있는데 이는 레코드를 유일하게 식별할 수 있도록 하는 컬럼이다. 그렇기 때문에 null값이 들어갈 수 없으며 unique한 값이어야 한다. 기본키는 직접 값을 입력할 수도 있고 AUTO_INCREMENT 값을 주..

sql 2023.01.12