인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
DBMS/MySQL

🐬 MySQL(RDB)에 배열을 저장하는 방법

MySQL에 배열 데이터를 저장 게시판을 제작하는데 있어, 게시글의 내용을 서버에 다음과 같이 보낸다고 가정해보자. 게시글 제목(title)과 게시글 제목(description) 그리고 게시글에 사용된 이미지(thumb_images) 정보가 들어있다. 이때 게시글 이미지들이 배열로 되어있는데 이를 어떻게 저장해야 할지 고민해보자. { "data": { "thumb_images": ["https://example.com/product/H9881/thumb_image1.jpg", "https://example.com/product/H9881/thumb_image2.jpg", "https://example.com/product/H9881/thumb_image3.jpg"], "description": "게시글 ..

category_image
인파_
2022.06.24
(0)
DBMS/MySQL

[MYSQL] 📚 풀텍스트 인덱스(Full-Text Index) 사용법

보통 mysql 에서 텍스트 문자열을 검색시 like 나 instr 연산자를 사용해 원하는 텍스트를 필터링하여 조회할 수 있다. SELECT * FROM FulltextTbl WHERE description LIKE '%남자%'; -- 중간에 남자 들어간 글 검색 그러나 검색할 텍스트 내용이 어마어마한 경우 성능이 떨어지게 될 것이다. 만약 10년치 기사에서 검색한다면 과부하가 발생하고 응답시간도 길어진다. 이것을 전체 텍스트 검색 기능이 해결해 준다. 전체 텍스트 검색은 첫 글자 뿐 아니라 중간의 단어나 문장으로도 인덱스를 생성해 주기 때문에, 전체 텍스트 인덱스를 통해 순식간에 검색 결과를 얻을 수 있다. 전체 텍스트 인덱스는 신문기사와 같이, 텍스트로 이루어진 문자열 데이터의 내용을 가지고 생성한 ..

category_image
인파_
2022.06.21
(0)
DBMS/MySQL

[MYSQL] 📚 인덱스(index) 핵심 설계 & 사용 문법 💯 총정리

인덱스의 개념 인덱스란 데이터의 저장(INSERT, UPDATE, DELETE) 의 성능을 희생하고 그 대신에 데이터의 읽기 속도를 높이는 테이블의 동작속도(조회)를 높여주는 자료구조이다. 쉽게 예를 들어보면 책 뒷편에 '찾아보기'가 인덱스의 역할과 동일하다고 볼 수 있다. 예를들어 '홍길동'이라는 단어를 찾고싶으면 색인페이지에서 '홍'으로 시작하거나 'ㅎ'으로 시작하는 색인을 찾아보면 빠르게 찾을 수 있다. 영어사전의 알파벳순 정렬도 마찬가지이다. 어떤 영단어를 영어사전에서 찾으려 할때 이미 알파벳 순으로 정렬되어있기 때문에 처음에 해당하는 알파벳 페이지 위치로 가서 검색하면 책뒷편을 뒤지는 것보다 빠르게 찾을수 있다. 인덱스가 없더라도 데이터베이스를 '작동' 하는데 있어서는 문제는 없다. 하지만 데이..

category_image
인파_
2022.06.20
(0)
DBMS/MySQL

[MYSQL] 📚 Select into 문법 정리

Select into MySQL에서 select into 문법은 사용자 정의 변수에 select 한 필드 값을 집어넣기 위해서 사용된다. 보통 스토어드 프로시저 내에서 즐겨 쓰인다. BEGIN DECLARE a int; DECLARE b int; select user_name, user_id into a, b from user_table -- user_table에서 조회한 user_name과 user_id 필드값을 위에서 선언한 지역변수 a, b에 각각 넣는다. END$$ DELIMITER $$ CREATE PROCEDURE GetCustomerLevel( IN p_customerNumber int(11), OUT p_customerLevel varchar(10)) BEGIN DECLARE creditl..

category_image
인파_
2022.06.18
(0)
DBMS/MySQL

[MYSQL] 📚 Delete 쿼리 안되는 현상 해결방법

테이블 데이터 delete 안되는 현상 해결법 MySQL 워크벤치에서 테이블의 데이터를 삭제하였는데, 아무 문제없이 삭제되어야 하지만 다음과 같이 에러가 나오는 것을 볼 수 있을 것이다. delete from 테이블명 where 지우고자하는 데이터 대상; > Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 딱히 delete에 제약조건이 존재하는 것도 아니고 왜 멀쩡한 쿼리문인데 에러를 내는 것..

category_image
인파_
2022.06.13
(0)
DBMS/MySQL

[MYSQL] 📚 서브쿼리 연산자 EXISTS 총정리 (성능 비교)

EXISTS 연산자 서브쿼리가 반화나는 결과값이 있는지를 조사한다. 단지 반환된 행이 있는지 없는지만 보고 값이 있으면 참 없으면 거짓을 반환한다. 한 테이블이 다른 테이블과 외래키(FK)와 같은 관계가 있을 때 유용 조건에 해당하는 ROW의 존재 유무와 이후 더 수행하지 않음 (지연 평가 원리 이기 때문에 성능이 좋다) 일반적으로 SELECT절까지 가지 않기에 IN에 비해 속도나 성능면에서 더 좋음 반대로 조건에 맞지 않는 ROW만 추출하고 싶으면 NOT EXISTS 쿼리 순서 : 메인 쿼리 → EXISTS 쿼리 Q. 주문한 적이 있는(주문이 존재하는) 사용자를 알고 싶은 경우 SELECT * FROM customers WHERE EXISTS ( SELECT * FROM orders WHERE orde..

category_image
인파_
2022.06.06
(0)
DBMS/MySQL

[MYSQL] 📚 JOIN과 서브쿼리 차이 및 변환 💯 정리

조인(JOIN) vs 서브쿼리(Sub Query) 조인과 서브쿼리는 때로 동일한 결과를 얻을 수 있다. 상황에 따라 조인을 사용하는 것이 훨씬 좋을 때도 있고, 반면에 서브 쿼리를 사용하는 것이 좋을 때도 있다. 서브 쿼리는 복잡한 SQL 쿼리문에 많이 사용된다. 보통은 메인 쿼리라고 부르는 외부 쿼리가 있고, 외부 쿼리 내에 다른 쿼리문, 즉 내부 쿼리가 있는 구조다. [MYSQL] 📚 서브쿼리 정리 서브쿼리(Subquery) 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문을 말한다. (select * from table) 같이 괄호()안에 있는 쿼리를 서브 쿼리라 말한다 서브쿼리(=자식쿼리, 내부쿼리) - 메인쿼리 컬럼 사 inpa.tistory.com 반면에, 조인은 여러 개의 쿼리를 필요로..

category_image
인파_
2022.06.06
(0)
DBMS/MySQL

[MYSQL] 📚 테이블 조인(JOIN) - 그림으로 알기 쉽게 정리

SQL JOIN JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해 주는, Relation Database 에서 가장 많이 쓰이는 녀석이다. (INNER) JOIN 조인하는 테이블의 ON 절의 조건이 일치하는 결과만 출력 표준 SQL과는 달리 MySQL에서는 JOIN, INNER JOIN, CROSS JOIN이 모두 같은 의미로 사용된다. select u.userid, name from usertbl as u inner join buytbl as b on u.userid=b.userid where u.userid="111" -- join을 완료하고 그다음 조건을 따진다. inner join 함축 구문 단순히 from 절에 콤마 쓰면 inner jo..

category_image
인파_
2022.06.06
(0)
DBMS/MySQL

[MYSQL] 📚 서브쿼리 개념 & 문법 💯 정리

서브쿼리(Subquery) 서브쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELETE 문을 의미한다. 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브쿼리는 내부쿼리(inner query)라고도 부른다. 서브쿼리는 다음과 같이 괄호() 로 감싸져서 표현 된다. [ 서브 쿼리 실행 순서 ] 서브쿼리 실행 → 메인(부모) 쿼리 실행 서브쿼리는 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL문을 말한다. (select * from table) 같이 괄호()안에 있는 쿼리를 서브 쿼리라 말한다 서브쿼리(=자식쿼리, 내부쿼리) - 메인쿼리 컬럼 사용 가능 메인쿼리(=부모쿼리, 외부쿼리) - 서브쿼리 컬럼 사용 불가 * Java 객제지향의 상속과 똑같은 개념이다...

category_image
인파_
2022.06.05
(0)
DBMS/MySQL

[MYSQL] 📚 테이블 복사하는 4가지 방법 정리

테이블 복사 테이블을 고대로 복사해서 사용할 필요성이 생겼을때 어떠한 방법으로 복사할수 있는지 알아보는 시간을 가져보자. 테이블 구조 복사 기존 테이블의 필드 설정 그대로 복사 된다. 단, 기존 테이블에 'Primary Key' 또는 'auto_increment' 가 설정 되어 있으면 복사 할 수 없음. Create Table new_table like old_table Create Table IF NOT EXISTS new_table like old_table -- (new_table 이 없으면 복사) 테이블 데이터 복사 대상 테이블의 데이터만 복사하는 경우 대상 테이블의 컬럼 중에 'auto_increment' 설정 이 된 컬럼이 있을 경우 해당 컬럼에 데이터 입력시 중복된 데이터가 있으면 오류 발생..

category_image
인파_
2022.06.03
(0)
DBMS/MySQL

[MYSQL] 📚 콘솔(CLI) 시스템 명령어 정리

MYSQL 콘솔 명령어 모음 mysql을 워크벤치가 아닌 콘솔(리눅스)로서 사용할때 명령어 모음이다. 이걸 CLI 명령어라고도 한다. MYSQL 서버 명령어 mysql서버 잘 돌고있는지 확인 $ service mysql status ​ mysql서버 구동 $ service mysql start ​ mysql 재구동 $ service mysql restart ​ mysql 명령 프롬프트 나가기 $ exit MYSQL 사용자 명령어 root 권한으로 mysql 콘솔 실행 $ mysql -u root -p ​ 비밀번호 변경 $ mysql admin –u root –p password 현재 등록된 사용자 조회 mysql> use mysql; mysql> select user, host from user; ​ 사..

category_image
인파_
2022.06.02
(0)
DBMS/MySQL

[MYSQL] 📚 트랜잭션(Transaction) 개념 & 사용 💯 완벽 정리

트랜잭션(Transaction) 이란? 트랜잭션(Transaction)의 사전적 의미는 거래이고, 컴퓨터 과학 분야에서의 트랜잭션(Transaction)은 "더이상 분할이 불가능한 업무처리의 단위"를 의미한다. 이것은 하나의 작업을 위해 더이상 분할될 수 없는 명령들의 모음, 즉, 한꺼번에 수행되어야 할 일련의 연산모음을 의미한다. 다음과 같은 상황이 있다고 가정하자. A는 매달 부모님에게 생활비를 송금받는다. 어느 날, 부모님이 A에게 생활비를 송금해 주기 위해 ATM을 이용했고 여느날 처럼 A의 계좌로 생활비를 송금했다. 그러나 모종의 이유로 인하여 부모님의 계좌에선 생활비가 차감되었는데, A의 계좌에는 생활비가 입금되지 않았다. 계좌이체 행위를 풀어 쓴 것이다. 보다 시피 계좌이체 라는 행위는 인출..

category_image
인파_
2022.01.13
(0)