벨로그가 제목을 적지 않으면 임시저장이 안된다는걸 지금 알아버린 1인...
알고싶지 않았는데 말이죠.....
기본 미션: p. 138의 확인 문제 2번 풀고 인증하기
DROP DATABASE IF EXISTS market_db; -- 만약 market_db가 존재하면 우선 삭제한다.
CREATE DATABASE market_db;
기존의 데이터베이스를 삭제한 뒤 데이터베이스를 새로 만듦
USE market_db;
CREATE TABLE member -- 회원 테이블
( mem_id CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
mem_name VARCHAR(10) NOT NULL, -- 이름
mem_number INT NOT NULL, -- 인원수
addr CHAR(2) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
phone1 CHAR(3), -- 연락처의 국번(02, 031, 055 등)
phone2 CHAR(8), -- 연락처의 나머지 전화번호(하이픈제외)
height SMALLINT, -- 평균 키
debut_date DATE -- 데뷔 일자
);
VARCHAR = CHAR와 동일하게 문자를 입력하는 것
CREATE TABLE buy -- 구매 테이블
( num INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
mem_id CHAR(8) NOT NULL, -- 아이디(FK)
prod_name CHAR(6) NOT NULL, -- 제품이름
group_name CHAR(4) , -- 분류
price INT NOT NULL, -- 가격
amount SMALLINT NOT NULL, -- 수량
FOREIGN KEY (mem_id) REFERENCES member(mem_id)
);
구매 테이블 생성후 회원테이블 만들었던것과 같이 만들어줌
AUTO_INCREMENT = 순번을 입력할 필요없이 자동으로 숫자를 입력해줌
SELECT * FROM member;
SELECT * FROM buy;
입력된 내용을 확인해주기 위해서 SELECT로 조회해줌
이런식으로 테이블을 완성시켰다.
USE 데이터베이스_이름
SELECT문을 실행하기 전 사용할 데이터베이스를 지정해야함
만약 market_db를 사용한다면 쿼리창에 USE market_db 입력
USE market_db;
SELECT * FROM member;
member 테이블에서 모든 열의 내용을 가져오라는 의미
SELECT * FROM market_db.member;
원래 테이블의 전체 이름은 데이터베이스이름.테이블이름 형식으로 표현함
원칙적으로는 위와 같이 사용하는게 옳은 방법
하지만 데이터베이스 이름을 생략하면 USE문으로 지정해놓은 데이터베이스가 자동으로 선택되기에 두 쿼리가 동일한 것이 됨
SELECT 열_이름 FROM 테이블_이름 WHERE 조건식;
찾는 이름이 블랙핑크라면 다음과 같은 조건식을 사용하면 됨
데뷔일자가 빠른 순서대로 출력
만약 데뷔일자가 늦은 순서대로 출력하고 싶다면 맨 마지막에 DESC를 붙이면 됨
출력하는 개수를 제한함
이렇게 사용하게 되면 앞에서 3건만 조회 가능함
조회된 결과에서 중복된 데이터를 1개만 남김
이런식으로 즁복된 데이터를 1개만 남기고 제거하는 것을 볼 수 있다.
함수명 | 설명 |
---|---|
SUM() | 합계를 구함 |
AVG() | 평균을 구함 |
MIN() | 최소값을 구함 |
MAX() | 최대값을 구함 |
COUNT() | 행의 개수를 셈 |
COUNT(DISTINCT) | 중복은 1개만 인정하고 행의 개수를 셈 |
이렇게 각 회원별로 구매한 개수를 합쳐서 출력할 수 있음
집계 함수에 대한 조건을 제한함
총 구매액이 1000이상인 회원만 나타내게 한 것이다.
WHERE도 사용가능 할 것 같아 보이지만 WHERE절은 집계함수와 관련되어 사용할 수 없다.
테이블에 행 데이터를 입력하는 기본적인 SQL문은 INSERT임
기본적인 형식
INSERT INTO 테이블 [(열1, 열2, ... )] VALUES (값1, 값2 ...)
world.city 테이블의 내용을 city_popul 테이블에 입력해보았다.
이렇게 다른 테이블의 데이터를 한번에 가져왔다.
UPDATE 테이블_이름
SET 열1 = 값1, 열2 = 값2, ...
WHERE 조건;
이렇게 도시이름중에서 seoul을 서울로 변경해주었다.
기본 형식은 이렇다
DELETE FROM 테이블이름 WHERE 조건;
city_popul테이블에서 new로 시작하는 도시를 삭제하기 위해 입력해준 코드이다.