인파

You Can Become A

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

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

[MYSQL] 📚 INSERT INTO + JOIN 사용해보기

INSERT INTO + JOIN 쿼리 우선 join은 select용이다. insert문에 join을 결합하여 사용한다는 말은, join하여 select한 특수한 값을 골라 insert 한다는 말과 같다. 다음과 같은 상황일때 사용할 수 있다. Q. TB1 에는 있고, TB2에는 없는 레코드만 TB2에 추가하기 INSERT INTO TB2 (코드, 년도) ( SELECT A.코드, A.년도 -- 추가할 필드 FROM TB1 A LEFT JOIN TB2 B ON A.코드 = B.코드 WHERE B.코드 IS NULL -- join한 TB2테이블의 필드가 NULL이라는 말은 TB2에는 없는 값을 의미한다. ) Reference https://m.blog.naver.com/PostView.naver?isHtt..

category_image
인파_
2021.12.06
(0)
DBMS/MySQL

[MYSQL] 📚 워크벤치에서 테이블 ERD 생성하기 / 쿼리 추출하기

MySQL 워크벤치 ERD 생성 1. 상단 메뉴 탭에서 Database > Reserve Engineer를 선택한다. 2. Hostname, port, username을 입력하고 다음으로 이동한다. 3. ERD로 추출할 DB를 선택 후 다음으로 이동한다. 4. Retrieval Completed Successfully 메시지가 나타났으면 다음으로 이동한다. 5. Show Filter 버튼을 눌러서 제외할 테이블을 선택한다. (왼쪽이 선택, 오른쪽이 제외이다.) 6. ERD 완성 및 배치하기 ctrl + s로 ERD를 mwb 확장자로 저장할 수 있다. MySQL 워크벤치 ERD로 쿼리문 추출 ERD를 만들고 저장하게 된다면 파일명.mwb 확장명으로 저장된다. 만일 누군가 만든 mwb 파일을 워크벤치에 열어..

category_image
인파_
2021.12.06
(0)
DBMS/MySQL

[MYSQL] 📚 RECURSIVE (재귀 쿼리)

WITH RECURSIVE 문 (재귀 쿼리) 프로그래밍에서 재귀 함수를 들어봤듯이, SQL에서도 재귀 쿼리 기법이 존재한다. 다만 문법이 굉장히 해괴한데 우선 WITH RECURSIVE 쿼리문을 작성하고 내부에 UNION을 통해 재귀를 구성하는 것이 포인트이다. WITH RECURSIVE cte_count AS ( -- Non-Recursive 문장( 첫번째 루프에서만 실행됨 ) SELECT 1 AS n UNION ALL -- Recursive 문장(읽어 올 때마다 행의 위치가 기억되어 다음번 읽어 올 때 다음 행으로 이동함) SELECT n + 1 AS num FROM cte_count WHERE n < 3 ) SELECT * FROM test; 메모리 상에 가상의 테이블을 저장한다. 반드시 UNION..

category_image
인파_
2021.11.12
(0)
DBMS/MySQL

[MYSQL] 📚 WITH (임시 테이블 생성)

