SQL

혼자 공부하는 SQL / Chapter 03 SQL 기본 문법

Bay Im 2024. 1. 10. 15:27

03-1 기본 중에 기본 SELECT ~ FROM ~ WHERE

  • 데이터베이스 만들기
    • DROP DATABASE db_name
      • 데이터베이스를 삭제하는 문장
    • CREATE DATABASE db_name
      • 데이터베이스를 새로 만드는 문장
    • USE db_name;
      • 사용할 데이터베이스를 지정하는 문장
      • 쿼리를 새로 열거나 다른 DB를 사용하겠다고 명시하지 않으면 해당 DB에서 계속 수행된다.

 

  • 주석
    • — (하이픈 2개 연속)
    • 하이픈 2개 이후에 한 칸을 띄우고 설명 작성하기

 

  • 테이블 생성하기
    • CREATE TABLE table_name ( column_name 데이터 형식 AUTO_INCREMENT NOT NULL PRIMARY_KEY, … );
      • 테이블 생성하는 문장
    • AUTO_INCREMENT
      • 순번 자동 입력 (1, 2, 3… 자동 증가)

 

  • 데이터 입력하기
    • INSERT INTO table_name VALUES (’내용’, 1);
      • 데이터 입력하는 문장
      • CHAR, VARCHAR, DATE 형은 작은 따옴표로 값을 묶어주기
      • INT 형은 작은 따옴표 없이 그냥 넣기
      • AUTO_INCREMENT 형은 NULL 값을 넣어주면 자동으로 순번 증가하면서 입력

 

  • 데이터 조회하기
    • SELECT * FROM table_name;
      • 해당 테이블 데이터 전체 조회
        • 는 모든 것을 의미
    • 데이터 조회 기초 문장
    SELECT column_name
    FROM table_name
    WHERE 조건식
    GROUP BY column_name
    HAVING 조건식
    ORDER BY column_name
    LIMIT 숫자 
    
    • SELECT column_name FROM table_name;
      • 해당 열 데이터 가져오기
      • 여러 개의 열을 가져오고 싶으면 콤마로 구분하기
      • 열 이름에 별칭을 정하고 싶으면 열 이름 다음에 지정하고 싶은 별칭 입력, 별칭에 공백 있으면 큰 따옴표로 묶어서 작성
    • SELECT column_name FROM table_name WHERE 조건식;
      • 결과에 특정 조건을 추가해서 출력
      • 조건식은 열 이름 = 값 의 형태로 값이 문자형은 작은 따옴표로 묶어주고, 숫자는 필요없음

 

  • 조건식
    • 관계 연산자
      • , <, ≥, ≤, =
        • 숫자로 표현된 데이터의 범위 지정
        • ex) WHERE column_name ≤ 166;
    • 논리 연산자
      • AND, OR
        • ex) WHERE column_name ≥ 165 AND column_name2 > 6;
    • BETWEEN ~ AND
      • 범위에 있는 값 구하기
      • ex) WHERE column_name BETWEEN 160 AND 170; (160~170인 열 구하기)
    • IN()
      • 문자형 데이터 중 하나에 포함되는지 비교할 때 사용 (OR)
      • ex) WHERE column_name IN(’경기’, ‘서울’, ‘강릉’);
    • LIKE
      • 문자열의 일부 글자 검색시 사용
      • %는 무엇이든 허용, _는 한 글자와 매치
      • ex) WHERE column_name LIKE ‘__나라’;

 

  • 서브 쿼리
    • SELECT 안에 또 다른 SELECT가 들어가는 것
    • 조건식 작성할 때 사용
    • ex) WHERE column_name > (SELECT column_name FROM table_name WHERE column_name2 = ‘대한민국’);

 

 

 

