SQL Basics

FeelSoo·2022년 5월 5일
0

링크텍스트 ---- SQL Quiz

링크텍스트 ---- SQL Exercises

링크텍스트 ---- SQL Cheat Sheet

링크텍스트 --- Cheat Sheet 2



< 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 DB 문법 종류 >

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 데이터베이스_이름; // 데이터베이스 사용
  
ex)  
  
  CREATE TABLE user (
  id int PRIMARY KEY AUTO_INCREMENT,
  name varchar(255),
  email varchar(255)
);
  
  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)




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

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


SELECT *
FROM 테이블_이름		// 테이블의 모든 특성을 선택


SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_1 = "특정 값" // 특정 값과 동일한 데이터 찾기. WHERE는 필터 역할을 하는 쿼리문


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



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

SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_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' 을 추가해 이용합니다.
            
            

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

            
SELECT *
FROM 테이블_이름
ORDER BY 특성_1 DESC
// 내림차순으로도 정렬할 수 있습니다.
      
            
SELECT *
FROM 테이블_이름
LIMIT 200
// 데이터 결과를 200개만 출력합니다.
            
            

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

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


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

            
            

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에서 온 고객을 도시별로 묶은 뒤에, 각 도시 수에 따라 내름차순 정렬합니다. 그리고 CustomerId에 따라 오름차순으로 정렬한 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
세상은 넓고 배울건 많다

1개의 댓글

comment-user-thumbnail
2023년 11월 26일
답글 달기