DB
[MariaDB] 설치 시, 3306 Port 문제 해결 방법
MairaDB를 설치하려는데, 3306 Port가 이미 사용 중이라고 하길래, 해결 방법을 찾아보았다. 1. 리소스 모니터 실행 2. 네트워크 > 수신대기 포트 탭 해당 탭을 열어 3306 포트를 사용 중인 것을 찾으면 된다. 현재 이미 문제가 해결된 상태라 mysqld.exe라고 적혀있는데, 해결하기 전에는 mysql.exe 였다. 3306포트를 찾았으면 해당 PID를 기억해둔다. 3. cmd 관리자 권한으로 실행 아까 기억해둔 PID를 통해 다음과 같이 cmd에 작성한다. taskkill /F /PID [PID번호] 만약 PID가 1234이었으면 taskkill /F /PID 1234 으로 입력하면 된다. 이 명령어를 치면 해당 프로세스가 종료 되었다고 뜰 텐데, 이제 다시 MariaDB 설치화면으로..
[DB] ER 다이어그램 그리기 & 데이터 모델링 3단계 예시
데이터 모델링 데이터 모델링이란 정보시스템 구축의 대상이 되는 업무 내용(요구사항)을 분석하여, 정해진 표기법에 의해 표현하는 것을 말한다. 데이터를 추상화한 데이터 모델을 통해 데이터베이스를 생성하게 된다. 왜 중요할까? 데이터 모델링을 하지 않고 데이터베이스를 설계하는 것은 건축가가 설계도 없이 집을 짓는 것과 같다. 데이터를 효율적으로 저장 및 관리하기 위해서는 데이터를 이해하고, 분석하여 탄탄한 기반을 마련해야 한다. 데이터 모델링을 함으로써 소프트웨어의 개발 오류가 감소하고, 데이터베이스 설계 및 생성 속도와 효율성이 촉진된다. 데이터베이스를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 한다. ERD(Entity Relationship Diagram) ER..
[DB/SQL] UPPER/LOWER 대소문자 구문 없이 LIKE 사용하기
SQL 문제를 풀다보면 '대소문는 구분하지 않습니다.' 라고 적혀있는 경우가 있습니다. 오늘은 대소문자 구분없이 LIKE를 사용하는 방법을 알아 보겠습니다. UPPER() UPPER()를 사용하면 해당 문자열을 모두 대문자로 변환합니다. UPPER([문자열]) 대소문자 구분 없이 이름에 'se'가 들어가는 데이터를 찾는다고 했을 때, UPPER()를 사용하는 방법은 다음과 같습니다. SELECT * FROM USER_NAMES WHERE UPPER(NAME) like UPPER('%se%') LOWER() LOWER()를 사용하면 해당 문자열을 모두 소문자로 변환합니다. LOWER([문자열]) 대소문자 구분 없이 이름에 'Se'가 들어가는 데이터를 찾는다고 했을 때, LOWER()를 사용하는 방법은 다음..
[프로그래머스/SQL] 12세 이하인 여자 환자 목록 출력하기
문제 설명 다음은 종합병원에 등록된 환자정보를 담은 PATIENT 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다. 문제 PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요. 내 풀이 WHERE와 AND절로 12세 이하의 여자 환자 데이터를 필터링하고, 전화번호가 NULL인 경우 NONE을 출력하기 위해 CASE문을 사용했다. SELEC..
[프로그래머스/SQL] 과일로 만든 아이스크림 고르기
문제 설명 다음은 아이스크림 가게의 상반기 주문 정보를 담은 FIRST_HALF 테이블과 아이스크림 성분에 대한 정보를 담은 ICECREAM_INFO 테이블입니다. FIRST_HALF 테이블 구조는 다음과 같으며, SHIPMENT_ID, FLAVOR, TOTAL_ORDER 는 각각 아이스크림 공장에서 아이스크림 가게까지의 출하 번호, 아이스크림 맛, 상반기 아이스크림 총주문량을 나타냅니다. FIRST_HALF 테이블의 기본 키는 FLAVOR입니다. ICECREAM_INFO 테이블 구조는 다음과 같으며, FLAVOR, INGREDITENT_TYPE 은 각각 아이스크림 맛, 아이스크림의 성분 타입을 나타냅니다. INGREDIENT_TYPE에는 아이스크림의 주 성분이 설탕이면 sugar_based라고 입력되고..
[프로그래머스/SQL] 서울에 위치한 식당 목록 출력하기
문제 설명 다음은 식당의 정보를 담은 REST_INFO 테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다. REST_INFO 테이블은 다음과 같으며 REST_ID, REST_NAME, FOOD_TYPE, VIEWS, FAVORITES, PARKING_LOT, ADDRESS, TEL은 식당 ID, 식당 이름, 음식 종류, 조회수, 즐겨찾기수, 주차장 유무, 주소, 전화번호를 의미합니다. REST_REVIEW 테이블은 다음과 같으며 REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, REVIEW_TEXT,REVIEW_DATE는 각각 리뷰 ID, 식당 ID, 회원 ID, 점수, 리뷰 텍스트, 리뷰 작성일을 의미합니다. 문제 REST_INFO와 REST_REVIEW..
[DB/SQL] CASE, WHEN, THEN, ELSE 사용하기
Case, When, Then, Else 는 다음과 같이 사용할 수 있습니다. case when [조건식] then [반환값] else [일치하는 조건이 없는 경우 반환값] end 예시를 살펴보겠습니다. 유저의 point가 10000점 이상, 5000점 이상 10000미만, 5000점 미만인 경우로 나누어서, 새 필드에 값을 넣어주겠습니다. select pu.user_id, pu.point, (case when pu.point >= 10000 then '1만 이상' when pu.point >= 5000 then '5천 이상' else '5천 미만' end) as lv from point_users pu 위처럼 비교 연산자를 사용하여 조건을 걸어줄 수 도 있고, NULL 연산자나 산술 연산자를 사용해 여..