SQL

DI(Digital Innovation)/DataBase & SQL 뽀개기

진짜 검색기록은 최종보스 Full Text Search

만약 여러분이 게시판 서비스 같은것을 운영한다고 해봅시다. 그래서 테이블 하나당 게시물 내용, 작성자, 발행일을 저장하는데 검색기능이 필요해진겁니다. 검색기능은 어떻게 구현할까요? LIKE 연산자 한 몇달전에 배웠쥬? 간단한 검색기능을 만들고 싶다면 컬럼명 LIKE %단어% 하면 됩니다. 짧은 문장은 이걸로 커버가 가능하지만 몇가지 단점이 있습니다. % 기호를 맨앞에 쓰면 인덱스 활용을 못하고 문장이 좀 길거나 행이 너무 많아지면 LIKE 연산자의 속도가 매우 느립니다. 그래서 이걸 보완하기위해 full text index란 것이 있습니다. Full text search를 위한 index 긴 글도 DB 컬럼하나에 보관할 수 있습니다. text 데이터 타입을 쓴다면 최대 6만5천자를 보관할 수 있는데용 이..

DI(Digital Innovation)/DataBase & SQL 뽀개기

index 만들어보기 그리고 성능 평가해보기

저희가 지난 시간 까지 index를 만들어 놓으면 성능이 향상된다고 배웠습니다. SELECT 가 얼마나 성능이 향상되었는지 확인해볼까요?? execution plan(실행 계획) 분석해보기 library.csv 파일을 가져와보겠습니다. 이 csv 파일은 6만건의 도서관 소장도서 정보가 저장되어있는 데이터셋입니다. SELECT * FROM library WHERE 등록번호 = 'CEM97499' 근데 이게 생각보다 오래 걸리는 것 같습니다. 뭔가가 오래 걸리는 것 같으면 실행계획부터 분석하고 봐도 되는데요 원하는 SELECT 쿼리문에 커서 올리고 DBever 상단메뉴 SQL 편집기 → 실행계획보기를 누르면 실행계획이 출력됩니다. 이게 컴퓨터가 이 쿼리문을 어케 실행할지 계획을 보여주는건데요. 이걸보고 성능..

DI(Digital Innovation)/DataBase & SQL 뽀개기

솔로지옥 덱스말고 SQL index

안녕하세용 다들 한 주 잘보내고 계신지요. 이번주는 머 비만 오다 끝나네요. 저는 어제 새벽에 배탈이나서 거의 잠을 못잔 상태인데요… 머리가 깨질 것 같슴다ㅜㅠ 하지만 오늘도 어디인지 모르는 저의 자리에서 SQL 공부 함 때리겠습니다. 자자 드디어 procedure을 끝내고 이제 index 로 넘어가보려합니다. 사실 지금 배우는 것은 거의 응애 걸음마 수준이고 이것을 자유자재로 쓸라하면 직접 실무에서 쿼리를 짜보고 그 쿼리로 사수한테 깨져가며(?) 배우는게 실력이 가장 빨리 느는 지름길입니다. 약간 마시면서 배우는 술게임 같은 느낌..? 그럼 오늘도 한번 드가봅시다 렛츠 기릿 테이블 안에 데이터가 몇 억개나 있는데 거기서 ‘나이’가 26인 사람을 찾고 싶다면 어쩔까요? 어쩌긴 멀 어째요!! SELECT ..

DI(Digital Innovation)/DataBase & SQL 뽀개기

procedure, function 안에서 쓸 수 있는 IF문법

안녕하세요 https://www.youtube.com/watch?v=QxJP8LlLqzQ 요즘 푸욱 빠진 노래입니다. 뭔가 힐링이되는 노래랄까… 밤바다 걸으면서 들으면 진짜 너무 좋을 듯요… 다들 한번씩 들어보세요 ㅎㅎ 노래 너무 좋습니다. 드디어 procedure 마지막 공부입니다. 오늘 배울 것은 procedure, function 안에서 쓸 수 있는 if를 배워볼것인데요. 뭘하든 경우에 따라 다른 코드를 실행하고 싶을때가 있습니다. 그럴때 어떤 코드를 사용할까요? 전에 배웠죠. IF / THEN / ELSE 조건에 따라 다른 쿼리를 실행하고 싶어요 예를 들어 card 테이블의 ‘사용금액’컬럼의 총 합계를 구합니다. 총 합계가 500만원 미만이면 SELECT ‘분발하세요’ 총 합계가 500만원 이상이..

DI(Digital Innovation)/DataBase & SQL 뽀개기

procedure 많이 만들기 싫다면? 파라미터로 해결하세요~

저번시간에 이어 저희가 쭉 procedure를 만든다면 같은 코드를 쉽게 재사용할 수 있다고 배웠습니다. SELECT * FROM product WHERE 가격 > 5000; 이런걸 프로시저로 만들어 봤는데요. 그럼 나중에 갑자기 가격이 6000 이상으로 바뀐다면 어떡할까요? 그러면 만들어둔 procedure을 삭제하고 다시만들까요? 저는 고품격 달려라 국나뇽이기 때문에 파라미터를 사용하면 하나의 procedure로 다양한 상황에 대응가능한 것을 배우겠습니다. 구멍뚫기 문법 CREATE PROCEDURE emart.get_all() BEGIN SELECT * FROM product WHERE 가격 > 5000; END 저번시간에는 이렇게 프로시저를 만들어보았습니다. 이러면 항상 5000원이 넘는 상품밖에..

