SQL Server 机考,用T-SQL编写 简单实例
使用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  | 
 | 
 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编写 简单实例的更多相关文章
- 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。  注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。
		
如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...
 - SQL Server数据库性能优化之SQL语句篇【转】
		
SQL Server数据库性能优化之SQL语句篇http://www.blogjava.net/allen-zhe/archive/2010/07/23/326927.html 近期项目需要, 做了一 ...
 - SQL Server 2008 R2升级到SQL Server 2012 SP1
		
1.建议对生产环境对的数据库升级之前做好备份,以防不测. 2.从SQL Server 2008 R2 升级到SQL Server 2012 SP1,需要先安装SQL Server 2008 R2 的S ...
 - 安装 SQL Server 2008 和管理工具 SQL Server 2008 management studio 及相关问题解决
		
Sql Server 2008 问题小总结 http://www.lihengyu.com/blog/4877.html 安装 SQL Server 2008 和管理工具 SQL Server 200 ...
 - c#Winform程序调用app.config文件配置数据库连接字符串  SQL Server文章目录   浅谈SQL Server中统计对于查询的影响   有关索引的DMV  SQL Server中的执行引擎入门 【译】表变量和临时表的比较  对于表列数据类型选择的一点思考  SQL Server复制入门(一)----复制简介  操作系统中的进程与线程
		
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
 - windows10下sql server 2005 无法运行或sql server服务无法启动的完美解决方案
		
问题:升级windows10后,sql server 2005 无法运行或sql server服务&sql server agent无法启动,如下图,怎么办? 一般情况下,我们第一反应就是sq ...
 - SQL Server恢复软件 Stellar Phoenix sql recovery
		
SQL Server恢复软件 Stellar Phoenix sql recovery http://www.stellarinfo.com/ http://www.stellarinfo.com/ ...
 - SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑
		
本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症.可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? ...
 - 一名小小的SQL Server DBA想谈一下SQL Server的能力
		
一名小小的SQL Server DBA想谈一下SQL Server的能力 百度上暂时还没有搜索到相关的个人写的比较有价值的文章,至少在中文网络的世界里面没有 但是在微软的网站有这样一篇文章:<比 ...
 
随机推荐
- vue实例以及生命周期
			
1.Vue实例API 1.构造器(实例化) var vm = new Vue({ //选项 |-------DOM(3) | |-------el (提供一个在页面上已存在的 DOM 元素作为 V ...
 - win7 32位解决matlab out of memory问题
			
由于最近在做DL,matlab load数据时由于内存只有2G,会出现out of memory的情况,网上百度了下都是在xp下打开3GB来解决该问题,但是由于win7没有boot.ini无法在win ...
 - uva11149
			
Consider an n-by-n matrix A. We define Ak = A ∗ A ∗ . . . ∗ A (k times). Here, ∗ denotes the usual m ...
 - IIs+php 最精简的环境配置
			
一,安装IIS 1,打开控制面板->程序和功能->打开或关闭windows功能->Internet 信息服务 1>选 中web管理工具 2>选 中万维网服务 1>应 ...
 - jQuery的each内部的break,continue
			
// break, continue在each等迭代器里都不可用 // return false = break // return true = continue function isClicke ...
 - 【Learning】多项式的一些东西
			
FFT 坑 NTT 将\(FFT\)中的单位复数根改成原根即可. 卡常版NTT模版 struct Mul { int Len; int wn[N], Lim; int rev[N]; inline v ...
 - JavaScript--DOM节点属性
			
节点属性 在文档对象模型 (DOM) 中,每个节点都是一个对象.DOM 节点有三个重要的属性 : 1. nodeName : 节点的名称 2. nodeValue :节点的值 3. nodeType ...
 - 全面学习ORACLE Scheduler特性(2)管理jobs
			
1.2 管理Jobs 1.2.1 启用Jobs 前面创建JOB时,由于未显式的指定ENABLED参数,因此即使指定了START_DATE,不过默认情况下JOB不会自动执行.对于这种情况,DBMS_ ...
 - 295 Find Median from Data Stream 数据流的中位数
			
中位数是排序后列表的中间值.如果列表的大小是偶数,则没有中间值,此时中位数是中间两个数的平均值.示例:[2,3,4] , 中位数是 3[2,3], 中位数是 (2 + 3) / 2 = 2.5设计一个 ...
 - Focusky的下载、安装、注册和使用(动画演示大师)
			
一.下载 二.安装 三.使用 四.注册 五.附录 非常感谢Focusky官方团队开发并提供实用的这么一款软件!!! 一.下载 http://www.focusky.com.cn/ 二.安装 三.使用 ...