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

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

◈ 로컬디스크(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

번호 제목 글쓴이 날짜 조회
3135 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3706
3134 아이피 쉽게 바꾸기 댓글3 17 미니 04.27 3704
3133 자바 스윙 단축키 설정 2 나야나 05.26 3703
3132 [컴퓨터 키보드, 특수문자 정식 명칭들] M 최고의하루 12.18 3699
3131 버쳐덥을 이용한 동영상 합치기와 H.264로 2pass인코딩 M 최고의하루 01.02 3695
3130 웹프로그래밍 언어별 데이터베이스연결 (ASP편) 13 김영철 01.23 3690
3129 ncftp, ncftpget, ncftpput - 서브디렉토리 전송 13 김영철 01.29 3684
3128 웹 연동으로 어디서나 가능한 일정관리 프로그램 댓글1 2 춘몽 11.22 3682
3127 모드버스 simulation 프로그램 2 가이버김 09.14 3681
3126 GD 라이브러리란 13 김영철 01.14 3674
3125 mysql 한글 깨짐 13 김영철 01.29 3661
3124 ntdll.dll 오류 해결방법 M 최고의하루 01.12 3660
3123 [MS-SQL]동적SQL을 만들때 유의사항-1 99 단국강토 01.08 3656
3122 트랙백 13 김영철 01.13 3648
3121 3D MAX 문고리만들기 10 액션쟁이 01.08 3647
3120 플래시 저장 댓글3 2 비비드바비 04.29 3645
열람중 제약조건(1) M 최고의하루 12.20 3641
3118 자판기안의 특수문자 99 단국강토 01.13 3636
3117 [ Sybase ] Sybase 기본 명령어 M 최고의하루 12.18 3635
3116 URL Helper 3 - 인터넷 주소 분석 2 비비드바비 04.29 3635
3115 알씨로 초간단 동영상 슬라이드쇼 만들기 99 단국강토 01.07 3632
3114 제약조건(1) M 최고의하루 12.20 3630
3113 테두리에 리플(Ripple)효과 주기 10 액션쟁이 12.30 3620
3112 CPU, 메인보드, 그래픽, 사운드, 랜 최적 또는 최신 드라이버 자동연결 댓글1 2 춘몽 11.22 3620
3111 [펌] 제14강 - 방명록 만들기 III M 최고의하루 12.20 3617
3110 자바스크립트 폴더배열 가져오기 99 단국강토 01.30 3612
3109 동영상 캡쳐(Capture) 아주 쉽게 하기~ 99 단국강토 01.14 3608
3108 업로드시 그림 파일명이 한글일경우 이름 자동 변경하기 13 김영철 01.14 3603
3107 한글 키 입력 안될 때 M 운영자 12.26 3603
3106 오라클 캐릭터 셋 변경 M 최고의하루 01.12 3600
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취