본문 바로가기

I T./MS SQL Server 2005

SQL server 2005(4) -데이터검색1

use testDB
go
select 고객정보.userID, UserName, Age FROM 고객정보, 회사정보

 

from 절에 두개의 테이블 이름을 사용하여 두 테이블로부터 검색하는 예

select*from 고객정보
select*from 회사정보

select A.userID,username,age,company,pay from 고객정보 A,  회사정보 B
where A.userID = B.userID
 
select userid, username, age from 고객정보 where age<=20
select*from 고객정보 where username='박종원'

select*from 고객정보 where username='박종원'
select*from 고객정보 where username='박종원'
select*from 고객정보 where username='박종원'+space(1)

 

select*from 고객정보 where  age>=20 and age<=25
select*from 고객정보 where age between 20 and 25

select*from 고객정보 where age<=20 or age>=25
select*from 고객정보 where age not between 20 and 25

고객정보 테이블에서 등록일자가 2000년 1월인 행을 검색하는 예
select*from 고객정보 where regdate between '2000-01-01' and '2000-01-31'

전반기 입사한 예
select*from 고객정보 where regdate between '2000-01-01' and '2000-06-30'

select*from 고객정보 where job = '건설업' or job = '자영업' or job = '회사원' or job = '교직자'
order by job
=
select*from 고객정보 where job in('건설업', '자영업', '회사원', '교직자')
order by job

select*from 고객정보 where job not in('건설업', '자영업', '회사원', '교직자')
order by job

 

직업이 교직자 이면서 주소가 서울 특별시인 고객의 회사 정보 데이터 검색
select*from 고객정보 where job='교직자' and addr1='서울특별시'
select*from 회사정보 where userid in('kl7551','bm3050','im2229','ar3491')
->
select*from 회사정보 where userid in(select userid from 고객정보 where job='교직자' and addr1='서울특별시')

 

와일드 카드 문자를 사용하여 검색하는 예
1. 고객정보 테이블에서 유져아이디 값이 a로 시작하는 모든 행을 검색하는 예

select*from 고객정보 where userid like 'a%'
select*from 고객정보 where username like '김%'
select*from 고객정보 where userid like 'ar%'
select*from 고객정보 where userid like 'ar__20'
select*from 고객정보 where userid like '[a-c]%'
select*from 고객정보 where userid like 'a[^c]%'
select*from 고객정보 where userid like '%234'
select*from 고객정보 where addr1 like '%광%' order by addr1
select*from 고객정보 where addr1 like '%도%' order by addr1
select*from 고객정보 where addr1 like '%시%' order by addr1

select*from 고객정보 where userid not like '%234'
or또는
select*from 고객정보 where not userid like '%234'

전화 번호에서 null인 행을 찾는 예 ('=' 사용 안된다. -> is)
select*from 고객정보 where tel is null
select*from 고객정보 where tel is not null

연산자의 우선 순위에 따라 결과가 다르게 나타날 수 있기 때문에 where 절에 많은 조건식이 사용된다면
괄호를 사용하여 연산 순위를 명확히 하는 것이 바람직 하다.
select*from 고객정보 where addr1 ='경기도' or  age>=50 and job='회사원' order by age desc
select*from 고객정보 where (addr1 ='경기도' or  age>=50) and job='회사원' order by age desc  -> and 연산자가 먼저 실행된다.
select*from 고객정보 where addr1 ='경기도' or  (age>=50 and job='회사원') order by job

 


select job from 고객정보
select distinct job from 고객정보  -> 직업들을 대표로 하나씩만 보여 주는 형식..distinct


select*from 고객정보 order by age
select*from 고객정보 order by age desc
select top(7)*from 고객정보 order by age desc
select top 7*from 고객정보 order by age desc
select top(7) with ties* from 고객정보 order by age desc
select top(10) percent* from 고객정보 order by age desc


set rowcount 을 실행할 경우 지정된 행의 수만큼 표시되는 행을 제한한다.

set rowcount 5
select*from 고객정보 order by age desc

set row... 구문을 풀어 주기 위해선 set rowcount 값을 0으로 주면 된다.
set rowcount 0
select*from 고객정보 order by age desc

select*from 고객정보 order by username desc
select*from 고객정보 order by 2 desc   <-2는 2번째 컬럼....

select*from 고객정보 where addr1='서울특별시' order by username desc

order by... 절에 수식을 사용할 수 있다.
select productid, productname, price, (price * 0.8) as 판매금액 from 제품정보 order by 판매금액

select productid, productname, price, (price * 0.8) as 판매금액 from 제품정보 order by (price * 0.8)


select userid, username, addr1, addr2, addr3 from 고객정보 order by addr1, addr2, addr3


use testdb

 

use master
drop database mydb01

create database mydb11

use mydb11

create table mytable00
(
  ID  varchar(10)  NOT NULL,
  Name   varchar(10)  NULL,
  Addr varchar(50)  NULL,
)

exec sp_help mytable00

drop table mytable00

create table mytable00
(
  ID  int  identity(1,1),
  Name  char(10)  NULL,
  Addr char(50)  NULL,
  age int default 0
)

alter table mytable00
add constraint ck_mytable00_age check(age>=0)
나이를 0이하로 주게 되면 에러가 뜨며 실행이 되지 않는다.

sp_help mytable00

insert mytable00 values('박현영','경기도 이천시 구리시',30)
select*from mytable00

use testdb
go

검색된결과(testdb)를 mydb11의 mytable00의 항목에 추가하는예
insert mydb11..mytable00
select username, addr1, age from testdb..고객정보 where job='의료인'
select*from mydb11..mytable00


create procedure proc11
as
  select username, addr1, age from 고객정보 where job='법조인'

 

create view view11
as
  select username, addr1, age from 고객정보 where job='법조인'

 

select*from view11
exec proc11

 

insert mydb11..mytable00
exec testdb..proc11
select*from mydb11..mytable00

 

drop procedure proc11
drop view view11

cd로 부터 복사한 엑셀 파일이 경로 c에
다음은 엑셀 파일에 저장된 데이터를 검색하는 예
Select USERID,USERNAME
From OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="C:\ExcelDB.xls";User ID=Admin;password=;
Extended properties=Excel 5.0')...엑셀고객

 


sp_helpDB

'I T. > MS SQL Server 2005' 카테고리의 다른 글

SQL Select 문제  (0) 2009.12.09
SQL server(6) 제약조건  (0) 2009.12.09
SQL server 2005(5) - 데이터 검색2  (0) 2009.12.09
SQL server 2003 (4) - create table  (0) 2009.12.09
SQL server 2005 (3) 데이터베이스  (0) 2009.12.09
SQL server 2003 (2) 계정생성  (0) 2009.12.09