본문 바로가기

MySQL12

[MySQL] DB에서 데이터 추출하여 csv파일로 저장 MySQL의 테이블을 우클릭 하여 Table Data Export Wizard를 선택한다. 가져올 컬럼들을 선택한다. csv로 저장할때 구분자, 줄바꿈 등 여러 설정을 할수있다. # json으로 저장할수있다. # csv로 저장할때 인코딩에 에러가 난다면 json으로 저장하자. 2022. 6. 23.
[MySQL] 관계 DB 실습: 영화 리뷰 서비스 개발 영화 리뷰 서비스 개발 실습 0. 다시한번 어떤 테이블과 어떤컬럼을 어떻게 설정해야할지 구상해서 직접 만들어보자 실습 1. 하트를 눌러서 즐겨찾기에 저장하는 SQL insert into favorites (movie_id,user_id) values (10,2); 실습 2. 다시 하트를 누르면 즐겨찾기에서 삭제하는 SQL in: delete from favorites where id = 4; select * from favorites; out: 실습 3. 내 즐겨찾기 리스트 가져오는 SQL in: select m.title as 영화명, count(r.movie_id) as 영화갯수, ifnull(avg(r.ratings),0) as 별점평균 from favorites f join movies m on .. 2022. 5. 18.
[MySQL] 관계 DB 실습: SNS DB, 일정공유 앱 개발, UNIQUE SNS DB 대부분의 소셜 네트워크 서비스는 좋아요 기능이 있다. 사진에 한명의 유저가 좋아요를 누를때 더 추가 할수없는 하나의 고유한 데이터로 남기게 된다. 이러한 데이터를 unique설정한다. 테이블을 설정할때 인덱스로가서 인덱스로 관계성이 있는 두개의 id 컬럼을 정하고 unique로 설정한다. # 이 테이블과 비슷한 속성을 가지고 있는 팔로워와 포토태그 테이블도 이처럼 설정해줘야 한다. 실습 1. 가장 오래된 회원 5명은 누구입니까? in: select * from users order by created_at limit 5; out: 실습 2. 회원가입을 가장 많이 하는 요일은 무슨요일이며, 몇명입니까? in: select dayname(created_at) as day, count(*) as .. 2022. 5. 18.
[MySQL] 다대다 관계의 DB 여러 테이블이 복잡한 관계로 얽혀있는것을 다대다 테이블이라고 한다. 다대다 테이블을 만들어 보자 reviewers 테이블: # 리뷰한 사람들의 데이터가 들어있다. series 테이블: # 티비 쇼 시리즈의 데이터가 들어있다. reviews 테이블: # 리뷰한 정보들이 들어있다. # 다른 테이블의 id 컬럼을 foreign key설정으로 묶어줬다. title과 rating의 평균값이 나오도록 해보자 in: select s.title, avg(r.rating) as avg_rating from reviews r join series s on r.series_id = s.id group by s.title order by avg_rating; out: # 리뷰 테이블과 시리즈테이블이 연결되었다. 리뷰어의 성과.. 2022. 5. 17.
[MySQL] 다대일 관계의 DB: join, on, left join, having(group by, like), foreign key, index_unique 많이 사용하는 DB: 1. 관계형 데이터베이스 RDBMS 안정적인 데이터처리를 할수있다. 데이터가 많아질수록, 분산처리가 어렵다 (클러스터링) 2. NoSQL 빠르게 저장하고 빠르게 읽어온다. 데이터 안정성이 떨어진다. 그 중 관계형 데이터베이스는 테이블을 이용하여 데이터처리한다. 테이블과 테이블의 관계가 하나의 코드로 연결되었다. (다대일 관계) 먼저 고객 테이블을 생성하자 이제 주문 테이블 생성하자 foreign key로 들어가서 두 테이블의 id를 연결한다. # foreign key이름을 설정하고 리퍼런스 하는 테이블을 고른다. # 해당 테이블의 열결되는 컬럼을 정하고 연결할 테이블의 컬럼을 정한다. join과 on을 사용해서 주문테이블과 고객테이블을 합쳐서 보여주자 in: select * from.. 2022. 5. 17.
[MySQL] 비교문과 조건문: between, in, case, if, ifnull where를 사용하여 년도가 2017인 데이터 가져오자 in: select * from books where released_year = 2017; out: 이번에는 2017년이 아닌 데이터만 가져오자 in: select * from books where released_year != 2017 order by released_year desc; out: # '!=' 사용하면 쉽게 가져올수 있다. author_lname 이 Harris 가 아닌 데이터만 가져오자 in: select * from books where author_lname != 'Harris'; out: # 문자열 데이터도 '!=' 를 사용하여 가져올수 있다. 책 제목이 w 로 시작하는 책을 가져오자 in: select * from book.. 2022. 5. 16.
[MySQL] 시간 데이터 처리: curdate, curtime, now, dayofweek, dayname, date_format, datediff, date_add, now() on update now() MySQL에서 테이블의 타입을 date, time, datetime으로 설정하고 ISO 포맷으로 된 데이터를 입력하면 시간데이터로 인식한다. date, time, datetime date: YYYY-MM-DD time: HH:MM:SS datetime: YYYY-MM-DD HH:MM:SS in: desc people2; out: 시간 데이터를 테이블에 넣어보자 in: insert into people2 (name,birthdate,birthtime,birthdt) values ('Padma','1988-11-11' , '10:07:35' , '1988-11-11 10:07:35'), ('Larry','1994-04-22' , '04:10:42' , '1994-04-22 04:10:42'); select .. 2022. 5. 16.
[MySQL] 데이터 수 계산 : count, group by, max, min, avg, sum count 함수로 행의 개수를 구할수있다. in: select count(*) from books; out: count와 distinct 함수를 활용하여 고유한 값의 개수를 구할수있다. author_fname의 개수를 구해보자 in: select count(distinct author_fname) from books; out: like 를 활용하여 특정 단어가 포함된 데이터를 셀수있다. 책제목에 the 가 들어있는 책은 몇개인지 구해보자. in: select count(title) from books where title like '%the%'; out: group by를 사용해서 author_lname 별로 몇권의 책을 냈는지 나타내보자 in: select author_lname, count(*) as.. 2022. 5. 16.