-- select : 테이블로부터 특정 레코드의 집합 반환 -> 결과 테이블(결과셋, 결과집합, ResultSet)
select * from titles;
-- select : 테이블 아닌 결과셋을 생성 가능
select '안녕' as [인사];
select 10;
select 10 + 20 as [합];
print '화면에 출력합니다';
-- select [top n] 컬럼리스트 from 테이블명 [order by절]
-- select [top n] 컬럼리스트 from 테이블명 [where절] [order by절]
-- where절
-- - 조건절
-- - 기존의 select결과셋에서 특정 조건을 달아 만족하는 값만 select
-- - 연산자 사용, SQL 함수 사용
-- - 좀 더 원하는 데이터만을 필터링해서 반환받기 위한 용도
-- PreAcademy
select * from 주소록;
insert into 주소록(이름, 주소, 나이) values ('홍길동', '서울시', 20);
insert into 주소록(이름, 주소, 나이) values ('가가가', '인천시', 22);
insert into 주소록(이름, 주소, 나이) values ('나나나', '서울시', 25);
insert into 주소록(이름, 주소, 나이) values ('다다다', '부산시', 28);
insert into 주소록(이름, 주소, 나이) values ('라라라', '광주시', 32);
-- where절 : 연산자 사용해서 조건
-- 나이가 25살보다 많은 사람의 이름? , 이상(>)
select * from 주소록;
select 이름 from 주소록 where 나이 > 25;
select * from 주소록 where 나이 = 20;
-- 서울시에 사는 사람?
select * from 주소록 where 주소 = '서울시';
-- 서울시이외 지역에 사는 사람?
select * from 주소록 where 주소 <> '서울시';
-- pubs
select * from titles;
-- 가격이 20불 이상 도서의 제목(title), 가격(price)?
select title, price from titles
where price >= 20;
-- 출간일이 1991년 8월 1일 이후에 발간 도서?
select title, pubdate from titles
where pubdate >= '1991-08-01';
-- business 카테고리에 속하는 책?
select [title], [type] from [titles]
where [type] = 'business';
-- 논리연산자(and, or)
-- 참 and 참 = 참
-- 참 and 거짓 = 거짓
-- 거짓 and 참 = 거짓
-- 거짓 and 거짓 = 거짓
-- 참 or 참 = 참
-- 참 or 거짓 = 참
-- 거짓 or 참 = 참
-- 거짓 or 거짓 = 거짓
select *
from 주소록;
-- 나이가 23세이상 30세 미만인 사람?
-- 23 <= 나이 <30 왼쪽부터 비교한다 23 과 나이를 비교 23과 나이의 결과 갑과 비교를 한다 참 과 30
-- 23 <= 나이 그리고 and 나이 < 30
-- 10 + 20 + 30
select *
from 주소록
where 나이 >= 25
and 주소 <> '서울시';
-- 서울과 인천에 사는 사람?
select *
from 주소록
where 주소 = '서울'
or 주소 = '부산시';
-- 범위 조건
-- between 절
-- 컬럼명 between 최소값 and 최대값
-- 컬럼값이 최소값-최대값 이내인 레코드를 검색
select *
from 주소록
where 나이 between '25' and '30';
select *
from titles
where price between '10' and '30';
--최대값과 최소값도 포함된다.
-- 출간일 1991-01-01 ~ 1999-12-31 이내의 도서
select title_id, title, price, pubdate
from titles
where pubdate between '1991-01-01' and '1991-12-31'
order by pubdate asc;
-- in
-- 컬럼명 in (값 리스트)
select *
from 주소록
where 주소 in('서울', '인천시');
-- like
-- 패턴조건
-- 특정한 패턴을 갖는 컬럼값을 필터링
-- ex) 홍길동, 김유신, 김문신, 김게똥, 하하하 : 김씨성?
-- 컬럼명 like 패턴
-- 1. _ : 1개의문자
-- 2. % : 0개 이상의 무자
-- 3. 문자열만 대상...
select *
from 주소록
where 주소 like '서%'
select *
from 주소록
where 주소 like '서__'
select *
from 주소록
where 주소 like '__시'
select *
from titles
where title like 'the%'
select *
from titles
where title like '%co%'
-- 책을 분류별로 순서대로 출력
-- 1차 정렬
select title, price, [type]
from titles
order by [type] asc;
-- 2차 정렬
select title, price, [type]
from titles
order by [type] asc, [price] desc;
-- 3차 정렬
select title, price, [type]
from titles
order by [type] asc, [price] desc, [title] desc;
select 주소 from 주소록;
-- 주소록에 있는 사람들이 어느 지역 사는지?
-- distinct
-- 결과셋에서 중복값을 제거하고 1개로 만드는 역활
select distinct 주소
from 주소록;
-- pubs
-- 도서들이 분류된 카테고리(type)가 어떤것들
select distinct [type]
from titles
select len(title) as [글자길이], title
from titles;--Length
-- 책제목이 긴 순서대로 출력
select LEN(title), title
from titles
order by title desc;
-- 추출함수
-- left, right, substring
select len('홍길동');
select left('홍길동', 1); --데이터의 왼쪽에서 1글자를 추출
select *
from 주소록
where 이름 like('홍%');
select *
from 주소록
where left(이름, 1) = '홍';
select distinct left(이름, 1) from 주소록;
-- right
-- 사람의 이름만 출력~(성빼고)
select right(이름, 2) from 주소록;
select 이름 as[전체이름], left(이름,1) as[성], right(이름, 2) as [이름] from 주소록;
-- substring
select title from titles;
select substring(title, 1, 3), title from titles;
select substring('841211-1214544', 1, 2) as [생년];
select substring('841211-1214544', 3, 2) as [생월];
select substring('841211-1214544', 5, 2) as [생일];
select substring('841211-1214544', 8, 1) as [성별];
insert into 주소록(이름, 주소, 나이) values ('홍미미', '인천시', 25);
insert into 주소록(이름, 주소, 나이) values ('김유신', '인천시', 22);
insert into 주소록(이름, 주소, 나이) values ('김길동', '인천시', 32);
insert into 주소록(이름, 주소, 나이) values ('홍인권', '인천시', 28);
insert into 주소록(이름, 주소, 나이) values ('하하하', '인천시', 29);
insert into 주소록(이름, 주소, 나이) values ('아이유', '인천시', 20);
insert into 주소록(이름, 주소, 나이) values ('원더걸스', '인천시', 24);