数据库原理与应用(SQL) (SQL代写,Database代写)

使用T-SQL语句创建一个名称为商店的数据库

联系我们
微信: biyeprodaixie 欢迎联系咨询

本次CS代写的主要涉及如下领域: SQL代写,Database代写

考核内容

一、使用T-SQL语句创建一个名称为商店的数据库,要求如下:

1)将主数据文件商店.mdf放置在指定文件夹中(如:D:\SQLDB),其文件大小按3MB自动增长,限制文件最大为10MB

2)将事务日志文件商店_log.ldf放置在指定的文件夹中(如:D:\SQLDB),不限制文件大小。

如图所示含有多个实体间联系的E-R图,将该E-R模型转换为合适的关系模式,并使用SQL语句创建该模型并插入语句(每个表格插入5个元组)。

二、请按以下要求完成任务:

使用T-SQL语句创建一个名称为School的数据库,要求如下:

1)将主数据文件School.mdf放置在指定文件夹中(如:D:\SQLDB),其文件大小按10MB自动增长,限制文件最大为50MB

2)将事务日志文件School_log.ldf放置在指定的文件夹中(如:D:\SQLDB),其文件大小按5MB自动增长,不限制文件大小。

1、使用T-SQL语句在School数据库中创建学生表-Student、课程表-Course和成绩表Studentresult

2、为表添加约束

1)性别只能填男或女

2)学分必须大于零

3)分数为空或者0-100

已知学生表Student、课程表Course和成绩表Studentresult的结构如表1-3所示:

1学生表-Student

列名

描述

数据类型

长度

备注

SID

学号

INT

 

主键,标识列,初始值2017001自增1

SNAME

姓名

VARCHAR

20

非空

GENDER

性别

CHAR

2

 

BORNDATE

出生日期

DATETIME

 

 

CLASS

班级

VARCHAR

20

非空

ADDRESS

家庭住址

NVARCHAR

50

默认值:石家庄

EMAIL

邮箱

VARCHAR

50

检查约束(包含@符号)

2 课程表-Course

列名

描述

数据类型

长度

备注

CID

课程编号

INT

 

主键,标识列,初始值3001,自增1

CNAME

课程名称

VARCHAR

50

 

HOURS

课时

INT

 

非空

CREDIT

学分

INT

 

非空

3 成绩表Studentresult

列名

描述

数据类型

备注

SID

学号

INT

主键,外键

CID

课程编号

INT

主键,外键

EXAMDATE

考试日期

DATETIME

 

SCORE

成绩

FLOAT

 

3、使用T-SQL语句将表中数据插入到相应的数据表中;

1学生表-Student

SID

SNAME

GENDER

BORNDATE

CLASS

ADDRESS

EMAIL

2017001

王楠

1997-5-4

软件1

石家庄

[email protected]

2017002

张丽

1996-1-14

软件2

北京

 

2017003

李帅

1997-7-12

软件1

济南

[email protected]

2017004

刘楠娜

1998-3-9

软件3

武汉

[email protected]

2017005

周继伦

1996-12-4

软件1

长沙

 

2017006

郑杰

1997-7-22

软件2

广州

[email protected]

2017007

李静

1996-8-23

软件3

贵州

[email protected]

2 课程表-Course

CID

CNAME

HOURS

CREDIT

3001

高等数学

60

5

3002

大学英语

72

5

3003

数据库原理与应用

60

3

3004

Java语言程序设计

60

3

3005

C语言程序设计

48

3

3 成绩表Studentresult

SID

CID

EXAMDATE

SCORE

2017001

3001

2018-6-23

87

2017003

3002

2018-6-25

79

2017006

3003

2018-6-22

93

2017004

3004

2018-6-21

86

2017002

3005

2018-6-26

96

2017006

3001

2018-6-23

52

2017007

3002

2018-6-25

48

2017001

3003

2018-6-22

65

2017004

3003

2018-6-22

70

2017003

3005

2018-6-26

87

4、写出以下T-SQL语句

1)修改学号为2017004学生的住址为湖北省武汉市中山路6121-2-1002”

2)修改《高等数学》的学时为72

3)将2018622日考试的《数据库原理与应用》课程分数低于80分的学生成绩提高5

4)将学号为2017001的学生的《数据库原理与应用》课程分数提高5

5)查询学号为2017003的大学英语成绩

6)查询家是石家庄的学生的姓名和邮箱

7)查询12月份过生日的学生信息

8)查询《Java语言程序设计》的学时和学分

