SQL 방법 정리.
1. 특정 문자를 다른 문자로 바꾸기.
SELECT replace(food_name, 'abc' , 'def')
FROM food_orders
WHERE food_name like '%abc%'
이렇게 입력하면 food_name 안에 있는 데이터중에 abc 가 포함된 데이터의 abc는 전부 def로 바뀐다.
SELECT replace 안에 (열, before, after)
+ where like 때문에 food_name 중 abc 가 포함된 데이터만 def로 바꿔서 보여준다.
2. 원하는 문자만 남기기
SELECT substr(food_name, 1, 2)
FROM food_orders
WHERE food_name like 'a%'
이렇게 입력하면 a로 시작하는 애들은 모두 첫번째 자리부터 2글자만 보여준다.
SELECT substr(substring) 안에 (열, 시작 자릿수, 글자수)
3. 여러 컬럼의 문자를 합치기
SELECT CONCAT(substring(restaurant_name, 5, 2), food_name) as "식당 음식"
FROM food_orders
WHERE restaurant_name like '%식당'
이렇게 입력하면 식당 이름 중에서 5째 자리부터 2글자 + 음식이름을 붙여서 "식당 음식" 열에 보여주는데,
음식점 이름이 '식당'으로 끝나는 정보만 보여준다.
ex. 우리동네식당 제육볶음 = 식당 음식 열에 식당제육볶음 으로 표시된다.
SELECT concat(값1, 값2, 값3 ....) 이렇게 작성하면 값들이 붙어서 나온다.
4. 데이터 바꾸고 group by 사용하기
어려울 것 없다. 그냥 똑같이 작성하고, 아래에서 group by 적용하면 된다.
group by 는 열 이름을 그대로 입력하거나,
group by 1, 2 이런식으로 SELECT 의 값 중에 몇 번째 값을 기준으로 그룹을 지을지 입력하면 된다.
식당 별로 월별 판매금액을 구하기 위해 (식당, 월)을 기준으로 잡으면 대충 이런 느낌
a식당 1월 3천만원
a식당 2월 2천만원
a식당 3월 3천만원
b식당 1월 2천만원
b식당 2월 2천만원
b식당 3월 3천만원
++ order by 는 정렬 순서를 정해주는것.
order by 2,1 이라고 한다면,
첫 째로 월 기준으로 정리하고,
식당 별로 정리한다. (order by 의 첫번째 값이 같으면 두번째 값으로 정렬 순서 비교)
a식당 1월 3천만원
b식당 1월 2천만원
a식당 2월 2천만원
b식당 2월 2천만원
a식당 3월 3천만원
b식당 3월 3천만원
월 값이 최우선이니 1월,2월,3월 순으로 정렬
다음 정렬 순서는 식당 이름이라서 매 월마다 a,b 순으로 정렬.