DBMS9 DB - CHAR, VARCHAR CHAR() : 고정 길이 문자열 정보 속성값으로 받는다.각 공간이 할당되면 변수의 길이가 공간보다 작을 경우 그 차이 길이만큼 공간으로 채워진다!최소 길이 1byte, 최대 길이 Oracle 2,000 byte, SQL server 8,000 byteVARCHAR(): 가변 길이 문자열 정보 속성값으로 가진다.공간이 할당되지만 변수의 길이만큼 가변적으로 메모리에 공간을 할당하기 때문에 속성값의 바이트만 적용된다!!최소 길이 1byte, 최대 길이 Oracle 4,000 byte, SQL server 8,000 byteNUMERICDATETIMECHAR의 장점CHAR의 주요 장점은 데이터가 항상 일정한 크기를 갖기 때문에 데이터를 저장하고 검색하는 데에 효율적입니다. 그러므로 고정된 길이만 사용하는 자료.. 2024. 7. 3. MyBatis MyBatis: XML 서술자나 애너테이션을 사용하여 저장 프로시저나 SQL 문으로 객체들을 연결 사용 방법순서 : 의존성 설정 -> DB 설정 -> MyBatis 설정 -> Mapper 인터페이스 작성 -> XML 작성 -> MyBatis 사용특징유연성: SQL 쿼리를 직접 작성할 수 있으므로 매우 유연. 또한, 동적 쿼리 작성가능간결성: SQL 쿼리와 프로그래밍 언어 코드를 분리하여 코드가 간결, 유지보수에 용이성능: 캐시 기능을 제공하여 데이터베이스 연산 속도를 높일 수 있다.✨ #{}, ${}의 차이점#{} 파라미터가 String 형태로 들어와 자동적으로 파라미터 형태ex) #{user_id}의 user_id값이 kim이라면 쿼리문에는 USER_ID = 'kim'의 형태가 됨쿼리 주입을 예방할 수.. 2024. 7. 3. with recursive 문법 WITH 구문은 메모리 상에 가상의 테이블을 저장할 때 사용RECURSIVE의 여부에 따라 재귀, 비재귀 두 가지 방법으로 사용 가능사용방법WITH [RECURSIVE] TABLE명 AS ( SELECT - # 비반복문. 무조건 필수 [UNION ALL] # RECURSIVE 사용 시 필수. 이어붙어야 할 때 SELECT - [WHERE -] # RECURSIVE 사용 시 필수. 정지 조건) ➡️ 반복하려는 쿼리 UNION➡️ 종료하려는 쿼리 WHERE 2024. 5. 29. 프로그래머스 - 멸종위기의 대장균 찾기 🧩 문제 및 해석- 각 세대별 자식이 없는 개체의 수(COUNT)와 세대(GENERATION)(오름차순)- 세대 별 GROUP BY 필요- 자식의 부모 ID들을 구해서 NOT IN을 이용해서 세대별 자식이 없는 개체 구하기 ✨ 내가 푼 코드WITH RECURSIVE GEN_DATA AS ( SELECT ID, PARENT_ID, 1 AS GEN FROM ECOLI_DATA WHERE PARENT_ID IS NULL UNION ALL SELECT E.ID, E.PARENT_ID, G.GEN + 1 AS GEN FROM ECOLI_DATA AS E INNER JOIN GEN_DATA AS G ON E.PARENT_ID = G.ID )SELECT COUNT(*) AS C.. 2024. 5. 29. 프로그래머스 - 특정 세대의 대장균 찾기 🧩 문제 및 해석- 3세대 대장균의 ID(오름차순) - 1세대 대장균 -> PARENT_ID가 NULL인거 - 2세대 대장균 -> PARENT_ID가 1세대 대장균 아이디인거 ( IN() ) - 3세대 대장균 -> PARENT_ID가 2세대 대장균 아이디인거 ( IN() ) ✨ 내가 푼 코드SELECT ID FROM ECOLI_DATAWHERE PARENT_ID IN (SELECT ID FROM ECOLI_DATA WHERE PARENT_IDIN (SELECT ID FROM ECOLI_DATA WHERE PARENT_ID is NULL)) 2024. 5. 28. DB - SQL Injection SQL Injection:임의의 SQL문을 주입하고 실행되게 하여 DB가 비정상적인 동작을 하도록 조작하는 행위해결방법secSql 클래스 도입 mysqli_real_escape_string(); 함수 사용 2024. 5. 22. DATABASE - ERD 관계 E-R 다이어그램(ERD): 데이터들의 관계를 나타낸 도표규칙식별 / 비식별 관계식별: 부모테이블 기본키(PK)가 자식 테이블의 외래키이자 기본키로 사용되는 관계➡ 주문 테이블의 기본키는 주문번호, 주문_상품에서의 기본키 역시 주문번호(주문테이블에서 받은!)➡ 상품 테이블의 기본키는 상품번호, 주문_상품에서의 기본키 역시 상품번호(상품테이블에서 받은!) 비식별 관계: 부모 테이블을 참조한 테이블(자식 테이블)에서 참조된 외래키가 기본키가 아닌 일반속성(컬럼)으로 참조되었을 때 ➡ 주문 테이블의 기본키는 주문번호, 주문_상품에서의 기본키는 주문_상품번호 주문번호를 일반속성으로 사용중➡ 상품 테이블의 기본키는 상품번호, 주문_상품에서의 기본키는 주문_상품번호 상품번호를 일반속성으로 사용중 2024. 5. 2. [MySQL] GROUP_CONCAT Q. 사원테이블을 부서별로 구분하고 하고 사원리스트를 조회하고 싶은 경우- group_concat(필드명)을 통해 아래와 같이 문자열을 합칠 수 있음1. 기본형 : group_concat(필드명)2. 구분자 변경 : group_concat(필드명 separator '구분자')3. 중복제거 : group_concat(distinct 필드명)4. 문자열 정렬 : group_concat(필드명 order by 필드명) ex)SELECT emp.username, V.*FROM emp INNER JOIN (SELECT E.deptname, D.id, AVG(salary) AS "평균연봉", MAX(salary) AS "최고연봉", MIN(salary) AS "최소연봉", COUNT(*) AS "사원수"FROM.. 2024. 1. 9. 프로그래머스 - SQL.자동차 대여 기록 별 대여 금액 구하기 대여기간을 알기위해 DATEDIFF를 이용하여 시작하는 날짜, 끝나는 날짜를 설정하고 대여 기간에 따른 할인률 적용을 위하여 CASE WHEN 문을 이용함 맞는거 같은데 자꾸 틀렸다고 해서 온갖 수정을 다 했는데 예시에 나온 할인율이랑 실제 테이블의 할인율이 달라서 틀린거였다..... 2024. 1. 8. 이전 1 다음