본문 바로가기

데이터베이스(DB)

(12)
[MYSQL] 조건문 활용하기 CASE WHEN ELSE 구문 조건에 따라 다른 값을 주고 싶을때 이용하는 키워드 -> CASE WHEN ELSE 구문 일반 프로그래밍 언어에서 if elseif else 구문과 유사하다. 문제 country 테이블에서 이름, 대륙, 수명을 출력하는데, 수명이 80보다 높으면 '장수국가', 60~80살이면 '일반국가', 그 외에는 '단명국가' 라고 이름을 붙이고 '구분'이라는 이름의 열을 추가한다. 새로운 열의 이름을 붙일때는 CASE WHEN ELSE 키워드 끝에 END AS 키워드를 써준다. -> 예시에서는 '구분'이라는 이름을 갖는 열에 조건에 따라 데이터가 입력된다.
[MYSQL] CONCAT() 문자열 이어 붙이기 문자열을 이어 붙여서 출력하고 싶을때 -> CONCAT() 을 이용한다. 물론 문자열이 올 자리에 컬럼명이 와도 된다.
[MYSQL] REPLACE()함수 특정 문자열 변경하기 데이터를 출력할때 특정 문자열을 다른 문자열로 변경하여 출력하고 싶은 경우가 있다. 이럴때 쓰는 키워드가 replace 함수다. Replace(변경할 컬럼 또는 값, 바꿀대상문자열, 바꾸고싶은문자열) -> (data, from, to)
[MYSQL] SUBSTR, SUBSTRING 부분문자열 가져오기 MYSQL 에서는 substr, substring 모두 사용가능하며 사용법이 동일하다. -> index 1부터 가정하는 것을 조심한다. -> 파이썬 처럼 index에 올 숫자가 음수도 가능하다.
[MYSQL] Length() vs char_length(), 길이를 나타내는 함수 데이터의 길이를 알아내려면 어떻게 해야할까? Length() 함수를 사용하면 데이터의 길이를 가져올 수 있다. 하지만 인코딩 설정에 따라 한글길이가 제대로 출력되지 않는 상황이 발생하기도 하는데 이때는 char_length() 함수를 이용하면 해결이 가능하다. -> 영어로 된 데이터에 length() 함수를 적용했을때는 정확한 길이가 나오는것을 알 수 있다. -> 한글에 length()함수를 적용했을때는 잘못된 길이가 출력된다. -> 이유는 한글은 현재 인코딩설정상 한글자에 3byte로 계산을 하기때문이라고 한다. -> 한글로 된 데이터에 char_length() 함수를 적용하면 의도했던 결과가 나온다!
[MYSQL] LIMIT의 활용 - 원하는 만큼만 데이터를 가져오기 주어진 조건에 의해 출력된 결과를 원하는 만큼만 보고싶을다면?? -> "LIMIT" 키워드를 이용해 원하는 만큼, 원하는 구간을 설정하여 출력할 수 있다. 아무조건 없이 모든것을 출력했을때는 당연히 모든 테이블이 출력된다. limit n -> 상위 n개만 출력하라는 의미 limit a, b -> index a번부터 b개를 출력하라 index는 0부터 시작한다고 생각하면된다.
[MYSQL] null값 vs 공백("") sql 공부를 하다가 우연히 다음의 두 쿼리가 다른 결과를 가져온다는 사실을 알아냈다. 찾아보니 mysql만 이렇게 적용이되고 oracle은 공백과 NULL을 같게 처리한다고 한다. -> NULL이 아니라 공백이기 때문에 제거가 되지 않은 결과 -> 공백으로 처리했을때 제거가 된 결과 결론 -> mysql은 다음과 같이 NULL과 공백을 구분하여 처리하므로 실수를 조심할것.
[MYSQL] 그룹별 데이터 조회 (GROUP BY) 유형별로 갯수를 알고 싶을 때는 컬럼에 데이터를 그룹화 할 수 있는 GROUP BY를 사용한다 GROUP BY를 사용할 때는 두가지 키워드를 기억해야 한다 특정 컬럼을 그룹화 하는 GROUP BY 특정 컬럼을 그룹화한 결과에 조건을 거는 HAVING * WHERE는 그룹화 하기 전에 조건을 거는 것이고, HAVING은 그룹화 후에 조건을 거는것 SELECT type, COUNT(name) AS cnt FROM hero_collection GROUP BY type; -> type과 type을 기준으로 그룹화한 name의 개수를 출력하라 -> type의 데이터 값이 같은 것들은 같은 그룹으로 처리한다 SELECT type, COUNT(name) AS cnt FROM hero_collection WHERE t..