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

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

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

번호 제목 글쓴이 날짜 조회
3105 Window Server 2003을 사용해 보자 M 최고의하루 12.20 2496
3104 Window 2003 SP1 설치후 COM+ 분산트랜잭션 문제 M 최고의하루 12.20 2674
3103 카테고리4단 inner join 이해하기 M 최고의하루 12.20 2543
3102 mysqladmin정리 M 최고의하루 12.20 2178
3101 [MSSQL]SQL Server Management Studio Express M 최고의하루 12.20 2364
3100 [MSSQL]SQL Server Management Studio Express M 최고의하루 12.20 2218
3099 [MSSQL]SQL Server Management Studio Express M 최고의하루 12.20 2339
3098 [MSSQL]SQL Server Management Studio Express M 최고의하루 12.20 2775
3097 [MSSQL]SQL Server Management Studio Express M 최고의하루 12.20 2615
3096 제약조건(1) M 최고의하루 12.20 3387
3095 제약조건(1) M 최고의하루 12.20 3777
3094 제약조건(1) M 최고의하루 12.20 4277
열람중 제약조건(1) M 최고의하루 12.20 3633
3092 제약조건(1) M 최고의하루 12.20 3643
3091 [ ASP ] ASP 에서 MySQL UTF8 적용하기 (UTF-8) M 최고의하루 12.20 2360
3090 [ ASP ] 배열 ( Array ) 과 Scripting.Dictionary M 최고의하루 12.20 4622
3089 헤더 M 최고의하루 12.20 4278
3088 헤더 M 최고의하루 12.20 1725
3087 헤더 M 최고의하루 12.20 2020
3086 그누 최신글 변수 모음 M 최고의하루 12.20 1962
3085 그누 최신글 변수 모음 M 최고의하루 12.20 2048
3084 그누 최신글 변수 모음 M 최고의하루 12.20 1792
3083 Edit Plus html 내보내기 예제 M 최고의하루 12.20 5735
3082 프레임을 넘나드는 팝업 레이어 : createPopup() M 최고의하루 12.20 3208
3081 Flash ActionScript Study_06. AVATA에게 옷을 입혀주기 M 최고의하루 12.20 1772
3080 플래쉬 바탕화면 투명하게 하는방법 M 최고의하루 12.20 2187
3079 window 객체 M 최고의하루 12.20 2002
3078 window 객체 M 최고의하루 12.20 1251
3077 자바 스크립트 디버거 M 최고의하루 12.20 1979
3076 자바 스크립트 디버거 M 최고의하루 12.20 1263
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취