AD

전수진 공부 프로젝트 트게더를 만들어보자 - DB(CRUD 조건문) [마감]

모데충
2022-08-19 16:22:00 197 3 8

안녕하세요. 이번시간에는 조건에 대해서 배워보도록 하겠습니다. 오늘 배우는 이 조건을 어떻게 활용하느냐에 따라서 DBA의 능력을 결정한다고 볼 수가 있습니다.왜냐하면 실제 DB데이터는 우리가 상상할 수 없을 만큼 방대한 양을 가지고 있기 때문입니다. 거기서 사용자가 원하는 데이터를 정확하게 가져온다면 해당 데이터를 따로 가공할 필요도 없이 바로 사용할 수 있으니 시스템 부하도 줄일 수가 있게 됩니다.


조건을 사용하는 쿼리는 총 3가지 입니다. Select,Update,Delete 그중에서도 Select를 이용한 조건 검색이 가장 많이 사용됩니다.

먼저 조건을 사용하는 방법은 다음과 같습니다.

Read  : Select [컬럼명],[컬럼명] from [테이블명]  [WHERE] [조건문];  or  Select * from [테이블명] [WHERE] [조건문]; 

Update : Update [테이블명] Set [컬럼1] = [컬럼1에 치환될 데이터] , [컬럼2] = [컬럼2에 치환될 데이터]..........  [WHERE] [조건문];

Delete :  Delete from [테이블명]  [WHERE] [조건문];


조건문은 모든 쿼리 뒷부분에 위치하게 됩니다. 그러면은 첫번째로 Select를 이용한 조건검색을 해보도록 하겠습니다. 조건검색을 하려면 테이블과 데이터가 필요하겠죠? 제가 직접 작성할 수는 없고 인터넷에 맛집리스트가 정리된 엑셀파일을 DB에 옮겨놔서 테이블을 생성해 두었습니다.

참고:http://dogumaster.com/map/tv


그러면 먼저 RESTAURANT 테이블에 있는 전체 데이터를 조회해보겠습니다.

585ce8a7d6157b64ddc2f0b201c0bf50.png

결과는 아래와 같습니다.

ab70f342f2c4336be4ff1ca01be004ef.png

결과를 보니 총 2393건의 데이터가 존재하는 것을 알 수가 있습니다. 다시 말하자면 TV에 나온 맛집이 2,393개나 된다는 뜻이기도 합니다. 


하지만 제가 인천에 살고 있는데 인천에 사는 제가 결과 창 9라인에 있는 거제김밥을 먹고자 거제까지 가기는 애매하죠? 그러니까 저는 먼저 인천에 어떠한 맛집들이 있는지부터 확인해보겠습니다. 이때 조건을 사용하게 됩니다. 명령어는 아래와 같습니다.


e250ca2238a775f1ba112ae9d4357027.png

이 명령어의 의미는 무엇이냐면 AREA컬럼의 값이 인천인 데이터만 조회하겠다.는 의미입니다. 그러면 한번 조회해보겠습니다

d5e4725bae45d92cd3b50b2f67a38336.png

오 인천에는 102개의 맛집이 있나 봅니다. 자 근데 여기서 또 한가지 문제가 있습니다. 보면은 중구,서구,미추홀구,남동구,부평구등 다양한 상세지역이 나오는데 각 지역별로 거리가 있다보니 저는 부평구에 있는 맛집부터 알아보겠습니다. 


AREA가 인천이면서 AREA2가 부평구인 맛집을 알아보려면 어떻게 해야 할까요? 자바 강의 시간에 잘 배우신 분이시라면 연산자가 떠오르셔야 정상입니다. 연산자를 배울때 AND연산 OR연산 NOT연산에 대해서 공부한적이 있습니다. SQL문에서도 똑같이 사용됩니다. 명령어는 아래와 같습니다.

f53914440f4a74210d1fe6200f24f8a4.png

해당 명령어의 의미는 AREA컬럼의 값이 인천이면서 AREA2의 값이 부평구인 데이터를 가져와라 입니다. 만약 추가적인 조건들이 필요하다면 뒤에 계속 AND를 붙여가며 조회하면 되겠죠? 결과는 아래와 같습니다.

b2e4972521fee97078825aba1a608b36.png

음...딱히 부평에는 제가 좋아하는 종류의 맛집이 없네요. 넘어가겠습니다.


이번에는 서울역이 있는 중구와 롤파크가 있는 종로구의 맛집을 한번 알아보도록 하겠습니다. 명령어는 다음과 같습니다.

