목록[Study]/Database (29)
기록
상품분류 레코드 중 중복을 제외한 값 종류의 수만 구하고 싶다면? 중복값을 제외하고 행 수를 계산하면 되는데, 이는 DISTINCT 키워드를 COUNT함수의 인수로 사용하면 된다. SELECT COUNT(DISTINCT goods_classify) FROM Goods; /* 결과 3 */ 이 때 DISTINCT는 반드시 괄호 안에 기술해야 한다. 먼저 goods_classify 열의 중복값을 제외한 후에 행 수를 계산하고 있기 때문이다. DISTINCT는 COUNT 함수 뿐만 아니라 집약함수라면 어디든지 사용할 수 있다. SELECT SUM(sell_price), SUM(DISTINCT sell_price) From Goods 오른쪽 합계가 왼쪽 합계보다 500원이 더 적은 결과가 나오는데, 이것은 판매..
나머지 네 가지 집약 함수의 사용법에 대해 알아보자. 구문은 기본적으로 COUNT함수와 동일하나, 언급했다시피 별표를 인수로 사용할 수 없다. [SUM 함수] 복수의 행으로부터 합계를 구하는 법을 알아보자. SELECT SUM(sell_price) From Goods; SELECT SUM(sell_price) AS 판매단가, SUM(buy_price) AS 매입단가 From Goods; 여기서, NULL은 0으로 치부되는게 아니라 처음부터 계산식에 포함되지 않는다. 집약함수는 NULL을 제외한다. 단, COUNT(*)만은 예외적으로 NULL을 포함한다. [AVG 함수] 복수의 행으로부터 평균 값을 구하는 법을 알아보자. SELECT AVG(sell_price) From Goods; (값의 합계)/(값의 ..
SQL로 데이터에 어떠한 처리나 계산을 하려면 '함수'라는 도구를 사용한다. SQL에는 다양한 집계함수가 마련되어 있지만, 우선 대표적인 다음의 다섯가지 함수가 있다. COUNT : 테이블 레코드 수(행 수)를 계산한다 SUM : 숫자열 데이터의 합계를 구한다 AVG : 숫자열 데이터의 평균을 구한다 MAX : 임의 열이 가진 데이터의 최댓값을 구한다 MIN : 임의 열이 가진 데이터의 최솟값을 구한다 이와 같은 집계용 함수를 집약함수라고 한다. 집약이란, '복수의 행을 하나의 행으로 모은다'라는 의미다. 실제로도 모든 집약함수는 복수 행을 입력 데이터로 받으며, 출력하는 데이터는 단일 행이다. [전체 행 수 계산하기] SELECT COUNT(*) FROM Goods; /* 8 */ COUNT() 안에 ..
'상품분류가 사무용품' 그리고 '등록일이 2019년 9월 11일 또는 2019년 9월 20일' 이 검색조건을 쿼리로 표현하면 다음과 같다. SELECT goods_name, goods_classify, register_date FROM Goods WHERE goods_classify = '사무용품' AND register_date = '2019-09-11' OR register_date = '2019-09-20'; 하지만 이를 실행하면 사무용품이나 주방용품 등 불필요한 요소까지 포함해버린다. AND연산자가 OR연산자보다 우선순위가 높기 때문이다. 따라서, 괄호를 이용하여 다음과 같이 수정한다. SELECT goods_name, goods_classify, register_date FROM Goods WH..
NULL인 행은 임의의 숫자에 대해 비교연산자를 수행해도 출력되지 않는다. ~~~~ where buy_price = NULL; 이 또한 잘못된 구문이다. SQL에는 NULL을 판별하기 위한 전용 연산자 IS NULL이 존재한다. select goods_name, buy_price From Goods where buy_price IS NULL; 실행 결과 goods_name buy_price 포크 볼펜 반대로, NULL이 아닌 행을 선택하고 싶은 경우에는 IS NOT NULL이라는 연산자를 사용한다. select goods_name, buy_price from Goods where buy_price IS NOT NULL; NULL인 행을 선택하려면 조건식(where절)에 IS NULL 연산자를 사용한다. ..
[산술연산자] SQL 문에도 계산식을 쓸 수 있다. 다음 SELECT 문은 각 상품의 두개분 가격을 "sell_price_X2" 열로 출력한다. select goods_name, sell_price, sell_price * 2 as "sell_price_X2" from Goods; SQL 문에서 사용 가능한 사칙연산 기호는 +, -, *, / 이다. NULL을 포함하는 연산은 무조건 결과가 NULL이 됨으로 주의. ex) 5 + NULL = NULL [비교연산자] =, (~와 같지않다), >=, >, '2'; 실행결과로는 3, 222가 출력된다. 문자열형 데이터의 대소를 비교할 때는 숫자와는 달리 '사전식 순서'가 적용된다. 사전식 순서로 나열하면 1, 10, 11, 2, 222, 3
Goods 테이블에서 어떤 상품의 분류(goods_classify)가 등록되어 있는지 알고 싶다면, 중복을 제외한 데이터를 얻는 것이 바람직하다. 중복을 제외한 결과를 얻고 싶을 때는 select 구에 distinct라는 키워드를 사용한다. select distinct goods_classify from Goods; goods_classify 주방용품 의류 사무용품
select 구에는 별명뿐만 아니라 상수도 쓸 수 있다. select '상품' as munja, 38 as num, '2019-07-24' as nalja, goods_id, goods_name from Goods; munja num nalja goods_id goods_name 상품 38 2019-07-24 0001 티셔츠 상품 38 2019-07-24 0002 펀칭기
SQL 문에서는 AS 키워드를 이용하여 열에 별명을 붙일 수 있다. select good_id as id, goods_name as name, buy_price as price from Goods; 별명을 한글로도 사용할 수 있는데, 이때는 큰따옴표를 사용한다. 큰따옴표를 사용하면 공백을 포함한 별명도 가능하다. 단, 큰따옴표 붙이는 것을 잊어버리고 에러가 나는 경우가 있으니 권장 사항은 아니다. 대신에 good_리스트처럼 언더바를 사용하자. select goods_id as "상품ID", goods_name as "상품명", buy_price as "매입단가" from Goods; 별명은 select문 실행 결과를 보다 이해하기 쉽고 다루기 쉽게 하려고 사용한다.