전체 글 100

[자격증] [SQLD] 문제풀이 11~20 정리

11. 테이블명, 컬럼명은 문자로 시작 CREATE TABLE 테이블명 (c1 varchar(50), c2 int, c3 date…); A-Z, a-z, 0-9, _, $, # 문자만 허용 12. 기본부서 지정 → defalt 지정, 입사일자 index 생성 첫번째거는 바로 PK 지정 두번째거는 컬럼 생성 후 PK 지정 13. SQL 1, 2의 실행 결과 → 같다 학번은 PK라서 NOT NULL이기 때문 14. FK: 테이블 생성 시 설정 가능, 참조 무결성 제약을 받을 수 있다, NULL 가능 15. 테이블 제약 조건 Check제약조건은 데이터의 무결성을 유지하기 위해 테이블의 특정 컬럼에 설정하는 제약 16. COMM 컬럼 삭제하고 싶음 ALTER TABLE EMP DROP COMM; 17. SQL ..

취준 2024.01.24

[자격증] [SQLD] 문제풀이 1~10 정리

★ SQL 문장 종류 외우기 ★ 1. 데이터 제어어(DCL) → Data Control Language (권한을 주는 grant, 권한을 회수하는 revoke) 2. CREATE, ALTER, DROP → DDL GRANT → DCL 3. Transaction Control Language → Commit, Rollback, Savepoint 등, 작업 단위 별로 제어 1, 2, commit, 3, savepoint, 4, 5, rollback 인 상황이면 rollback을 해도 savepoint부터 다시 실행 4. 절차적언어 : Java, pl-sql(오라클), t-sql(sql server) → 사용자가 무슨 데이터를 원하며, 어떻게 그것을 접근해야되는지 명세하는 언어 비절차적 데이터 조작어(DML)..

취준 2024.01.23

[프로그래머스] [SQL] 이름에 el이 들어가는 동물 찾기

전에 풀다 말았던 거 해결 단, 이름의 대소문자는 구분하지 않습니다. 이걸 못보고 정규식 사용했다 ㅋㅋㅋ 어렵게도 풀었다 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NAME REGEXP '(EL|El|el)' and ANIMAL_TYPE LIKE 'Dog' ORDER BY NAME ASC; 다른 사람들 답보니 간단하게 풀었길래 문제 한번 더 살펴보다 대소문자 구별 안한다는거 보고 다시 풀었다 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NAME LIKE '%el%' and ANIMAL_TYPE LIKE 'Dog' ORDER BY NAME ASC; 오늘도 머리에 새긴다 문제를 꼼꼼히 보자! 출처: 프로그래머스

코딩테스트 2024.01.19

[프로그래머스] [SQL] 보호소에서 중성화한 동물

간만에 코테 이제 쉬운 문제가 없어서 가볍게 풀수가 없다 그만큼 내가 발전한거겠지? 이건 LIKE와 IN을 함께 쓸 수 없다는 것을 제대로 알지못해서 한참을 헤매다 겨우 풀었다 답을 정규식이었다 정규식의 중요한 점은 앞뒤를 확실하게 알려주기 내가 원하는 값은 뒤에는 뭐가 있어야 하지만 앞에는 없어야 하기 때문에 앞에만 ^ 이걸 붙여주는 것으로 해결 SELECT ANIMAL_INS.ANIMAL_ID, ANIMAL_INS.ANIMAL_TYPE, ANIMAL_INS.NAME FROM ANIMAL_INS JOIN ANIMAL_OUTS ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID WHERE ANIMAL_INS.SEX_UPON_INTAKE REGEXP '^Intact' an..

코딩테스트 2024.01.17

[프로그래머스] [SQL] 루시와 엘라 찾기

