SQL 기초 - Select문(싱글테이블)
[ Insert 문 ]
나머지를 진행하기 이전에 가장 우선될 것은 데이터를 입력하는 것이다. 다음과 같이 MySQL 콘솔창에 데이터를 다음과 같이 입력을 해주자. INSERT에서 어려운 점은 constraint 조건에 따른 내용들인데, 이는 이 글에 정리되어있으니 보길 바란다. 어려운 부분이 없어서 넘기도록 하겠다.
CREATE DATABASE study_mysql;
USE study_mysql;
DROP table if exists member;
CREATE TABLE member (
member_id CHAR(8) PRIMARY KEY,
group_id CHAR(10),
member_phone CHAR(20) NOT NULL,
member_age INT,
member_salary INT
);
INSERT INTO member values ('Tommy', 'A', '01011111111', 30, 1000);
INSERT INTO member values ('Json', 'A', '01022222222', 50, 2000);
INSERT INTO member values ('Smith', 'B', '01033333333', 40, 2000);
INSERT INTO member values ('Amy', 'B', '01044444444', 10, 1500);
INSERT INTO member values ('John', 'B', '01055555555', 20, 1000);
INSERT INTO member values ('Hance', null, '0105555544', 25, 1200);
[ select 문 ]
SELECT는 각각의 예제를 살펴보면서 자연스럽게 익히는게 좋다.
예제 1. Member 테이블의 모든 Member 조회
SELECT * from Member;
예제 2. 데이터 프로젝션 하기, member_id와 member_age만 출력(민감 정보인 데이터 제거)
SELECT member_id, member_age from Member;
[ where 절 추가 ]
예제 3. Member 테이블에서 나이가 40인 사람 조회
SELECT * from Member where member_age = 40;
예제 4. Member 테이블에서 나이가 30이상인 사람 조회
SELECT * from Member where member_age >= 30;
예제 5. Member 테이블에서 나이가 10살, 30살, 40살인 사람 조회
SELECT * from Member where member_age in (10, 30, 40);
예제 6. Member 테이블에서 이름이 J로 시작하는 사람 조회
SELECT * from Member where member_id like 'J%';
예제 7. 010으로 시작하고 뒷 번호가 8자리인 문자
SELECT * from Member where member_phone regexp '^010[0-9]{8}';
예제 9. 전체 회원 나이 오름차순 조회
select * from member order by member_age;
예제 10. 전체 회원 나이 내림차순 조회
select * from member order by member_age desc;
[ select 절 추가 ]
예제 11. 전체 회원 숫자 조회
SELECT count(*) from member;
예제 12. 평균 나이 조회
select avg(member_age) "평균 나이" from member;
예제 13. 그룹 별 평균 나이 조회
select group_id, avg(member_age) "평균 나이" from member group by group_id;
예제 14. A그룹의 평균 나이 조회
select group_id, avg(member_age) "평균 나이" from member where group_id = 'A';
예제 15. 멤버별 age * salary 금액(누적소득액) 조회
select group_id, (member_salary*member_age) "누적소득액" from member;
예제 16. 그룹 내 인원 누적소득액의 합이 50000이상인 그룹 조회
select group_id, sum(member_salary*member_age) "누적소득액" from member group by group_id having sum(member_salary*member_age) >= 50000;
예제 17. 멤버 테이블에서 팀이 있는 사람 수 조회
select count(group_id) from member;
[ 참고 자료 ]
https://audgnssweet.tistory.com/65
혼자 공부하는 SQL - 우재남