0부터 시작하는 Maria DB 공부 - 제약 조건 & SQL 기본

Jaehong Lee·2022년 7월 14일
2
post-thumbnail

1. 제약 조건

p.313

  • 제약 조건이란 ? 데이터의 무결성을 지키기 위한 제한된 조건으로, 이를 통해 Data 입력시 이 조건을 만족했을 때 입력되도록 제약할 수 있다

    MariaDB에서 제공하는 데이터의 무결성을 위한 6가지 제약 조건

    • PK 제약 조건 : 기본 키 제약 조건
    • FK 제약 조건 : 외래 키 제약 조건
    • UNIQUE 제약 조건 : 중복되지 않는 유일한 값을 입력해야 하는 조건으로 PK 제약 조건과 다르게 NULL 값을 허용한다
    • CHECK 제약 조건 : 입력되는 Data를 점검하는 기능
    • DEFAULT 정의 : Data가 입력되지 않았을 때, 자동으로 입력되는 기본 값을 정의하는 방법
    • NULL 값 허용 : 입력받을 Data에 NULL 값을 허용할지 말지 설정하는 방법

2. SQL 기본

p.171

  • 기본적인 SQL 문장은 SELECT / INSERT / UPDATE / DELETE 가 있다

  • SELECT

    • 가장 많이 사용하는 구문으로 순서가 중요하다
      select ~ from where ~ group by ~ having ~ order by ~ 순서다
  • USE

    • 사용자가 입력한 데이터 베이스를 사용한다고 지정해준다
      USE '사용할 데이터 베이스 이름';
  • 결과 메세지

    • 240 : MariaDB에서 SQL문이 처리된 순번
    • Affected rows : 변경된 행의 개수
    • 찾은 행 : SELECT문의 조회된 행의 개수
    • 경고 : 경고가 발생될 경우 경고의 개수
    • 지속시간 1 쿼리 : 실행된 쿼리의 개수와 쿼리가 실행된 시간
      • 시간 . network : 네트워크 전송 시간
  • AS

    • SELECT할 때 해당 Column의 이름을 변경해서 출력한다. 이는 실제로 변경된 것이 아닌, 출력창에서만 변경된 것이다
  • 주석

    • 한 줄 주석은 ' -- ' 이후부터 주석 처리된다
    • 여러 줄 주석은 ' /* */ '로 주석 처리한다

3. 조건문

p.186

  • WHERE

    • 조회하는 결과에 특정한 조건을 줘서 원하는 Data만 보고싶을 때 사용
    • WHERE 조건식 형식으로 사용한다
    • WHERE 'COLUMN 이름' = '조건에 해당하는 정보' 형식으로 사용한다
    • 로그인을 할 때 사용자가 입력한 PASSWORD와 서버에서 DB에 접속해서 ID에 대한 WHERE을 통해 가져온 PASSWORD를 비교해서 인증한다
  • 관계 연산자

    • 관계를 비교해주는 연산자로 NOT, AND, OR 등이 있다
    • 보통 조건 연산자 ( =, <, >, <=, >-, <>, != 등 ) 과 함께 사용한다
  • BETWEEN / AND

    • 조건 연산자가 아닌 BETWEEN과 AND를 통해 DATA의 범위를 조건으로 지정할 수 있다
  • IN

    • 연속적인 값이 아닌, 이산적인 값을 찾을 때 사용
  • LIKE

    • %는 해당 부분 전/후로 무엇이든 허용한다는 의미
    • _은 해당 부분에 한 글자만 허용한다는 의미
    • 김%는 김 다음에 몇 글자든 올 수 있다. 즉, 김~ 에 해당하는 DATA를 찾는다
    • _종신은 종신 앞에 한 글자만 허용한다. 즉, X종신에 해당하는 DATA를 찾는다
    • _범%은 범 앞에 한 글자만 허용하며, 범 뒤에는 몇 글자든 다 허용한다