왠지 고난이 많았던 오늘 문제 우선 아이디별로 정렬하라는게 문제 밑에 예시쪽에 있어서 못봤다 LIKE를 쓰니 제대로 안되는거 같아 서치 시작 REGEXP를 찾았다 제대로 넣었는데도 자꾸 오답으로 나오기 시작 질문하기를 들어가서 코드는 안보고 제목만 보며 힌트를 얻었다 IN으로 해결 → 하지만 REGEXP를 썼을 때와 결과 테이블은 똑같은데 왜? 라는 의문 REGEXP는 좀더 섬세하기 때문에 제대로 시작과 끝을 지정해주지 않으면 문자열이 들어간 모든 것을 가져온다는 것을 늦게 알았다 결과적으로 답은 두가지인데 1. REGEXP를 사용한 쿼리 SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME REGEXP '^(Lucy|Ella|Pickle..

코딩테스트 2024.01.11

[프로그래머스] [SQL] 카테고리 별 상품 개수 구하기

오만년 만에 돌아온 SQL 풀기 중간에 방황의 시간을 거쳐 내린 결론은 내 눈앞에 있는 할 수 있는 걸 하자 길은 하나만 준비할게 아니라 2안, 3안이 있어야 한다 그런 의미에서 SQL풀기 다시 재개 + 올해 첫 SQLD도 도전해볼 생각이다 간만에 들어오니 새롭고 낯설긴 한데 그래도 해왔던 짬이 있으니 어렵지 않게 해결 유일한 문제가 앞 2글자를 뽑아내는 거였는데 이건 다른 사람 블로그 보고 해결(참고에 적어 놓음) 그래도 틀렸는데 가만히 보니 앞 두글자를 뽑아낸걸로 GROUP BY를 안해서였다! SELECT LEFT(PRODUCT_CODE, 2) as CATEGORY, count(PRODUCT_ID) as PRODUCTS FROM PRODUCT GROUP BY CATEGORY ORDER BY PRODU..

코딩테스트 2024.01.09

[프로그래머스] [SQL] 재구매가 일어난 상품과 회원 리스트 구하기

알바를 시작하다보니 문제 풀기가 쉽지 않다 그래도 최대한 하려고 노력 중 우선 이게 기존에 작성해놓고 통과못한 코드 HAVING을 제대로 알기 전이라 WHERE 절에 연산 꾸겨넣기 -- 틀린코드 SELECT USER_ID, PRODUCT_ID FROM ONLINE_SALE WHERE count(USER_ID) >= 2 GROUP BY PRODUCT_ID ORDER BY USER_ID ASC, PRODUCT_ID DESC; 오늘 다시 보니 이상한게 보임 WHERE절 삭제하고 HAVING으로 대체 그래도 통과안됨 왜냐면 GROUP BY를 PRODUCT_ID로만 했기 때문 동일한 회원이 동일한 상품을 재구매 → 이 말에 따라 GROUP BY에 USER_ID 추가 통과했다 SELECT USER_ID, PRODU..

코딩테스트 2023.12.18

[프로그래머스] [SQL] 취소되지 않은 진료 예약 조회하기

바로 못풀고 방치해놨다가 오늘 마무리! 분명 전 포스팅에서는 테이블을 딱히 줄여부르지 않을 거라고 했지만 세개쯤 되니 복잡해서 그냥 줄였다 ㅋㅋㅋㅋ TABLE 3개 조인하는건 처음이고 전에 코테에서 나왔을 때도 못풀었었는데 이번에 좀 찾아보면서 어려운게 아니라는 걸 알았다 다만 3개 join하는 거에서 (inner) join 이 자주 나와서 개념이 헷갈려서 다시 찾아봄 참고 블로그(하단에 기재)에서 가져왔다 내가 자주 쓰는 JOIN = INNER JOIN JOIN 헷갈린 거랑 별개로 다 잘 작성했는데 테이블 내용이 안나와서 하다가 잠깐 접었다 왜 안나오는지 예시 테이블 뜯어보니까 APPOINTMENT 테이블에 APNT_YMD가 타임스탬프였음!!!!! WHERE A.APNT_YMD = '2022-04-13..

코딩테스트 2023.12.13