07104ee5a3661b5d87386a08946ceda4.png

중구와 종로구는 모두 서울이니까 AREA는 서울이 맞고요. 그리고 AREA2가 중구이면서 종로구이어야 하니 OR연산자로  중구와 종로구를 둘다 조건을 걸어줍니다. 그러면 결과는 아래와 같이 나오게 됩니다.

f2e8eb18add64885b1005892241d23fa.png

음...170개의 맛집이 있다고 나오네요. 8번째에 있는 스시미치루가 땡기네요. 오마카세 가본적이 없는 저에게 오마카세를 사주실분 구합니다.


어떤 분들은 "나는 지역은 상관없고 내가 좋아하는 음식이 있으면 어디든지 갈거야!" 라는 분들도 있겠죠? 그런분들을 위해서 데이터를 필터링해보도록 하겠습니다.


먼저 저는 갈비를 좋아합니다.갈비 맛집에 대해서 조회해보도록 하겠습니다. 명령어는 아래와 같습니다.

9901c8246d898bc566bc382bd4388583.png

결과는 아래와 같습니다.

93a4d77e1183c44bb1f022e20a421b30.png

???한건도 안나왔습니다. 그러면 맛집리스트에 갈비가 없는걸까요? 그럴리는 없을 겁니다. 그렇다면 왜 안나온 걸까요? 바로 [컬럼명] = [데이터] 는 컬럼데이터가 비교할 데이터와 동일한 값만을 가져오기 때문입니다. 제가 적었던 갈비가 안나왔던거는 아마도 갈비가 아닌 돼지갈비,양념갈비,소갈비,닭갈비등 다른 문자들과 같이 있어서 안나온것 같습니다. 


그러면은 저런 특정문자가 존재할때 가져오는것은 어떻게 하느냐? 아래와 같이 하시면 됩니다.

ec55b6174fc6d0f699dceca1c0b7f1de.png

=이 아닌 LIKE로 바뀌었습니다. LIKE는 문자를 비교할때 사용되는 연산자인데 뒤에 보시면 %갈비%라고 작성되어 있습니다. 여기서 %의 의미는 무시한다는 뜻입니다. 


'%갈비'일 경우 양념갈비,소갈비 등과 같이 뒤에 갈비라는 값이 있으면 앞에 글자들은 무시하고 가져온다는 뜻입니다.

'갈비%'일 경우 갈비정식,갈비세트 등과 같이 맨 앞에 갈비가 있으면 뒤에 글자들은 무시하고 가져온다는 뜻입니다.

'%갈비%'면은 앞뒤에 글자 전부다 무시하고 갈비라는 값이 존재하면 가져온다는 뜻입니다.


%의 의미를 이제 이해하셨으리라 믿습니다. 그러면 위에 명령어를 실행해보겠습니다.

6f4ac3369ded271a34c71a7728c1d205.png 저렇게 %를 앞뒤로 붙여주니까 소갈비구이,물갈비등 갈비라는 텍스트가 있으면 전부다 가져오는걸 확인할 수가 있습니다.

11번째 줄에 있는 숯불닭갈비가 먹고 싶네요. 근데 춘천......


하나만 더 하고 마치겠습니다. 우리는 세상의 모든 음식을 먹을 수는 없습니다. 보기에 별로인것도 있고 몸에 안받는 애들도있겠죠?  예를 들어 나는 갈비를 못먹어 하는 사람들에게는 갈비를 뺀 다른 맛집들을 보여줘야 합니다. 이럴때는 NOT 연산자를 이용하시면 됩니다. 어떻게 하느냐? 다음과 같습니다.

e8dc115de371a3ac0f8d9d297008af98.png

결과는 아래와 같습니다.

83772eb22dd7c1b1f2c27a6212e63497.png

보니까 없는것 같긴 한데 빠졌는지 안빠졌는지는 모르겠죠? 그러면 저 상태에서 버거를 추가로 제외해보겠습니다. 그러면 1라인에 갓버고와 14라인에 햄버거가 안나올 것입니다. 명령어는 다음과 같습니다.


e02dbacbe4390de42f002f2ab70460b4.png

결과는 아래와 같습니다.

313dad2ebd1fd0031e1ff3fb78686ccb.png

버거를 빼니까 버거가 붙은 음식점이 빠진것을 볼 수가 있습니다.


