daily-story

SQL> 테이블만들기, 수정, 삭제

테이블 만들기
ceate table address    -- create table 테이블명
(
ID    varchar(20)    not null,    -- ID (컬럼명, 데이터형, null허용여부)
Name    varchar(20)    not null,    -- 이름
Email    varchar(200)    null,    -- 이메일
Age    int    not null,    -- 나이
BirthDay    datetime    not null    -- 생일
)


컬럼 추가하기
alter table address    -- alter table 테이블명
add sex char(1)    -- add 컬럼명 데이터형

컬럼 삭제하기
alter table address    -- alter table 테이블명
drop column sex    -- drop column 컬럼명

컬럼 데이터형 변경하기
alter table address    -- alter table 테이블명
alter column ID varchar(30)    -- alter column 컬럼명 데이터형


데이터 추가하기(insert)
; 쿼리문을 실행하려면 항상 해당 데이터베이스에서 실행을 해야한다.
; use 데이터베이스이름 을 실행하게 되면 그 데이터베이스를 사용한다는 것.
; 실제 테이블의 데이터가 변경되므로 항상 주의를 기울여야한다.

insert문
insert into 테이블이름 (컬럼1, 컬럼2, ... ) values (값1, 값2, ... )
    -- into 생략가능
; insert 문을 사용하고 테이블 이름을 지정해준 후에 컬럼들과 그에 해당되는 값들을 지정해주는것.
; 문자열, 날짜 등의 데이터형은 앞뒤에 작은따옴표('')로 감싸 주어야한다.

컬럼을 지정하지 않고 insert문 사용
insert address values('값1', '값2', '값3', 값4, '값5')
; 컬럼을 생략하면 사용하기는 간편하지만 테이블의 컬럼을 추가, 삭제 또는 변경했을 경우에 오류를 발생할수있는 원인을 제공하기도 한다.

컬럼을 지정하고 insert문을 사용
; 특정 테이블에만 데이터가 들어가는 경우 사용
; 데이터를 넣지 않는 칼럼은 null이 허용되거나 디폴트 값이 지정되어 있어야 한다.
; 컬럼과 데이터의 갯수가 같아야하며, 데이터형도 같아야한다.
insert address (ID, Name, Email, Age, BrithDay)    -- insert address (컬럼1, 컬럼2, ... )
values ('값1', '값2', '값3', 값4, '값5')    -- values (값1, 값2, ... )
* null의 의미 ; null은 ''와 같이 비어 있는 문자열과는 다른것. 아무것도 없는 상태


데이터 가져오기(select) - 데이터 검색
select 컬럼1, 컬럼2, ...    -- 검색할 컬럼지정
from 테이블이름    -- 검색할 테이블 지정
where 검색조건    -- 검색할 테이블의 조건절을 지정
order by 결과정렬    -- 검색한 결과를 정렬

테이블의 모든데이터 가져오기(select *)
select * from address    -- select * from 테이블이름
;ADO.NET에서의 쿼리문으로는 비추!

컬럼을 지정해서 데이터 가져오기
select ID, Name, Email
from address    -- address테이블에서 ID, Name, Email 컬럼의 데이터를 가져온다.
; 사용할 컬럼만을 지정해서 데이터를 불러오는 것이 속도와 응용프로그램 개발시 편의면에서 좋다.

특정 데이터 가져오기(where)
; 실무에서 가장 많이 사용
; 컬럼값을 연산자나 함수 등을 이용해서 원하는 데이터만 가져온다.
; 데이터를 추가, 수정 또는 삭제할 때에서 사용되는 부분이므로 정확히 알고 있어야 한다.

- 비교연산자
= 같다,  < 작다,  >크다,  >= 크거나같다,  <작거나같다,  <>같지 않다,  != 같지 않다,  !> 크지 않다,  !< 작지 않다
; 비교되는 데이터형은 같거나 서로 호환이 가능해야 한다.

-- ID가 cuteguy인 데이터의 ID와 Name을 가져온다.
select ID, Name
from address
where ID = 'cuteguy'   

 -- ID가 cuteguy인 데이터를 제외하고 가져온다.
select ID, Name
from address
where ID <> 'cuteguy'   

-- Name이 'ㄱ'보다 크고 'ㄴ'보다 작은 데이터, 즉, 'ㄱ'으로 시작하는 데이터 불러오기.
select ID, Name
from address
where Name >'ㄱ' and Name <'ㄴ'

- 범위 연산자(between)
; 'between A and B' A와 B 사이의 값을 검색하는것(A보다는 크고 B보다는 작은 값을 가지는 데이터)
; 숫자, 문자, 날짜 등의 데이터형에서 아주 유용하게 사용

-- between을 사용해서 Name이 'ㄱ'보다 크고 'ㄴ'보다 작은 데이터 불러오기
select ID, Name
from Address
where Name between 'ㄱ' and 'ㄴ'

- 특정 문자열 찾기(like)
; %<-와일드카드!
; 뒤에만 '%'를 넣었을 경우 방으로 시작하는 데이터를 검색
; 앞에만 넣으면 방으로 끝나는 데이터 검색

-- Name 에 '방'이라는 문자가 들어있는 데이터 불러오기
select ID, Name, Email
from address
where Name like '%방%'

-- Name 에 '방'이라는 문자가 들어있지 않은 데이터 불러오기
select ID, Name, Email
from address
where Name not Like '%방%'

- 논리 연산자(and, or, not)
; 우선순위 --> 괄호로 묶인것 > not > and > or
; 연산자 우선 순위에 따라 결과가 다르게 나타날 수 있으므로 주의해서 사용

-- 연산자 우선 순위1 ;Age가 30이 아니거나 ID가 'guy'로 끝나고 Name이 '개'로 끝나는 데이터 찾기
select ID, Name
from address
where not Age = 30 or ID like '%guy%' and Name like '%개'
결과 cuteguy(ID) 깜찍이(Name)

-- 연산자 우선 순위2 (괄호를 사용한 경우)
select ID, Name, Age
from address
where (not Age = 30 or ID like '%guy') and Name like '%개'
결과값 없음

- 데이터 정렬하기(order by)
-- Name을 기준으로 데이터를 정렬해서 불러오기
select ID, Name, Email
from address
order by Name asc    -- desc키워드는 역순으로 출력

데이터 수정하기(update)
; 지정한 테이블의 조건을 만족하는 레코드의 컬럼을 지정한 값으로 수정
; where조건절을 사용하지 않을경우 테이블에 있는 모든 데이터가 변경된다. 조심~!
; select문을 사용해서 수정을 원하는 데이터들이 정확히 나왔을때 where문을 그대로 사용하는 것도 좋은 방법이다.

update 테이블이름
set 컬럼이름1 = 값1, 컬럼이름2 = 값2, ...
where 조건절

데이터 삭제하기(delete)

delete from 테이블이름
where 조건절

-- name에 '개'가 들어가는 레코드를 삭제합니다.
delete address
where name like '%개%'

카테고리의 다른 글

댓글 0