9)查询考前五名的学生的学号

10)查询李帅的学生的邮箱的域名

11)按照课程编号和成绩排列Studentresult

12)计算出生日期是1998-10-12的学生的年龄

13)将Student表中的BORNDATE改为年龄

14)使用T-SQL语句查30天以前的日期

 

 

use master;

go

 

if exists(

select

*

from sysdatabases

where

name = 'School'

) begin

select

'该数据库已存在' drop database School --如果该数据库已经存在,那么就删除它

end;

else begin -- 使用T-SQL语句创建一个名称为School的数据库,要求如下:

create database School on primary --表示属于 primary 文件组

(

-- (1)将主数据文件School.mdf放置在指定文件夹中(如:D:\SQLDB),其文件大小按10MB自动增长,限制文件最大为50MB;

name = School,

-- 主数据文件的逻辑名称

filename = 'C:\SQLDB\School.mdf',

-- 主数据文件的物理名称

size = 5,

--主数据文件的初始大小

maxsize = 50,

-- 主数据文件增长的最大值

filegrowth = 15 --主数据文件的增长率

) log on (

name = School_log,

-- 日志文件的逻辑名称

filename = 'C:\SQLDB\School_log.ldf',

-- 日志文件的物理名称

size = 2mb,

--日志文件的初始大小

-- maxsize=20mb, --日志文件增长的最大值

filegrowth = 5mb --日志文件的增长率

)

end;




 

use School;

go

 

-- 使用T-SQL语句在School数据库中创建学生表-Student、课程表-Course和成绩表Studentresult;

begin

create table Student (

SID int not null identity(2017001, 1) primary key,

--设置为主键和自增长列,起始值为1,每次自增1

SNAME varchar(20) not null,

GENDER CHAR(2),

BORNDATE DATETIME null,

CLASS varchar(20) not null,

ADDRESS VARCHAR(50) default '石家庄',

EMAIL VARCHAR(50) check (email like '%@%')

)

end;

begin create table Course (

CID int identity(3001, 1) primary key,

CNAME varchar(50),

HOURS int not null,

CREDIT int not null

)

end;

begin create table Studentresult (

resultid int identity(1,1) primary key,

SID int REFERENCES Student(SID),

CID int REFERENCES Course(CID),

EXAMDATE DATETIME,

SCORE FLOAT

)

end;





 

begin --3 、 使用T - SQL 语句将表中数据插入到相应的数据表中 ;

SET IDENTITY_INSERT Student ON;

 

INSERT INTO Student(SID, SNAME, GENDER, BORNDATE, CLASS, ADDRESS, EMAIL)

VALUES

(

2017001,

'王楠',

'女',

'1997-5-4',

'软件1',

'石家庄',

'[email protected]'

);

INSERT INTO Student(SID, SNAME, GENDER, BORNDATE, CLASS, ADDRESS, EMAIL)

VALUES

(2017002, '张丽', '女', '1996-1-14', '软件2', '北京', '');

INSERT INTO Student(SID, SNAME, GENDER, BORNDATE, CLASS, ADDRESS, EMAIL)

VALUES(

2017003,

'李帅',

'男',

'1997-7-12',

'软件1',

'济南',

'[email protected]'

);

INSERT INTO Student(SID, SNAME, GENDER, BORNDATE, CLASS, ADDRESS, EMAIL)

VALUES

(

2017004,

'刘楠娜',

'女',

'1998-3-9',

'软件3',

'武汉',

'[email protected]'

);

INSERT INTO Student(SID, SNAME, GENDER, BORNDATE, CLASS, ADDRESS, EMAIL)

VALUES

(2017005, '周继伦', '男', '1996-12-4', '软件1', '长沙','');

INSERT INTO Student(SID, SNAME, GENDER, BORNDATE, CLASS, ADDRESS, EMAIL)

VALUES

(

2017006,

'郑杰',

'男',

'1997-7-22',

'软件2',

'广州',

'[email protected]'

);

INSERT INTO Student(SID, SNAME, GENDER, BORNDATE, CLASS, ADDRESS, EMAIL)

VALUES

(

2017007,

'李静',

'女',

'1996-8-23',

'软件3',

'贵州',

'[email protected]'

);

SET IDENTITY_INSERT Student OFF;

end;




 

begin

SET IDENTITY_INSERT Course ON;

 

INSERT INTO Course(CID, CNAME,HOURS,CREDIT)

VALUES

(3001, '高等数学', 60, 5);

INSERT INTO Course(CID, CNAME,HOURS,CREDIT)