03-2 좀 더 깊게 알아보는 SELECT 문

  • ORDER BY
    • 결과 출력 순서 조절
    • ORDER BY column_name 형태
    • 기본값은 ASC(오름차순), 내림차순은 DESC 입력
    • 콤마로 여러 개의 열 정렬 지정 가능, 첫 번째 정렬 동일 시 다음 열로 정렬
  • LIMIT
    • 출력하는 개수 제한, 중간부터 출력도 가능
    • LIMIT 시작, 개수 형태
    • ex) LIMIT 0, 3 (0번째부터 3건)
    • ex) LIMIT 3, 2; (3번째부터 2건)
  • DISTINCT
    • 조회된 결과에서 중복된 데이터 1개만 남긴다.
    • DISTINCT를 열 이름 앞에 써주면 된다.
    • SELECT DISTINCT column_name FROM table_name 형태
  • GROUP BY
    • 데이터를 그룹화 해주는 기능
  • 집계 함수
    • GROUP BY와 함께 사용
    • 함수 종류
      • SUM(), AVG(), MIN(), MAX(), COUNT(), COUNT(DISTINCT)
    • SELECT SUM(column_name) FROM table_name GROUP BY column_name2; 형태
    • 별칭 사용 같이 하면 좋음 (큰 따옴표)
    • COUNT(*)은 모든 행의 개수를 세고, COUNT(column_name)은 NULL 제외한 행 개수를 센다.
  • HAVING
    • 집계 함수에 조건을 제한하는 것, GROUP BY 절 다음에 나와야 한다.
    • 조건으로 집계 함수도 사용 가능
    • ex) HAVING SUM(columm1*column2) > 1000;

 

 

 

03-3 데이터 변경을 위한 SQL 문

  • INSERT
    • 데이터 입력
    • INSERT INTO table (column1, column2 …) VALUES (값1, 값2); 형식
    • 열은 생략이 가능하나, 값을 넣을 때 테이블 정의했던 열 순서와 개수와 동일해야 한다.
  • AUTO_INCREMENT
    • 열을 정의할 때 1부터 증가하는 값을 자동 입력
    • 해당 열은 꼭 PRIMARY KEY로 지정해야 한다.
    • ex) CREATE TABLE table_name (column INT AUTO_INCREMENT PRIMARY KEY);
    • 데이터 입력 시 해당 열은 NULL 값으로 넣으면 자동으로 값이 넣어진다.
    • 어느 숫자까지 증가 되었는지 확인 시 SELECT LAST_INSERT_ID(); 로 확인
    • 시작 값 변경 시 ALTER TABLE table_name AUTO_INCREMENT=시작값; 으로 변경
    • 증가 값 변경 시 SET @@auto_increment_increment=증가값; 으로 변경
  • 시스템 변수
    • MySQL에서 자체적으로 가지고 있는 설정값이 저장된 변수
    • 변수명 앞에 @@가 붙고, 값 확인 시 SELECT @@시스템변수 로 실행하기
    • 시스템 변수 종류가 알고 싶으면 SHOW GLOBAL VARIABLES 실행하기
  • INSERT INTO ~ SELECT
    • 다른 테이블의 데이터 값을 가져와서 해당 테이블에 한번에 값을 입력
    • INSERT INTO table_name (column1, column2) SELECT column3, column4 FROM table_name2; 형태
  • DESC table_name;
    • 해당 테이블의 구조 확인
  • UPDATE
    • 데이터 수정
    • UPDATE table_name SET column1=값1, column2=값2, … WHERE 조건식;
    • WHERE 절 생략시 테이블의 모든 행 값이 변경되므로 주의, 숫자 단위 변경할 때 정도 사용
      • ex) UPDATE table SET column_name = column_name / 1000;
  • DELETE
    • 행 데이터 삭제
    • DELETE FROM table WHERE 조건식; 형태
    • 상위 몇 건만 삭제하려면 LIMIT 사용
  • 대용량 테이블의 삭제
    • DELETE
      • 대용량 테이블에서는 삭제가 오래 걸린다.
    • DROP
      • 속도가 빠르고 테이블 자체를 삭제한다.
    • TRUNCATE
      • DELETE와 동일한 효과를 내지만 속도가 빠르다.
      • 빈 테이블을 남긴다. (테이블의 구조를 남긴다.)

미션

  • 기본 미션
    • p.138의 확인 문제 2번 풀고 인증하기
      • 다음 보기 중에서 각 문항의 빈칸에 들어갈 것을 고르세요.
      • LIKE, DESC, ORDER BY, DISTINCT, ASC, AND, OR, ≥, LIMIT
        1. SELECT * FROM member ORDER BY height;
        2. SELECT * FROM member LIMIT 5, 2;
        3. SELECT DISTINCT phone1 FROM member;
  • 선택 미션
    • 데이터 입력, 삭제하는 기본 형식 작성하기
      • 데이터 입력
        • INSERT INTO table_name (column_name1, column_name2) VALUES (값1, 값2);
      • 데이터 삭제
        • DELETE FROM table_name WHERE 조건식(ex. city_name LIKE ‘New%’);