WITH (임시 테이블) SQL을 통해 빅데이터라 불리는 매우 크고 무거운 데이터를 다루는데, 새로운 결과를 원하고 저장할 때마다 table을 저장할 수 없다. 또한, 실무에서는 실제 실행 속도도 빠르게 진행되어야 하므로 SQL에는 임시 테이블을 만드는 다양한 방법이 존재한다. WITH TEMP_TABLE as ( SELECT NAME, count(NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME ORDER BY NAME ) SELECT * FROM TEMP_TABLE WHERE COUNT > 1 with절은 동일한 SQL이 반복되어서 사용될 때 성능을 높이기 위해 사용된다. table을 만들지 않고도 table 만든 것과 같은 효과를 내는데, 실제..

category_image
인파_
2021.11.12
(0)
DBMS/MySQL

[MYSQL] 📚 테이블 생성 시 engine / character 설정하기

테이블 engine / character 설정 테이블 생성할때 추가 옵션으로 engine과 character를 설정할 수 있습니다. 이 옵션들은 엔진을 변경한다거나 인코딩 포맷을 변경할때 사용할 수 있습니다. MySQL의 기본 엔진이 InnoDB이기 때문에 별다른 설정을 하지 않아도 디폴트로 적용이 되기는 하지만, 이 디폴트 설정이 어느 상황에서나 작용한다는 조건이 아니므로 테이블을 생성할 때 확실히 명시해주는 것이 좋습니다. create table nodejs.comments ( id int not null primary key auto_increment, commenter int not null, comment varchar(100) not null, -- 댓글 created_at datetime n..

category_image
인파_
2021.11.09
(0)
DBMS/MySQL

[MYSQL] 📚 LIMIT / OFFSET 쿼리

limit 결과 중 처음부터 몇개만 가져오기 SELECT * FROM 테이블명 LIMIT 10; -- 처음 부터 10개만 출력하기 (1 ~ 10) SELECT * FROM 테이블명 LIMIT 100, 10; -- 100번째부터 그 후 10개 출력하기 (101 ~ 110) offest 어디서 부터 가져올지 SELECT * FROM 테이블명 ORDERS LIMIT 20 OFFSET 5; -- 5번째 행 부터 25행 까지 출력 (6 ~ 25) -- limit 5, 20 과 같다고 보면 된다. SELECT * FROM 테이블명 ORDERS LIMIT 5, 20 페이징 처리하기 사이트를 만들다보면 무조건 최소 한번은 Paging 을 처리해야하는 화면이 있다. Mysql 에서는 Limit 과 offset 을 제공하..

category_image
인파_
2021.11.09
(0)
DBMS/MySQL

[MYSQL] 📚 상수 select 하는법

상수 select mysql 쿼리문에서 상수를 출력결과용으로 임시로 띄우고 싶을때 사용한다. select 1 as 'one' ,2 as 'two', 3 as 'three'

category_image
인파_
2021.11.08
(0)
DBMS/MySQL

[MYSQL] 📚 AS 연산자의 두 가지 사용처

AS 연산자 쿼리를 하면서 자주보는 as 연산자 지만, 특수한 경우 사용처가 약간 달라 정리 해본다. 1. 열에 대한 별명(alias) 붙이기 별명을 사용하면 쿼리 결과에 표시되는 열의 이름은 변경된다. 하지만 원래 열의 이름은 변하지 않는다. 하지만 굳이 AS 를 쓰지 않아도 별명을 붙일 수 있다. (그냥 생략하면 된다.) select profession AS mc_prof -- 원래 열의 이름 뒤에 별명을 선언하고 from my_contacts group by mc_prof -- 그 이후로는 별명으로 호출한다. order by mc_prof; select profession mc_prof -- as 생략 가능 from my_contacts group by mc_prof group by mc_prof;..

category_image
인파_
2021.11.08
(0)
DBMS/MySQL

[MYSQL] 📚 타입 강제 변환 (cast / convert)

타입 강제 변환 MySQL은 비교나 검색을 수행할 때 데이터의 타입이 서로 다를 경우, 내부적으로 타입이 같아지도록 자동 변환하여 처리합니다. 하지만 사용자가 명시적으로 타입을 변환할 수 있도록 다양한 연산자와 함수도 같이 제공하고 있습니다. ​ 암시적인 형변환 문자열이어도 합치면 숫자로 변환 select '100' + '200'; select concat('100','200'); select concat(100,'200'); select 1 > '2mega'; select 3> '2mega'; select 0 = 'mega2'; BINARY BINARY 연산자는 뒤에 오는 문자열을 바이너리 문자열로 변환합니다. BINARY 연산자를 이용하면 문자가 아닌 바이트를 기준으로 하여 비교나 검색 작업을 수행할..

category_image
인파_
2021.11.08
(0)
DBMS/MySQL

[MYSQL] 📚 패턴 매칭 (LIKE / REGEXP)

LIKE 연산자 문자열 패턴 일치를 검사 기호 설명 % 0개 이상의 문자를 대체함. _ 1개의 문자를 대체함. select * from table where 필드명 like "_영_" # 가운데 글자가 영 인 사람, where 필드명 like "이%" # 성이 이씨인 사람 where 필드명 like "_종신" # 종신 성씨 아무거나 where 필드명 like "20__" # 2000,2002 같은 네자리 숫자만. 20000 안됨. REGEXP mysql에서도 정규표현식을 사용 가능. 패턴 설명 . 줄 바꿈 문자(\n)를 제외한 임의의 한 문자를 의미함. * 해당 문자 패턴이 0번 이상 반복됨. + 해당 문자 패턴이 1번 이상 반복됨. ^ 문자열의 처음을 의미함. $ 문자열의 끝을 의미함. | 선택을 의미..

category_image
인파_
2021.11.08
(0)
DBMS/MySQL

[MYSQL] 📚 WITH ROLLUP & Grouping 함수

WITH ROLLUP RollUp은 그룹 항목 총합(총계)이나, 각 그룹 별 중간합계(소계)가 필요할 경우 사용된다. 예를들어 그냥 ​GROUP BY를 사용하면 GROUP BY 뒤에 나오는 컬럼별로 합계를 구해준다. 이때, 아쉬운 점이 있다면 항목별 합계에 전체 합계가 같이 나오게 하는 것이다. 이럴 때에 사용하는 것이 WITH ROLLUP 이다. WITH ROLLUP는 그룹별로 합계를 한번에 구할때 사용한다. 이때 합계값만 추가하는거라, 나머지 필드 이름 자리에는 당연히 NULL값이 들어가게 되는데, 쿼리를 통해서 이름을 명명해줄수 있다. ​ 웹 서버단에서 사용할 쿼리에는 사용하지 않고 데이터베이스 내에서 데이터를 조회할때만 사용된다. 서버단에서 동일한 기능을 사용하고 싶다면, GROUP BY로 조회해..

category_image
인파_
2021.11.08
(0)
DBMS/MySQL

[MYSQL] 📚 파티션(Partition) 개념 & 사용법

파티션(partition) ​대량의 데이터를 테이블에 저장할 때, 물리적으로 별도의 테이블로 분리해서 저장시키는 기법을 말한다. 단, mysql내부적으로 분리되어 처리되기 때문에, 파티션이 얼마나 있든 사용자는 하나의 테이블로 보인다. 특정 DML과 Query의 성능을 향상시키고, 주로 데이터가 실시간으로 쌓이는 데이터베이스 환경에서 효율적이다. 특히 Full Scan에서 데이터의 접근 범위를 줄여 성능 향상을 가져올 수 있습니다. 물리적인 파티셔닝으로 인해 전체 데이터의 훼손 가능성이 줄어들며, 각 파티션 별로 독립적으로 백업하고 복구할 수 있다. 다만, 테이블 간 Join이 일어날 경우 비용이 증가하며 테이블과 인덱스를 별도로 파티셔닝 할 수는 없다. 파티션 종류 기본적으로 파티셔닝은 수평 분할과 수..

category_image
인파_
2021.11.08
(0)