MySQL 16

MySQL) like에 빨간 밑줄이 뜰 때 백틱(`) 사용하기

like에 오류가 뜨는데, 백틱을 사용하면 오류가 뜨지 않는다    백틱(`)? 식별자(테이블 이름, 열 이름 등)를 명확히 구분하여 SQL 문법에서 식별자를 명확하게 정의하고 충돌을 피하기 위해 중요한 역할을 한다.    백틱을 사용하는 이유  1. 예약어 충돌 방지: SQL에는 SELECT, INSERT, UPDATE 등과 같은 예약어가 많다. 테이블 이름이나 열 이름이 이러한 예약어와 충돌할 때, 백틱을 사용하면 데이터베이스가 이것을 식별자로 인식한다. 예를 들어, like는 패턴 매칭에서 사용되는 SQL 예약어이다. 이를 테이블 이름으로 사용할 때는 백틱을 사용해야 한다.INSERT INTO `like` (postingId, userId) VALUES (2, 1); insert into `like..

MySQL 2024.05.30

MySQL) 테이블의 데이터를 모두 delete 했을 때 id 숫자 리셋 시키는 방법

데이터가 여러개 있다가 테이블의 모든 데이터를 삭제하면,      이렇게 id가 지웠던 데이터의 id 다음 숫자부터 생성되는데,       id를 다시 1부터 생성하고 싶다면 일단, 테이블의 모든 데이터를 삭제한 후에,       테이블 설정에서 options로 이동해서 Auto Increment 부분을 1로 바꾸어주고 Apply 하면,        잘 적용되면 이처럼 아무것도 뜨지 않게되고, id의 숫자들이 리셋된다.

MySQL 2024.05.30

MySQL) 검색할 문자열 찾는 속도 단축하기 (FULLTEXT 설정)

아래는 영화제목을 검색하여, 영화 목록(리스트)을 가져오는 SQL문이다. select m.id, m.title, count(r.id) as review_cnt, ifnull(avg(r.rating) , 0) as avg_ratingfrom movie mleft join review ron m.id = r.movieIdwhere title like '%story%' or summary like '%story%'group by m.idlimit 0, 25;   title like %(유저가 단어를 입력)%그런데 유저가 입력한 단어가 있는 행을 검색하는 것은 속도가 느려서속도를 빠르게 해주려면 아래와 같이 설정해야 한다.   컬럼 설정에서 index에 index name을 자유롭게 지정하고, Type을 FUL..

MySQL 2024.05.20

MySQL) now() 와 now() on update now() 차이점

컬럼 설정에서,  Datatype을 TIMESTAMP로 설정하고 Default/Expression(기본값)에  now()를 입력하고 적용(apply)하면 CURRENT_TIMESTAMP, now() on update now()를 입력하고 적용(apply)하면 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP라고 입력된다.     now() : CURRENT_TIMESTAMP   = 행을 처음으로 삽입할 때 기본값을 현재 시간으로 설정한다  now() on update now(): ON UPDATE CURRENT_TIMESTAMP  = 행을 업데이트 할 때 기본값을 업데이트 된 시간으로 표현하기 위해 설정한다

MySQL 2024.05.20

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