数据库实验二 数据库和数据表的创建

  实验环境: SQL Service 2014

 

一、数据库的创建

  

  有三种类型的文件用来存储数据库:

    主文件包含数据库的启动信息。主文件还可以用来存储数据。每个数据库都包含一个主文件。

    次要文件保存所有主要数据文件中容纳不下的数据。如果主文件大到足以容纳数据库中的所有数据,就不需要有次要数据文件。而另一些数据库可能非常大,需要多个次要数据文件,也可能使用多个独立磁盘驱动器上的次要文件,以将数据分布在多个磁盘上。

    事务日志文件保存用来恢复数据库的日志信息。每个数据库必须至少有一个事务日志文件(尽管可以有多个)。事务日志文件最小为 512 KB。
每个数据库至少有两个文件,一个主文件和一个事务日志文件。

    注意:主文件是列表中的第一个文件,并使用 PRIMARY 关键字显式指定。事务日志文件在 LOG ON 关键字后指定。注意 FILENAME 选项中所用的文件扩展名:主要数据文件使用 .mdf,次要数据文件使用 .ndf,事务日志文件使用 .ldf。


  使用create database 语句创建数据库

    用sql语句创建一个名为book的数据库,它由5MB的主数据文件、2MB的次数据文件和1MB的日志文件组成。并且主数据文件以2MB的增长速度增长,其最大数据文件的大小为15MB,次数据文件以10%的增长速度增长,其最大次数据文件的大小为10MB,事务日志文件以1MB速度增长,其最大日志文件大小为10MB。

-- 先判断要创建的数据库是否已经存在,若存在则删除
if exists(select * from sysdatabases where name='book')

drop database book;

--使用create database语句创建数据库
create database book
on primary  -- 默认属于primary文件组,可省略
(
    -- 主数据文件的具体描述
    name = 'book1',    --主数据文件的逻辑名称
    -- 注意这里的目录 E:\database 必须是存在的,否则会有语法错误
    filename = 'E:\database\book1.mdf', --主数据文件的物理文件名
    size = 5,    --主数据文件的初始大小
    maxsize = 15, --主数据文件的最大大小
    filegrowth = 2 --主数据文件的增长速度 单位是M
),

(
    -- 次数据文件的具体描述
    name = 'book2', --次数据文件的逻辑名称
    filename = 'E:\database\book2.ndf', --次数据文件的物理文件名
    size = 2,    --次数据文件的初始大小
    maxsize = 10, --次数据文件的最大大小
    filegrowth = 10%    --次数据文件的增长率
)

log on
(
    -- 日志文件的具体描述
    name = 'book_log', --日志文件的逻辑名称
    filename = 'E:\database\book_log.ldf',  --日志文件的物理文件名称 
    size = 1,    --日志文件的初始大小
    maxsize = 10, --日志文件的最大大小
    filegrowth = 1 --日志文件的增长速度 单位是M
)
View Code

 

 二、数据表的创建

   分别用企业管理器和SQL语句创建如下数据库表。

    1、学生(学号,姓名,性别,出生日期,系别)
      学号为主键,性别默认为男。
    2、课程(课程号,课程名,学分)
      课程号为主键,学分只能为1位数字1,2,4。
    3、选课(学号,课程号,成绩)
      学号和课程号为主键,成绩0--100之间。

 

/* 实验2 --- 数据表的创建 */

--使用前面创建的book数据库
use book;

/*** 创建学生数据表  ***/

--要创建表需先判断该表是否已经存在
if exists(select * from sysobjects where name = 'Student')
    --注意当SC使用foreign key引用到该数据表时将无法删除,若想删除需先删除数据表SC
    drop table Student;    

--使用create table语句创建数据表Student
create table Student
(
    --数据表Student的属性
    Snum char(20) primary key,    --学号定义为主码
    Sname char(10),                --学生姓名
    Ssex char(4) check(Ssex in('','')) default (''),    --学生性别,只能为男或女
    Sbirth char(20),            --学生出生日期
    Sdept char(20)                --学生系别
)

/*** 创建课程数据表 ***/

--要创建数据表需先判断该表是否已存在,若已存在则删除
if exists(select * from sysobjects where name = 'Course')
    drop table Course;
--使用create table创建数据表Course
create table Course
(
    --数据表Class的属性
    Cnum char(20) primary key,                --课程号为主码
    Cname char(30) not null,                --课程名,不为空
    Ccredit int check(Ccredit in(1,2,4))    --学分只能为1,2,4
)


/*** 创建学生选课数据表 ***/

--判断表是否已经存在,若存在则删除
if exists(select * from sysobjects where name = 'SC')
    drop table SC;

--使用语句create table创建数据表SC
create table SC
(
    Snum char(20),        --学生学号,受参照完整性条件约束
    Cnum char(20),        --课程号,也受参照完整性条件约束
    --课程得分,取值范围1-100, 使用check进行检查
    Cscore int check(Cscore between 0 and 100),

    --主码由两个属性组成,必须作为表级完整性进行定义
    primary key(Snum, Cnum), 

    --表级参照完整性约束条件,Snum是外码,被参照表是Student
    foreign key(Snum) references Student(Snum),

    --表级参照完整性约束条件,Cnum是外码,被参照表是Course
    foreign key(Cnum) references Course(Cnum)
)
View Code

 

你可能感兴趣的:(数据库实验二 数据库和数据表的创建)