본문 바로가기

   
Programming/MS - SQL

MS-SQL select, substring, left, right, distinct, len

반응형
C#과 데이터베이스 연동시에는 as로 이름을 준값대로 c#에서도 같은 이름으로 접근 및 지정해야한다.

-- pubs

-- 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);



반응형