모스카토

sql로 데이터 다루기1 본문

엘리스 ai트랙

sql로 데이터 다루기1

라리라밤 2022. 2. 8. 13:06

1. sql 시작하기

sql = structured query language

db 조작, 접근 표준언어

-> 관계형 db에서 사용.

  • 관계형 db : 하나 이상의 테이블과 서로 연결된 data를 가짐.
  • 컬럼 : 첫번째 행의 요소들. 각 열의 값
  • 레코드 : 주제의 내용, 값, 각 행.

모든 테이블은 고유의 이름으로 구분한다.

 desc  테이블명. : 테이블 구조 보는 코드.

 

1. 테이블에서 데이터 가져오기.

* SELECT : 검색, 필터 

SELECT 컬럼

FROM 테이블;

* DISTINCT : 컬럼의 중복제거

distinct 뒤에 한 컬럼만 쓰면 값이 중복되는 것만 제거, 두 컬럼을 쓰면 두 컬럼의 값이 모두 같은 것만 제거.

SELECT DISTINCT title, author
FROM book;

* from : ~로 부터 불러오기

FROM 테이블.

* where : 데이터(레코드)의 조건을 설정.

book 테이블의 모든 컬럼에서 title이 돈키호테인 것을 찾아라.

SELECT * FROM book WHERE title = '돈키호테';

 

2. 여러개의 조건으로 검색하기

AND, &&

OR, ||

NOT, !

BETWEEN 10 AND 20 : 10, 20 포함. 

IN : A IN B => B에 A가 포함된 값.

NOT IN 

등호, 부등호

 


2. 데이터를 제어하는 DML

[ like ]

select * from books where title like '왕자';   // 왕자가 포함된 데이터 찾기

select * from books where title like '%왕자';   // 왕자로 끝나는 데이터 찾기

select * from books where title like '왕자%';   // 왕자로 시작하는 데이터 찾기

select * from books where title like '%왕자%';   // 왕자가 들어가는 데이터 찾기

 

[ order by ]

select * from score order by math;

asc : 오름차순, 작은것부터

desc ; 내림차순.

 

[ insert into ]

insert into book (id, title, author, publisher) values('3', '햄릿', 'william shakespear', 'elice');

컬럼과 값이 1:1로 대칭

컬럼을 명시하지 않으면 values에 준 값을 순서대로 삽입.

 

[ update ]

-> 이미 저장된 정보를 변경.

update book set title = '돈키호테 1' where title = '돈키호테';

set 컬럼명 + 변경할값, where 컬럼명 + 기존 데이터

 

[ delete ]

delete from book where title = '돈키호테1';

where 로 조건을 주지 않으면 테이블 전체 삭제.

 


3. sql 과 함수 <- 괄호와 같이

[ count ]

select count(id) from book;

count() 괄호 안에 데이터의 수를 셀 컬럼을 준다.

[ limit ]

select * from book limit 5;     1번째 컬럼부터 5개 가져오기

select * from book limit 1, 5;     2번째 컬럼부터 5개 가져오기

[ avg ]

select avg(korean), avg(english), avg(math) from grade;        korean, english, math 컬럼 각각의 평균값.

[ sum ]

select sum(math) from grade;       math컬럼의 데이터들 합계

sum() 괄호 안에 데이터를 합할 컬럼을 준다.

[ max ]

select max(math) from grade;      math컬럼의 데이터 중 최댓값

문자형, 숫자형 모두 가능.

[ min ]

select min(english) from grade;       english 컬럼의 데이터 중 최솟값

 


4. 다수의 테이블 제어하기

[ group by ]

group by 컬럼 : 컬럼의 값이 같은 행끼리 묶어서 count, sum, avg, max, min등 원하는 데이터의 값을 보여준다.

select user_id, count(*) from rental group by user_id;       user_id 와 전체 아이템 갯수를 rental 테이블에서 선택해 user_id가 같은 열에서 선택.

 

[ having ]   - group by와 짝꿍.

 select user_id, count(*)     user_id 와 count(*)을 표시.

from rental                   rental 테이블에서
 
group by user_id              user_id가 같은 것끼리 묶기

having count(user_id) > 1;    count(user_id) > 1 을 만족하는 것만.

 

 

[ join ]

[inner join] : 두개의 테이블을 연결할 수 있다.

select * from rental inner join user;    user테이블과 rental 테이블을 연결

select * from rental inner join user on user.id = rental.user_id;          테이블.컬럼으로 점으로 연결

[left join] : 왼쪽 테이블이 기준 모두 출력하고, 중복되지 않는 데이터는 null처리한다. 

select * from rental left join user on user.id = rental.user_id; 

[right join] : 오른쪽 테이블이 기준.

select * from rental right join user on user.id = rental.user_id;        user 테이블을 기준으로 join.

 


5. 서브쿼리

: 하나의 쿼리 안에 포함된 또 하나의 쿼리.

① 서브쿼리 -> 메인쿼리 순으로 실행된다.

② 한문장에서 여러번 사용가능하다.

③ 괄호와 함께 사용해야 한다.

④ 서브쿼리에서는 order by 는 사용할 수 없다.

⑤ 연산자의 오른쪽에 사용되어야 한다.

⑥ 오직 select 로만 사용가능하다.

select * 
from employee 
where salary > (
	select salary 
    from employee 
    where name = 'elice'
);

 


6. DDL ( Database Definition language )

데이터베이스를 정의하는 언어, 데이터베이스를 생성, 수정, 삭제 할 때 사용하는 언어.

1. create

create database 'student' {
	'name' varchar(20),
    'number' int
}

[ use ] : 생성한 db를 사용하기 전에 use를 해줘야 한다.

[ show ] : 현재 db, 테이블을 보여준다.

 

2. alter

alter table '테이블 명' add column '추가할 컬럼명' '속성값';

alter table '테이블 명' drop column '삭제할 컬럼명';

alter table '테이블 명' modify column '변경할 컬럼명' '속성값';

alter table '테이블 명' change column '변경할 컬럼명' '새로운 컬럼명' '속성값';   // 컬럼명도 변경.

alter table '테이블 명' rename  '새로운 테이블 명';

 

3. drop

drop database 'db 명';

drop table '테이블 명';

'엘리스 ai트랙' 카테고리의 다른 글

async / await 와 API  (0) 2022.02.10
[JavaScript 이론] 비동기통신과 Promise  (0) 2022.02.09
리눅스 기초 1  (0) 2022.01.26
객체와 DOM과 이벤트  (0) 2022.01.25
자바스크립트 유용한 함수들  (0) 2022.01.21
Comments