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

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

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

번호 제목 글쓴이 날짜 조회
2475 MsSql 날짜 함수 99 단국강토 01.02 1560
2474 SQL Server에서 글로벌 변수 구현하기 99 단국강토 12.30 2238
2473 <ms-sql>제약 (constraint)-NOT NULL, DEFAULT, PRIMAY 99 단국강토 12.30 2517
2472 MSSQL Server DBA 가이드-5 M 최고의하루 12.26 1798
2471 MSSQL Server DBA 가이드-4 M 최고의하루 12.26 3481
2470 MSSQL Server DBA 가이드-3 M 최고의하루 12.26 1559
2469 MSSQL Server DBA 가이드-2 M 최고의하루 12.26 1525
2468 MSSQL Server DBA 가이드-1 M 최고의하루 12.26 1700
2467 [SQL] sysobjects M 최고의하루 12.26 2259
2466 1..순위 결정 함수 M 최고의하루 12.24 1800
2465 데이터베이스의 저장 프로시저를 자동으로 생성 M 최고의하루 12.24 1468
2464 문자열에서 단어 분리 - SQL Server 2005 M 최고의하루 12.23 1896
2463 25가지 SQL작성법-3 M 최고의하루 12.23 2178
2462 25가지 SQL작성법-2 M 최고의하루 12.23 2361
2461 25가지 SQL작성법-1 M 최고의하루 12.23 1740
열람중 제약조건(1) M 최고의하루 12.20 3634
2459 [MSSQL]SQL Server Management Studio Express M 최고의하루 12.20 2777
2458 Microsoft SQL Server 2005 Express Edition SP2 M 최고의하루 12.19 2122
2457 Microsoft SQL Server Management Studio Express SP2 M 최고의하루 12.19 1976
2456 [MSSQL] 데이터 백업과 복구 ( SQL SERVER ) M 최고의하루 12.18 2192
2455 [ Sybase ] Sybase 기본 명령어 M 최고의하루 12.18 2780
2454 오라클(Oracle) 10g Database 설치 M 최고의하루 12.04 2280
2453 오라클데이터베이스 복구 M 최고의하루 12.04 1892
2452 요일, 연중/월중 몇째주 구하기 13 김영철 01.23 2902
2451 다른 서버로 DB 백업 받기 13 김영철 01.23 1887
2450 MSSQL 내장 함수 목록 13 김영철 01.23 2060
2449 몇가지 sql 명령어 13 김영철 01.23 2826
2448 명령어정리 13 김영철 01.23 1615
2447 order by newid() 13 김영철 01.23 2223
2446 SQL : Categories : 프로시저(Procedure). 13 김영철 01.23 1975
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취