상세 컨텐츠

본문 제목

#1. SQL 의 기초부터

내일배움캠프 학습/SQL

by 남민우_ 2024. 10. 8. 18:48

본문

1. 개념

1. 데이터 베이스 : 여러 테이블을 포함하는 큰 틀

2. 테이블 : 데이터가 행/열로 구성된 구조

 - 행 : 데이터 레코드

 - 열 : 데이터 속성

customers 라는 테이블.

그 안에 'customer_id', 'name', 'email', 'gender' 라는 데이터 속성을 볼 수 있다.

 

 

2. 기본 명령어

1. SELECT

데이터를 받아오는 기본 명령어. 데이터를 조회하는 모든 Query 에 사용한다.

 

2. FROM

데이터를 받아올 테이블을 특정한다.

SELECT * FROM customers;

 

3. CREATE DATABASE

데이터 베이스을 생성한다.

CREATE DATABASE myDataBase;

 

4. CREATE TABLE

데이터베이스 안에 들어갈 테이블을 생성한다.

CREATE TABLE (
id INT,
name VARCHAR(50),	// VARCHAR(50) : 최대 50자까지 저장 가능한 문자열 타입
			//C에서의 char/string 과 유사하게 생각할 수 있을 것 같다.
age INT
);

이 때, id, name age 와 같은 데이터들을 '컬럼(Column)' 이라고 부른다.

+ 추가

테이블을 생성하고, 이 테이블을 데이터 베이스 안에 어떻게 포함시키나? 하는 의문이 있었다.

개념적으로, 테이블은 데이터 베이스 안에 만들어지고 그 만들어진 모든 것을 '데이터 테이블' 라고 부르는 것.

컴파일 프로그램에서 자체적으로 설정하거나, 혹은 키워드를 통해 사용할 데이터 베이스를 먼저 선정하고, 그 안에서 테이블을 만드는 방식이다.

 

키워드의 경우,

CREATE DATABASE myDataBase;

USE myDataBase;

CREATE TABLE myTable (
	id INT,
    age INT,
    ...
);

의 과정으로 사용할 수 있다.

 

3. 데이터 관리 키워드

1. 데이터 조회

SELECT name, age FROM myTable;

myTable 테이블 안에서 name, age 열을 조회한다.

 

여기서 조건/정렬 등 옵션을 더 추가할 수 있다.

 

1. WHERE

SELECT name FROM myTable WHERE age > 20;

myTable 테이블에서 age > 20 인 경우만 해당 name 을 출력한다.

 

2. ORDER BY

SELECT name FROM myTable ORDER BY age DESC;

myTable 테이블에서 name 데이터를 age 의 내림차순 (DESC) 으로 정렬한다

 - 반대의 경우인 오름차순은 'ASC' 로 사용한다.

 

3. LIMIT

SELECT name FROM myTable LIMIT 5;

myTable 테이블에서 name 데이터를 5개만 제한하여 출력한다.

 

이때 출력되는 데이터는 낮은 행부터 출력된다.

 

2. 데이터 삽입

INSERT INTO myTable (id, name, age) VALUES (1, "Alice", 23);

myTable 테이블에 값이 (1, "Alice", 23) 인 데이터를 추가한다.

 

컬럼 순서는 myTable 의 데이터 속성 순서에 맞게 추가해야 하며 키워드는 INSERT INTO ~  VALUES 를 사용한다.

추가되는 데이터는 가장 마지막 행에 추가된다.

 

3. 데이터 수정

UPDATE myTable SET age = 25 WHERE id = 1;

myTable 테이블에서 id 가 1 인 데이터를 탐색, 해당 데이터의 age 값을 25 로 변경한다.

 

키워드는 UPDATE 를 사용한다.

 

4. 데이터 삭제

DELETE FROM myTable WHERE id = 1;

myTable 테이블에서 id 가 1인 데이터를 삭제한다.

 

키워드는 DELETE 를 사용한다.

 

4. 집계 함수(Aggregate Functions)

여러 행의 값을 계산하여 하나의 결과를 반환하는 함수

 

1. COUNT

SELECT COUNT(*) FROM students;

행(테이블에 입력된 데이터 레코드의 갯수)의 갯수를 출력.

 

2. SUM

SELECT SUM(age) FROM students;

 students 테이블에서 SUM 의 매개변수 (age) 의 총 합 값을 출력

 

3. AVG

SELECT AVG(age) FROM students;

students 테이블에서 AVG 의 매개변수 (age) 의 평균 값을 출력

 

4. MAX / MIN

SELECT MAX(age) FROM students;
SELECT MIN(age) FROM students;

students 테이블에서 매개변수 (age) 의 최대 값/최소 값을 출력

 

5. 조건문

1. 비교의 구문

// name 이 Alice 이면서 age 가 20 초과인 경우만 출력
SELECT * FROM students WHERE age > 20 AND name = 'Alice';

// name 이 Bob 이거나 age 가 20 초과인 경우 모두 출력
// 이 코드에 AND 경우에 해당돼도 출력된다.
SELECT * FROM students WHERE age > 20 OR name = 'Bob';

// age 가 20 초과이지 않은 경우만 출력
SELECT * FROM students WHERE NOT age > 20;

// 같지 않다 ( != ) 의 개념
// gender 가 male 이 아닌 경우 출력
SELECT * FROM customers WHERE gender <> 'male';

// ~와 ~ 사이의 개념
// age 가 21 과 23 의 사이인 경우 출력
SELECT * FROM customers WHERE age BETWEEN 21 AND 23;

// 특정 경우만 출력
// age 가 21, 25, 27 인 경우만 출력
SELECT * FROM customers WHERE age IN (21, 25, 27);

 

 

2. 유사의 구문

// name 이 김 으로 시작하는 경우만 출력 
SELECT * FROM students WHERE name Like '김%'
// %을 어떻게 쓰냐에 따라 출력 대상을 바꿀 수 있다
SELECT * FROM students WHERE name Like '%김%' : name 에 김 이 도중에 들어가는 경우만 출력
SELECT * FROM students WHERE name Like '%김' : name 에 김 이 마지막으로 끝나는 경우만 출력


// food_orders 테이블에서 restaurant 속성의 이름을 "음식점" 으로 바꿔서 출력
// 별명 의 개념으로 이해할 수 있다
SELECT restaurant AS "음식점" FROM food_orders
// AS 를 제외하고도 사용 가능하다
SELECT restaurant "음식점" FROM food_orders
// "" 를 제외하고도 사용 가능하지만, 이는 영어 철자로만 이루어진 경우에 가능하다
SELECT restaurant 음식점 FROM food_orders // X
SELECT restaurant food-coner FROM food_orders // X
SELECT restaurant foodConer FROM food_orders // O

관련글 더보기