코드스테이츠 32일차 - 2 [SQL문]

Lumi·2021년 10월 19일
0
post-thumbnail

좀더 SQL문에 대해서 학습을 하기 위해서 글로 정리를 해보고자 한다

출처 :
코드스테이츠, https://velog.io/@ryong9rrr/mySQL-기본-사용법-정리예제
https://www.w3schools.com/sql/sql_exercises.asp

기본 셋팅

데이터 생성하기

터미널 기준으로 설명을 하자면

  • GUI는 명시적으로 보이기 떄문에
mysql> USE [데이터베이스 이름]; // DB 사용

mysql> CREATE TABLE [만들 테이블 이름](속성 기술); // 해당 DB에 Table 생성
mysql> DESCRIBE [만든 테이블 이름]; // 만든 Table 정보 확인

이처럼 활용을 한다.

직접 실습을 해보았다

  • 테이블 생성 및 확인까지

일단 todo_db라는 db를 만든뒤에 db사용을 한다고 적어 주었다

그후 테이블을 만들어 주었고 테이블이 만들어 진건지 확인한뒤에 테이블에 있는 값을 확이해 보았다.

INSERT

중요한 명령어 중 하나이다.

테이블에 데이터를 넣어주는 명령어 이다.

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

테이블에 있는 항목에 을 지정한 뒤에 values값을 주어서 값을 넣어주면 된다.

SELECT

이후 값을 확인하고자 할떄에는 SELECT를 활용한다.

  • 나는 INSERT할떄에 name만 지정해 주었기 떄문에 다른 값을 NULL이 된다.
  • 만약 테이블을 생성할떄 NOT NULL속성을 주게 된다면 반드시 값을 INSERT해주어야 한다.

UPDATE

생성한 데이터의 값을 변경하고 싶을떄 활용한다.

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

이처럼 이름의 값이 바뀌었다는것을 알수가 있다.

  • 옵션으로 where을 적용하면 원하는 데이터만 update가능하다.

DELETE

말 그대로 데이터를 지우는 과정이다.

DELETE FROM table_name WHERE condition;

  • 오타에 주의하자...

만약 테이블에 있는 모든 값들을 지우고 싶다면

TRUNCATE 테이블명;

그리고 만약 테이블이나 db를 삭제하고 싶다면

DROP table 테이블명

DROP DATABASE db명

을 활용하면 된다.

좀더 활용한 느낌

좀더 제약 조건이 추가된 테이블을 형성해 보았다

create table hojin( 
id int primary key  not null auto_increment,
name varchar(255) not null,
age varchar(255) not null,
type varchar(255) default 'list'
);

이와 같은 테이블을 형성을 하였다

원래 테이블에는 키 값이 필요하다.

  • 우리가 React에서 상태를 넘길떄 key값이 필요한 것가 같다

그래서 Id값을 primary key로 설정을 해주어고 null값이 허용이 안되게 + auto_increment를 설정해 주었다.

  • auto_increment는 자동으로 증가하는 값이다.
  • 내가 따로 값을 넣어주지 않아도 1부터 값이 추가될떄무다 ++ 된다.

default는 말그대로이다.

  • 값을 넣어주지 않으면 자동으로 'list'가 들어간다.

DISTINCT

중복되는 값은 제외하고 가져온다.

SELECT DISTINCT a FROM 테이블명
SELECT DISTINCT a,b FROM 테이블명

사진을 보면 mgr만을 가져올떄 전체 테이블에서 중복되는 값을 제외하고 한개만 가져오는 것을 볼수가 있더

job, mgr을 가져오면 두개를 모두 고려해 중복되는 값은 제외하는 것을 알수가 있다.

WHERE

특정 영역을 지정해서 값을 가져오는 SQL문이다.

SELECT * FROM 테이블명 WHERE 변수명 = 변수값

예시
SELECT * FROM hojin WHERE name = hojin

이런식으로 활용을 하며 hojin이라는 테이블에 이름이 hojin인 값을 모두 가져오라는 SQL문이다.

반대로
SELECT * FROM hojin WHERE not name = hojin

name이 hojin이 아닌 값들을 다 가져오라는 뜻이다.

and, or을 추가하여서 제약 조건을 추가하여 사용할수도 있다.

function

MAX, MIN함수

SELECT MIN(컬럼 명)
FROM 테이블 명
WHERE 컬럼 명;

예를들면
SELECT MIN(price) from price_list;

price_list라는 테이블에서 price라는 컬럼이 가장 작은 값을 가져오라는 뜻이다.

count함수

SELECT COUNT(*) FROM 테이블 명 WHERE 컬럼 명 = 특정 값

예를들면
SELECT COUNT(*) FROM price_list WHERE price = 19;

price_list라는 테이블에서 price가 19인 데이터의 갯수를 가져오라는 뜻이다.

AVG함수

SELECT AVG(컬럼명) FROM 테이블명

예를들면
SELECT AVG(price) FROM price_list

price_list라는 테이블에서 price를 가져오는데 그 평균을 가져오라는 뜻이다.

sum함수

SELECT SUM(컬럼명) FROM 테이블명

avg와 같다.

  • 평균이 아니라 값을 모두 더한값을 가져온다

LIKE

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

음... 첫글짜 또는 뒷글자 또는 중간글자등 특정 글자 및 특정 조건이 포함되어있으면 가져오는 SQL문이다.

SELECT * FROM hojin WHERE name LIKE 'a%o';

hojin이라는 테이블에서 이름이 a로 시작하고 끝이 o로 끝나는 값을 가져오라는 뜻이다.

  • 사실 이 SQL문은 이게 거의 다이다.
  • 그냥 이것을 계속해서 활용하는 것이다.

IN

SELECT * FROM Customers WHERE Country IN ('Germany', 'France', 'UK');

매우 간단하다.

customers라는 테이블에서 country의 값이 getmany, france, uk인 값을 가져 오는 것이다.

  • 하나라도 다르면 가져오지 않는다.

Alias

쉽게 말하면 이름을 바꾸는 것이다.

SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers;

customers이라는 테이블에서 customerid = id로,
dustomername = customer로 바꾸어서

화면에 보여준다.

  • 실제 값은 바뀌지 않는다.
profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글