상세 컨텐츠

본문 제목

[SQL] 0418_MYSQL_요점정리

<개인공부>/[SQL데이터베이스]

by 데브수달 2024. 4. 18. 15:09

본문

728x90
반응형
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;
```
728x90
반응형

관련글 더보기