Skip to content

O-Kpy/SQL-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

SQL-study


DML(Data Manipuluation Language

  • 데이터 조작 언어
  • 데이터를 조작(선택, 삽입, 수정, 삭제)하는데 사용되는 언어
  • DML 사용하기 위해서는 꼭 그 이전에 테이블이 정의 되어 있어야 함
  • SELECT, INSERT, UPDATE, DELETE가 이 구문에 해당
  • 트랜잭션이 발생하는 SQL도 이 DML에 속함 (테이블의 데이터를 변경(입력/수정/삭제)할 때 실제 테이블에 완전히 적용하지 않고, 임시로 적용시키는것, 취소가능)

DDL(Data Definition Language)

  • 데이터 정의 언어
  • 데이터베이스, 테이블, 뷰, 인덱스 등의 데이터 베이스 개체를 생성/삭제/변경하는 역할
  • CREATE, DROP, ALTER 구문
  • DDL은 트랜잭션 발생시키지 않음
  • ROLLBACK이나 COMMIT 사용 불가(조심해서 사용해야 한다 대참사가 일어난다)
  • DDL문은 실행 즉시 MYSQL에 적용

DCL(Data Control Language)

  • 데이터 제어 언어
  • 사용자에게 어떤 권한을 부여하거나 빼앗을때 주로 사용하는 구문
  • GRANT, REVOKE,

  • SHOW DATABASES;(데이터 탐색)

  • USE 데이터명;(데이터 선택)

  • SHOW TABLES;(데이터의 테이블들을 출력)

  • SHOW TABLES STATUS;(테이블의 상태, 정보 출력)

  • DESCRIBE 데이터명;(데이터의 열 정보 출력)

  • SELECT, FROM(선택, 어디서 부터)

  • WHERE(조건문, if,where,for문)

    1. 조건 연산자(=, <, >, <=, !=... 등)
    2. 관계 연산자(NOT, AND, OR등)
    3. 연산자의 조합으로 데이터를 효율적으로 추출
  • BETWEEN ... AND ...(숫자로 구성되어 연속적인 값을 반환 받도록 할때)

  • IN (A,B,C) (()안에 있는 것들을 것들을 반환) ex)WHERE NAME IN (A,B,C)

  • LIKE (문자열을 포함하는것을 반환, find()) ex)WHERE NAME LIKE 'KO_' ==> KOR

    1. _(언더바)는 한 글자를 매치 하기 위함
    2. %(퍼센트)는 문자열 무엇이든 포함하면 반환 ex) WHERE CITY LIKE 'tel %' ==> tel aviv
  • Sub Query(쿼리 문 안에 또 쿼리문이 들어 있는 것)

    1. 서브 쿼리의 결과가 두개 이상이면 에러
    2. ex) SELECT * FROM file WHERE citycode = ( SELECT citycode FROM file WHERE name like 'kore_') ==> 'KOR'로 시작되는 자료 반환
  • ANY(서브 쿼리 중 한가지만 만족해도 출력, or(|)), SOME

    1. ex) SELECT * FROM file WHERE price > ANY( SELECT price FROM name WHERE building LIKE 'KJ%') ==> 'KJ'로 시작되는 빌딩들의 가격보다 하나라도 높은 price를 가지는 자료 반환
  • ALL(서브 쿼리 중 모두 만족하는 자료 출력, and(&))

    1. ex) SELECT * FROM file WHERE price > ALL( SELECT price FROM name WHERE buliding LIKE 'KJ%') ==> 'KJ'로 시작되는 빌딩들의 가격들보다 모두 높은 것을 출력(모두 만족)
  • ORDER BY(결과 출력 순서, sorted, sort_values(ascending=False))

    1. default = 오름차순(ascending) ex) SELECT * FROM file ORDER BY population ASC
    2. 내림차순(descending) ex) SELECT * FROM file ORDER BY population DESC
    3. ex) SELECT * FROM file ORDER BY countrycode DESC, population ASC ==> countrycode는 내림차순, population은 오름차순으로 정렬 반환

실습1 인구수로 내림차순 하여 '한국'에 있는 도시 보기 = SELECT * FROM file WHERE countrycode = 'KOR' ORDER BY population DESC

실습2 국가 면적 크기로 내림차순하여 나라 보기 = SELECT * FROM file ORDER BY surfacearea DESC

  • DISTINCT(중복 제외하고 보여줌)

    1. ex) SELECT DISTINCT Countrycode FROM city ==> 중복 제거 한 Countrycode를 출력
  • LIMIT

    1. 출력 개수 제한 ==> 서버의 처리량을 많이 사용해 서버의 전반적인 성능을 저하 시킬 우려가 있을 경우 사용
  • GROUP BY(그룹으로 묶어주는 역할 HAVING(조건)과 같이 쓰인다.)

    1. 집계함수를 함깨 사용(SUM(), AVG(), MAX(), MIN(), COUNT(), STDEV(), VARIANCE() 등...)
    2. 집계함수 컬럼의 이름을 바꾼다 == AS 'NAME'
    3. ex) SELECT NAME, MAX(population) AS 'MAX' FROM city GROUP BY NAME ==> NAME으로 그룹바이 해서 그 중에 가장 높은 population 반환
  • HAVING(GROUP BY의 조건절)

    1. GROUP BY의 조건 제한하는 개념
    2. 반드시 GROUP BY 다음에 나옴
    3. ex) SELECT NAME, MAX(population) AS 'MAX' FROM city GROUP BY NAME HAVING 'MAX' > 400000 ==> NAME으로 그룹 바이 한 NAME중에 population이 가장 높은 값 그리고 그 것 중에 400000 이상인 것들 반환
  • ROLLUP(총합 or 중간 합계가 필요할 경우 사용)

    1. GROUP BY 절과 함께 WITH ROLLUP문 사용
    2. ex) SELECT countrycode, name, SUM(population) FROM city GROUP BY countrycode, name, WITH ROLLUP ==> 도시 코드(countrycode)와 도시 이름(name)별 SUM(population)
  • JOIN(여러 개의 테이블을 붙일 때) == 파이썬 merge, concat

    1. 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블을 만들때
    2. ex) SELECT * FROM city JOIN country(붙일 테이블) ON (조건)city.countrycode = country.code ==> city 테이블과 country 테이블을 붙인다 어떻게? city의 countrycode, country의 code가 같은 것으로
    3. city의 countrycode와 country의 code는 외래키(FK)

MYSQL 내장함수(문자열 함수, 수학 함수, 날짜와 시간 함수)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published