mysqlworkbench(41)
-
MySQL Foreign keys의 On Delete CASCADE 설정과 동작방법
MySQL foreign keys 제약 조건 제약조건 테이블간의 링크를 파괴하는 작업을 방지하는데 사용됩니다. Foreign keys가 있는 테이블을 자식 테이블이라고 하며 기본 키를 사용하여 참조하고 있는 테이블을 부보 테이블이라고 합니다. Foreign keys 설정하는 방법 1. 테이블 설정창 하단의 Foreign keys 탭을 클릭합니다. 2. Foreign key Name을 구분하기 쉽게 설정하고 Refernced Table(참조할 테이블)의 컬럼을 선택합니다. 3. 오른쪽 상자로 넘어와 Foreign key를 설정할 컬럼을 선택하고 Referenced Column(참조할 컬럼)을 선택합니다. 4. 앞서 두 상자의 설정이 끝나면 오른쪽 맨 끝에 Foreign Key Options에 On Dele..
2023.12.29 -
MySQL 알아두면 쓸모있는 기능 활용 방법(데이터 문자열 찾기 & 변경, 테이블 코멘트 사용)
MySQL을 사용하다가 활용하면 좋은 꿀팁들을 정리해보았습니다. 필요할 때 알아두면 유용한 활용 꿀팁을 공유하며, SQL을 공부하며 지속적으로 추가될 수 있습니다! 1. 문자열 데이터의 단어 등을 검색하고 변경하는 방법 SQL script에서 ctrl + F를 하면 단어를 찾거나 변경할 수 있는 검색창이 뜹니다. Find의 경우 특정 단어를 검색하여 찾는 기능을 합니다. Find & Replace의 경우 단어를 찾고 그 단어를 다른 단어로 바꾸는 기능을 합니다. 위의 검색창에는 찾을 단어를 입력하고 아래 텍스트 필드에는 위의 검색한 단어를 바꿀 단어를 입력합니다. 그리고 왼쪽의 버튼 Replace ALL 또는 Replace을 선택하여 전체를 바꿀 것인지 아니면 커서로 선택된 단어 하나씩 바꿀 것인지 선택..
2023.12.29 -
MySQL의 like와 문자열 컬럼에 Indexes fulltext 설정하는 방법
FullText Index는 일반적인 인덱스와 다르게 매우 빠르게 테이블의 모든 텍스트 필드를 검색합니다. 검색엔진과 유사한 방법으로 자연어를 이용하여 데이터를 검색할 수 있도록 모든 데이터의 문자열 단어를 저장합니다. 인덱스 FullText를 설정하는 방법에 대해 알아봅니다. Indexes FULLTEXT 설정하는 방법 1. FullText 설정할 컬럼이 있는 테이블에 들어가서 하단의 Indexes 탭을 클릭합니다. 2. Index Name에 구분이 가능한 이름을 지정하여 넣고 Type을 FULLTEXT로 선택합니다. 3. FULLTEXT로 설정할 컬럼을 체크하고 apply를 클릭하여 적용해줍니다. 문자열을 검색하거나 포함하고 있는 것을 찾을 때는 like 키워드를 사용하며 이렇게 해당 컬럼의 FULL..
2023.12.29 -
MySQL Error Code: 1062. Duplicate entry 에러코드 해결 방법
MySQL Workbench에서 데이터 작업을 하던 도중 에러코드를 만났습니다. 너무나도 빈번하게 일어나는 이 에러 코드의 의미는 말그대로 중복된 항목 데이터가 있어서 insert 혹은 update 할 수 없다는 내용의 에러 코드입니다. 테이블 수정시 나왔던 Error Code: 1062. Duplicate entry 에러는 테이블 수정 후 저장시 이미 저장된 데이터에 잘못된 데이터가 있어서 저장이 되지 않았었고 해당 테이블 내의 데이터를 모두 지우고 테이블 설정을 마무리한 뒤 다시 데이터를 insert 해주었습니다. 이번에는 직접 insert 문으로 데이터를 저장하다가 뜬 에러코드로 insert문 자체에는 문제가 없었습니다. insert into follow (followerId, followeeId)..
2023.12.27 -
MySQL 테이블의 Indexes unique 설정하는 방법
컬럼에 고유 인덱스를 설정하는 방법에 대해 알아봅니다. 고유 인덱스는 성능뿐만 아니라 데이터 무결성에 사용되며, 테이블에 중복 값을 삽입하는 것을 허용하지 않습니다. PRIMARY 및 UNIQUE 제약 조건이 데이터베이스 테이블에 적용될 때 사용자가 인덱싱된 테이블 열에 중복 값을 삽입하는 것을 방지하기 위해 자동으로 만들어집니다. 인덱스 수준에서 데이터의 고유성을 보장하며, 필터링된 인덱스의 경우와 같이 테이블 수준에서 고유성을 보장할 수 없습니다. 쿼리 계획 및 데이터 가져오기, 검색에 사용되므로 사용/쿼리된 열에 따라 쿼리 속도가 빨라집니다. 회원 정보를 관리하는 데이터 베이스의 경우 이메일, 아이디 등을 중복으로 재가입하는 것을 방지하기 위해 해당 컬럼에 유니크 조건을 부여하여 데이터가 중복되지 ..
2023.12.26 -
MySQL 인스타그램 관련 데이터 관리 실습 문제(order by, group by, join, limit ...)
인스타그램 등과 같은 sns의 데이터를 MySQL에서 어떻게 데이터 처리하는지 실습을 진행해봅니다. 보통 게시물을 업로드하게 되면 사진, 본문 텍스트 등의 관련 정보를 서버에 보내게 됩니다. 사진은 서버에 보내서 스토리지에 저장하고(실제 사진 파일) 본문 멘트와 같은 문자열은 데이터베이스에 저장됩니다.(사진 url, 유저정보(ID, Email 등), 게시물 본문 멘트, 태그 등) 주어진 데이터는 아래와 같습니다. SELECT * FROM ig_clone.users; SELECT * FROM ig_clone.tags; SELECT * FROM ig_clone.photos; SELECT * FROM ig_clone.photo_tags; SELECT * FROM ig_clone.likes; SELECT * F..
2023.12.26 -
MySQL 테이블 결합하는 join을 활용한 실습 문제 (left join, right join ...)
join을 활용한 다양한 실습문제를 통해 원하는 데이터를 결합, 추출할 수 있도록 연습합니다. 실습문제 1. 각 고객별로 주문 수를 나타내시오. 고객의 이름과 이메일이 함께 나와야 합니다. 주문한 내용을 기반으로 주문한 내용만 나오게 한 방법 select c.first_name, c.last_name, c.email, count(o.customer_id) as order_cnt from orders o join customers c on c.id = o.customer_id group by o.customer_id; 2. 모든 회원정보를 다 나타내고 주문 안한 사람은 주문횟수가 0으로 나타나도록 하고 싶을 때 select c.first_name, c.last_name, c.email, count(o.cu..
2023.12.26