实验一:建立数据库及DDL语言实践

实验内容与完成情况(记录所有的实验过程):

1.创建(用脚本)、分离和附加数据库:

1)在SQL Server2008中建立一个StuDB数据库:

有一个数据文件:逻辑名为StuData,文件名为“d:\db\StuData.mdf”,文件初始大小为3MB,文件的最大大小不受限制,文件的增长率为2MB;

有一个日志文件,逻辑名为StuLog,文件名为“d:\db\ StuLog.ldf”,文件初始大小为1MB,文件的最大大小为10MB,文件的增长率为10%

  2)实验课结束前,将数据文件(StuData.mdf)和日志文件(StuLog.ldf)备份回去,并附加到自己电脑的数据库服务器中。

  3)将自己电脑中的相应数据文件和日志文件分离并附加到实验室电脑中的数据库服务器中。

2.分离和附加数据库:

3.设置StuDB为当前数据库,在StuDB数据库中作如下操作:

设有如下关系表S: S(CLASS, SNO, NAME, SEX, AGE)。

其中:CLASS为班号,char(7) , SNO为座号,char(2);NAME为姓名,char(10),姓名不能为空且取值要求唯一;SEX为性别,char(2);AGE为年龄,int;表中主码为班号+座号。写出实现下列功能的SQL语句。

(1)创建表S;

CREATE TABLE S(

    CLASS char(7),

    SNO char(2),

    NAME char(10) CONSTRAINT UQ_NAME UNIQUE NOT NULL,

    SEX char(2),

    AGE int,

    CONSTRAINT PK_CLASS_SNO PRIMARY KEY(CLASS,SNO)

);

(2)插入一个记录(“2017031”,25,“李明”,“男”,21);
再插入一个记录(“2017032”,10,“王丽”,“女”,20);

INSERT INTO S

VALUES

('2017031','25','李明','男',21),

('2017032','10','王丽','女',20);

(3)插入“2017031”班座号为30,姓名为“郑和”的学生记录;

INSERT INTO S(CLASS,SNO,NAME)

VALUES('2017031','30','郑和');

(4)对表S,按姓名升序建唯一索引(索引名为sname);
对表S,按年龄降序建索引(索引名为sage);

CREATE UNIQUE INDEX sname
ON S(NAME);

CREATE INDEX sage

ON S (AGE DESC);

(5)向S表添加“入学时间(comedate)”列,其数据类型为日期型(date);

ALTER TABLE S ADD COMEDATE date;

(6)删除S表的sage索引;

DROP INDEX sage ON S;

(7)将年龄的数据类型改为smallint;

ALTER TABLE S ALTER COLUMN AGE smallint;

(8)删除学生姓名必须取唯一值的约束;

ALTER TABLE S DROP CONSTRAINT UQ_NAME;

(9)删除S表;

DROP TABLE S;

(10)按照《数据库系统概论》(第五版)P79页的学生-课程数据库创建Student、Course和SC三张表,每一张表都必须有主键约束,合理使用列级完整性约束和表级完整性约束。并输入相关数据。

CREATE TABLE Student(

    Sno char(12) CONSTRAINT PK_SNO PRIMARY KEY NOT NULL,

    Sname char(10),

    Ssex char(5),

    Sage smallint,

    Sdept char(10)

);

CREATE TABLE Course(

    Cno int CONSTRAINT PK_CNO PRIMARY KEY NOT NULL,

    Cname char(20),

    Cpno char(20),

    Ccredit smallint

);

CREATE TABLE SC(

    Sno char(12),

    Cno int,

    Grade smallint,

    CONSTRAINT PK_SNO_CNO PRIMARY KEY(Sno,Cno)

);

 

INSERT INTO Student

VALUES

('201215121','李勇','男',20,'CS'),

('201215122','刘晨','女',19,'CS'),

('201215123','王敏','女',18,'MA'),

('201215125','张立','男',19,'IS');

 

INSERT INTO Course

VALUES

(1,'数据库',5,4),

(3,'信息系统',1,4),

(4,'操作系统',6,3),

(5,'数据结构',7,4),

(7,'PASCAL语言',6,4);

 

INSERT INTO Course(Cno,Cname,Ccredit)

VALUES

(2,'数学',2),

(6,'数据处理',2);

 

INSERT INTO SC

VALUES

('201215121',1,92),

('201215121',2,85),

('201215121',3,88),

('201215122',2,90),

('201215122',3,80);

3.按照《数据库系统概论》(第五版)P70-71页习题6的SPJ数据库。创建SPJ数据库,并在其中创建S、P、J和SPJ四张表。每一张表都必须有主键约束,合理使用列级完整性约束和表级完整性约束。

CREATE TABLE S(

    SNO char(10) CONSTRAINT PK_SNO PRIMARY KEY NOT NULL,

    SNAME char(20),

    STATUS int,

    CITY char(10)

);

CREATE TABLE P(

    PNO char(10) CONSTRAINT PK_PNO PRIMARY KEY NOT NULL,

    PNAME char(20),

    COLOR char(5),

    WEIGHT int

);

CREATE TABLE J(

    JNO char(10) CONSTRAINT PK_JNO PRIMARY KEY NOT NULL,

    JNAME char(20),

    CITY char(10)

);

CREATE TABLE SPJ(

    SNO char(10),

    PNO char(10),

    JNO char(10),

    QTY int,

    CONSTRAINT PK_SNO_PNO_JNO PRIMARY KEY(SNO,PNO,JNO) 

);

 

INSERT INTO S

VALUES

('S1','精益',20,'天津'),

('S2','盛锡',10,'北京'),

('S3','东方红',30,'北京'),

('S4','丰泰盛',20,'天津'),

('S5','为民',30,'上海');

 

INSERT INTO P

VALUES

('P1','螺母','红',12),

('P2','螺栓','绿',17),

('P3','螺丝刀','蓝',14),

('P4','螺丝刀','红',14),

('P5','凸轮','蓝',40),

('P6','齿轮','红',30);

 

INSERT INTO J

VALUES

('J1','三建','北京'),

('J2','一汽','长春'),

('J3','弹簧厂','天津'),

('J4','造船厂','天津'),

('J5','机车厂','唐山'),

('J6','无线电厂','常州'),

('J7','半导体厂','南京');

 

INSERT INTO SPJ

VALUES

('S1','P1','J1',200),

('S1','P1','J3',100),

('S1','P1','J4',700),

('S1','P2','J2',100),

('S2','P3','J1',400),

('S2','P3','J2',200),

('S2','P3','J4',500),

('S2','P3','J5',400),

('S2','P5','J1',400),

('S2','P5','J2',100),

('S3','P1','J1',200),

('S3','P3','J1',200),

('S4','P5','J1',100),

('S4','P6','J3',300),

('S4','P6','J4',200),

('S5','P2','J4',100),

('S5','P3','J1',200),

('S5','P6','J2',200),

('S5','P6','J4',500);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值