1. member 테이블 : 필드 제약 조건
- 성별 : '남성', '여성', '선택안함'
- 성별입력은 위 조건 3 가지 내용 중 입력
userGender VARCHAR(4) NULL CHECK (userGender IN('남성', '여성', '선택안함'));
2. member 테이블 : PK(Primary Key) 2개 이상인 경우
idx, userId
PRIMARY KEY(idx, userId);
* 왠만하면 PK설정은 한번에 해주는 것을 권장한다.
3. 정렬 ORDER BY
- ASC; Ascending(기본;오름차순)
- DESC; Descending( 내림차순 )
```SQL
-- 단일 정렬처리
-- member 테이블에서
-- 가입일 (userGaib) 기준으로
-- 내림차순(DESC) 정렬(ORDER BY) 출력
SELECT * FROM member
ORDER BY userGaib DESC;
-- 다중 정렬처리
-- member 테이블에서
-- 가입일 (userGaib) 기준으로
-- 내림차순(DESC) 정렬(ORDER BY) 출력
-- 가입일이 같으면 이름을 오름차순 출력
SELECT * FROM member
ORDER BY userGaib DESC, userName;
-- member 테이블에서
-- 가입일 (userGaib) 기준으로
-- 내림차순(DESC) 정렬(ORDER BY) 출력
-- 가입일이 같으면 이름을 오름차순 출력
-- 단, 성별이 여성인 데이터만 출력
SELECT * FROM member
WHERE userGender ='여성'
ORDER BY userGaib DESC, userName;
```
4. 그룹 GROUP BY
```SQL
-- 성별별 인원수를 카운트해라.
-- 카운트 필드명은 '인원수' 지정하라
SELECT userGender AS '성별', COUNT(1) AS '인원수'
FROM member
GROUP BY userGender;
-- 성별별 인원수를 카운트해라.
-- 카운트 필드명은 '인원수' 지정하라
-- 단, 정렬은 인원수를 내림차순 출력
SELECT userGender AS '성별', COUNT(1) AS '인원수'
FROM member
GROUP BY userGender
ORDER BY '인원수' DESC;
```
5. 그룹 (GROUP BY) + 조건 WHERE => HAVING
: GROUP BY 절에서 조건은 HAVING절을 사용한다.
```SQL
-- 성별별 인원수를 카운트해라.
-- 카운트 필드명은 '인원수' 지정하라
-- 단, 정렬은 인원수를 내림차순 출력
-- 거주지역이 경기도인 모든 데이터
SELECT userAddr AS '거주지',userGender AS '성별', COUNT(1) AS '인원수'
FROM member
GROUP BY userGender
HAVING userAddr LIKE '경기도%'
ORDER BY '인원수' DESC;
* 궁금한점 거주지가 경기도에서도 내용이 나뉘는데 그 나뉜 곳의 여성과 남성 인원수 체크는,,,;;
-- 거주지별 인원수를 카운트해라.
-- 카운트 필드명은 '인원수' 지정하라
-- 단, 정렬은 인원수를 내림차순 출력
-- 거주지역이 경기도인 모든 데이터
SELECT userAddr AS '거주지', COUNT(1) AS '인원수'
FROM member
GROUP BY userAddr
HAVING userAddr LIKE '경기도%'
ORDER BY '인원수' DESC;
```