(수근수근)

SQL 정리 본문

Algorithm

SQL 정리

InformationFarm 2020. 5. 27. 17:43

용도는 그냥 한눈에 보게 정리하기 위해서 (MySQL 기준)

 

select 문만 정리해보려고 한다.

  • 최대값
    • SELECT MAX(컬럼) FROM 테이블;
  • 최소값
    •  SELECT MIN(컬럼) FROM 테이블;
  • COUNT
    • SELECT COUNT(*) FROM 테이블; (이 때 NULL인 데이터는 제외하고 계산합니다.)
    • SELECT count(if(a=1, a, null)) FROM A; //조건
    • SELECT COUNT (DISTINCT COLUMN NAME) FROM TABLE NAME  //중복제거
    • SELECT  COUNT (DISTINCT NAME) as 'count' FROM ANIMAL_INS ;
  • GROUP BY
    • SELECT * FROM   tableName  GROUP BY   tableName.user_idx
    •   select * from ( select id, name, hp from member order by date desc )a group by id //그루핑된 집합내에서 정렬필요할 때 
    • SELECT * FROM   tableName  GROUP BY  tableName.user_idx ORDER BY des
  • 서브쿼리 

SELECT NAME, COUNT
FROM (
    SELECT NAME,COUNT(NAME) AS 'COUNT'
    FROM ANIMAL_INS
    GROUP BY NAME
) TE
WHERE COUNT>=2
;

 

-- 코드를 입력하세요
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS 
GROUP BY NAME
HAVING COUNT>=2;

 

 

조인후 정렬

SELECT * FROM A RIGHT OUTER JOIN B ON A.칼럼=B.칼럼 ORDER BY A

조인후 정렬 성능이 더 좋음

SELECT * FROM (SELECT * FROM A ORDER BY 칼럼 DESC)

RIGHT OUTER JOIN (SELECT * FROM B ORDER BY 칼럼 DESC) ON A.칼럼 = B.칼럼

 

 SELECT (데이터검색하기)

SELECT [DISTINCT] 테이블명 {, 테이블명}*

FROM 필드명 {,필드명}*

[WHERE 검색조건]

[ORDER BY 필드명[ASC or DESC] {,필드명 [ASC or DESC]}*]

[GROUP BY 필드명 {, 필드명}*]

[HAVING  검색조건]

 

1. 일반적인 검색

SELECT name, id FROM userdb WHERE level = 'B'

SELCET * FROM userdb

SELECT name, id, email, sex, milage, level FROM userdb

 

2. 결과레코드의 중복제거

SELECT level FROM userdb

SELECT DISTINCT level FROM userdb

 

3. 조건검색

SELECT name, id, email FROM userdb WHERE milage > 3000 AND sex = 'M'

 

4. 검색결과의 정렬

SELECT name, id, milage FROM userdb WHERE milage >= 3000 ORDER BY milage DESC

 

5. 검색결과에 대한 산술계산 및 문자열처리

SELECT name, '님의 마일리지는 ', milage, '점입니다.' FROM userdb WHERE milage >= 3000 ORDER BY milage

SELECT name, id, email, milage+300 FROM userdbWHERE id = 'soony'

 

6. 그룹함수(group function)를 이용한 검색

SELECT count(*) FROM userdb WHERE sex = 'F'

SELECT avg(milage) FROM userdb WHERE sex='F'

 

7. GROUP BY를 이용한 검색

SELECT level, max(milage), min(milage), avg(milage) FROM userdb GROUP BY level

SELECT sex, max(milage), min(milage), avg(milage) FROM userdb GROUP BY sex

 

8. HAVING을 이용한 검색

SELECT sex, max(milage), min(milage), avg(milage) FROM userdb GROUP BY sex HAVING sex = 'F'

 

9. BETWEEN 연산자를 이용한 검색

SELECT name, email, mailage, sex FROM userdb WHERE sex = 'F' AND milage BETWEEN 3000 AND 4000

SELECT name, email, milage, sex FROM userdb WHERE sex = 'F' AND milage >= 3000 AND milage <= 4000

SELECT name, sex, milage FROM userdb WHERE milage NOT IN (3300,3500,3700)

 

10. LIKE를 사용한 검색

SELECT name FROM userdb WHERE name, LIKE '%현%'

SELECT name, id, FROM userdb WHERE id LIKE 'm%'

 

11. NULL값을 갖는 데이터검색

SELECT name, id FROM userdb WHERE email IS NULL

SELECT name, id FROM userdb WHERE email IS NOT NULL

[출처] [MySQL] 명령어 정리 (Select 정리 잘 되어있음)|작성자 참좋은날

 

'Algorithm' 카테고리의 다른 글

크레인 인형뽑기 게임  (0) 2020.08.25
[백준] 단어공부  (0) 2020.05.26
[프로그래머스] SQL문제풀기 & 정리  (0) 2020.05.25
[백준] 2667 단지번호붙이기  (0) 2020.04.20
[백준] DFS와 BFS  (0) 2020.04.06
Comments