본문 바로가기

AWS/MySQL18

MySQL AUTO_INCREMENT 값을 초기화 후, 테이블 안의 모든 데이터의 ID값을 재조정하는 방법 ALTER TABLE `테이블` AUTO_INCREMENT=1; SET @COUNT = 0; UPDATE `테이블` SET id = @COUNT:=@COUNT+1; 위 쿼리문은 현재 모든 데이터 ID값을 1부터 재조정하고, 다음 인덱스 값을 [마지막 행번호 + 1] 로 정하는 명령어입니다. id값의 AUTO_INCREMENT를 초기화한것. 2023. 3. 28.
Mysql 데이터 유형을 고려할때, 설계의 핵심(정규화) 아래 내용은 스스로 학습한 내용을 바탕으로 작성한 주관적인 글이므로 맹신하지 마세요 개인참고용입니다 데이터타입 설정에 관한 지식 1.참조하는 외래키는 참조당하는 키와 데이터 타입이 같아야한다. ? 꼭 그럴필요는 없지만 기본적으로 맞추는것이 좋다 이것은 잠재적 에러를 방지한다 pk에 int형 un 을 설정했다면 pk를 참조하는 fk도 un(양의정수만)을 설정하는것이 상식이지않을까 ? 2.NOTNULL이 있을경우 속도가 좀더좋다는 걸 얼핏봣다? 근거는 null인지 체크하려고 한번의 연산?을 거치는 것같다 (아닐수도있음) 아무튼 꼭필요한 경우가 아니라면 null로 할 이유가 없다는것 3.float은 4바이트 decimal은 5바이트 금융관련데이터는 decimal이나 numeric 을 이용해야한다 더정확한 실수.. 2023. 3. 7.
MySQL 영화 리뷰 서비스 개발 use movie_test_db; -- 1. 테이블 만들기 -- 2. 더미 데이터 insert 했다고 가정하고 진행한다. -- 3. 화면 기획서를 보고, 필요한 slq문을 작성. -- 중요! 순서 : 단일 테이블 처리 가능한 것부터 작성하고 -- 메인 화면처럼, 여러 테이블 조인하는 것은 맨 나중에 작성한다. -- 회원가입 insert into user ( email, password, nickname, gender) values ( 'aksl@naver', '1234', '김닉네임', 1); -- 영화명을 탭하면 리뷰 작성 화면 -- 100번 영화의 10번유저 리뷰 예시 insert into review ( movie_id, user_id, content, rating) values ( 100, 10 .. 2022. 12. 12.
MySQL 인스타그램 클론 스키마 디자인 인스타 그램 클론 DB를 만들어보자. 프로필, 좋아요, 해쉬태그 기능이있다. 작성한 글에 댓글이 달린 모습 프로필에 팔로우, 팔로잉 숫자 카운트 자, 이제 테이블을 만들어보자 유저의 정보를 기록할 users 테이블과 사진을 관리할 테이블을 아래와 같이 만든다. photos 테이블의 user_id 는 users 테이블의 id를 참조하기위해 Foreign Keys(연결) 설정을 한다. 더미 데이터가 있다고 가정하고 아래와 같이 SQL문을 작성 및 테스트 해볼 수 있다. -- 1. 가장 오래된 회원 5명은??? select created_at, id from users order by created_at limit 0,5; -- 2. 회원가입을 가장 많이 하는 요일은??? select dayname(creat.. 2022. 12. 12.
MySQL 일정공유 앱개발 테이블 설계(회원가입, 내 일정화면, 친구들의 일정목록) 회원가입 테이블 일정화면 테이블 내가 팔로잉한 친구들의 일정을 가져오는 테이블 테이블을 만들었으면 임의의 더미 데이터로 테스트 해본다. 여기서 데이터는 가지고 있다고 가정하고 아래와 같은 sql문을 작성할 수 있다. 여기서 Foreign Key 설정에 관해 다루지는 않았지만 했다고 가정한다. -- 1. 회원가입 sql을 작성. insert into user ( email, password, nickname) values ('abc@naver.com', 'abcd1234', '홍길동'); -- 2. 25개씩 가장 먼 미래의 일정부터 차례로 보여줍니다. -- 나는 user_id 1번인 사람이다 라고 가정. select * from schedule where user_id = 1 order by date de.. 2022. 12. 12.
MySQL sns 테이블 생성 : 좋아요, 팔로우, 태그 등은 유니크해야한다. table create 제일하단 indexes 클릭 index name 을 짓고 type을 UNIQUE로 한뒤 index columns 를 체크하고 apply 하면 체크된 칼럼에 값은 유니크 하게 된다. (중복데이터가 들어오면 에러를 발생시킨다.) 2022. 12. 8.
MySQL 테이블 합치기 left join on, Foreign keys, n번 고객이 주문한 데이터 가져오기, 다른테이블에 남은 고객정보 한번에 삭제하기 on delete cascade created_at 컬럼은 날짜의 최신화를 위해 Default 값에 now()를 하였음. 누가 주문했는지 알수있게 customer_id를 customers 테이블의 id 값과 아래처럼 연결시킬것이다. 위에 orders 테이블생성에서 좌측하단 Foreign keys 를 누르면 위와같이 뜬다. Foreign keys 란 서로다른 두 테이블의 키를 연결시키는 작업이다. Referenced Table 클릭후 연결할 테이블선택Referenced Column 클릭후 연결할 컬럼 선택 여기서는 Referenced Table은 customers 테이블을선택 Referenced Column은 customers 테이블의 id 를 orders 테이블 customer_id 컬럼에 체크하여 연결 하였다. 이로써 orders 테.. 2022. 12. 8.
MySQL !=, group by having, between A and B, not like, case, if ,not in, not null -- 테이블 생성을 위한 코드 INSERT INTO books (title, author_fname, author_lname, released_year, stock_quantity, pages) VALUES ('The Namesake', 'Jhumpa', 'Lahiri', 2003, 32, 291), ('Norse Mythology', 'Neil', 'Gaiman',2016, 43, 304), ('American Gods', 'Neil', 'Gaiman', 2001, 12, 465), ('Interpreter of Maladies', 'Jhumpa', 'Lahiri', 1996, 97, 198), ('A Hologram for the King: A Novel', 'Dave', 'Eggers', 2012,.. 2022. 12. 7.
MySQL 날짜처리 day(),dayname(),now(),date_format(),date_add( , interval ), on update now() -- 날짜 관련 처리하는 방법 -- insert into people2 (name, birthdate, birthtime, birthdt) values ('Mike', '1990-11-11', '10:07:35','1990-11-11 10:07:35'), ('Larry', '1972-12-25', '04:10:42', '1972-12-25 04:10:42'); -- 날짜(일) 정보만 가져오기 select name, day(birthdate) from people2; -- 요일 정보만 가져오기 select name, dayname(birthdate) from people2; -- 1=Sunday, 2=Monday, 3=Tuesday ''' select name, dayofweek(birthdate) fro.. 2022. 12. 7.
MySQL group by, count, sum, avg, max, min, sub query 사용법 -- 테스트용 테이블을 만드는 코드 INSERT INTO books (title, author_fname, author_lname, released_year, stock_quantity, pages) VALUES ('The Namesake', 'Jhumpa', 'Lahiri', 2003, 32, 291), ('Norse Mythology', 'Neil', 'Gaiman',2016, 43, 304), ('American Gods', 'Neil', 'Gaiman', 2001, 12, 465), ('Interpreter of Maladies', 'Jhumpa', 'Lahiri', 1996, 97, 198), ('A Hologram for the King: A Novel', 'Dave', 'Eggers', 20.. 2022. 12. 7.
MySQL 유니크,정렬,n개만가져오기, 문자열안에 원하는 문자를 검색, 자리수로 가져오기 -- 연습용 테이블 생성을 위한 코드 INSERT INTO books (title, author_fname, author_lname, released_year, stock_quantity, pages) VALUES ('The Namesake', 'Jhumpa', 'Lahiri', 2003, 32, 291), ('Norse Mythology', 'Neil', 'Gaiman',2016, 43, 304), ('American Gods', 'Neil', 'Gaiman', 2001, 12, 465), ('Interpreter of Maladies', 'Jhumpa', 'Lahiri', 1996, 97, 198), ('A Hologram for the King: A Novel', 'Dave', 'Eggers', 2.. 2022. 12. 7.
MySQL 문자열 컬럼의 데이터를 가공하는, 여러함수들 -- 연습용 테이블 생성을 위한 코드 INSERT INTO books (title, author_fname, author_lname, released_year, stock_quantity, pages) VALUES ('The Namesake', 'Jhumpa', 'Lahiri', 2003, 32, 291), ('Norse Mythology', 'Neil', 'Gaiman',2016, 43, 304), ('American Gods', 'Neil', 'Gaiman', 2001, 12, 465), ('Interpreter of Maladies', 'Jhumpa', 'Lahiri', 1996, 97, 198), ('A Hologram for the King: A Novel', 'Dave', 'Eggers', 2.. 2022. 12. 6.