비전공자 코딩 배우기_13주차 SQL

Jinny·2021년 8월 8일
0

TIL

목록 보기
10/28
post-thumbnail

SQL(Structured Query Language)

SQL은 데이터베이스 언어로, 관계형 데이터베이스에서 사용한다.

MySQL, Oracle, SQLite, PostgreSQL 등 다양한 데이터베이스에서 SQL 구문을 사용할 수 있다.

SQL이란 데이터베이스 용 프로그래밍 언어이다.

데이터베이스에 쿼리를 보내 원하는 데이터를 가져오거나 삽입할 수 있다.

SQL을 사용하기 위해서는 데이터가 구조가 고정되어 있어야 한다.


🚩 SQL 기본 문법

  • Select
  • Where
  • And, Or, Not
  • Order By
  • Insert Into
  • Null Values
  • Update
  • Delete
  • Count
  • Like
  • Wildcards
  • Aliases
  • Joins
    • Inner Join
    • Left Join
    • Right Join
  • Group By

🚩 데이터베이스 관련 용어

  • SQL Create DB
  • SQL Drop DB
  • SQL Create Table
  • SQL Drop Table
  • SQL Alter Table
  • SQL Not Null
  • SQL Unique
  • SQL Primary Key
  • SQL Foreign Key
  • SQL Default
  • SQL Auto Increment
  • SQL Dates

🚩 데이터베이스 관련 명령어

💡 데이터베이스 생성

CREATE DATABASE 데이터베이스_이름;

💡 데이터베이스 사용

데이터베이스를 이용해 테이블을 만들거나 수정하거나 삭제하는 등의 작업을 하려면, 먼저 데이터베이스를 사용하겠다는 명령을 전달해야 한다.

USE 데이터베이스_이름;

💡 테이블 생성

USE 를 이용해 데이터베이스를 선택했다면, 테이블을 만들 수 있다.

CREATE TABLE user (
	id int PRIMARY KEY AUTO_INCREMENT,
	name varchar(255),
	email varchar(255)
);

SQL 콘솔에서 Enter 키를 이용해 여러 줄의 코드를 입력할 수 있다.

💡 테이블 정보 확인

DESCRIBE user;

user 테이블 정보

mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | YES  |     | NULL    |                |
| email | varchar(255) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

🚩 SQL에서 자주 사용되는 명령어

🔎 SELECT

SELECT는 데이터셋에 포함될 특성을 특정한다.

SELECT 'hello world' // 일반 문자열
SELECT 9             // 숫자
SELECT 13 + 5        // 간단한 연산

🔎 FROM

테이블과 관련한 작업을 할 경우 반드시 입력해야 하고, FROM 뒤에는 결과를 도출해낼 데이터베이스 테이블을 명시한다.

SELECT 특성_1
FROM 테이블_이름
// 특정 특성을 테이블에서 사용

SELECT 특성_1, 특성_2
FROM 테이블_이름
// 몇 가지의 특성을 테이블에서 사용

SELECT *
FROM 테이블_이름
// 테이블의 모든 특성을 선택
// *은 와일드카드로 전부 선택할 때에 사용됨.

🔎 WHERE

필터 역할을 하는 쿼리문이다.

SELECT 특성_1, 특성 2
FROM 테이블_이름
WHERE 특성_1 = "특정 값"
// 특정 값과 동일한 데이터 찾기

SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 < > "특정 값"
// 특정 값을 제외한 값을 찾기

SELECT 특성_1, 특성_2
FROM 테이블_이름
WEHRE 특성_1 > "특정 값"

SELECT 특성_1, 특성_2
FROM 테이블_이름
WEHRE 특성_1 <= "특정 값"
// 특정 값보다 크거나 작은 데이터를 필터할 때에는 '<', '>', 
// 비교하는 값을 포함하는 '이상', '이하' 값은 '<=', '>='을 사용한다.

SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 LIKE "%특정 문자열%"
// 문자열에서 특정 값과 비슷한 값들을 필터할 때는 'LIKE'와 '\%' 혹은 '\*'를 사용한다.

SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 IN ("특정값_1", "특정값_2")
// 리스트의 값들과 일치하는 데이터를 필터할 때는 'IN'을 사용한다.

SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NULL
// 값이 없는 경우 'NULL'을 찾을 때는 'IS'를 사용한다.

SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NOT NULL
// 값이 없는 경우를 제외할 때는 'NOT'을 추가해 사용한다.

🔎 ORDER BY

돌려받는 데이터 결과를 어떤 기준으로 정렬하여 출력할지 결정한다.

SELECT *
FROM 테이블_이름
ORDER BY 특성_1
// 기본 정렬은 오름차순

SELECT *
FROM 테이블_이름
ORDER BY 특성_1 DESC
// 내림차순 정렬

🔎 LIMIT

결과로 출력할 데이터의 갯수를 정할 수 있다. 쿼리문에서 사용할때는 마지막에 추가한다.

SELECT *
FROM 테이블_이름
LIMIT 200
// 데이터 결과를 200개만 출력한다.

🔎 DISTINCT

유니크한 값을 받고 싶을 때에는 SELECT DISTINCT 를 사용할 수 있다.

SELECT DISTINCT 특성_1
FROM 테이블_이름
// 특성_1을 기준으로 유니크한 값들만 선택한다.

SELECT
	DISTINCT
		특성_1
		,특성_2
		,특성_3
FROM 테이블_이름
// 특성_1, 특성_2, 특성_3의 유니크한 '조합' 값들을 선택한다.

🔎 INNER JOIN

INNER JOIN 이나 JOIN 으로 실행할 수 있다.

SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 둘 이상의 테이블을 서로 공통된 부분을 기준으로 연결한다.

🔎 OUTER JOIN

OUTER JOIN 은 다양한 선택지가 있다.

SELECT *
FROM 테이블_1
LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 'LEFT OUTER JOIN'으로 LEFT INCLUSIVE를 실행한다.

SELECT *
FROM 테이블_1
RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 'RIGHT OUTER JOIN'으로 RIGHT INCLUSIVE를 실행한다.

여러 쿼리문 한 번에 써보기

  • Brazil에서 온 고객을 도시별로 묶은 뒤, 각 도시 수에 따라 내림차순 정렬한다. 그리고 Customerld에 따라 오름차순으로 정렬한 3개의 결과만 요청하기
SELECT c.CustomerId, c.FirstName, count(c.City) as 'City Count'
FROM customers AS c
JOIN employees AS e ON c.SupportRepId = e.EmployeeId
WHERE c.Country = 'Brazil'
GROUP BY c.City
ORDER BY 3 DESC, c.CustomerId ASC
LIMIT 3

profile
코린이

0개의 댓글