STUDY_SEONMIN
DAY32 - SQL 연습( 데이터 추가 및 조회 ) 본문
1. 데이터 추가하기(INSERT INTO VALUES)
데이터베이스에 있는 특정 테이블에 데이터를 추가하고자 할 때는
INSERT INTO table_name (column1, column2, ..)
VALUES (~,~,...)
(~,~,...)
(~,~,...)
(~,~,...)
.
.
.
위와 같은 형식으로 SQL문을 입력해 데이터를 추가할 수 있습니다.
이렇게 practice 데이터베이스 안의 User라는 테이블에 아무런 데이터가 없는 상황인데 데이터를 추가해보겠습니다.
INSERT INTO User(user_id, name, email, age)
VALUES (1, 'james', 'james@gmail.com', 25),
(2, 'amy', 'amy@naver.com', 27),
(3, 'tom', 'tom@daum.net', 29),
(4, 'robert', 'robert@gmail.com', 21),
(5, 'jun', 'jun@naver.com', 35),
(6, 'jane', 'jane@daum.net', 33)
쿼리를 실행시키면 이렇게 테이블에 데이터가 추가됩니다.
2. 데이터 조회하기(SELECT FROM)
feat. DISTINCT, WHERE, ORDER BY
SELECT column1, column2, ...
FROM table_name
먼저 User 테이블에 있는 데이터를 모두 가져와보겠습니다.
SELECT *
FROM User
특정 컬럼의 데이터들만 보고 싶을 때는 * 자리에 컬럼명을 적어주시면 됩니다.
SELECT user_id, name
FROM User
데이터를 조회할 때는 원래의 컬럼명이 아니라 별명을 붙여서 조회가 되게도 할 수 있습니다.
SELECT column1 as ~, column2 as ~ ..
FROM table_name
user_id 컬럼을 id라는 이름으로 불러와 보겠습니다.
SELECT user_id AS id, name
FROM User
그리고 만약 중복된 데이터들은 하나만 조회가 되게끔 하고 싶다면 DISTINCT 를 사용할 수 있습니다.
SELECT DISTINCT(column)
FROM table_name
현재 User테이블에는 중복데이터가 없으니 먼저 이름이 중복되게 데이터를 하나 추가해보겠습니다.
INSERT INTO User (user_id, name, email, age)
VALUES (7, 'jane', 'jane@gmail.com', 23)
여기서 그냥 이름 데이터를 조회하면 7개의 이름이 나오겠지만 DISTINCT를 사용해주면 중복된 데이터는 1개만 나오므로 6개의 이름이 나오게 됩니다.
SELECT DISTINCT(name)
FROM User
데이터를 조회할 때는 특정 조건에 맞는 데이터들만 가져올 수도 있습니다.
이 때는 WHERE를 사용합니다.
SELECT column1, ...
FROM table_name
WHERE constraint1 and/or constraint2 ~
User테이블에서 30대인 사람들의 데이터만 가져와보겠습니다.
SELECT *
FROM User
WHERE age >= 30
조건이 여러 개일 때는 and 나 or 를 사용해서 여러 조건을 원하는대로 사용할 수 있습니다.
한 번 20대이면서 gmail을 사용하는 사람들의 데이터를 조회해보겠습니다.
SELECT *
FROM User
WHERE age >= 20 and age < 30 and email LIKE '%@gmail%'
20대라는 것은 20이상 30미만을 뜻하기 때문에 age >= 20 and age <30 이라는 조건을 걸어주었고,
gmail을 사용하는 사람을 조회하기 위해서 추가로 email LIKE '%@gmail%' 조건을 넣어주었습니다.
LIKE는 문자 데이터를 다룰 때 사용하게 되는데 어떤 문자열과 형식이 같다는 의미입니다. 현재 여기서는 '%@gmail%'과 형식이 같은 데이터를 조회하는 것인데 '%'는 0개 이상의 문자들을 뜻하므로 email 컬럼의 데이터가 '~@gmail~'인 데이터들만 가져오는 것입니다.
다음으로는 데이터를 가져올 때 어떤 순서대로 정렬해서 보고싶을 때 사용할 수 있는 'ORDER BY'입니다.
SELECT ~
FROM table_name
ORDER BY column1, column2, ~
여러 개의 컬럼으로 정렬을 할 경우에는 1번 컬럼을 기준으로 정렬 후, 1번 컬럼의 밸류가 같은 로우들끼리는 2번 컬럼을 기준으로 정렬하는 것입니다.
기본적으로 오름차순 정렬이며 개별 컬럼에 대해서 오름차순(ASC), 내림차순(DESC) 정렬을 선택할 수 있습니다.
한 번 데이터를 조회할 때 나이순으로 오름차순 정렬해보겠습니다.
SELECT *
FROM User
ORDER BY age
만약 이름순으로 정렬하면 어떻게 될까요?
SELECT *
FROM User
ORDER BY name
이름순으로 정렬하였더니 jane이 2명인 상황이 발생했습니다.
나이순 정렬을 추가해서 젊은 jane이 위에 오도록 해보겠습니다.
SELECT *
FROM User
ORDER BY name, age
데이터를 조회할 때 위에서 이야기한 DISTINCT, WHERE, ORDER BY는 모두 동시에 사용할 수 있습니다.
다만 WHERE와 ORDER BY는 아래의 순서로 사용해주셔야 합니다.
SELECT DISTINCT(column)
FROM table_name
WHERE ~
ORDER BY column~
'EDUCATION > DSS Online 6기' 카테고리의 다른 글
DAY33 - SQL연습(데이터 수정 및 삭제, UPDATE, DELETE) (0) | 2021.03.04 |
---|---|
DAY33 - SQL연습(CONCAT, LIKE, IN, LIMIT) (0) | 2021.03.04 |
DAY32 - SQL 연습(DB와 TABLE다루기) (0) | 2021.03.03 |
DAY32 - DB (0) | 2021.03.03 |
DAY31 - Mysql 설치 및 설정 (0) | 2021.03.03 |