本次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 |
默认值:石家庄 |
|
邮箱 |
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 |
|
2017001 |
王楠 |
女 |
1997-5-4 |
软件1 |
石家庄 |
|
2017002 |
张丽 |
女 |
1996-1-14 |
软件2 |
北京 |
|
2017003 |
李帅 |
男 |
1997-7-12 |
软件1 |
济南 |
|
2017004 |
刘楠娜 |
女 |
1998-3-9 |
软件3 |
武汉 |
|
2017005 |
周继伦 |
男 |
1996-12-4 |
软件1 |
长沙 |
|
2017006 |
郑杰 |
男 |
1997-7-22 |
软件2 |
广州 |
|
2017007 |
李静 |
女 |
1996-8-23 |
软件3 |
贵州 |
表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学生的住址为“湖北省武汉市中山路612号1-2-1002”
(2)修改《高等数学》的学时为72
(3)将2018年6月22日考试的《数据库原理与应用》课程分数低于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',
'石家庄',
);
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',
'济南',
);
INSERT INTO Student(SID, SNAME, GENDER, BORNDATE, CLASS, ADDRESS, EMAIL)
VALUES
(
2017004,
'刘楠娜',
'女',
'1998-3-9',
'软件3',
'武汉',
);
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',
'广州',
);
INSERT INTO Student(SID, SNAME, GENDER, BORNDATE, CLASS, ADDRESS, EMAIL)
VALUES
(
2017007,
'李静',
'女',
'1996-8-23',
'软件3',
'贵州',
);
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,
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;