[2020. 12. 02 TIL] My SQL

Young-mason·2020년 12월 2일
0

TIL

목록 보기
10/11

SQL이란

  • Structured Query Language → 구조화된 query 언어

그럼 Query란?

  • 직역을 하자면 '질의문'
  • 가장 친숙한 예시로는 검색창에 적는 검색어도 Query의 일종
  • 저장되어있는 정보를 필터하기 위한 질문

그래서 다시 SQL이란?

  • 데이터베이스 용 프로그래밍 언어!
  • 데이터베이스에 query를 보내 원하는 데이터만을 뽑아올 수 있다.

RDBMS

  • Relational Database Management System
  • RDMBS 는 SQL 기반
  • SQL Server, DB2, Oracle, MySQL - - -

Table

  • RDBMS에서 data는 table 에 저장된다.
  • records( row )와 column으로 구성됨

SQL Query

  • SELECT - extracts data from a database

SELECT * FROM Customers // Customers (table) 에서 모든 데이터 가져오기

SELECT PostalCode, City FROM Customers // Customers 에서 PostalCode, City 데이터(column) 가져오기 

SELECT DISTINCT Country FROM Customers; // distinct 중복되는 row 제거

SELECT COUNT ( DISTINCT Country ) FROM Customers; // 중복제거 후 데이터 개수
  • Where
SELECT * FROM Customers
WHERE CustomerID = 1;

// CustomerID column의 값이 1인 모든 데이터 가져오기

SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';

// Country 값이 'Germany', 'USA'가 아닌 모든 데이터 가져오기

  • Order By
SELECT * FROM Customers
ORDER BY Country;

// Country column 에 따라 정렬됨 (오름차순)

SELECT * FROM Customers
ORDER BY Country DESC;

// Country column 에 따라 정렬됨 (내림차순)

SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

// Counry 오름차순 -> CustomerName 내림차순 (??) -> 헬프데스크 각
  • INSERT INTO - inserts new data into a database
//두가지방법이 있따
// 1. column name과 그에따른 value 특정 (값이 안들어간 column 은 null)
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

// 2. column 특정하지 않고 모든 column 에 추가, 이 경우 column 순서에 맞게 value 입력해야함
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
  • Null values
SELECT column_names
FROM table_name
WHERE column_name IS NULL;

SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
  • UPDATE - updates data in a database

// ID가 1인 데이터 업데이트
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

// 국가가 Mexico 인 모든 데이터 업데이트
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

// 주의! where 조건을 적지 않으면 모든 records가 업데이트됨
UPDATE Customers
SET ContactName='Juan';
  • DELETE - deletes data from a database
DELETE FROM table_name WHERE condition;

// CustomerName이 Alfreds인 records 삭제
DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';

// Customers 모든 records 삭제 (테이블은 남겨둠)
DELETE FROM Customers
  • Select Top (My SQL)
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

//5개까지만 보여줌 ( My SQL ) 위에꺼랑 같은의미
SELECT * FROM Customers LIMIT 5;

// country가 Genrmany 인 값 3개 보여줌
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
  • Functions
// Min, Max
SELECT MIN(column_name) //MAX
FROM table_name
WHERE condition;

// Price 최소값을 SmallestPrice라는 column name으로 반환
SELECT MIN(Price) AS SmallestPrice
FROM Products;

//Count, Sum, AVG

SELECT AVG(column_name) // Count , Sum
FROM table_name
WHERE condition;
  • LIKE - column 에서 특정한 Pattern을 검색하기 위해 사용
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

// a로 시작하지 않는 데이터 검색
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';

  • WildCard Characters

  • IN ( 여러개의 or 조건을 축약할수잇음)
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

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

SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);
  • Between
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

inner Join

on으로 명시된 특성만 반영되서 출력;

as

alias → 별명

SELECT * FROM users u INNER JOIN pets

  • CREATE DATABASE - creates a new database
  • ALTER DATABASE - modifies a database
  • CREATE TABLE - creates a new table
  • ALTER TABLE - modifies a table
  • DROP TABLE - deletes a table
  • CREATE INDEX - creates an index (search key)
  • DROP INDEX - deletes an index
profile
Frontend Developer

0개의 댓글