강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

제약조건(1)
작성자 : M 최고의하루
등록날짜 : 2008.12.20 08:22
3,775

◈ 로컬디스크(C)에 msdata, mslog폴더를 생성한다

 

Constraint(제약조건) 종류
    1. Primary Key 제약조건
    2. Unique Key 제약조건
    3. Foreign Key 제약조건
    4. Check 제약조건
    5. Default 제약조건
    6. Rule 제약조건

 

********************************************************************************

use master
go

 

create database sawondb  -- sawondb라는 데이터베이스 생성
on
(name = 'sawondb_data'
,filename = 'c:msdatasawondb_data.mdf'
,size = 10mb
,maxsize = 30mb
,filegrowth = 10%
)
log on
(name = 'sawondb_log'
,filename =' c:mslogsawondb_log.ldf'
,maxsize = 10mb
,filegrowth = 10%
)
go

2000765716_aa220dc6_1.jpg


 

use sawondb
go

 

create table dept   -- dept테이블 생성
(deptno tinyint primary key  -- column level의 제약조건
);

2000765716_322a97ed_2.jpg

-- insert into dept values(null);  -- not null이여야 하기 때문에 삽입 불가능

2000765716_61394b01_3.jpg

insert into dept values(10);  -- 삽입 가능 
-- insert into dept values(10);  --고유한 값이여야 하기 때문에 삽입 불가능

2000765716_7ae52f11_4.jpg
insert into
dept values(20);

 

select * from dept;

2000765716_53d72266_5.jpg

▶ dept 테이블에 존재하는 제약조건을 조회
sp_helpconstraint dept;   -- 제약조건 이름을 알아야 유지보수할 수 있다

2000765716_2031725f_6.jpg

drop table dept;   -- dept 테이블을 제거

 

create table dept
(deptno tinyint
,dname varchar(10) not null
,addr varchar(30)   -- null : 아무것도 안쓰면 null값을 허락한다
,jitel varchar(3)
,kuktel varchar(4)
,tel varchar(4)
,constraint dept_deptno_pk primary key(deptno)   -- Table level 제약조건
);

 

insert into dept values (10, '총무부', '서울', '02', '418', '9004');
insert into dept values (20, '생산부', '부산', '051', '777', '8888');
insert into dept values (30, '영업부', '인천', '032', '888', '9999');
insert into dept values (40, '관리부', '광주', '062', '333', '2222');

insert into dept values (50, '''전산부''', '대전', '042', '555', '7777');

        -- 데이터에 '를 넣어주려면 '' ''하면 된다

 

select * from dept;

2000765716_933f1a50_7.jpg

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

유니코드 데이터 정렬

create table unicodetbl
(korname nvarchar(10) collate Korean_Wansung_CI_AS
,engname varchar(20)
,chaname nvarchar(10) collate Chinese_PRC_CI_AS
,jpname nvarchar(10) collate Japanese_CI_AS
);        -- nvarchar(10)에서 n은 유니코드 데이터를 받아주겠다는 의미이고,  10은 글자수를 의미한다

 

insert into unicodetbl values('컴퓨터', 'computer', '计算机', 'コンピュ-タ-' );

insert into unicodetbl values('책상', 'desk', '书几', 'つくえ' );

insert into unicodetbl values('얼굴', 'face', '面', 'かお' );

 

select *
from unicodetbl
order by jpname collate Japanese_CI_AS;

2000765716_fe293850_8.jpg

select *
from unicodetbl
order by jpname collate Japanese_CI_AS desc;

2000765716_6def73ad_9.jpg

▶ 일본어로 되어진 데이터베이스를 한국어로 다시 만드는 방법
alter database japandb
collate Korean_Wansung_CI_AS  --> 데이터정렬

 

SQL 서버 서비스 다시 시작하고  --sql구성관리자

2000765716_c6b98842_10.jpg

개체탐색기에서
japandb 의 옵션에서 Korean_Wansung_CI_AS 로 변경하면 된다

