TIL - SQL Basics

SQL Basics

SQL에서 사용하는 기본 쿼리문은 다음과 같다.
(** 많은데 사실..)

https://www.w3schools.com/sql/default.asp

여기서 찾아보고 하면 장땡이다

여튼... 쿼리문은 이렇게 되어 있다.

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 데이터베이스_이름;
#ex
CREATE DATABASE databaseThing

데이터베이스 사용

USE 데이터베이스_이름;
#ex
USE databaseThing

테이블 생성

앞서 데이터베이스를 만들고 사용하는 쿼리문을 입력했다면 테이블을 만들 수 있다.

  • user 라는 테이블을 만들기

테이블은 필드와 함께 만들어야 한다.

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

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

테이블 정보 확인

DESCRIBE user;

혹은 

desc 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 2 #숫자

SELECT 15+3 #연산

FROM

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

# 1가지 특성을 테이블에서 사용
SELECT 특성_1
FROM 테이블_이름

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

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

WHERE

필터 역할을 하는 쿼리문으로 WHERE는 선택적으로 사용할 수 있다.

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

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

# 특정 값보다 크거나 작은 데이터를 필터할 때에는 '<', '>', 
# 비교하는 값을 포함하는 '이상', '이하' 값은 '<=', '>=' 을 사용

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

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

# 문자열에서 특정 값과 비슷한 값을 필터링 할때 LIKE + '%' or '*'

SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 LIKE "%특정 문자열%"

# 리스트의 값들과 일치하는 데이터를 필터할때 IN 사용 

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

# 값이 없는 경우 'NULL'을 찾을 때 'IS'와 같이 사용

SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NULL

#위에꺼의 반대 
SELECT *
FROM 테이블_이름
WHERE 특성_1 IS NOT NULL

ORDER BY

돌려받는 데이터 결과를 어떤 기준으로 정렬하여 출력할지 결정하는 구문, 선택적으로 사용할 수 있다 .

# 오름차순 
SELECT *
FROM 테이블_이름
ORDER BY 특성_1

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

LIMIT

결과로 출력하 데이터 갯수를 정할 수 있고, 선택적으로 사용가능하다

SELECT *
FROM 테이블_이름
LIMIT 200

DISTINCT

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

# 특성_1을 기준으로 유니크한 값들만 선택할 경우 
SELECT DISTINCT 특성_1
FROM 테이블_이름

#특성_1,특성_2,특성_3의 유니크한 '조합' 값들을 선택할 경우 
SELECT
  DISTINCT
    특성_1
    ,특성_2
    ,특성_3
FROM 테이블_이름

INNER JOIN or JOIN

둘 이상의 테이블에서 서로 공통된 부분을 기준으로 연결

SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B

OUTER JOIN

LEFT OUTER JOIN 과 RIGHT OUTER JOIN으로 2가지 선택지를 할 수 있는데

기준되는 테이블에 왼쪽(LEFT OUTER JOIN)에 두고 기준되는 테이블에 있는 특성과 왼쪽에 둔 테이블의 한가지 특성이 같은지 여부를 확인

#LEFT OUTER JOIN
SELECT *
FROM 테이블_1
LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B

#RIGHT OUTER JOIN
SELECT *
FROM 테이블_1
RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B

좋은 웹페이지 즐겨찾기