DI(Digital Innovation)/DataBase & SQL 뽀개기

procedure에서 많이 쓰는 변수 문법

저희가 코딩을할때 ‘변수’를 많이 씁니다. 쉽게 말해 변수란 숫자, 문자 등의 간단한 자료를 잠시 저장해두는 통이라고 생각하는데요. 만들어서 사용해봅시다. 변수 문법 변수는 길고 복잡한 자료를 잠시 저장해주는 통일뿐인데요. SET 키워드를 이용해서 만들어줍니다. SET @age = 20; SELECT @age := 20; = 나 아라비아 상형문자 같은 := 써도 같은 문법입니다. SELECT @변수명 := 값; 이것도 같은 뜻인데요. 편한거 쓰십쇼 그래서 위처럼 작성하면 age라는 변수명에 20이 저장됩니다. SET @age = 20; SELECT @age; 그럼 앞으로 @변수명이라고 쓸때마다 그 자리에 저장했던 자료가 남습니다. 그래서 위처럼 쿼리짜면 20이 출력됩니다. SET @price = 6000..

DI(Digital Innovation)/DataBase & SQL 뽀개기

저장 프로시저 stored procedure 쓰면 나도 알파메일

하나부터 열까지다 널 위한 소리 ~ 내 말 듣지 않는 너에게는 뻔한 잔소리… 하루에도 열번씩 짜는 쿼리가 있다고 칩시다. 그때마다 직접 문장을 길게 타이핑하고 있으면 화가 좀 나겠죠? 그럴때 stored procedure(저장프로시저)를 사용합니다. stored procedure는 코드 덩어리 저장 가능 그래서 SELECT FROM 이런 긴 쿼리를 저장하고 재사용하고 싶다면 stored procedure 기능을 사용하면 됩니다.(문장저장기능이라 보믄댐.) 그냥 평소에 저희가 코딩할때 함수를 떠올리면 쉽습니다. 그거랑 똑같음 stored procedure 쓰는 법 일단 product 테이블에서 SELECT 문을 사용한다고 칩시다. SELECT * FROM product WHERE 가격 > 5000 근데 이..

DI(Digital Innovation)/DataBase & SQL 뽀개기

table 대신 view 쓰는 이유!?!?

저희가 이제 가끔씩 쿼리를 잘 보다보면 create table이 아닌 create view하는 경우가 있습니다. 이게 사실 둘다 똑같은데요. 먼지 한번 파헤쳐봅시다.(파묘 아닌 파뷰) VIEW가 무엇이냐? 저희가 갑자기 여러 select 쿼리를 날리다가 마음에 드는 행이 출력된 결과가 있었습니다. 이거를 테이블로 두고두고 저장해서 쓰고 싶습니다. 그럴때 이제 실제 테이블로 저장해도 되지만 더 간단하게 view로 만들어 저장할 수 있습니다. view는 가상의 테이블인데, 실제 테이블처럼 사용할 수 있습니다. CREATE VIEW 뷰이름 AS SELECT 컬럼1, 컬럼2, ... FROM 테이블명 view 만드는 문법은 이렇습니다. SELECT로 찾은 행을 view로 만들어줘라는 코드입니다. 이전에 사용했던..

DI(Digital Innovation)/DataBase & SQL 뽀개기

데이터 수정 삭제는 UPDATE / DELETE

오늘은 DML 조작어(Data Manipulation Language) 중 UPDATE, DELETE(수정, 삭제) 빠르게 알아보도록 하겠습니다. 스겜 ㄱㄱ UPDATE / SET 특정 행의 데이터를 수정하고 싶다면 update 날려줍니다.UPDATE 테이블 SET 컬럼1 = 값, 컬럼2 = 값 WHERE 조건식 SET 뒤엔 컬럼마다 어떤 값으로 수정할 지 선택합니다. WHERE 뒤엔 어떤 행을 업데이트 할 것인지 필터링을 넣어줍니다. 이게 맞을까요? 으구 이 순진한 사람아!!! 믿을 것 없는 세상 거짓말 일수도 있잖아요. 한번 직접 보도록 하시죠.이전에 썼던 product 테이블입니다. 아이폰이 갑자기 자기네도 양심상 너무 비싸다며 갤럭시와 똑같이 130만원으로 낮춘다는 것입니다. 한번 수정해보도록 하..

DI(Digital Innovation)/DataBase & SQL 뽀개기

LEFT AND RIGHT(feat. jungkook of BTS) JOIN

테이블을 여러개 출력하고 싶다면 INNER JOIN을 쓰면 된다고하였습니다. 그리고 공통점이 있는 행만 필터링 하고 싶다면 ON을 쓰는 것도 배웠습니다. 근데 공통점이 하나도 없는 테이블을 JOIN 하고 싶다면??? 그때는 LEFT JOIN, RIGHT JOIN, OUTER JOIN 을 쓰면 됩니다. 일케 두 테이블이 있습니다. 왼쪽 테이블 전체 + 공통된 행 출력하고 싶으면 LEFT JOIN 그러니까유 지난 시간에 했던 INNER JOIN 결과 + 왼쪽 테이블 모든 행을 출력하고 싶다면 LEFT JOIN 쓰는 겁니다. SELECT * FROM program LEFT JOIN teacher ON program.강사id = teacher.id ⬆️ 진짜 모든 행이 나오는구만요 왼쪽 테이블의 강사id와 일치..

달려라 국나뇽
'SQL' 태그의 글 목록