2000765716_187d0e00_11.jpg
----------------------------------------------------------------------------------------------------------------------------------------

 

1)

create table emp
(empno smallint   --2byte  (cpu가 32bit 일때 int는 4byte)
,ename varchar(10) not null
,jubun varchar(14) not null
,constraint emp_empno_pk primary key(empno)
,constraint emp_jubun_uq unique(jubun)
);

 

insert into emp values(1001, '최성우', '801010-1234567');  --삽입 가능
insert into emp values(1002, '한희영', '831010-x34567'); 

                       -- 일반적으로 삽입 불가능이지만 varchar이기때문에 삽입 가능

 

select *
from emp;

2000765716_e79e7268_12.jpg

drop table emp;

 

2)

create table emp
(empno smallint 

,ename varchar(10) not null
,jubun varchar(14) not null
,constraint emp_empno_pk primary key(empno)
,constraint emp_jubun_uq unique(jubun)
,constraint emp_jubun_ck check(jubun like '[0-9][0-9][0-9][0-9][0-9][0-9]-[1-4][0-9][0-9][0-9][0-9][0-9][0-9]')   -- varchar타입인 문자이지만 숫자로 되어진 것만 삽입되어야 한다
);                    -- check()는 ()안의 조건을 만족해야만 삽입이 가능하다

 

insert into emp values(1001, '최성우', '801010-1234567');  --삽입 가능
insert into emp values(1002, '한희영', '831010-x34567'); 

2000765716_7acd57cc_13.jpg

drop table emp;

 

3)

create table emp
(empno smallint 

,ename varchar(10) not null
,jubun varchar(14) not null

,deptno tinyint
,constraint emp_empno_pk primary key(empno)
,constraint emp_jubun_uq unique(jubun)
,constraint emp_jubun_ck check(jubun like '[0-9][0-9][0-9][0-9][0-9][0-9]-[1-4][0-9][0-9][0-9][0-9][0-9][0-9]'

,constraint emp_deptno_fk foreign key(deptno) references dept(deptno)
);

 

insert into emp values(1001, '최성우', '801010-1234567');
--insert into emp values(1002, '한희영', '831010-234567', 70);

    dept테이블의 deptno에 70이라는 값이 없기 때문에 위배

2000765716_d3bdcc51_14.jpg
insert into
emp values(1002, '한희영', '831010-2234567', 20);
insert into emp values(1003, '신일규', '811010-1334567', 20);

 

select *
from emp;

2000765716_031e3de1_15.jpg

sp_helpconstraint emp;

2000765716_9f8f11be_16.jpg

select *
from dept;

2000765716_14396d8b_17.jpg

delete dept
where deptno=10;   -- foreign key 제약조건때문에 삭제 불가능

18_sjy242.jpg

 

delete dept
where deptno=50;  --삭제가능 why?? 참조하는 사람이 없기때문에

 

drop table emp;

 

4)

 

