使用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. vue实例以及生命周期

    1.Vue实例API 1.构造器(实例化) var vm = new Vue({ //选项 |-------DOM(3) |   |-------el (提供一个在页面上已存在的 DOM 元素作为 V ...

  2. win7 32位解决matlab out of memory问题

    由于最近在做DL,matlab load数据时由于内存只有2G,会出现out of memory的情况,网上百度了下都是在xp下打开3GB来解决该问题,但是由于win7没有boot.ini无法在win ...

  3. uva11149

    Consider an n-by-n matrix A. We define Ak = A ∗ A ∗ . . . ∗ A (k times). Here, ∗ denotes the usual m ...

  4. IIs+php 最精简的环境配置

    一,安装IIS 1,打开控制面板->程序和功能->打开或关闭windows功能->Internet 信息服务 1>选 中web管理工具 2>选 中万维网服务 1>应 ...

  5. jQuery的each内部的break,continue

    // break, continue在each等迭代器里都不可用 // return false = break // return true = continue function isClicke ...

  6. 【Learning】多项式的一些东西

    FFT 坑 NTT 将\(FFT\)中的单位复数根改成原根即可. 卡常版NTT模版 struct Mul { int Len; int wn[N], Lim; int rev[N]; inline v ...

  7. JavaScript--DOM节点属性

    节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...

  8. 全面学习ORACLE Scheduler特性(2)管理jobs

    1.2  管理Jobs 1.2.1  启用Jobs 前面创建JOB时,由于未显式的指定ENABLED参数,因此即使指定了START_DATE,不过默认情况下JOB不会自动执行.对于这种情况,DBMS_ ...

  9. 295 Find Median from Data Stream 数据流的中位数

    中位数是排序后列表的中间值.如果列表的大小是偶数,则没有中间值,此时中位数是中间两个数的平均值.示例:[2,3,4] , 中位数是 3[2,3], 中位数是 (2 + 3) / 2 = 2.5设计一个 ...

  10. Focusky的下载、安装、注册和使用(动画演示大师)

    一.下载 二.安装 三.使用 四.注册 五.附录 非常感谢Focusky官方团队开发并提供实用的这么一款软件!!! 一.下载 http://www.focusky.com.cn/ 二.安装 三.使用 ...