분류 전체보기 186

MySQL) Instargram - 유니크와 이중유니크 : 클라이언트가 동일 인물을 중복 팔로우 하면 오류 뜨게 하기

1. 유니크 - 단일 컬럼의 값이 중복되지 않도록 하는 것이다  username은 그 자체로 UQ(unique) 해야한다.  username에 UQ를 체크하면, 동일한 username은 존재할 수 없고, 같은 username으로 회원가입하려고 하면, 오류메세지를 띄워 다른 username으로 가입하게 할 수 있다.    2. 이중유니크 - 두 개 이상의 컬럼 조합의 값이 중복되지 않도록 하는 것이다. 팔로우와 팔로잉하는 사람은 여러명이 발생할 수 있다. 예를 들면 'abcd' 라는 사람은 'ef'와 'gh'라는 사람을 동시에 팔로우 할 수 있다. followerId   followeeId    'abcd'            'ef'    'abcd'            'gh'  그러므로 follow..

MySQL 2024.05.20

MySQL) Instargram (3) : 프론트엔드 개발자에게 보낼 데이터 만들기

1) 찾아야 할 데이터 : 이미지 주소, 작성자 이름, 좋아요 수, 태그 이름들  (예시 사진 입니다)   -- 특정 포스팅, photos의 id가 72번이라면 이미지 주소, 작성자 이름, 좋아요 수select p.id, p.image_url, username , count(l.photo_id) as like_countfrom photos pjoin users uon p.user_id = u.idjoin likes lon p.id = l.photo_idwhere p.id = 72; -- 특정 포스팅, photos의 id가 72번 이라면 그에 대한 태그들select photo_id, tag_namefrom photos pjoin photo_tags pton p.id = pt.photo_idjoin tags..

MySQL 2024.05.20

MySQL) Instargram (2) : 인스타그램 데이터 분석하기

데이터 분석하기 -- 유저 중에서 가장 오래된 회원 다섯명을 찾으세요select *from usersorder by created_at asclimit 5; -- 회원가입을 가장 많이 하는 요일은 무슨요일??select dayname(created_at) as dayname, count(id) as countfrom usersgroup by daynameorder by count desc; -- 회원가입은 했지만, 사진은 한번도 올리지 않은 유령회원들의 데이터를 가져오시오select *from users uleft join photos pon u.id = p.user_idwhere p.image_url is null ;-- 가장 유명한 사진은 무엇인지 찾아서 그 사진의 유저이름, 이미지주소, 좋아요 수를..

MySQL 2024.05.17

MySQL) Instargram (1) : 태그, 좋아요, 팔로우 데이터 입력하기

데이터베이스 스키마 이름을 instar_db로 지정하여 만든다.  users, photos 테이블 만들기 photos 외래키 설정    comments 테이블 만들기comments 외래키 설정  likes 테이블만들기likes 외래키 설정  follows 테이블 만들기 follows 외래키 설정 tags 테이블 만들기 photo_tags 테이블 만들기photo_tags 외래키 설정  DROP DATABASE IF EXISTS instar_db;CREATE DATABASE instar_db;USE instar_db; CREATE TABLE users ( id INTEGER AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) UNIQUE NOT NULL, ..

MySQL 2024.05.17

MySQL) 3개 이상의 테이블 조인하기

먼저 참고하시면 도움이 됩니다 https://codebunny99.tistory.com/74 MySQL) 두 개의 테이블 조인하기여러 테이블 생성시 외래키(foreign key) 설정하기   decimal(8,2)는 소숫점을 합쳐서 8자리, 소숫점 아래 2자리가 표현된다는 뜻이다.  ***********  외래키에 UN(unsigned data type)을 체크해야 하는 이유 cucodebunny99.tistory.com       Reviews에 외래키 설정       3개 테이블 조인하기  - 리뷰의 제목과 별점 - select s.title, r.rating, concat(er.first_name,' ', er.last_name) as reviewerfrom Reviews rjoin Series s..

MySQL 2024.05.16