4. 서브 쿼리

  • 쿼리 내에 또 다른 쿼리를 추가하여 작업을 수행하는 방법

    • 만약, " 김범수보다 키가 큰 사람들의 목록을 출력하라 " 를 원하면
    1. 김범수의 키를 구한다
    2. 조건에 김범수의 키를 두고, 이를 비교하여 큰 사람을 출력한다
    • ( ) 를 통해 서브 쿼리를 처리한다
    • 이렇게 두 번의 작업을 두 개의 쿼리가 아닌 쿼리 내에 쿼리를 추가해서 하나의 쿼리로 처리한다
  • Quiz. 성시경과 살고 있는 지역이 같은 사람들의 이름, 키, 지역을 출력하는데, 키가 큰 사람부터 출력하시오

    • 이렇게 쿼리를 작성하면 된다. 정렬 조건을 두 개 붙이면, 앞에 조건으로 먼저 정렬하고, 해당 조건에 대해 동일한 결과에 대해서 두 번째 정렬 조건을 적용시킨다. 즉, 키 순서대로 정렬하고, 키가 동일한 DATA는 이름으로 정렬한다는 의미다
  • ORDER BY

    • 쿼리 결과가 출력될 때 출력되는 순서를 조절하는 구문
    • ORDER BY ' 순서의 기준이 되는 column 명 ' ' 정렬 방식 ' 형식으로 사용한다
    • 기본적으로 정렬 방식은 오름차순 이며, 따로 정렬 방식을 지정시 오름차순은 ASC , 내림차순은 DESC 이다
  • ANY

    • 서브 쿼리를 통해 다수의 값이 나오면 오류가 나온다
    • ANY는 서브 쿼리를 통해 나온 값이 다수일때, 이 값들을 각각 조건으로 사용한다. 즉, 또는 이라는 뜻이다
    • 즉, 서브 쿼리에서 나온 값이 173과 170 이므로, 키가 173과 같거나 또는 170과 같은 Data들이 출력된다
    • SOME은 ANY와 동일한 의미로 사용된다

    • = ANY는 IN과 같다

  • ALL

    • ANY와 다르게 서브 쿼리에서 나온 값이 다수일때, 이 값들을 전부 조건으로 사용하여, 모든 값에 대해 만족해야한다
    • 즉, 키가 173보다도 커야 하고, 170보다도 커야한다
  • DISTINCT

    • 중복을 제거해준다
  • LIMIT

    • 쿼리문을 통해 출력되는 개수를 조절한다
  • Quiz. 회원들의 정보를 출력하되, 이름, 키를 키 순서대로 출력하며, 동일한 키는 오름차순으로 출력하고, top 3만 출력하시오

    • 이렇게 입력하면 된다

5. GROUP BY & HAVING & 집계 함수

p.197

  • group by

    • 특정 열을 그룹으로 묶는 것으로, 주로 연산할 때 사용한다
    • where 바로 뒤에 써야한다
    • group by ' 그룹화 기준이 될 column 명 ' 형식으로 작성한다
  • 집계 함수

    • 집계 함수는 group by와 함께 쓰이며, Data를 그룹화해주는 기능을 한다
      • AVG() : 평균 값
      • MIN() : 최소 값
      • MAX() : 최대 값
      • COUNT() : 행의 개수
      • COUNT(DISTINCT) : 행의 개수를 세는데, 중복은 1개로만 인정한다
      • STDEV() : 표준 편차 값
      • VAR_SAMP() : 분산 값

    • 위와 같이 출력된 amount를 묶어보자
    • userid를 기준으로 그룹화하여, 해당 amount를 모두 더했다
    • 위와 같이 sum 안에서 연산을 시행할 수 있다. 위와 같이 AS를 통해 출력되는 column의 이름을 바꿀 때, 띄어쓸려면 ' ' 로 묶어줘야한다
    • 평균을 출력해보았다
  • Quiz. 회원들의 지역별 거주 인원을 출력해라

    • 다음과 같이 작성하면 된다
    • AS로 column의 이름을 변경했을 때, 이 이름을 변수같이 사용할 수 있다. 위의 ' ORDER BY 거주인원 ' 은 ' ORDER BY COUNT(DISTINCT NAME) ' 과 같은 의미이다
profile
멋진 엔지니어가 될 때까지

0개의 댓글