일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- res.status
- Axios delete
- mongoose create
- req.body
- 웹개발
- 파이썬
- mongoose populate
- mongoose update
- mongoose delete
- Axios post
- css 기초
- http
- Axios put
- res.set
- CSS
- express 프로젝트 시작하기
- await
- mongoose find
- 자바스크립트
- HTML
- req.queries
- 프론트엔드
- req.get
- res.render
- async
- req.params
- node.js란
- promise
- Axios get
- javascript
- Today
- Total
모스카토
sql로 데이터 다루기1 본문
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 |