DB

[SQL] SQL 공부한 내용을 정리해봅니다.

해봄코딩 2023. 3. 14. 13:00

 

 

칸 아카데미의 SQL강의 내용을  요약해봅니다. 
뒷부분에 자가결합 부분이 다소 헷갈리지만 첫술에 배부를 수 없겠죠? 

쌓이다보면 언젠가는 터득하게 되리라 기대해봅니다.  

 

 

테이블 생성하기 

CREATE TABLE [생성할 테이블명] ([생성할 컬럼명1][데이터타입], [생성할 컬럼명2][데이터타입]....) ;

 

예시

CREATE TABLE book(id integer,name text,rating integer);

 


 

데이터 삽입하기

INSERT INTO [삽입할 테이블명]  VALUES ([첫번째 컬럼에 추가할 데이터], [두번째 컬럼에 추가할 데이터] ... );

  

예시  

INSERT INTO  book values(1,"white death",5);
INSERT INTO  book values(2,"remember Miranda",4);
INSERT INTO  book values(3,"Missing Agath crestie",3);




 

데이터 조회하기

SELECT 을 사용한다. 

 

예시 

//조건없이 전체 다 조회하고싶을때 *을 넣는다.
SELECT * FROM movies;    

//조건으로 필터링하고 싶을때 WHERE이후에 조건을넣는다.  
SELECT * FROM movies WHERE release_year > 2000 

//특정 컬럼으로 조회하고 싶을때 
SELECT name, age FROM customers;

 

 

데이터 통계내기 

다음과 같이 예시를 바로 보시는게 이해가 쉬울 것 같습니다 .

//minutes컬럼을 모두 더한 결과를 얻고 싶을때 SUM을 사용합니다. 
SELECT SUM(minutes) FROM todo_list;

//age컬럼의 최대(MAX)값을 구할때 
SELECT MAX(age) FROM customers;

//이외에 최소값을 구하고 싶으면 MIN, 평균값을 구하고 싶으면 AVG등을사용합니다.

 


AND/ OR 

조건문을 AND나 OR를 추가해서 볼 수도 있습니다.   

SELECT title FROM songs WHERE mood="epic" AND released>1990 AND duration < 240;
SELECT title FROM songs WHERE  mood = "epic" OR released > 1990 ;



HAVING 

 

이 명령어로 내가 원하는 결과를 제한해서 볼 수도 있습니다. 

//단어가 백만개 이상 포함된 책의 작가를 조회해주세요. 
SELECT author, SUM(words) as Total_words FROM books GROUP BY author HAVING Total_words > 1000000;

//단어가 평균 15만개이상 포함된 책의 작가를 조회해주세요. 
SELECT author, AVG(words) as avg_words FROM books GROUP BY author HAVING avg_words > 150000;

 

 

 

IN

IN을 활용해서 다른 테이블의 데이터를 참고해서 조회할 수도 있습니다. 

//songs테이블의 airtist정보로 (팝장르의 아티스트 이름을 참고해서) 노래제목(title)을 조회해주세요. 
SELECT title FROM songs WHERE artist IN (SELECT name FROM artists WHERE genre = "Pop");



CASE 

CASE를 활용해서 구간별로 조건문을 넣어 데이터를 어떻게 표시해서 보여줄지 컬럼을 추가할 수도 있습니다. 

 

SELECT name, number_grade,
    CASE
        WHEN number_grade > 90 THEN "A"
        WHEN number_grade > 80 THEN "B"
        WHEN number_grade > 70 THEN "C"
        ELSE "F"
    END as "letter_grade"
FROM student_grades;

 

 


 

데이터 변경하기 

UPDATE [테이블명] SET [바꿀 컬럼명] = [바꿀 내용]

 

예시 

UPDATE diary_logs SET content = "I had a horrible fight with OhNoesGuy" WHERE id = 1;

 


 

데이터 삭제하기 

DELETE FROM [테이블명] WHERE ID = [ID번호]

 

이 명령어 사용을 권장하지 않습니다.  대신 삭제 여부를 표기하는 컬럼을 추가하는 방법을 주로 사용ㅎ바니다. 

DELETE FROM diary_logs WHERE id = 1;

 

 


 

컬럼 추가하기 

(이미 서비스중인 앱에서) 컬럼을 추가하고 싶을때  다음과 같은 구문을 사용합니다. 

ALTER TABEL [테이블명] ADD [추가할 컬럼][데이터타입]

예시

ALTER TABLE clothes ADD price INTEGER ;