카테고리 없음

SQL 기본

재온 2024. 3. 10. 23:13

Select

  • 기본 사용 형식
SELECT <추출할 열 이름>
FROM <원본 테이블 이름> <쿼리 내에서 사용할 이름>
WHERE <추출할 조건>
ORDER BY #정렬
  • 기본적으로 쿼리는 소문자로 작성해도 된다 ! 단, 칼럼명은 대소문자 구분
  • 정렬
  • ORDER BY <열 이름 혹은 몇번 째 열인지> asc (오름 차순), desc (내림차순) ;
  • 날짜 데이터 다루는 방식
    • 형식 지정 : DATE_FORMAT(<열 이름>'%Y-%m-%d') AS <열 이름>
    • 월만 지정해서 조건 지정할 때: MONTH(<날짜가 포함된 열 이름>)
  • 조건을 지정할 때having <열 이름> like ‘%서울’
  • WHERE AND 조건 AND 조건
  • 연산
    • 평균: AVG
    • 소숫점: ROUND(<열 이름>,<소수점 자리 >)
    • groupby : 그룹별 평균 등등
  • Example
    • 강원도에 위치한 생산공장 목록 출력하기
    • SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS like'강원도%';
    • 흉부외과 또는 일반외과 의사 목록 출력하기
    • SELECT DR_NAME, DR_ID, MCDP_CD,DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') FROM DOCTOR WHERE MCDP_CD = "CS" or MCDP_CD ="GS" ORDER BY 4 DESC, 1;
    • 서울에 위치한 식당 목록 출력하기
    • #평균 리뷰 점수 : groupby 활용 #테이블 합치기 필요 select A.REST_ID, B.REST_NAME,B.FOOD_TYPE,B.FAVORITES,B.ADDRESS, round(avg(A.REVIEW_SCORE),2) as SCORE from REST_REVIEW A #REST_REVIEW 테이블을 A이름으로 가져오기 join REST_INFO B on A.REST_ID = B.REST_ID #rest_id 기준으로 조인 group by A.REST_ID having B.ADDRESS like '서울%' #서울로 시작하는 단어 order by SCORE desc, B.FAVORITES desc ;
    • 조건에 맞는 도서 리스트 출력하기
    • SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE FROM BOOK WHERE CATEGORY = '인문' AND YEAR(PUBLISHED_DATE) = 2021 ORDER BY PUBLISHED_DATE;
    • 과일로 만든 아이스크림 고르기
      • 두 테이블을 합치기 위해서는 join 활용
      • 테이블 이름을 a로 지정헀다면 뒤에서 a로 쓰기. 합친 이후에는 테이블 이름 지정해줄 필요 없음
      select a.FLAVOR
      from FIRST_HALF a
      left join ICECREAM_INFO 
          on a.FLAVOR = ICECREAM_INFO.FLAVOR
      where TOTAL_ORDER >3000 and INGREDIENT_TYPE = 'fruit_based'
      order by TOTAL_ORDER  desc;
      
    • 평균 일일 대여 요금 구하기
      • 조건문 지정
      • round를 통한 반올림과 avg를 통한 평균 합계
      select round(avg(DAILY_FEE),0) as AVERAGE_FEE # 평균 일일 대여 요금 / 소수점 반올림
      from CAR_RENTAL_COMPANY_CAR
      where CAR_TYPE = 'SUV' #차 종류 조건문
      

SUB QUERY (서브 쿼리문)

  • 하나의 쿼리 문장 내에 포함된 또 하나의 쿼리 문장.
  • 비교연산자의 오른쪽에 기술해야 하고 반드시 괄호 안에 넣어야 함.
  • 메인 쿼리가 실행되기 이전에 한 번만 실행됨.
  • 가격이 제일 비싼 식품의 정보 출력하기
SELECT *
FROM FOOD_PRODUCT
WHERE PRICE = (select max(PRICE) from FOOD_PRODUCT)

기본키와 외래키

  • 기본키 (Primary Key): 각 테이블에 1개만 지정 가능→ 테이블을 나타내는 id
    • 데이터를 구분할 수 있는 식별자로 사용
    • NULL값이 허용되지 않음
    • 연결되는 두 테이블 중 기준테이블에 위치
  • 외래키 (Foreign Key): 각 테이블 여러개 지정 가능하며, 두 테이블 사이의 관계를 연결
    • 연결되는 두 테이블 중 참조 테이블에 위치
300x250