MySQL) 외래 키 제약 조건 설정에서 참조 무결성 변경하기 (RESTRICT , CASCADE , SET NULL , NO ACTION)

데이터베이스에서 외래 키 제약 조건(foreign key constraint)설정이란참조 무결성을 유지하기 위해 수행하는 작업을 말한다.  테이블 설정 밑에, foreign key로 이동한다.   오른쪽에 foreign key options가 있는데, 여기에서 변경하면 된다   1. RESTRICT (기본값)설명: 외래 키로 참조하는 행이 다른 테이블에서 참조되고 있을 때, 해당 행의 삭제나 업데이트를 제한한다동작: 만약 참조 무결성이 깨질 수 있는 경우, 삭제나 업데이트가 허용되지 않는다예제: 만약 학생 테이블의 특정 학생이 여러 성적 테이블에서 참조되고 있다면, 그 학생을 삭제하려고 할 때 오류가 발생하고 삭제가 되지 않는다 2. CASCADE   **중요**설명: 외래 키로 참조하는 행이 삭제되거나..

MySQL 2024.05.16

MySQL) 두 개의 테이블 조인하기

여러 테이블 생성시 외래키(foreign key) 설정하기   decimal(8,2)는 소숫점을 합쳐서 8자리, 소숫점 아래 2자리가 표현된다는 뜻이다.  ***********  외래키에 UN(unsigned data type)을 체크해야 하는 이유 customers 테이블의 id(기본키)가 UN(unsigned data type)이 체크되어, 양수값만 나올 수 있으므로이를 참조하는 customer_id 또한 UN(unsigned data type)으로 데이터 타입을 맞춰줘야 하기 때문이다.  ***********    Foreign Key Name은 알아서 지정하면 된다. Referenced Table는 참조할 테이블을 지정하는 것이고,Referenced Column을 customer 테이블의 id 컬..

MySQL 2024.05.16

MySQL) 데이터베이스 DATE(날짜) 가공하는 함수

데이터 입력하기 CREATE TABLE people (name VARCHAR(100), birthdate DATE, birthtime TIME, birthdt DATETIME);insert into people(name, birthdate, birthtime, birthdt)values( 'Mike', '1990-11-11', '10:07:35', '1990-11-11 10:07:35'),( 'Larry', '1980-12-25', '04:10:42', '1980-12-25 04:10:42');  -- 년 월 일에서 날짜만 가져올 때select name, day(birthdate)from people;-- 년 월 일에서 월만 가져올 때select name, month(birthdate)from peopl..

MySQL 2024.05.16

MySQL) Reverse, Char_length, Ifnull 함수 사용하기

reverse-- 문자열의 순서를 역순으로 바꿔주는 함수 reverse()  -- author_lname 을 역순으로 가져오시오.select reverse(author_lname)from books;  char_length -- 문자열의 갯수를 구하는 함수 char_length() -- 책 제목의 글자 갯수를 구하세요.select char_length(title) length, titlefrom books;   Ifnull- Null인 항목을, 다른 값으로 채우는 방법  -- stock_quantity에 null이 있으면, 0으로 셋팅하자select title, author_fname, author_lname, released_year,ifnull(stock_quantity,0) as stock_quan..

MySQL 2024.05.14

MySQL) Substring, Replace, Upper/Lower 함수 사용하기

substring-- 문자열의 일부분만 가져오는 함수 substring() -- 책 제목을 첫글자부터 열번째 글자까지만 가져오시오-- substring 함수의 시작 위치는 1부터다select substring(title,1,10) as title, pages, released_yearfrom books;-- 제목을, 맨 뒤에서 5번째 글자부터 끝까지 다 나오도록 데이터를 가져오시오select substring(title,-5) as titlefrom books;-- 제목을 앞에서 3번째 글자부터 끝까지 다 나오도록 데이터를 가져오시오select substring(title,3) as titlefrom books;-- 책 제목을, 맨 앞부터 10까지만 가져오고, 뒤에는 ...을 붙여주세요-- The Nam..

MySQL 2024.05.14