VALUES

(3002, '大学英语', 72, 5);

INSERT INTO Course(CID, CNAME,HOURS,CREDIT)

VALUES

(3003, '数据库原理与应用', 60, 3);

INSERT INTO Course(CID, CNAME,HOURS,CREDIT)

VALUES

(3004, 'Java语言程序设计', 60, 3);

INSERT INTO Course(CID, CNAME,HOURS,CREDIT)

VALUES

(3005, 'C语言程序设计', 48, 3);

SET IDENTITY_INSERT Course OFF;

 

end;




 

begin

SET IDENTITY_INSERT Course ON;

 

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017001, 3001, '2018-6-23', 87);

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017003, 3002, '2018-6-25', 79);

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017006, 3003, '2018-6-22', 93);

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017004, 3004, '2018-6-21', 86);

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017002, 3005, '2018-6-26', 96);

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017006, 3001, '2018-6-23', 52);

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017007, 3002, '2018-6-23', 48);

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017001, 3003, '2018-6-22', 65);

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017004, 3003, '2018-6-22', 70);

INSERT INTO Studentresult (SID, CID, EXAMDATE, SCORE)

VALUES

(2017003, 3005, '2018-6-26', 87);

SET IDENTITY_INSERT Course OFF;

 

end;




 

begin --( 1 ) 修改学号为2017004学生的住址为 “ 湖北省武汉市中山路612号1 -2 -1002 ”

update Student

set

ADDRESS = '湖北省武汉市中山路612号1 -2 -1002'

where

SID = 2017004

end;

 

begin --( 2 ) 修改 《 高等数学 》 的学时为72

update Course

set

HOURS = 72

where

CNAME = '高等数学'

end;


 

begin -- ( 3 ) 将2018年6月22日考试的 《 数据库原理与应用 》 课程分数低于80分的学生成绩提高5分

update a

set a.SCORE = b.SCORE+5

from Studentresult a

join Studentresult b

on a.SID = b.SID

and a.CID=b.CID

and a.EXAMDATE=b.EXAMDATE

where a.EXAMDATE = '2018-6-22'

and a.CID = (

select

CID

from Course

where

CNAME = '数据库原理与应用'

)

and a.SCORE < 80;

end;



 

begin --( 4 ) 将学号为2017001的学生的 《 数据库原理与应用 》 课程分数提高5分

update a

set a.SCORE = b.SCORE+5

from Studentresult a

join Studentresult b

on a.SID = b.SID

and a.CID = b.CID

and a.EXAMDATE = b.EXAMDATE

where a.SID = 2017001

and a.CID = (

select

CID

from Course

where

CNAME = '数据库原理与应用'

);

end;



 

begin -- ( 5 ) 查询学号为2017003的大学英语成绩

select

SCORE

from Studentresult

where

SID = 2017003

and CID = (

select

CID

from Course

where

CNAME = '大学英语'

);

end;


 

begin -- ( 6 ) 查询家是石家庄的学生的姓名和邮箱

select

SNAME,

EMAIL

from Student

where

ADDRESS like '%石家庄%'

end;



 

begin -- ( 7 ) 查询12月份过生日的学生信息

select

*

from Student

where

DATEPART(MM,BORNDATE) = '5'

end;



 

begin --( 8 ) 查询 《 Java语言程序设计 》 的学时和学分

select

HOURS,

CREDIT

from Course

where

CNAME = 'Java语言程序设计'

end;



 

begin --( 9 ) 查询考前五名的学生的学号

select

distinct top 5 *

from Studentresult

order by

SCORE desc

end;



 

begin -- ( 10 ) 查询李帅的学生的邮箱的域名

select

RIGHT(EMAIL, LEN(EMAIL) - CHARINDEX('@', EMAIL)) Domain

from Student

where

SNAME = '李帅'

end;



 

begin --( 11 ) 按照课程编号和成绩排列Studentresult表

select

*

from Studentresult

order by

CID,

SCORE

end;



 

begin -- ( 12 ) 计算出生日期是1998 -10 -12 的学生的年龄

select

datediff(year, '1998-10-12', getdate()) as '年龄'

end;



 

begin -- ( 13 ) 将Student表中的BORNDATE改为年龄

select datediff(year, b.BORNDATE, getdate()) as 'age'

from Student a

join Student b

on a.SID=b.SID

end;


 

begin -- ( 14 ) 使用T - SQL 语句查30天以前的日期

select

convert(char, dateadd(DD, -30, getdate()))

end;