괴발개발/Database

DB_ 쿼리문 종류별 예시(검색, having, group by, 함수사용)

moonday 2021. 7. 23. 00:32
고객 별 총 주문 수량 select 주문고객, sum(수량) as "주문수량(누적)" from 주문 group by 주문고객;
가입된 고객 중 최고령자의 나이 select max(나이) from 고객;

데이터베이스 > 테이블 > 속성

-- example 데이터베이스 생성
create database example;

-- example 데이터베이스 선택
use example;

 

테이블 생성

create table 고객(
고객아이디 varchar(20) not null,
고객이름 varchar (10) not null,
나이 int,
등급 varchar(10) not null,
직업 varchar(20),
적립금 int default 0,
primary key (고객아이디)
);

 

테이블 안 값 입력

insert into 고객(고객아이디, 고객이름, 나이, 등급, 직업, 적립금)
values("apple", "정소화", "20", "gold", "학생", "1000"),
("banana", "김선우", "25", "vip", "간호사", "2500"),
("carrot", "고명석", "28", "gold", "교사", "4500"),
("orange", "김용욱", "22", "silver", "학생", "0"),
("melon", "성원용", "35", "gold", "회사원", "5000"),
("peach", "오형준", null, "silver", "의사", "300"),
("pear", "채광주", "31", "silver", "회사원","500");

 

-- 고객 명단 확인/검색 (고객의 전체 정보를 확인)

select * from 고객;

 

-- 고객명단에서 고객들의 등급을 확인

-- [all | distinct]를 생략하면 all이 기본값으로 적용
select 등급 from 고객; -- 값이 중복되서 나옴
select distinct 등급 from 고객; -- 중복값을 제거하고 나옴

 

sql페이지를 새로 만들었거나, 현재 테이블과 다른 테이블을 작업하려 할 때
-- 현재 선택된 데이터베이스에 따라 쿼리문이 실행되지 않을 수도 있다
-- 다른 데이터베이스에서 실행을 해야 한다면 데이터베이스 이름을 써줘야돼.
select 등급 from example.고객 이렇게 alter

 

-- 고객의 등급을 확인(고객아이디과 등급을 확인)

select 고객아이디, 등급 from 고객;

 

-- 검색 결과의 속성 이름을 변경하는 키워드 as (해당 검색 결과에서만 바뀜, 실제 속성이름이 영구적으로 바뀌는게 아님)

select 고객아이디 as '아이디', 등급 from 고객;

 

-- 고객아이디가 apple인 고객의 주문 내역 확인

-- 검색할 때 where(조건문)

select * from 주문 where (주문고객 = "apple");

 

 

-- 주문 제품별 총 판매 수량

select 주문제품, sum(수량) as "판매수량" from 주문 group by 주문제품;
-- group by는 where절 다음에 order by 앞에 있어야 한다

 

-- 고객 별 총 주문 수량

select 주문고객, sum(수량) as "주문수량(누적)" from 주문 group by 주문고객;

 

-- 제조업체의 제품수가 3개 이상인 제조업체

select 제조업체 from 제품 group by 제조업체 having count(*)>=3;
-- having : 그룹에서 조건을 걸 고 싶을 때, 사용하는 절로 집계함수를 이용할 수 있다.
-- where절에서는 집계함수(min, max, ..) 이용이 안됨 따라서 group by 뒤로가서 having 을 사용해서 조건을 달면됨(집계함수 사용가능).