mysql 강좌 5

어제에 이어…

참고)
※ 파일로 데이터 베이스를 백업하는 방법
>mysqldump -u rhinoc -h localhost -p sawondb > c:sawondb2.sql


※ 파일로 데이터 베이스를 복구하는 방법
>mysql -u rhinoc -h localhost -p sawondb < c:sawondb.sql


4. 데이타 검색
형식)
select 특정데이타 from 테이블이름;
특정데이타 : 필드명,함수,계산식을 넣을 수 있다.


ex)
mysql> select * from person; =>person 테이블에 있는 저장된 모든 데이타 확인
mysql> select pno,pname,pay from person; 특정데이타(필드) 확인
mysql> select dno,dname from division;


※ 필드 alias => 필드의 별명을 부여
형식)
select 필드명 as 별명,…. from 테이블명;
as : 생략가능. alias의 약자


ex) person에서 pno=>사번,pname=>이름 하여 검색
mysql> select pno as 사번,pname 이름 from person;
20090108_02.jpg


ex) person에서 pno=>사원 번호,pname=>사원 이름 하여 검색
mysql> select pno ‘사원 번호’,pname ‘사원 이름’ from person;
20090108_03.jpg


distinct 사용
필드에 중복된 데이타는 제외하여 검색
필드 하나만 검색할 때 사용


ex) person에서 dno 필드의 데이타 중 중복된 데이타를 제거하고 검색
mysql> select dno from person;
mysql> select distinct dno from person; (사원 정보에서 dno의 종류 파악)
distinct dno : 하나 필드만 입력
primary key, unique 필드의 경우 중복된 데이타가 없으므로 사용할 의미가 없다.
20090108_04.jpg


※ mysql 연산자
산술연산자 : * / % + – ()
비교연산자 : > < >= <= = !=
논리연산자 : not and or
연산순서에 유의.


% : 나머지 연산자
!= : 같지 않다, <>
not : !
and : &&
or : ||


x>=10 && x<=30 (10보다 크고 30보다 작은 숫자)
x<=10 || x>=30 (10보다 작거나 30보다 큰 숫자)


산술연산자
ex) person에서 사원이름과 급여+300으로 검색
mysql> select pname,pay+300 from person;


문제) person에서 사원번호,사원이름,연봉을 검색하되 연봉필드는 year pay로 출력
mysql> select pno,pname,pay*12 ‘year pay’ from person;
20090108_05.jpg

※ null 처리
ifnull 함수
형식)
ifnull(필드,변경데이타)
=> 필드의 데이타가 null인 경우 변경데이타로 변환시켜주는 함수
=> 필드의 자료형과 동일한 형태로 변경데이타 사용할 것.
int 형이면 숫자로, date형이면 날짜형태로.


ex) person에서 이름,급여,보너스 검색
mysql> select pname,pay,bonus from person;


ex) person에서 이름,급여+보너스 검색
mysql> select pname,pay+bonus from person;  null 데이터가 있는 필드연산은 null 값이 출력되는 문제가 발생한다.


==> 수정


mysql> select pname,pay+ifnull(bonus,0) as total from person;
20090108_06.jpg


◆ 조건절(where 절)
ex) person에서 사원번호가 1113인 사원의 이름,급여 검식
mysql> select pname,pay from person where pno=1113;


ex) person에서 사원이름이 smith의 사원의 사원번호,이름,급여 검색
mysql> select pno,pname,pay from person where pname=’smith’;


ex) 입사일 2002년 2월 24일인 사원의 모든 데이타 검색
mysql> select * from person where startdate=’2002-02-24′;


ex) person에서 job이  salesman인 사원의 모든 데이타 검색
mysql> select * from person where job=’salesman’;


ex) persom에서 부서코드가 10인 사원의 사번,이름,급여 검색
mysql> select pno,pname,pay from person where dno=10;


ex) person에서 급여가 3000 이상인 사원의 이름과 급여 검색
mysql> select pname,pay from person where pay>=3000;


ex) person에서 업무가 salesman이 아닌 사원의 모든 데이타 검색
mysql> select * from person where job!=’salesman’;
mysql> select * from person where job<>=’salesman’;


ex) person에서 연봉이 30000 이상인 사원의 이름과 연봉을 검색
mysql> select pname,pay*12 from person where pay*12>=30000;


ex) person에서 업무가 salesman이고 급여가 1500 이상인 사원의 이름,급여,업무 검색
mysql> select pname,pay,job from person where job=’salesman’ && pay>=1500;
mysql> select pname,pay,job from person where job=’salesman’ and pay>=1500;
20090108_07.jpg


ex) person에서 업무가 manager이거나 급여가 6000 이상인 사원의 이름과 급여 검색
mysql> select pname,pay from person where job=’manager’ or pay>=6000;
mysql> select pname,pay from person where job=’manager’ || pay>=6000;

ex) person에서 업무가 manager 또는 salesman 중 급여가 1500이하인 사원의 이름,업무,급여 검색
mysql> select pname,job,pay from person where (job=’manager’ or job=’salesman’) and  pay<=1500;


기타연산자
1. 필드명 between 값1 and 값2 =>필드의 데이타가 값1부터 값2 번위 검색
주의 : 값1이 값2보다 작아야 한다.


ex)급여가 1000부터 3000인 사원의 이름과 급여를 검색
mysql> select pname,pay from person where pay between 1000 and 3000;
mysql> select pname,pay from person where pay>=1000 and pay<=3000;
20090108_08.jpg

2. 필드명 in (값,값,…) => 필드의 데이타가 값들 중 하나인지 검색
ex) person에서 사번이 1113,1116,1123인 사원의 사번과 이름 검색
mysql> select pno,pname from person where pno in(1113,1116,1123);


3. 필드명 like 값 또는 검색기호 =>검색기호를 이용한 검색을 할 때
※ 검색기호        % : 전체 
                              _ : 한 문자


ex)사원의 이름이 s로 시작되는 사원의 사번,이름 검색한다.
mysql> select pno,pname from person where pname like ‘s%’;


ex) 사원의 이름이 s로 끝나는 사원의 사번,이름 검색
mysql> select pno,pname from person where pname like ‘%s’;


ex) 사원의 이름이 두번째 글자가 a인 사원의 사번,이름 검색
mysql> select pno,pname from person where pname like ‘_a%’;


ex) 사원의 이름에 o가 두번 들어가는 사원의 사번,이름 검색
mysql> select pno,pname from person where pname like ‘%o%o%’;


4. 필드명 is null  또는 is not null =>null을 비교하기 위해 검색
ex)보너스가 null이 아닌사원의 이름,급여,보너스 검색
mysql> select pname,pay,bonus from person where bonus is not null;


ex) 매니저가 null인 사원의 사번,이름 검색
mysql> select pno,pname from person where manager is null;

Loading

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다