-
mysql 기본 명령어 (select from)비전공자의 CS 개념 잡기/mysql 2023. 2. 5. 15:24
- 특정 테이블의 전체 컬럼 검색
SELECT * FROM [테이블 명];
- 특정 테이블의 조회 중 중복 제거 검색
SELECT DISTNCT [컬럼명] FROM [테이블명];
- 특정 조건에 해당하는 데이터 조회 (where 사용) - WHERE 정리
SELECT [컬럼 명] FROM [테이블 명] WHERE [조건];
- 원하는 조건대로 정렬 (ORDER BY) - ORDER BY 정리
SELECT [컬럼명] FROM [테이블명] ORDER BY [컬럼명];
- 집계 함수 (종류 : SUM, AVG, MIN, MAX, COUNT)
SELECT SUM([컬럼명]) FROM [테이블명];
위 처럼 사용할 경우 결과 값이 테이블에 별도 이름없이 SUM([컬럼명]) 으로 저장되기 때문에 가공해서 사용하기 어렵다. 따라서, 아래와 같이 AS 키워드를 사용한다. (AS를 생략해도 된다)
SELECT SUM([컬럼명]) AS [임시 컬럼명] FROM [테이블명]; - AS 생략버전 - SELECT SUM([컬럼명]) [임시 컬럼명] FROM [테이블명];
집계함수 종류
- SUM : 합계
- AVG : 평균
- MIN : 최저가
- MAX: 최고가
- COUNT : 행의 개수
- COUNT 예시
SELECT COUNT(*) FROM [테이블명];
- GROUP BY와 HAVING (해당 블로그 설명 👍 : https://extbrain.tistory.com/56)
- GROUP BY
- GROUP BY로 그룹으로 묶은 후 SELECT 절에는 GROUP BY에서 사용한 컬럼과 집계 함수만 올 수 있다.
SELECT [컬럼명] FROM [테이블명] GROUP BY [그룹화할 컬럼명];
- HAVING
- WHERE과 HAVING은 다름.
- WHERE은 GROUP BY 태우기 전에 사용하는 조건절이고, HAVING은 GROUP BY 실행 후에 사용하는 조건절
- HAVING은 반드시 GROUP BY 와 함께 사용해야 함
- WHERE 절 보다 뒤에 나와야 함
- 검색조건에는 SUM, AVG, MIN, MAX, COUNT와 같은 집계함수가 와야함
- GROUP BY 절이 포함된 SQL 문의 실행 순서
- FROM 에서 테이블을 읽는다.
- WHERE 절을 통해 필터링을 한다.
- GROUP BY 문에서 조건을 준 컬럼으로 그룹핑을 한다.
- HAVING 절을 통해 필터링을 한다.
- SELECT 절을 통해 원하는 컬럼명을 리턴한다.
- ORDER BY 절을 통해 리턴된 값을 조건을 준 컬럼으로 정렬시킨다.
- 조인 : 두 개의 다른 테이블의 데이터를 하나의 테이블로 합치는 것
SELECT * FROM [테이블명 1], [테이블명 2];
*위처럼 아무 조건 없이 이렇게 테이블을 조인시키면, 각각의 모든 테이블들의 값들에 서로 조인이 된다. 따라서 하위와 같이 조건을 걸어야 한다.
SELECT * FROM [테이블명1], [테이블명2] WHERE [조인조건] AND [검색조건];
- 셀프 조인: 테이블이 자기자신을 조인해야 할 때 FROM 옆에 임시로 이름을 붙혀 사용할 수 있다.
SELECT staff.emname, staff.job FROM EMP staff, EMP manager WHERE staff.mgr=manager.empno and manager.ename LIKE "홍길동"
- 외부 조인 : NULL 인 값도 가지고 올 수 있다. (LEFT OUTER JOIN .. ON .. 과 RIGHT OUTER JOIN ... ON .. , FULL OUTER JOIN ... ON 이 있다.)
SELECT [컬럼명1], [컬럼명2] FROM [테이블명1] [LEFT || RIGHT || FULL] OUTER JOIN [테이블명2] ON [조인조건] WHERE [검색조건];
- LEFT OUTER JOIN .. ON : 왼쪽에 있는 테이블명1을 테이블명2에 다가 조인시킨다.
- RIGHT OUTER JOIN .. ON : 오른쪽에 있는 테이블명2를 테이블명1에 다가 조인시킨다.
- FULL OUTER JOIN .. ON : 양쪽 테이블 모두에 질의한다.
- 부속질의 : sql 문 내부에 또 다른 sql 문을 작성
- 실행순서 : 몇개의 sql을 중첩해서 하던, 가장 하위의 sql 부터 해석해서 상위 sql을 해석한다.
- 여러개의 테이블에서 예시
SELECT name FROM Customer WHERE custid IN( SELECT custid FROM Orders WHERE bookid IN( SELECT bookid FROM Book WHERE publisher='대한미디어' ) );
- 한 개의 테이블 예시
SELECT b1.bookname FROM Book b1 WHERE b1.price > ( SELECT avg(b2.price) FROM Book b2 WHERE b2.publisher = b1.publisher );
- 투플 변수 : 테이블 이름이 같거나 한 개의 테이블이 SQL 문에 두 번 사용될때 혼란을 피하기 위해서 사용. 위 SQL 문에서 b1, b2 와 같이 FROM 옆에 선언하여 사용한다.
- 부속질의와 조인은 여러 테이블을 하나의 SQL 문에서 사용하는 점은 같지만, 차이점이 있다. 부속질의는 SELECT 에서 사용할 수 있는 속성은 FROM 에서 가져온 특정 테이블에서만 얻을 수 있고, 조인은 조인한 테이블 전체에서 얻을 수 있다. *팁: 한개의 테이블에서만 결과는 얻는 여러 테이블 질의는 조인보다 부속질의를 사용하면 훨씬 편하다)
'비전공자의 CS 개념 잡기 > mysql' 카테고리의 다른 글
mysql ORDER BY 정리 (0) 2023.02.05 mysql Where 조건절 정리 (0) 2023.02.05 mysql LIKE문 와일드 문자 정리 (0) 2023.02.05 mysql 기본 명령어 (0) 2023.01.29