728x90
반응형
SMALL
목차:
- 데이터 검색
- 별명
- 모든 컬럼 가져오기
- null과 ' '
- 조건절
- 조건절 예시(로그인 쿼리)
- is
- like 연산자
- 정렬
- 조건절 + 정렬
- limit
- 정렬 + limit
- 집계함수
- count
- sum
- avg
- min
- max
- 그룹
- 그룹 + 그룹조건
- 조건절 + 그룹 + 그룹조건 + 정렬
# 1. 데이터 검색
기본구조:
select 필드명1, 필드명2... from 테이블명;
예시:
select 100;
select 100+50;
# 2. 별명
기본 구조:
select 필드명 as 별명 from 테이블명;
예시:
select 100 +50 as '덧셈'; # -- ''를 사용하는 이유는 띄어쓰기가 있을 수 있어서 사용
select 100 + 50 as '덧셈 연산';
select 100 + 50 as 덧셈; # ''없어도 가능은 하다
select 100 + 50 덧셈; # as도 없이 사용가능은 함
일부 항목만 가져오기:
use kdt;
select userid, username, gender from member; # 필드나 로우는 불러오는순으로 보여줌
select userid, gender, username from member; # 순서가 정해져있는게 x
응용:
select userid as 아이디, username as 이름, hp as 휴대폰번호 from member;
# 3. 모든 컬럼 가져오기(사용 권장x)
# 개발할때는 연산량이 많아져서 느려짐
# 실제 개발시, 필요한 컬럼만 가져와서 사용함
# 실서버에서 사용시 모든연산이 이것만 처리해서 유저들화면에는 흰로딩창만 뜨게됌
select * from member;
# 4. null과 ' '
select null; # 데이터가 없음, insert가 되지 않은것
select ''; # DB에서는 ''라는 데이터가 있는것
select 100+null; # 결과: null, 연산할수 없음
select 100+''; # 결과: 100, 연산가능
# 5. 조건절
기본 구조:
select 필드명1, 필드명2 ... from 테이블명 where 조건절;
조건에 맞는걸 먼저 필터링후 셀렉함
예시:
select userid, username, hp, email from member where userid='apple';
select userid, username from member where gender='남';
select userid, username, point from member where point >= 300;
# 5 - 1 (로그인 쿼리)
ex) id = apple pw=1234
select userid, username, hp, email from member where userid = 'apple' and userpw = '1234';
# 맞을시 데이터가 반환되면 로그인 시켜주고
select userid, username, hp, email from member where userid = 'apple' and userpw = '1000';
# 반환된 데이터가 없으면 틀렸다고 출력하면 됌
# 6 is
사용예시:
select userid, username, hp from member where address1 = 'null'; # 틀린 방법
select userid, username, hp from member where address1 = null; # 틀린 방법2
select userid, username, hp from member where address1 is null; # 정답
select userid, username, hp from member where address1 is not null; # 정답2
응용:
select userid, username, point from member where point between 300 and 600; # 이 두개가 같은 말이다
select userid, username, point from member where point >= 300 and point <= 600; # 300이상 600이하
# 7 like 연산자
# 게시판에서 제목, 글내용 검색할때 자주 사용됌
select userid, username from member where userid like 'a%'; -- a로 시작하는 문자열을 찾아달라
select userid, username from member where userid like '%a'; -- a로 끝나는 문자열
select userid, username from member where userid like '%a%'; -- a가 들어가는 문자열
select userid, username from member where userid like '%app%'; -- app이 들어가는 문자열
select userid, username from member where userid like 'app__'; -- app으로 시작하는 총5글자인 문자열
# 8.정렬
기본 구조:
# select 필드명1, 필드명2 ... from 테이블명 order by 정렬할필드명 [asc, desc];
# 써도되고 안써도됌 [asc, desc]
예시:
select userid, username, point from member order by userid asc; # 아이디로 오름차순
select userid, username, point from member order by userid desc; # 아이디로 내림차순alter
select userid, username, point from member order by userid; # 생략할시 오름차순
응용:
#포인트를 기준으로 내림차순 하고 같은 점수인경우 아이디로 내림차순
select userid, username, point from member order by point desc, userid desc;
# 이미 포인트가 기준이었기 때문에 , 뒤에 정렬할것만 붙여주기하면 됌
# 8 - 1. 조건절 + 정렬
기본 구조:
# select 필드명1, 필드명2... from 테이블명 where 조건절 order by 정렬할필드명 [asc, desc];
응용:
# 성별이 여성인 회원을 point가 많은순으로 정렬(단, 포인트가 같을경우 먼저 가입한 순으로 정렬)
select userid, username, gender, regdate, point from member where gender='여' order by point desc, regdate asc;
# 9. limit
기본 구조:
# select 필드명1, 필드명2 from 테이블명 limit 가져올 행의 갯수
# select 필드명1, 필드명2 from 테이블명 limit 시작행, 가져올 행의 갯수
예시:
select userid, username, gender from member limit 3; # 처음부터 3개의 행을 가져옴
select userid, username, gender from member limit 3, 2; # index 3행부터 2개의 행을 가져온다는뜻
# 9-1 정렬 + limit
기본 구조:
# select 필드명1, 필드명2 from 테이블명 order by 정렬할필드명 [asc, desc] limit 가져올 행의 갯수;
예시:
select userid, username, gender, point from member order by point desc limit 3;
# 10. 집계함수(행을 통틀어서 계산해주는함수)
# 10 - 1. count: 행의 갯수를 세줌
# 전체인원을 알고싶다!: primary key가 적용되어 null이 포함될수 없음
select count(userid) as 전체인원 from member;
# 주소를 입력한 인원을 알고싶다!: null이 있으면 주소를 입력하지 않았음
select count(zipcode) as 우편번호 from member; # null을 제외하고 갯수를 셈
# 10 - 2. sum: 행의 값을 더함
기본 구조:
select sum(point) as 포인트총합 from member;
오류:
select userid, sum(point) as 포인트합 from member;
# Error Code: 1140. In aggregated query without GROUP BY, expression #1 of SELECT
list contains nonaggregated column 'kdt.member.userid';
this is incompatible with sql_mode=only_full_group_by
# 앞에 무언갈 적어주고싶으면 그룹을 적어야함
# 10 - 3. avg: 행 값의 평균을 구함
기본 구조:
select avg(point) as 평균 from member;
# 10 - 4. min: 행의 최솟값을 구함
기본 구조:
select min(point) as 최솟값 from member;
# 10 - 5. max: 행의 최댓값을 구함
기본 구조:
select max(point) as 최댓값 from member;
# 11. 그룹
기본 구조:
# select 그룹을 맺은 컬럼 또는 집계함수 from 테이블명 group by 그룹을맺을필드명;
예시:
select gender from member group by gender;
select gender, sum(point) from member group by gender;
select gender, avg(point) from member group by gender;
select gender, count(userid) as 총원 from member group by gender; # 이런식으로 활용가능
# 11 - 1. 그룹 + 그룹조건
기본 구조:
# select 그룹을맺은 컬럼 또는 집계함수 from 테이블명 group by 그룹을 맺을 필드명 having 조건절;
예시:
select gender from member group by gender having gender = '여';
# 11 - 2. 조건절 + 그룹 + 그룹조건 + 정렬
기본 구조:
# select 그룹을맺은 컬럼 또는 집계함수 from 테이블명 where 조건절 group by 그룹을 맺을 필드명 having 조건절 order by 정렬할필드명 [asc,desc];
응용:
# 포인트가 0이 아닌 회원들중에 남, 여로 그룹을 나눠 포인트의 평균을 구하고 포인트가 100 이상인 성별을 검색하여 내림차순으로 정렬
select gender, avg(point) from member where point > 0 group by gender having avg(point) >= 100 order by gender desc; # 별명 x
select gender, avg(point) as avg from member where point > 0 group by gender having avg >= 100 order by gender desc; # 별명 o
728x90
반응형
LIST
'DBMS > MySQL' 카테고리의 다른 글
MySQL- View (0) | 2023.03.21 |
---|---|
MySQL- 사용자 추가하기 (0) | 2023.03.21 |
MySQL- 연산자 (0) | 2023.03.16 |
MySQL - table (0) | 2023.03.15 |
RDBMS - MySQL 정리 (0) | 2023.03.15 |