본문 바로가기
데이터분석/Python

[SQL] mySQL 문법 정리(1)-CREATE,ALTER,DROP,INSERT,SELECT

by 말랭쓰 2021. 2. 6.
320x100

관계형 데이터베이스를 사용하는데 MySQL을 많이 사용합니다.

SQL 문법을 정리하면서 데이터베이스를 생성하고, SQL에서 제공하는 데이터베이스와 테이블을 가지고 와서 기초를 정리해봅시다.

먼저 데이터를 파이썬으로 바로 불러올 때와 데이터베이스를 사용할 때의 차이를 알아보겠습니다.

데이터를 파이썬(주피터 노트북)으로 불러오면 데이터는 RAM에 가져옵니다.

RAM은 노트북 사양에 따라 다르지만 보통 8GB나 16GB 이고, 실제 사용할 수 있는 용량은 더 적습니다.

용량이 큰 데이터의 경우 데이터 전체를 불러오기가 힘들다고 합니다.

대신 용량의 적은 데이터의 경우 파이썬에서는 입출력(I/O)의 속도가 빠릅니다.

반면, 데이터베이스는 ROM에 데이터를 로드하고, ROM은 더 큰 용량을 가집니다.

그렇기때문에 데이터베이스를 사용하고, 이때 SQL문(쿼리)을 작성하여 데이터를 처리합니다.

오늘은 SQL로 기본적인 쿼리를 작성하면서 SQL을 정리해보고, 간단한 예제 데이터베이스로 데이터를 조회해보겠습니다.

참고) 저는 HeidiSQL을 사용했으며, 마지막에 ';' 이 누락되거나 대소문자가 정확하지 않을 수 있습니다.


1. CREATE 생성

1. 데이터베이스 Database 생성

1) 데이터 베이스를 확인하기

SHOW DATABASES;

2) test 데이터베이스 생성

CREATE DATABASE test;

3) 데이터베이스 선택

USE test;

4) 현재 데이터베이스 확인

SELECT DATABASE();

 

2. 테이블 Table 생성

1) 테이블 생성 - USER1, USER2

CREATE TABLE USER1(
	user_id INT,
	name VARCHAR(20),
	email VARCHAR(30),
	age INT(3),
	rdate DATE
)
CREATE TABLE USER2(
	user_id INTUSER1USER1 PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) NOT NULL,
	email VARCHAR(30) UNIQUE NOT NULL,
	age INT(3) DEFAULT '30',
	rdate TIMESTAMP
)

 

USER2는 USER1에서 조건들을 더해준 테이블입니다.

'test' 데이터베이스 안에 'USER1' 과 'USER2'라는 테이블이 생성되었습니다.

 

2. ALTER 수정

1. 데이터베이스 수정

1) 데이터베이스 encoding 확인 변경하기

SHOW VARIABLES LIKE "character_set_database"
ALTER DATABASE test CHARACTER SET = UTF8

2. 테이블 수정 - ADD, MODIFY, DROP

1) ADD

ALTER TABLE USER2 ADD tmp TEXT

2) MODIFY

ALTER TABLE USER2 MODIFY COLUMN tmp INT(3)

3) DROP

ALTER TABLE USER2 DROP tmp

 

3. DROP 삭제

1. 데이터베이스 삭제

CREATE DATABASE tmp;
DROP DATABASE tmp;
SHOW DATABASES;

2. 테이블 삭제

DROP TABLE USER1;

 

4. INSERT 삽입

1. USER1 테이블에 INSERT

INSERT INTO USER1(user_id,name,email,age,rdate)
VALUE(2,"jin","jin@gmail.com",32,NOW()),
(3,"peter","peter@gmail.com",33,NOW()),
(4,"po","po@gmail.com",23,NOW()),
(5,"andy","andy@gmail.com",43,NOW()),
(6,"jin","jin@gmail.com",17,NOW());

 

5. SELECT 조회

1. Basic

1) 전체 Column 데이터 조회

SELECT *
FROM USER1

2) 특정 Column 데이터 조회

SELECT user_id,name,age
FROM USER1

 

2. ALLIAS (AS)

ALLIAS (AS) 를 이용하여 column명을 변경가능합니다.

SELECT user_id AS "ID", name AS "UserName",age AS "AGES"
FROM USER1

 

3. DISTINCT

DISTINCT는 칼럼에서 중복 데이터를 제거해줍니다.

SELECT DISTINCT(name)
FROM USER1

4. WHERE 조건문

SELECT COUNT(DISTINCT(name))
FROM USER1
WHERE age >=30

조건문에 해당하는 사람의 이름을 중복없이 count하여 보여줍니다.

5. BETWEEN A AND B

이때, A와 B 값을 포함합니다.

SELECT *
FROM USER1
WHERE age BETWEEN 20 AND 40

6. ORDER BY 정렬

오름차순은 'ASC'이지만 생략가능하고, 내림차순을 할 때는 'DESC' 를 적어줍니다.

SELECT *
FROM USER1
ORDER BY age DESC

중복 데이터에 대해 정렬을 설정하고 싶을때는 column명을 하나 더 써줍니다.

SELECT *
FROM USER1
ORDER BY name, age DESC

'name' 을 기준으로 먼저 오름차순 정렬을 하고, 중복데이터에 대해서는 'age'를 기준으로 내림차순 정렬해줍니다.

 

7. CONCAT

CONCAT을 사용하면 SELECT한 데이터를 합쳐서 새로운 Column으로 조회가 가능하다.

SELECT name,age,CONCAT(NAME,"(",age,")") AS "name_age"
FROM USER1

8. LIKE : WHERE 절에서 특정 문자열이 들어간 데이터 조회

SELECT *
FROM USER1
WHERE email not LIKE "%@gmail.%"

 

 

9. IN : 여러 개의 조건을 조회할 때 사용

SELECT *
FROM USER1
WHERE name IN ("andy", "peter", "po")

 

10. LIMIT : 조회하는 데이터의 수 제한

SELECT *
FROM USER1
LIMIT 3,5

LIMIT에 숫자 하나를 적어주면 N개의 데이터를 출력해주고, 숫자 N, M 두개를 적어주면 N번째 부터 아래로 M번째 까지의 데이터를 출력합니다.

300x250
반응형

댓글