Update와 Delete는 따로 하지는 않겠습니다. Select와 마찬가지로 뒤에 조건을 붙여주시면 됩니다. 단 조건이 없이 실행하게 된다면 모든 데이터에 영향을 미치게 되는 점을 주의하시고 사용하시면 되겠습니다.


숙제 (비밀댓글로 올려주세요.)

오늘 배운 조건문을 이용해서 본인 지역에 자신이 좋아하는 메뉴가 있는 맛집을 소개해주세요. 자세한 지역 소개가 어려우신 분들은 AREA2는 조건에 안걸으셔도 좋습니다. 선착순 5분께 저번에 실패했던 편의점 상품권을 다시 걸겠습니다. 가져가주세요.ㅠ


예시: 인천에 있는 돈가스 맛집들을 소개합니다. (쿼리도 함께 올려주세요.)

06bf1a9554da149555f8a02b8104750d.png

인천에는 돈가스 맛집이 중구밖에 없네 ㄷㄷ


오늘도 감사합니다.


사용된 쿼리입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT * FROM RESTAURANT;
 
SELECT * FROM RESTAURANT WHERE AREA = '인천';
 
SELECT * FROM RESTAURANT WHERE AREA = '인천' AND AREA2 = '부평구';
 
SELECT * FROM RESTAURANT WHERE AREA = '서울' AND AREA2 = '중구' OR AREA2 = '종로구';
 
SELECT * FROM RESTAURANT WHERE MENU = '갈비';
 
SELECT * FROM RESTAURANT WHERE MENU LIKE '%갈비%';
 
SELECT * FROM RESTAURANT WHERE MENU NOT LIKE '%갈비%';
 
SELECT * FROM RESTAURANT WHERE MENU NOT LIKE '%갈비%' AND MENU NOT LIKE '%버거%';
cs
후원댓글 8
댓글 8개  
이전 댓글 더 보기
이 글에 댓글을 달 권한이 없습니다. 로그인해 보세요.
잡담신고팬아트건의함게임추천이벤트순클립전수진 공부 프로젝트음식을 올려보아요마지막 클립 불태우기
2
전수진 공부 프로젝트
에펙 뉴비 순당무님을 위한 팁글 모음.link [1]
쥐펄
07-29
4
전수진 공부 프로젝트
초전도체 논문 [2]
서카포노예제발
07-29
6
04-06
3
03-30
15
전수진 공부 프로젝트
순손실 방지 프로젝트 - 1.다시보기 자동저장하기 [17]
모데충
03-29
4
전수진 공부 프로젝트
심심해서 쓰는 인터넷 신청부터 점검까지 [3]
모데충
03-23
0
전수진 공부 프로젝트
녹화에 음악 안남게 하기 [3]
모데충
12-20
11
전수진 공부 프로젝트
씹덕일러를 그려보자 (2) - 김욾 선화, 밑색 칠하기 [6]
미노일세
11-15
7
11-07
16
전수진 공부 프로젝트
걸게이머 결승에 관하여(뇌피셜) [8]
모데충
11-03
7
전수진 공부 프로젝트
망 사용료 논쟁에 대해서 알아보자(초스압 주의) [7]
모데충
09-30
8
전수진 공부 프로젝트
연애 잘하는 법,권태기와 식은 마음의 구분 [3]
boysick12
09-25
2
전수진 공부 프로젝트
트게더를 만들어보자 - 다음 과정 의견수렴 [3]
모데충
09-17
2
09-10
5
전수진 공부 프로젝트
발?성법 [1]
라ㅡ떼
09-10
3
전수진 공부 프로젝트
트게더를 만들어보자 - DB(Table Join) [마감] [15]
모데충
09-05
5
전수진 공부 프로젝트
트게더를 만들어보자 - DB(Table 정규화) [2]
모데충
09-02
2
전수진 공부 프로젝트
방장 공부하자 (서버, 서버의 기본 3)
라ㅡ떼
09-01
3
전수진 공부 프로젝트
방장 공부하자 (서버, 서버의 기본 2)
라ㅡ떼
08-28
5
전수진 공부 프로젝트
방장 공부하자 (서버, 서버의 기본 1) [2]
라ㅡ떼
08-26
3
전수진 공부 프로젝트
트게더를 만들어보자 - DB(Table 제약 조건)
모데충
08-23
»
전수진 공부 프로젝트
트게더를 만들어보자 - DB(CRUD 조건문) [마감] [8]
모데충
08-19
3
전수진 공부 프로젝트
트게더를 만들어보자 - DB(DataGrip 설치) - [마감] [15]
모데충
08-17
9
08-16
인기글 글 쓰기