본문 바로가기
LEARN/SQL

[SQL] MySql 강의 이론 정리 1

by 아이엠제니 2022. 2. 26.

SHOW DATABASES;

보여줘라 데이터 베이스를.

 

 

 

USE world;

사용할 데이터 베이스를 지정.

 

 

 

SHOW TABLES;

world 안에 있는 테이블을 보여줘.

SHOW TABLE STATUS;

STATUS => 테이블의 상태 즉, 정보를 보여줘.

 

 

 

DESC city;

city 테이블에 무슨 열이 있는지 보여줌.

  • DESCRIBE city;
  • DESC city;

 

 

 

SELECT... FROM

SELECT select_expr
    [FROM table_references]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | postion}]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}]
  • 요구하는 데이터를 가져오는 구문
  • 일반적으로 가장 많이 사용됨
  • DB 내 테이블에서 원하는 정보 추출
SELECT * FROM city;

city 테이블에 있는 전체 데이터를 보여줌.

SELECT Name FROM city; // city 테이블 안에 Name 열만
SELECT Name, Population FROM city; // city 테이블 안에 Name이랑 Population 열 둘 다
  • SELECT 열 이름
    • 테이블에서 필요로 하는 열만 가져옴
    • 여러 개의 열을 가져오고 싶을 때는 콤마로 구분
    • 열 이름의 순서는 출력하고 싶은 순서대로 배열 가능

 

 

 

SELECT *
FROM city
WHERE Population > 8000000;
  • 조회하는 결과에 특정한 조건으로 원하는 데이터만 보고 싶을 때 사용
  • SELECT 필드이름 FROM 테이블이름 WHERE 조건식;
  • 조건이 없을 경우 테이블의 크기가 클수록 찾는 시간과 노력이 증가

 

 

 

SELECT *
FROM city
WHERE Population < 8000000
AND Population > 7000000;
  • 관계 연산자 사용
    • OR
    • AND
    • 조건 연산자 (=, <, >, <=, >=, <>, != 등)
    • 관계 연산자 NOT AND OR
    • 연산자의 조합으로 데이터를 효율적으로 추출

 

 

 

SELECT *
FROM city
WHERE CountryCode = 'KOR'
AND Population <= 1000000;
// 한국에 있는 인구 100만 이상의 정보를 보여줘

 

 

 

SELECT *
FROM city
WHERE Population BETWEEN 7000000 AND 8000000;

데이터가 숫자로 구성되어 있어 연속적인 값은 BETWEEN...AND 사용 가능

 

 

 

SELECT *
FROM city
WHERE Name IN('Seoul', 'New York', 'Tokyo');

이산적인 값의 조건에서는 IN() 사용 가능

 

 

 

SELECT *
FROM city
WHERE CountryCode LIKE 'KO_'; // KO 뒤에 한 글자만 올 수 있음

SELECT *
FROM city
WHERE Name LIKE 'Tel %' // Tel로 시작하는 도시 이름이 뭐지?
  • 문자열의 내용 검색하기 위해 LIKE 연산자 사용
  • 문자 뒤에 %-무엇이든(%) 허용
  • 한 글자와 매치하기 위해서는 '_' 사용

 

 

 

SELECT *
FROM city
WHERE CountryCode = (   SELECT CountryCode
                        FROM city
                        WHERE Name = 'Seoul');
  • 서브 쿼리 SubQuery
  • 쿼리문 안에 또 쿼리문이 들어있는 것
  • 서브 쿼리의 결과가 둘 이상이 되면 에러 발생

 

 

 

SELECT *
FROM city
WHERE Population > ANY (   SELECT Population
                           FROM city
                           WHERE District = 'New York');
  • 서브쿼리의 여러 개의 결과 중 하나만 만족해도 가능
  • SOME은 ANY와 동일한 의미로 사용
  • =ANY 구문은 IN과 동일한 의미

 

 

 

SELECT *
FROM city
WHERE Population > ALL ( SELECT Population
                         FROM city
                         WHERE District = 'New York');
  • ALL 서브쿼리의 여러 개의 결과를 모두 만족 시켜야 함

 

 

 

SELECT *
FROM city
ORDER BY Population DESC;

// 혼합
SELECT *
FROM city
ORDER BY CountryCode ASC, Population DESC;
  • ORDER BY 결과가 출력되는 순서를 조절하는 구문
  • 기본적으로 오름차순 ASCENDING 정렬
  • 내림차순 DESCENDING 으로 정렬
    • 열 이름 뒤에 DESC 적어줄 것
  • ASC(오름차순)은 default이므로 생략 가능
  • 혼합해 사용하는 구문도 가능

 

 

 

SELECT DISTINCT CountryCode
FROM city;
  • DISTINCT 중복된 것은 1개씩만 보여주면서 출력
  • 테이블의 크기가 클수록 효율적

 

 

 

SELECT *
FROM city
ORDER BY Population DESC
LIMIT 10;

 

 

 

SELECT CountryCode, MAX(Population) AS 'Average'
FROM city
GROUPT BY CountryCode;
  • 그룹으로 묶어주는 역할
  • 집계 함수(Aggregate Function)를 함께 사용
    • AVG(): 평균
    • MIN(): 최소값
    • MAX(): 최대값
    • COUNT(): 행의 개수
    • COUNT(DISTINCT): 중복 제외된 행의 개수
    • STDEV(): 표준 편차
    • VARIANCE(): 분산
  • 효율적인 데이터 그룹화(Grouping)
  • 읽기 좋게 하기 위해 별칭(Alias) 사용

 

 

 

유튜브 '이수안컴퓨터연구소'
[MySQL 데이터베이스 한 번에 끝내기] 강의
공부용으로 정리 및 기록
https://youtu.be/vgIc4ctNFbc
300x250