SQL 기초

bitna's study note·2022년 4월 7일
0

SQL

목록 보기
5/12

04월 07일 내용정리

  1. select 열이름 as 별명 ...from 테이블명 where 조건 order by 정렬, 생략하면 오름차순정렬
  2. '*' (전체라는 의미)쓰는것도 좋지만 해당 속성명을 다 써주는것이 좀더 좋음

3.중복된 자료를 하나만 검색하는것 (중복된 결과를 제거): distinct

4.select 열이름 as 별명,... from 테이블명 where 조건 group by 그룹지을열이름 having 그룹의 조건 order by 정렬;
group by 는 단독으로 쓰이지 않음.
여기서'group by 열이름' 그룹을 만들 열 을쓴다.
'order by 열이름' 정렬이 필요한 열 을쓴다.

5.집계함수(=그룹함수) where절에서는 집계함수를 사용할수 없음. 사용할려면 하위쿼리를 활용.
sum(열이름): 합계, 열이름에 대한것만
sum(수식): 합계, 수식에 대한것만
avg():평균
max():최대값
min():최소값
count():개수
count(distinct):중복은 하나만
count(*):모든 행의 개수(null인 행도 셈)
count(열이름):null 제외한 행의 개수

6.concat(값1,값2...) =>값1값2...연결하여 출력

7.소수점 구하는 방법 & 천단위구분기호(,)를 써서 표현: format(식 or 숫자, 소수자릿수)
예)select mem_id, format(sum(price amount), 0) "총 주문 금액" from buyTBL group by mem_id having sum(price amount) >=1000;

8.집계함수는 where절에 사용할수 없다. where절 대신해서 having을 사용하기

9.null 자료만 표기 : is null
not null자료만 표기: is not nul
null대신 "값없음" 으로 표기하고 싶을때->if(조건, 조건의 결과가 참일때 실행할값, 거짓일때 실행할 값)->if(phone1 is null,"값없음", phone1)

10.if(조건, 조건의 결과가 참일때 실행할값, 거짓일때 실행할 값)

use market_db;

select * from buyTBL;
select * from memTBL;
select mem_name as "그룹이름", addr as "주소" from memTBL where addr="경기" or addr="서울";
select mem_name as "그룹이름", addr as "주소" from memTBL where addr="경기" or addr="서울" order by mem_name; -- addr 기준으로 오름차순하고 addr이 같은 자료들은 mem_number  기준으로 내림차순 정렬
select mem_name as "그룹이름", addr as "주소" from memTBL where addr="경기" or addr="서울" order by mem_name desc; 

select * from memTBL order by addr asc, mem_number desc;
-- 전체 테이블에서 해당속성만 검색하기
select addr from memTBL;

select distinct addr from memTBL;

select mem_id as "회원ID", price as "가격", amount as "총합" from buyTBL group by mem_id ;


select mem_id as "회원아이디", sum(amount) as "합계", avg(amount) as "평균" from buyTBL group by mem_id;

select mem_id, count(*) "구매건수" from buyTBL group by mem_id;

select mem_id, concat(count(*),"건") "구매건수" from buyTBL group by mem_id;

select mem_id, sum(amount) 합계, avg (amount) 평균, max(amount) 평균, min(amount) 최소값, count(*) 구매건수
from buyTBL group by mem_id;


select mem_id, sum(amount) 합계, format(avg (amount),1) 평균, max(amount) 평균, min(amount) 최소값, count(*) 구매건수
from buyTBL group by mem_id;

select mem_id, format(sum(price*amount),0) "총주문금액" from buyTBL group by mem_id;

-- 집계함수는 where절에 사용할수 없다. 그러므로 아래건은 에러
select mem_id from buyTBL where 1000<=sum(price*amount) group by mem_id; 

-- where절 대신해서 having을 사용하기
select mem_id from buyTBL group by mem_id having 1000<=sum(price*amount); 

-- format형식으로 사용하기
select mem_id, format(sum(price * amount), 0) "총 주문 금액" from buyTBL group by mem_id having sum(price * amount) >=1000;

select mem_name, addr from memTBL where phone1 is null;

select mem_name, addr from memTBL where phone1 is not null;


select mem_name, if(phone1 is null,"값없음", phone1) as phone2 from memTBL;

profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보