2013년 8월 16일 금요일

SQL 기본 문법

* 강윤원님 블로그이미지(펌 :)

* create table 테이블명(
   컬럼명 자료형 not null,
   컬럼명 자료형,
   ....................,
);

- 테이블 및 테이블이 가질 자료형을 만든다 not null은 무조건 값이 입력되야하- - 는 컬럼에 붙여준다

* alter table 테이블명

- 테이블관련 내용 변경시 이용하는 명령어

* add primary key(컬럼명)
- 컬럼을 primary key로 지정한다

*insert into 테이블명(컬럼명, 컬럼명, 컬럼명....)
  values(값, 값, 값, 값...)

- 테이블의 컬럼에 값을 집어넣는다 컬럼명생략시 순서대로 값이 입력되고
- 필수 컬럼(not null선언)의 값은 무조건 입력되어야한다

* desc MEMBERS;
- 테이블내의 내용을 보여준다

* drop tablc 테이블명
- 테이블 삭제(테이블의 모든 데이터도 함께 삭제된다.)


select
    *
from
    MEMBERS;

MEMBERS테이블의 모든 내용을 찾아 보여주는 명령어

-----------------------------------------------------------------
where절이 붙을시 조건에 따라 검색할 수 있다

select
    *
from
where
컬럼명 연산자 값 and /or 컬럼명 연산자 값...

select
    *
from
where
    MNAME = '임꺽정'
        and PHONE = '111-1112';

select
    AGE
from
    MEMBERS
where
    MNAME = '일지매';

select
    *
from
    MEMBERS
where
    AGE > 30 or MNAME = '임꺽정';

select
    *
from
    MEMBERS
where
    AGE <> 40;
/*40이 아닐때만 select My SQL에서는 null이더라도 select되지않는다
is null로만 가능
*/

select
    *
from
    MEMBERS
where
    AGE >= 30;

문자에서의 대소 비교 연산자
문자에서도 대소비교가 가능하다
조심해야할점
이름의 부분으로 검색할 경우
당연히 그이름도 포함된다... 왜냐면 이름같은 문자는 숫자로 순서대로 저장
ex:) 일, 일지, 일지마 까지는 일지매 검색!
 일지매는 일지매와 같은 수이므로 이때부터 검색 안됨

select *
from MEMBERS
where MNAME > '일지';

select *
from MEMBERS
where REG_DATE > '2013-08-11';

select *
from MEMBERS
where REG_DATE >= '2013-08-12' and REG_DATE < '2013-08-15';



-------------------study----------------------


like절 
=은 동등비교이므로 성씨비교같은 각각의 동등에 대해 비교가 불가능하다 그래서 나온 개념으로 컬럼 like '성씨%'로 비교해주면 된다

%의 의미는 0자 이상...이라는 의미로 단어 앞 또는 뒤, 중간에 붙일 수 있으며 그 사이의 글자가 얼마나 될 지 모를 경우 또는 그 값을 포함한 모든 값을 찾고 싶을때 이용가능하다

select *
from MEMBERS
where MNAME like '임%'; -> 임으로 시작하는 모든 글자를 찾는다( '임' 포함)

select *
from MEMBERS
where MNAME like '%꺽정'; -> 뒤에 두글자가 ~꺽정인 모든 글자를 찾는다('꺽정' 포함)

select *
from MEMBERS
where MNAME like '%정%'; -> 중간사이의 글자가 정인 모든 글자를 찾는다('정' 포함)

_(언더바)의 의미 %와 비슷하지만 _(언더바)는 언더바의 갯수만큼의 글자만 찾는 것으로
'임_정'일 경우 앞글자는 임, 뒷글자는 정인 3글자 단어만 찾는다

select *
from MEMBERS
where MNAME like '임_정'; -> 앞글자는 임, 뒷글자는 정인 3글자 단어

컬럼명 between a and b ->
 x>= a and x<= b 이런 경우에 구하는 것

select *
from MEMBERS
where AGE >= 20 and AGE <=30;

select *
from MEMBERS
where AGE between 20 and 30;

컬럼명 in (값, 값, 값) -> 컬럼 값이 괄호안의 값과 같은 것만... 
from MEMBERS
where AGE in (20, 35, 40);

컬럼명 not in (값, 값,...)
select *
from MEMBERS
where AGE not in (20, 35, 40);

/* not */
select *
from MEMBERS
where not MNAME='임꺽정';

select *
from MEMBERS
where MNAME<>'임꺽정';


--------------------------study---------------


select *
from MEMBERS
where EMAIL='leem@test.com';

위와 같이 특정멤버를 찾을때는 primary key로 찾아야한다.



데이터 변경
  update 테이블명 set 컬럼명 = 값, 컬럼명= 값, ...
  where 조건을 집어넣으면 조건 생성
 primary key를 이용해서만 찾아서 바꿀 수 있다
(primary key로 지정된 컬럼 값은 못 바꾼다)

update MEMBERS set REG_DATE='2013-08-10'
where EMAIL='leem@test.com';

update MEMBERS set REG_DATE='2013-08-11'
where EMAIL='hong@test.com';

update MEMBERS set REG_DATE='2013-08-12'
where EMAIL='ill@test.com';

update MEMBERS set REG_DATE='2013-08-13'
where EMAIL='eee@eee.com';

update MEMBERS set
MNAME = '홍길동2',
PHONE = '112-1111',
BLOG = 'hong.blog.com',
AGE = 20,
REG_DATE = now()
where
EMAIL = 'hong@test.com';



-----------------------------------------------------------------


데이터 삭제
delete from 테이블명
where 조건


-----delete from MEMBERS이게 중요하다 이거만 쓰면 다 날아갈 수 있다---

SET SQL_SAFE_UPDATES = 0;
SET SQL_SAFE_UPDATES = 1;


------------------------------안전모드 해체 및 설정-----------------

delete from MEMBERS
where MNAME = '일지매';

select *
from MEMBERS;

delete from MEMBERS
where PHONE like '%2' or PHONE like '%3';

delete from MEMBERS;

select *
from MEMBERS;

delete from MEMBERS
where EMAIL = 'hong@test.com';


-----------------------------------------------------------------


댓글 없음:

댓글 쓰기