create table emp
(empno smallint 

,ename varchar(10) not null
,jubun varchar(14) not null

,deptno tinyint
,constraint emp_empno_pk primary key(empno)
,constraint emp_jubun_uq unique(jubun)
,constraint emp_jubun_ck check(jubun like '[0-9][0-9][0-9][0-9][0-9][0-9]-[1-4][0-9][0-9][0-9][0-9][0-9][0-9]'

,constraint emp_deptno_fk foreign key(deptno) references dept(deptno)
);

 

insert into emp values(1001, '최성우', '801010-1234567', 10);
insert into emp values(1002, '한희영', '831010-2234567', 20);
insert into emp values(1003, '신일규', '811010-1334567', 20);

 

delete dept
where deptno=10;

 

select *
from dept;

19_sjy242.jpg

--> on delete cascade : 부모테이블의 deptno =10이 삭제가 되면 10번을 참조하고 있는 emp의 deptno=10인것도 삭제된다
-- 테이블과 테이블의 관계가 1:1관계일때는 반드시 on delete cascade를적어줘야 한다

 

< 예제 >
create table member
(id varchar(10)
,name varchar(10)
,addr varchar(20)
,constraint member_id_pk primary key(id)
);

 

create table login
(id varchar(10)
,passwd varchar(10)
,constraint login_id_pk primary key(id)
,constraint login_id_fk foreign key(id) references member(id) on delete cascade
);  --member테이블에서 어떠한 회원이 탈퇴한 경우 login테이블에서도 삭제가 되어야 하기때문에 on delete cascade를 적어준다

 

insert into member values('superman', '한승용', '서울');
insert into member values('womerz', '선주영', '분당');

insert into login values('superman', 'pass123');
insert into login values('womerz', 'qwer');

 

select * from member;   -- 참조받는 테이블
select * from login;

20_sjy242.jpg

 

어느날 superman이 탈퇴한다면
delete member where id='superman'

             -- member테이블에서 삭제가 되고 login테이블에서도 삭제가 된다

 

[출처]  웹디황용

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
3165 TextArea 박스 내부에 밑줄이미지 삽입 99 단국강토 02.16 3870
3164 unix grep 명령어 사용법2번째 13 김영철 01.29 3864
3163 윈도우XP 풍선도움말 없애기 13 김영철 01.29 3858
3162 스타일이 적용된 selectbox 컨트롤 99 단국강토 12.30 3856
3161 [컴퓨터 키보드, 특수문자 정식 명칭들] M 최고의하루 12.18 3854
3160 MS outlook 2007 백업 프로그램입니다. 2 coruscate 09.14 3850
3159 알아두면 좋은 포토샵 단축키 총모음 M 최고의하루 12.19 3830
3158 history.back() 시 폼데이터 유지하기 13 김영철 01.15 3822
3157 원격데스크톱 연결 (원격제어) M 최고의하루 12.19 3816
3156 swf파일을 fla 파일로 변환하기 M 최고의하루 02.04 3814
3155 [펌] 제11강 - ADO(Active Database Object) - Database Access Component Cobol vs C#-1 M 최고의하루 12.23 3806
3154 rsync 미러링을 통한 백업기법 13 김영철 01.29 3804
3153 체크박스 배열을 edit 수정페이지로 불러오기 M 최고의하루 01.12 3804
3152 이것은 AI파일 미리보기입니다. 댓글2 M 최고의하루 01.15 3804
3151 미디어 컨트롤 소스 M 최고의하루 12.24 3790
3150 [MSSQL] 그룹별 상위 n명 가져오기 예제 13 김영철 01.23 3790
3149 체크박스 트리메뉴 99 단국강토 02.03 3789
3148 ps 명령어 사용법 13 김영철 01.29 3781
열람중 제약조건(1) M 최고의하루 12.20 3776
3146 자신의 아이큐 알아보기 댓글1 17 미니 04.27 3775
3145 웹프로그래밍 언어별 데이터베이스연결 (ASP편) 13 김영철 01.23 3770
3144 pcre 문법, preg | 13 김영철 01.13 3765
3143 PUTTY Telnet , SSH 접속 프로그램 99 단국강토 01.06 3760
3142 [Gmail] CSV 파일 Outlook에 적용하기 M 최고의하루 12.20 3758
3141 PDF 암호를 깨버리자 (APDFPRP) M 최고의하루 12.04 3745
3140 출력물로 판단하는 토너 카트리지 이상 증상 2 coruscate 09.14 3743
3139 contentEditable 속성 99 단국강토 02.09 3736
3138 DBA라면 이 정도는 알고 있어야 하지 않을까요 !!! 13 김영철 01.23 3728
3137 ServerXMLHTTP의 인코딩 문제 13 김영철 01.29 3726
3136 MSSQL에서 문자로 된 날짜 시간 차이값 얻기 13 김영철 01.24 3708
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취