개발/SQL 18

MySQL - Join(Inner , left)

이제 join 을 해보자. 이번 포스팅에서는 Inner , left 를 다룬다. 1. Inner Join 이너 조인은 집합에서 교집합을 의미한다. 두 테이블의 데이터간의 공통점이 있는 데이터들만 가져오는 방법이다. select * from table1 join table2 on table1.samecolumn = table2.samecolumn; # 또는 select * from table1 inner join table2 on table1.samecolumn = table2.samecolumn; 2. left join 레프트 조인은 왼쪽 데이터를 전부다 가져온단 의미이다. 즉 같은 값이 없어도 가져온다. select * from table1 left outer join table2 on table1.s..

개발/SQL 2022.12.08

MySQL - Join 을 위한 외래키(fk),참조 변경,삭제 방법

join은 테이블을 합칠때 사용하는 방법이다. 테이블을 합치기 위해서는 두 테이블 데이터간에 겹침(공유)이 필요하다. 테이블의 pk 값을 또 다른 테이블이 fk 로 가지고 있으면 가능하며, 란 foreign key 로 외래키, 다른 테이블에서 가져온 데이터 란 뜻의 컬럼이 필요하다. # 코드는 create 할때 작성하거나 alter 문으로 가능하다 foreign key(column) reference another table( pk ) 예시) foreign key(customer_id) reference orders(id) 오더의 아이디를 fk 로 커스토머 id 란 이름으로 가져온단 의미이다. foreign key 를 설정하면 foreign key로 가져온 pk값을 삭제 하거나 변경할때 다음 과같이 설정..

개발/SQL 2022.12.08

MySQL - 새로운 컬럼을 만들어 조회하기 (if , case - end)

select 를 할때 새로운 컬럼을 만드는 방법입니다. 1. 특정 조건없이 컬럼 추가하기. select *, '안녕' as '임의의 값' from books; books 의 모든 데이터를 보여주고 임의의 값 이라는 별칭으로 안녕이 삽입되어 보여지게 됩니다. 2. 조건으로 컬럼 추가하기 select * , if(released_year >= 2000, 'Modern Book' , '20th Book') as Genre from books; if(조건 , 참 , 거짓) as 별칭 으로 컬럼을 추가 할 수 있습니다. 위 코드는 released_year 값이 2000보다 크면 Modern Book 을 , 작다면 20th Book 을 가져오게 됩니다. 컬럼추가에 대한 조건이기때문에 반드시 select 와 from..

개발/SQL 2022.12.07

MySQL - 그룹의 조건 having

having 은 group by 와 한 셋트로 사용되며 그룹한 데이터들의 조건을 의미한다. 예시 ) books 에서 년도별로 stock_quantity 의 평균이 70보다 큰 데이터의 released_year와 평균 stock_quantity 값을 보여주세요. select released_year,avg(stock_quantity) as average from books group by released_year having average >= 70; 먼저 정답은 위와 같으나 정답에 접근하는 방법을 알아보자. # 1. 년도별로 해결하기. select * from books group by released_year 년도를 해당하는 컬럼은 released_year 이기 때문에 먼저 그룹으로 묶는다. (왜 묶냐..

개발/SQL 2022.12.07

MySQL - 날짜관련day,dayname,dayofweek,date_format,curdate, 업데이트 시간

컬럼의 날짜 정보를 가져오는 함수들이다 day() 날짜만 가져온다. dayname() 요일정보만 가져온다. dayofweek() 요일정보를 숫자로 가져온다. dayofmonth() 날짜 정보를 가져온다. dayofyear() 365일 중 얼마나 흘렀는가를 가져온다. month() 월 정보를 가져온다. hour() 시 정보를 가져온다. minute() 분 정보를 가져온다. second() 초 정보를 가져온다. date_format(column,'%Y %m %d %h 등등) 보기편하게 가져온다. now() 현재 시간을 가져온다. curdate() 현재의 년도,월별,일자만 가져오고 싶을때 사용. curtime(); 현재의 시,분,초 만 가져온다. 데이터를 추가할때마다 데이터의 추가한 시간을 알고 싶다면 테이블..

개발/SQL 2022.12.07

MySQL - subquery

서브 쿼리란? 쿼리 문 안에 쿼리문을 사용하는 방법이다. 예시를 들어 설명하자면 books 테이블에 title 을 select 할건데 조건으로 pages 가 가장 큰 값을 가져오라고 하였다. select title from books where pages=( select max(pages) from books ); 위 코드 처럼 where 조건으로 pages = 에 select 문이 통째로 들어간 걸 알 수있다. 이런식으로 select 문 또한 특정 컬럼의 데이터 값이므로 조건에 이용할 수 있다.

개발/SQL 2022.12.07

MySQL - count , min , max , avg , sum

count 는 컬럼의 갯수를 셉니다. select count(*) from books; count() 괄호안에 컬럼명을 입력하여 사용하며 위 코드는 books 테이블에 데이터 갯수를 알려주게 됩니다. min은 컬럼 데이터의 최소값을 알려줍니다. select min(released_year) as '출간년도' from books; max 는 컬럼 데이터의 최대값을 알려줍니다. select max(pages) as '최대페이지' from books; avg 는 컬럼 데이터의 평균을 알려줍니다. select avg(pages) from books; sum은 컬럼 데이터의 합계를 알려줍니다. select sum(pages) from books;

개발/SQL 2022.12.07

MySQL - group by

group by 는 동일한 내용이 있으면 묶어서 이용하는 sql문입니다. 예시) select concat(author_fname,' ' ,author_lname) as full_name, count(title) from books group by author_lname; books 테이블에 author_lname 이 같은 사람들을 그룹으로 묶어 (group by) 타이틀 의 수를 구하고 (count) 풀 네임으로 보여달라는 뜻입니다. select count(pages), concat(author_fname,' ' , author_lname) from books group by author_lname,author_fname; 이런식으로 그룹 바이 뒤에 2개 이상의 컬럼이 와도 됩니다.

개발/SQL 2022.12.07