使用T-SQL实现以下要求:

要求如下:

1,添加数据库:MySchool

2,添加学生基础表:Student

3,添加学生成绩表:ScoreInfo

4,两张表结构分别如下

Student表结构:(20分)

变量名

数据类型

是否为空

描 述

StuID

int

主键,标识列,学号

StuName

nvarchar(20)

学生姓名

StuSex

nchar(1)

性别(必须是男或女)

StuGrade

int

年级编号

StuEmail

nvarchar(20)

邮箱

StuAddress

nvarchar(20)

地址(默认“四川”)

ScoreInfo表结构(20分)

变量名

数据类型

是否为空

描 述

ID

int

StudentInfo的表外键ID,学号

ScoreInfo

float

分数(分数必须:分数 大于-1并且小于150)

SubjectId

int

科目编号

ExamDate

datetime

考试时间

5,根据表结构添加关系和约束。(20分)

6,使用T-SQL添加表数据(每张表数据3行以上,10分

StudentInfo表数据

ID

Name

SexID

Grade

Email

Address

1

张三

1

zhangsan@qq.com

南京

2

王五

2

wangwu@qq.com

深圳

3

张丽

1

zhangli@qq.com

四川

Score表数据

ID

ScoreInfo

SubjectId

ExamDate

1

65

1

2018-7-21

1

75.5

2

2018-7-21

2

87

1

2018-7-21

2

46

2

2018-7-21

3

53.6

1

2018-7-21

7,使用T-SQL查询出学员“张三“所有科目成绩。(15分)

8,使用T-SQL查询出所有大于60分以上学员成绩。(15分)

代码如下:

use master
go
--判断数据库是否存在,有则删除
if (exists (select * from sys.databases where name = 'MySchol'))
    drop database MySchol
--创建数据库
create database MySchol
on(
    name = 'MySchol',
    filename = 'S:\SQL\MySchol.mdf'
)
log on(
    name = 'testHome_log',
    filename = 'S:\SQL\MySchol_log.ldf'
)
go

-- 使用(切换到数据库)数据库
use MySchol
--判断数据库表是否存在,有则删除
if (exists (select * from sys.objects where name = 'Student'))
    drop database Student
--创建表Student
create table Student(
    StuID int not null,
    StuName nvarchar(20) not null,
    StuSex nchar(1) not null,
    StuGrade int not null,
    StuEmail nvarchar(20) null,
		StuAddress nvarchar(20) null DEFAULT '四川'
)

if (exists (select * from sys.objects where name = 'ScoreInfo'))
    drop database ScoreInfo

create table ScoreInfo(
    ID int not null,
    ScoreInfo float null,
    SubjectId int not null,
    ExamDate datetime not null,
    StuEmail nvarchar(20) null,
)
go

--添加Student表主键
alter table Student
add constraint pk_id primary key(StuID);
--性别约束
alter table Student
add constraint xingbie check(StuSex='男' or StuSex='女');
--添加外键约束
alter table ScoreInfo
add constraint fk_cid foreign key (ID) references Student(StuID)
--分数约束
alter table ScoreInfo
add constraint fenshu check(ScoreInfo > -1 AND ScoreInfo < 150);

--Student插入数据
insert into Student values(1, '张三', '男', 1, 'zhangsan@qq.com', '南京');
insert into Student values(2, '王五', '男', 2, 'wangwu@qq.com', '深圳');
insert into Student values(3, '张丽', '女', 1, 'zhangli@qq.com', '四川');
insert into ScoreInfo values(1, 65, 1, '2018-7-21',null);
insert into ScoreInfo values(1, 75.5, 2, '2018-7-21',null);
insert into ScoreInfo values(2, 87, 1, '2018-7-21',null);
insert into ScoreInfo values(2, 46, 2, '2018-7-21',null);
insert into ScoreInfo values(3, 53.6, 1, '2018-7-21',null);

--查询张三成绩
select ScoreInfo as '张三' from ScoreInfo;
--查询所有科目都合格的学生--由于刚学不久,只能凑合实现
SELECT StuName FROM Student WHERE StuID IN
(SELECT COUNT(*) as '合格科目数' FROM ScoreInfo WHERE ScoreInfo > 60 GROUP BY ID HAVING ID>1)

如有不对的地方,欢迎指出!

如有更好的实现方法,欢迎分享!

SQL Server 机考,用T-SQL编写 简单实例的更多相关文章

  1. 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。 注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。

    如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...

  2. SQL Server数据库性能优化之SQL语句篇【转】

    SQL Server数据库性能优化之SQL语句篇http://www.blogjava.net/allen-zhe/archive/2010/07/23/326927.html 近期项目需要, 做了一 ...

  3. SQL Server 2008 R2升级到SQL Server 2012 SP1

    1.建议对生产环境对的数据库升级之前做好备份,以防不测. 2.从SQL Server 2008 R2 升级到SQL Server 2012 SP1,需要先安装SQL Server 2008 R2 的S ...

  4. 安装 SQL Server 2008 和管理工具 SQL Server 2008 management studio 及相关问题解决

    Sql Server 2008 问题小总结 http://www.lihengyu.com/blog/4877.html 安装 SQL Server 2008 和管理工具 SQL Server 200 ...

  5. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  6. windows10下sql server 2005 无法运行或sql server服务无法启动的完美解决方案

    问题:升级windows10后,sql server 2005 无法运行或sql server服务&sql server agent无法启动,如下图,怎么办? 一般情况下,我们第一反应就是sq ...

  7. SQL Server恢复软件 Stellar Phoenix sql recovery

    SQL Server恢复软件 Stellar Phoenix sql recovery http://www.stellarinfo.com/ http://www.stellarinfo.com/ ...

  8. SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑

    本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症.可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? ...

  9. 一名小小的SQL Server DBA想谈一下SQL Server的能力

    一名小小的SQL Server DBA想谈一下SQL Server的能力 百度上暂时还没有搜索到相关的个人写的比较有价值的文章,至少在中文网络的世界里面没有 但是在微软的网站有这样一篇文章:<比 ...

随机推荐

  1. xUnit随笔

    XUnit入门 1.如果之前安装了xUnit.net Visual Studio Runner扩展包,通过"工具"菜单下的"扩展和更新"先将该扩展包卸载. 2. ...

  2. [POI2012]FES-Festival

    https://www.zybuluo.com/ysner/note/1252538 题面 有一个数列\(\{a\}\).现给定多组限制,限制分成\(2\)类,第一类是\(a_x+1=a_y\),有\ ...

  3. linux下的C语言开发 进程创建 延伸的几个例子

    在Linux下面,创建进程是一件十分有意思的事情.我们都知道,进程是操作系统下面享有资源的基本单位.那么,在linux下面应该怎么创建进程呢?其实非常简单,一个fork函数就可以搞定了.但是,我们需要 ...

  4. bzoj 1622: [Usaco2008 Open]Word Power 名字的能量【模拟】

    模拟即可,注意包含可以是不连续的 方便起见读入的时候全转成小写 #include<iostream> #include<cstdio> using namespace std; ...

  5. Java并发编程系列之CyclicBarrier详解

    简介 jdk原文 A synchronization aid that allows a set of threads to all wait for each other to reach a co ...

  6. ACM_错排(递推dp)

    RPG的错排 Time Limit: 2000/1000ms (Java/Others) Problem Description: 今年暑假GOJ集训队第一次组成女生队,其中有一队叫RPG,但做为集训 ...

  7. fiddler不同代理模式的区别

    Fiddler有不同的代理模式,分为以下两种: 流模式(Streaming)和缓冲模式(Buffering). 流模式可以理解为一种实时通信的模式,有请求就有返回,也就是实时返回. 缓冲模式是等所有请 ...

  8. Spring.Net学习笔记(5)-集合注入

    一.开发环境 系统:Win10 编译器:VS2013 .net版本:.net framework4.5 二.涉及程序集 Spring.Core.dll 1.3.1 Common.Loggin.dll ...

  9. Java 遍历Map对象的4种方法

    http://blog.csdn.net/tjcyjd/article/details/11111401

  10. LN : leetcode 5 Longest Palindromic Substring

    lc 5 Longest Palindromic Substring 5 Longest Palindromic Substring Given a string s, find the longes ...