⚡ database counting
* select count(*) from 테이블명;
=> 해당 table에 몇개의 데이터가 있는지 확인
* select count(*) as total from 테이블명;
=> as(Alias 의 약어)를 이용하여 가상의 column명을 사용함
* select * from table명 where colomn='데이터명' and colomn='데이터명'
=> 2가지 조건이 모두 만족 ( = && )
* select * from table명 where colomn='데이터명' or colomn='데이터명'
=> 2가지 조건 중 한가지만 만족 ( = || )
ex 1)
select count(*) from member where marea='b';
=> member table 중 지역코드가 b인 사람이 몇명인지 출력
ex 2)
select count(*) as total from member where marea='c';
=> total이라는 가상의 column명으로 member table 중 지역코드가 b인 사람이 몇명인지 출력
ex 3) 실버회원 몇명인지 출력
select count(*) as silver from member where mlevel='2';
ex 4) 실버회원 제외하고 몇명인지 출력 : ! =
select count(*) as notsilver from member where mlevel!='2';
ex 4) 실버회원 이상 등급 몇명인지 출력 - 등급이 int라서 가능
ex 5) 실버회원 또는 골드회원 몇명인지 출력 ( 둘중 하나 만족 : and )
ex 5) 실버회원중 지역코드 대구인 사람 몇명인지 출력 ( 둘다 만족 : or )
⚡ data 내림차순,오름차순으로 출력 ex) 게시판은 가장 최근 글을 쓴 사람이 맨 위
* select * from table명 order by colomn명 desc 또는 asc;
desc : 내림차순
asc : 오름차순
// 문자도 가능
ex ) select * from member order by no desc; => no(auto_increment)기준으로 내림차순
ex 1 ) select * from member order by mname asc;
=> 이름 ㄱㄴㄷ 역순으로 출력
⚡ 해당 단어를 기점으로 data 검색
select * from table명 where colomn명 like '%검색할 단어' => 해당 단어로 끝나는 data 검색
select * from table명 where colomn명 like '검색할 단어%' => 해당 단어로 시작하는 data 검색
select * from table명 where colomn명 like '%검색할 단어%' => 해당 단어가 포함된 data 검색
like : 검색
ex 1 ) select * from member where mtel like '%6790';
=> 전화번호 전체에서 6790으로 끝나는 번호만 출력
ex 2 ) select count(*) as naver from member where memail like '%naver%';
=> naver email 사용하는 사람 몇명인지 출력
⚡ 원하는 데이터만 table
select mid,mname,mhp,mlevel from member; => * 대신 해당 field명만 작성
⚡ join (table + table) - 많이 합치면 합칠수록 속도 ↓
- join : 2개 이상의 table을 검토하여 하나의 table로 출력 => double 반복문과 같은 원리
- innerjoin : 교집합
- outerjoin : 교집합 외의 집합
- leftjoin : 한개의 왼쪽 기준 table 집합
- rightjoin : 한개의 오른쪽 기준 table 집합
- fullouterjoin : 전체 table 출력하는 집합
- ...등등 database마다 종류가 다름 / join만 잘써도 다됨
[join 문법]
select colomn명,colomn명 from 테이블1 as 별명1 join 테이블2 as 별명2 where table 조건;
ex ) select a.mid,a.mname,a.mhp,a.mlevel,b.l_name from member as a join level as b where a.mlevel = b.l_num;
=> table a의 mlevel(해당 멤버 level 번호)값과 table b의 l_num(해당 멤버 level 번호)값이 같다면 l_name(멤버 level 이름) 출력
🔽
응용문제1
해당 가입자 회원 정보 중 다음과 같이 출력되도록 명령어를 입력하시오.
[결과]
고객명 이메일 지역(한글)
↓
select a.mname,a.memail,b.a_name from member as a join area as b where a.marea = b.a_code;
응용문제2
해당 결과처럼 데이터가 출력되도록 sql 문법을 입력하시오
-> nate.com 메일 주소 사용자에 한해서 출력 결과가 나와야합니다.
[출력 결과]
고객명 이메일 지역(한글) level(한글) - 3개 table join
힌트 ) select colmn명 from atable as a join btable b join ctable c
select a.mname,a.memail,b.a_name,c.l_num from member as a join area as b join level as c where a.marea = b.a_code and a.mlevel = c.l_num and a.memail like '%nate.com';
'CLASS > DATABASE' 카테고리의 다른 글
#4-1 / group by , table및 column 복제 등 (0) | 2024.06.05 |
---|---|
#3-5 / 기타(enum,set,timestamp) (0) | 2024.06.04 |
#3-3 / excel 미러링, data backup 및 복구 (0) | 2024.06.04 |
#3-2 / 외부 사용자 추가 방법 (0) | 2024.06.04 |
#3-1 / unique, alter문법 (0) | 2024.06.04 |