Dev/DB

ms-SQL 두 번째 수업

2014. 3. 17. 18:07

create database 테스트

exec sp_helpdb 테스트

drop database 테스트

create database 테스트
 on            -- 물리적인 파일 크기 설정
  ( filename='d:\테스트.mdf', name='테스트',
  size=5mb, maxsize=10mb, filegrowth=1mb  ),
  ( filename='d:\테스트2.ndf', name='테스트2',
  size=3mb )

use 테스트

drop database 테스트

sp_helpdb 테스트

create table 학생(
 학번 char(9),
 이름 varchar(10),
 성별 varchar(4))
 
insert into 학생
 values ('201012345', '홍길동', '남자')
 
----------------------------------------------

제약조건
 - 기본키 : 유일한 값을 반드시 넣어라
   테이블 당 오직 한 개만 설정
   unique + not null
   개체무결성 : 기본키는 not null
   
 - 외래키 :
   참조무결성 : 한 테이블의 외래키는 다른 테이블의 기본키
 
 - check : 도메인무결성과 관련
   (필드가 갖는 값의 범위)
   입력 값의 범위를 제한
   
 - not null : 반드시 값을 넣어라
 
 - unique : 유일한 값만 넣어라
 - default
 
 
 *필드 수준
 create table 회원(
  아이디 varchar(10) constraint pk_회원_아이디 primary key,
  이름 varchar(10) constraint nn_회원_이름 not null,
  핸폰번호 varchar(20) constraint uq_회원_핸폰번호 unique,
  성별 varchar(4) constraint ck_회원_성별 check(성별 in('남자', '여자')),
  포인트 int default 100,
  등록일 datetime default getdate())
  
 --*테이블 수준 
 create table 회원(
  아이디 varchar(10),
  이름 varchar(10)constraint nn_회원_이름 not null, -- not null은 테이블 설정으로만 가능
  핸폰번호 varchar(20),
  성별 varchar(4),
  포인트 int default 100,
  등록일 datetime default getdate()
  constraint pk_회원_아이디 primary key(아이디),  -- 복합키는 필드설정으로만 가능
  constraint uq_회원_핸폰번호 unique(핸폰번호),
  constraint ck_회원_성별 check(성별='남자' or 성별='여자'))
  
  drop table 회원
  
 create table 게시판(
  번호 int identity primary key,
  제목 varchar(50) default '[제목없음]',
  내용 varchar(50) not null,
  아이디 varchar(10) references 회원(아이디) not null,
  등록일 datetime default getdate() )
  
  drop table 게시판
  
 select * from 회원
 
 select * from 게시판
 
 insert into 게시판(내용) values('하하하') --o
 
 insert into 게시판(내용, 아이디) values('하하하', null)  --x
  
-- *제약조건을 주는 위치
--  - 필드 수준
--   : 필드 옆에 제약조건을 넣어줌
--  - 테이블 수준
--   : 필드에 대한 정의가 끝나고 제약조건을 별도로 처리
  
 insert into 회원(이름) values('박사과') --x
 
 insert into 회원(이름, 아이디) values('박사과', 'apple') --o
 
 insert into 회원(이름, 아이디) values('박사과', 'apple') --x
 
 insert into 회원(이름, 아이디, 핸폰번호) values('김바나나', 'banana', '010-0000-0000') --o
  -- 핸드폰번호를 넣지 않으면 null이 겹쳐서 유니크 제약조건에 위반됨
  
 insert into 회원(아이디, 성별, 핸폰번호, 이름)
  values('orange', '여자', '010-1111-1111', '정오렌지')
 
 
 select * from 회원
 
 exec sp_help 회원
 
 drop table 회원
 
 * 일련번호
 
 create table 번호(
  일련번호 int identity,  -- 초기값, 증가치 (디폴트 1,1)
  제목  varchar(10),
  등록일  datetime default getdate())
  
 insert into 번호(제목) values('하하')
 
 select * from 번호
 
 delete from 번호 where 일련번호=4 --삭제 이후 일련번호는 5부터 시작
 
 drop table 번호
 
 ----------------------------------------------------------------
 
 계산필드
 
 create table 성적(
  학번 char(5),
  국어 int,
  영어 int,
  수학 int,
  총점 as (국어+영어+수학),
  평균 as ((국어+영어+수학)/3))
  
 insert into 성적(학번, 국어, 영어, 수학)
  values('00001', 90, 80, 90)
  
 drop table 성적
 
 select * from 성적

 

 


 

create database 테스트
 on (filename='d:\test\test.mdf', name='test',
 size=3mb, maxsize=5mb, filegrowth=1mb),
 (filename='d:\test\test2.mdf', name='test2',
 size=3mb, maxsize=5mb, filegrowth=1mb)
 log on (filename='d:\test\testlog.ldf', name='testlog',
 size=3mb, maxsize=5mb, filegrowth=1mb)
 
use 테스트

create table 부서
(
    부서번호 char(1) constraint pk_부서_부서번호 primary key,
    부서명 varchar(20) constraint nn_부서_부서명 not null,
    부서위치 varchar(20) constraint uk_부서_부서위치 unique
)

create table 사원
(
    사번 char(5) primary key,
    이름 varchar(10) constraint nn_사원_이름 not null,
    기본급 int default 1000000,
    전화 varchar(20) constraint uk_사원_전화 unique,
    부서 char(1) constraint fk_사원_부서 references 부서(부서번호),
    constraint ck_사원_사번 check(사번 like '[A-Za-z]%'),
    constraint ck_사원_기본급 check(기본급 between 1000000 and 10000000),
    constraint ck_사원_전화번호 check(전화 like '02%'),
)


create table 급여
(
    사번 char(5) references 사원(사번),
    급여일 datetime default getdate(),
    기본급 int default 1000000 constraint nn_급여_기본급 not null,
    세금 as (기본급 * 0.05),
    실수령액 as (기본급-(기본급*0.05)),
    constraint pk_급여_사번급여일 primary key(사번, 급여일)
)

 

update 부서 set 부서명='인사개발부' where 부서명='인사부'

update 부서 set 부서명='개발부', 부서위치='본관 5층' where 부서명='제품개발부'

delete from 사원 where 이름='성춘향'



책 없어서 어렵다

'Dev > DB' 카테고리의 다른 글

ms-SQL 네 번째 수업  (0) 2014.03.31
ms-SQL 세 번째 수업  (0) 2014.03.24
ms-SQL 첫 번째 수업  (0) 2014.03.10
[Oracle] 오라클을 해보자  (0) 2013.11.26
[Oracle] 계정 생성 및 삭제 (DDL)  (0) 2013.11.19