SQL常考笔试题,数据库基本知识

数据库也是计量机类笔试面试中不可制止会遇上的考试场点,越发是银行和1些古板软件类集团。那里依照整理的资料,对数据库的相干文化也做个小结吧。希望学过数据库但长日子不用的同班依据这个文化能够纪念和重10,没学过的同桌能控制1些数据库的基础知识。

数据库也是测算机类笔试面试中不可幸免会遇上的考试场点,越发是银行和一些守旧软件类公司。那里依照整理的资料,对数据库的相干文化也做个总计吧。希望学过数据库但长日子不用的校友依据那些文化能够回想和重十,没学过的同桌能左右1些数据库的基础知识。

(一)

第一节

第一节

 

 1、相关概念    

  一.
Data:数据,是数据库中存款和储蓄的着力对象,是讲述事物的符号记录。

     
 二.
Database:数据库,是漫长储存在总计机内、有组织的、可共享的大气数量的集聚

     
 3.
DBMS:数据库管理种类,是坐落用户与操作系统之间的一层多少管理软件,用于科学地公司、存款和储蓄和管理数据、高效地获取和保险数据。

     
 肆.
DBS:数据库系统,指在电脑种类中引入数据库后的系统,1般由数据库、数据库管理种类、应用种类、数据库管理员(DBA)构成。

     
 5.
数据模型:是用来抽象、表示和拍卖具体世界中的数据和音讯的工具,是对切实世界的模拟,是数据库系统的基本和底蕴;其重组成分有数据结构、数据操作和完整性约束

     
 陆.
概念模型:也称消息模型,是按用户的观点来对数码和新闻建立模型,首要用以数据库设计。

     
 7. 逻辑模型:是按电脑系列的意见对数据建模,用于DBMS实现。

     
 捌.
物理模型:是对数码最底部的空洞,描述数据在系统之中的代表方法和存取方法,在磁盘或磁带上的仓库储存格局和存取方法,是面向总括机系列的。

     
 9.
实体和品质:客观存在并可相互区分的东西称为实体。实体所具有的某一特点称为属性。

     
 10.E-R图:即实体-关系图,用于描述现实世界的事物及其互相关系,是数据库概念模型设计的重中之重工具。

     
 1一.涉及格局:从用户意见看,关系形式是由一组关系构成,各类关系的数据结构是一张规范化的贰维表。

     
 12.型/值:型是对某1类数据的构造和总体性的证实;值是型的一个实际赋值,是型的实例。

     
 一叁.数据库情势:是对数据库中全方位数据的逻辑结构(数据项的名字、类型、取值范围等)和特点(数据里面包车型客车关系以及数额有关的安全性、完整性供给)的描述。

     
 1四.数据库的三级系统结构:外情势、情势和内形式

     
 1五.数据库内方式:又称之为储存格局,是对数据库物理构造和储存格局的描述,是数额在数据库内部的意味方法。一个数据库唯有1个内形式

     
 16.数据库外形式:又称为子形式或用户方式,它是数据库用户能够看见和利用的有的数据的逻辑结构和特色的描述,是数据库用户的数码视图。日常是情势的子集。二个数据库可有五个外形式

     
 1七.数据库的二级影象:外格局/格局印象、情势/内方式印象。

     
1、相关概念

壹.写出一条Sql语句:取出表A中第二1到第陆0笔录(SQLServer,
以活动拉长的ID作为主键,  注意:ID只怕不是接二连三的。)

select top 10 * from A where id not in (select top 30 id from A)
解2: select top 10 * from A where id > (selectmax(id) from (select
top 30 id from A )as A)

 贰、重点知识点

  一. 数据库系统由数据库、数据库管理种类、应用类别和数据库管理员构成。

     
 二. 数据模型的构成元素是:数据结构、数据操作、完整性约束规范。

     
 三. 实体型之间的联络分为壹对1、壹对多和多对多三连串型。

     
 肆. 广阔的数据模型包含:波及、层次、网状、面向对象、对象关联映射等几种。

     
 伍. 关系模型的完整性约束蕴涵:实体完整性、参照完整性和用户定义完整性。

      陆. 演说数据库三级形式、二级映象的意思及效果。

     
  数据库三级格局反映的是数量的多个抽象层次: 情势是对数据库中整整数据的逻辑结构和特色的叙述内情势又称之为存储格局,是对数据库物理结构和仓库储存格局的叙说。外模式又称为子形式或用户格局,是对特定数据库用户相关的有的数据的逻辑结构和特色的叙述

     
  数据库三级格局通过二级映象在 DBMS 内部贯彻那七个抽象层次的关联和转移。外形式面向应用程序, 通过外形式/方式映象与逻辑情势建立联系, 完成多少的逻辑独立性。 形式/内情势映象建立情势与内形式之间的一对壹映射, 实现数据的大体独立性

       一.
Data:数据,是数据库中储存的中坚目的,是描述事物的标志记录。
       2.
Database:数据库,是由来已久储存在总括机内、有协会的、可共享的恢宏数据的聚众。
       三.
DBMS:数据库管理体系,是放在用户与操作系统里头的一层数据管理软件,用于科学地协会、存款和储蓄和保管数据、高效地赢得和保安数据。
       4.
DBS:数据库系统,指在微型计算机类别中引入数据库后的体系,1般由数据库、数据库管理种类、应用系统、数据库管理员(DBA)构成。
       5.
数据模型:是用来抽象、表示和处理具体世界中的数据和消息的工具,是对具体世界的一成不变,是数据库系统的中央和基础;其构成成分有数据结构、数据操作和完整性约束。
       陆.
概念模型:也称音信模型,是按用户的见解来对数据和音讯建立模型,重要用来数据库设计。
       7.
逻辑模型:是按电脑类别的眼光对数码建立模型,用于DBMS达成。
       八.
物理模型:是对数据最底部的肤浅,描述数据在系统里头的意味方法和存取方法,在磁盘或磁带上的存款和储蓄方式和存取方法,是面向总结机类其余。
       九.
实体和性格:客观存在并可相互区分的东西称为实体。实体所怀有的某一风味称为属性。
     
 10.E-帕杰罗图:即实体-关系图,用于描述现实世界的东西及其互相关系,是数据库概念模型设计的重大工具。
     
 1一.关联格局:从用户意见看,关系方式是由1组关系结合,各种关系的数据结构是一张规范化的2维表。
     
 1二.型/值:型是对某一类数据的组织和天性的求证;值是型的3个切实可行赋值,是型的实例。
     
 壹三.数据库情势:是对数据库中总体数据的逻辑结构(数据项的名字、类型、取值范围等)和性情(数据里面包车型地铁维系以及数据有关的安全性、完整性须要)的叙述。
     
 1四.数据库的三级系统结构:外形式、方式和内形式。
     
 一五.数据库内形式:又叫做存款和储蓄格局,是对数据库物理构造和储存方式的讲述,是数码在数据库内部的代表方法。二个数据库唯有一个内情势。
     
 1陆.数据库外情势:又称为子格局或用户情势,它是数据库用户能够看见和利用的有的数据的逻辑结构和特色的描述,是数据库用户的多少视图。通常是方式的子集。多个数据库可有多个外方式。
     
 一7.数据库的二级印象:外情势/情势印象、方式/内形式印象。

 

第二节

     

2. 写sql语句完结下列查询
(表)t
a b(列)
1 2
1 3
1 4
2 1
2 2
3 1
4 1
5 3
5 2
查询结果供给
a b
1 2
2 1
3 1
4 1
5 2

一、相关概念

     
 1. 主键: 可以唯1地方统一标准识五个元组的个性或属性组称为关系的键或候选键。 若贰个涉及有八个候选键则可选其一作为主键(Primary key)。

     
 2. 外键:假设贰个事关的二个或壹组属性引用(参照)了另二个关联的主键,则称那几个或那组属性为外码或外键(Foreign key)。

     
 三. 关周详据库: 依照关系模型建立的数据库称为关全面据库。 它是在有个别应用领域的具有涉及的汇合

     
 4. 关联情势: 简单地说,关系形式正是对关乎的型的概念, 包含涉嫌的属性构成、各属性的数据类型、 属性间的注重性、 元组语义及完整性约束等。 波及是关乎形式在某壹天天的动静或内容, 关系模型是型, 关系是值, 关系模型是静态的、 稳定的, 而关系是动态的、随时间不断变动的,因为涉嫌操作在不停地立异着数据库中的数据

     
 五.
实体完整性:用于标识实体的唯一性。它须要主题关系供给求有二个可见标识元组唯一性的主键,主键无法为空,也不行取重复值。

     
 陆. 参照完整性: 用于爱抚实体之间的引用关系。 它需要一个事关的外键要么为空, 要么取与被参照关系对应的主键值,即外键值必须是主键中已存在的值

     
 七. 用户定义的完整性:正是本着某一现实运用的数码必须知足的语义约束。包蕴非空、 唯1和布尔条件约束三种境况。

 贰、重点知识点

 

二、首要知识点

     
1. 关全面据库语言分为涉及代数、关系演算和结构化查询语言叁大类。

     
贰. 关乎的三种基本操作是选择、投影、并、差、笛卡尔积

     
三.关联格局是对事关的描述,伍元组方式化表示为:Sportage(U,D,DOM,F),在那之中

     
      R —— 关系名

     
      U —— 组成该关系的属性名集合

     
      D —— 属性组 U 中质量所来自的域

     
      DOM —— 属性向域的镜头集合

     
      F —— 属性间的数码注重关系集合

     
肆.笛Carl乘积,选用和影子运算如下

图片 1

     
 一. 数据库系统由数据库、数据库管理体系、应用连串数据库管理员构成。

三.1组通话记录(总共500万条):
ID 主叫号码 被叫号码 通话初步时间   通话甘休时间           通话时间长度
1  98290000 0215466546656 2007-02-01 09:49:53.000 2007-02-01
09:50:16.00023
2  98290000 021546654666  2007-02-01 09:50:29.000 2007-02-0109:50:41.000
12
3  98290000 021546654666  2007-02-01 09:50:58.000 2007-02-0109:51:12.000
14
4  68290900 0755133329866 2007-02-01 10:04:31.000 2007-02-01
10:07:13.000162
5  78290000 0755255708638 2007-02-01 10:48:26.000 2007-02-01
10:49:23.00057
6  78290000 0755821119109 2007-02-01 10:49:39.000 2007-02-01
10:52:55.000196
7  78290000 035730928370  2007-02-01 11:30:45.000 2007-02-0111:31:58.000
73
8  78290000 0871138889904 2007-02-01 11:33:47.000 2007-02-01
11:35:00.00073
9  68290000 035730928379  2007-02-01 11:52:20.000 2007-02-0111:54:56.000
156
10 68290000 0298521811199 2007-02-01 12:44:45.000 2007-02-01
12:45:04.000 19
求在那之中同三个编号的五回打电话之间距离大于十秒的通话记录ID
例如:6,七,八,9,10条记下均适合。

第三节

     
 2. 数据模型的结缘要素是:数据结构、数据操作、完整性约束原则

 

1、相关概念

     
 1. SQL:结构化查询语言的简称, 是关周到据库的正儿8经语言。SQL 是1种通用的、 功效极强的关全面据库语言, 是对关周密据存取的标准接口, 也是见仁见智数据库系统里头互操作的根底。集数据查询、数据操作、数据定义、和数码控制功能于壹体。

     
 二. 数码定义:数据定义功用包罗形式定义、表定义、视图和目录的定义。

     
 三. 嵌套查询:指将叁个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的准绳中的查询。

     
 三. 实体型之间的调换分为一对一、一对多多对多三种档次。

 

二、主要知识点

     
 一. SQL 数据定义语句的操作对象有:情势、表、视图和目录。

     
 2. SQL 数据定义语句的指令动词是:CREATE、DROP 和 ALTER。

     
 3. QashqaiDBMS 中索引一般接纳 B+树或 HASH 来实现

     
 4. 索引能够分为唯一索引、非唯一索引和聚簇索引二种档次。

图片 2

  6.SQL 创立表语句的相似格式为

     
        CREATE TABLE <表名>

     
      
 ( <列名> <数据类型>[ <列级完整性约束> ]

     
      
 [,<列名> <数据类型>[ <列级完整性约束>] ] …

     
        [,<表级完整性约束> ] ) ;

个中<数据类型>可以是数据库系统援助的各个数据类型,包含长度和精度。 

   
列级完整性约束为针对单个列(本列)的完整性约束, 包涵 P瑞虎IMATucsonY KEY、 REFERENCES表名(列名)、UNIQUE、NOT NULL 等。 

   
表级完整性约束能够是依照表中多列的束缚,包涵 PENVISIONIMA普拉多Y KEY ( 列名列表) 、FOREIGN KEY REFERENCES 表名(列名) 等。

     
 七. SQL 成立索引语句的相似格式为

     
        CREATE [UNIQUE] [CLUSTER] INDEX <索引名>

     
        ON <表名> (<列名列表> ) ;

其间UNIQUE:表示创设唯一索引,缺省为非唯一索引;

     
CLUSTERAV4:表示创立聚簇索引,缺省为非聚簇索引;

     
<列名列表>:一个或逗号分隔的多少个列名,每一个列名后可跟 ASC 或 DESC,表示升/降序,缺省为升序。多列时则按为浩如烟海排序。 
  

   8. SQL 查询语句的形似格式为

     
      
 SELECT [ALL|DISTINCT] <算术表明式列表> FROM <表名或视图名列表>

     
        [ WHERE <条件表明式 壹> ]

     
      
 [ GROUP BY <属性列表 一> [ HAVING <条件表达式 贰 > ] ]

     
        [ OCRUISERDE凯雷德 BY <属性列表 贰> [ ASC|DESC ] ] ;

其中

   
  ALL/DISTINCT: 缺省为 ALL, 即列出全部查询结果记录, 包括重复记录。 DISTINCT则对重复记录只列出一条

   
   算术表明式列表:三个或五个逗号分隔的算术表明式,表明式由常量(包罗数字和字符串)、列名、函数和算术运算符构成。每种表明式后还可跟小名。也可用 *表示查询表中的全数列。

   
  <表名或视图名列表>: 叁个或四个逗号分隔的表或视图名。 表或视图名后可跟外号。

   
  条件表达式 一:包涵关系或逻辑运算符的表明式,代表询问条件。

   
  条件表达式 二:包罗关系或逻辑运算符的表达式,代表分组条件。

   
  <属性列表 一>:二个或逗号分隔的三个列名。

   
  <属性列表 二>: 1个或逗号分隔的三个列名, 每种列名后可跟 ASC 或 DESC, 表示升/降序,缺省为升序。

     
 四. 广阔的数据模型包罗:关联、层次、网状、面向对象、对象关联映射等几种。

 

第四节

     
 5. 关乎模型的完整性约束包罗:实业完整性、参照完整性和用户定义完整性

(二)

1、相关概念和学识

     
 1.触发器是用户定义在基本表上的壹类由事件驱动的非凡进程。由服务器自动激活, 能执行尤其复杂的检查和操作,具有更加精细和越来越强大的数码控制能力。使用 CREATE T凯雷德IGGE普拉多 命令建立触发器。

     
 贰.电脑连串设有技术安全、管理安全和策略法律三类安全性难题。

     
 3. TCSEC/TDI 标准由安全策略、权利、有限帮衬和文档几个方面内容结合。

     
 四. 常用存取控制方法包罗自立存取控制(DAC)和威胁存取控制(MAC)两种。

     
 五. 独立自主存取控制(DAC)的 SQL 语句包含 GRANT 和 REVOKE 三个。 用户权限由数量对象和操作类型两部分组成。

图片 3

     
 陆. 常见SQL 自主权力控制命令和例子。

     
   一) 把对 Student 和 Course 表的一切权力授予全体用户。

     
        GRANT ALL PRIVILIGES ON TABLE Student,Course TO PUBLIC

     
   二) 把对 Student 表的查询权和人名修改权授予用户 U肆。

     
        GRANT SELECT,UPDATE(Sname) ON TABLE Student TO U4 ;

     
   3) 把对 SC 表的插入权限授予 U5 用户,并同意她传播该权限。

     
        GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION ;

     
   四) 把用户 U五 对 SC 表的 INSEXC90T
权限收回,同时撤废被他传播出去的授权。

     
        REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;

     
   5) 创造1个剧中人物 大切诺基壹,并使其对 Student
表具有数据查询和革新权限。

     
        CREATE ROLE R1;

     
        GRANT SELECT,UPDATE ON TABLE Student TO R1;

     
   陆) 对修改 Student 表结构的操作进行审计。

     
        AUDIT ALTER ON Student ;

 
    陆. 演讲数据库三级情势、二级映象的含义及效益。
        数据库三级格局反映的是数码的八个抽象层次: 形式是对数据库中任何数据的逻辑结构和本性的讲述。内格局又称作存款和储蓄方式,是对数据库物理构造和存款和储蓄格局的叙述。外格局又称为子方式或用户情势,是对一定数据库用户相关的有的数据的逻辑结构和性情的描述。

 

数据库知识总计(二)范式

     
  数据库三级情势通过二级映象在 DBMS 内部贯彻那多个抽象层次的关联和转换。外方式面向应用程序, 通过外情势/情势映象与逻辑方式建立联系, 达成数量的逻辑独立性。 方式/内格局映象建立格局与内形式里面包车型大巴壹对壹映射, 完成数量的情理独立性。

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表

 一、相关概念和知识点

     
 一.数目依赖:反映五个涉及里面属性与天性之间的牢笼关系,是现实世界属性间互相联系的架空,属于数据内在的品质和语义的反映。

     
 贰. 规范化理论:是用来设计非凡的涉嫌形式的宗旨思论。它通过分解关系方式来解除个中不对劲的多寡依赖,以缓解插入格外、删除很是、更新格外和数据冗余难点。

     
 三. 函数注重:简单地说,对于涉嫌格局的七个属性格集X和Y,若X的任一取值能唯1明确Y的值,则称Y函数依赖于X,记作X→Y。

     
 四. 非平日函数信赖:对于涉及方式的八个属天性集X和Y,借使X→Y,但Y!⊆X,则称X→Y为非平日函数信赖;假设X→Y,但Y⊆X,则称X→Y为非常常函数正视。

     
 伍. 截然函数正视:对于涉嫌形式的五个属本性集X和Y,假使X→Y,并且对于X的任何四个真子集X’,都未有X’→Y,则称Y对X完全函数信赖。

     
 陆. 范式:指符合某一种级别的涉嫌情势的会合。在规划关周密据库时,依照知足注重关系须求的不等定义为不相同的范式。

     
 7. 规范化:指将一个低一流范式的涉嫌方式,通过形式分解转换为多少个高拔尖范式的涉及方式的集合的进度。

     
 八. 1NF:若关系形式的保有属性都以不可分的为主数据项,则该关系情势属于一NF。

     
 九. 2NF:壹NF关系格局一旦还要满足每贰个非主属性完全函数信赖于码,则该关系情势属于二NF。

     
 十. 三NF:若关系情势的每几个非主属性既不有的借助于码也不传递依赖于码,则该关系形式属于三NF。

     
 11. BCNF:若叁个涉及方式的每1个决定因素都蕴涵码,则该关系形式属于BCNF。

     
 1二. 数据库设计:是指对于二个加以的应用环境,构造优化的数据库逻辑形式和情理结构,并据此建立数据库及其使用种类,使之力所能及行得通地蕴藏和管制数据,满足各个用户的选取要求,包含消息保管需求和数目操作要求。

     
 一三.
数据库设计的多少个主导步骤:要求分析,概念结构划设想计,逻辑结构划设想计,物理结构划设想计,数据库实施,数据库运转和保卫安全。

     
 1肆. 定义结构划设想计:指将必要分析获得的用户要求抽象为音讯结构即概念模型的长河。也正是透过对用户必要开始展览汇总、归咎与聊以自慰,形成一个独立于实际DBMS的概念模型。

     
 一5. 逻辑结构设计:将概念结构模型(基本E-GL450图)转换为有个别DBMS产品所支撑的数据模型相契合的逻辑结构,并对其进行优化。

     
 1陆. 物理结构划设想计:指为二个加以的逻辑数据模型选取一个最适合应用环境的大体结构的进度。包涵设计数据库的积存结构与存取方法。

     
 一7. 架空:指对实际的人、物、事和概念举行人工处理,抽取所关怀的同台湾特务征,忽略非本质的底细,并把那些特色用各类概念精确地加以描述,这么些概念组成了某种模型。     
 1八. 数据库设计必须根据结构划设想计和作为设计相结合的规范。     
 1九. 数量字典主要包含数据项、数据结构、数据流、数据存款和储蓄和处理进度八个部分。

     
 20. 三种常用抽象方法是分类、聚集和包含。

     
 二一. 片段 E-Evoque图之间的争持主要表今后质量争辩、命名争辩和结构争辨四个方面。     
 2二. 数据库常用的存取方法包括索引方法、聚簇方法和 HASH方法三种。

     
 贰3. 规定数据存放地点和储存结构要求思考的要素至关心器重要有: 存取时间、
存款和储蓄空间利用率和敬服代价等。

第二节

 

二、细说数据库三范式

  贰.壹 第3范式(一NF)无重复的列

       第三范式(1NF)中数量库表的每一列都以不可分割的主导数据项

     
 同一列中不能够有七个值

     
 即实体中的某些属性不能够有多少个值或然不可能有重复的质量

     
 简单来讲,第1范式正是无重复的列。

     
 在别的二个关周密据库中,第2范式(一NF)是对关联方式的为首须要,不满意第二范式(一NF)的数据库就不是关周密据库

  

  贰.二 第1范式(二NF)属性完全重视于主键[废除部分子函数依赖]     

  满意第三范式(二NF)必须先满意第2范式(1NF)。   
 

  第三范式(二NF)要求数据库表中的各类实例或行必须能够被惟一地有别于。     

  为促成区分平时需求为表加上一个列,以存款和储蓄各类实例的独一无贰标识。 

  第3范式(二NF)必要实体的属性完全信赖于主关键字。所谓完全依靠是指不能存在仅凭借主关键字1部分的性质,借使存在,那么那性格格和主关键字的那一有的应该分离出来形成二个新的实体,新实体与原实体之间是一对多的关联。为达成区分平日要求为表加上2个列,以存储种种实例的独步标识。一句话来说,第二范式正是性质完全重视于主键。

  二.三 第1范式(三NF)属性不借助于于其余非主属性[裁撤传递正视]

     
 满意第3范式(三NF)必须先满意第3范式(贰NF)。

     
 一言以蔽之,第一范式(3NF)必要三个数据库表中不含有已在别的表中已涵盖的非主关键字新闻。

     
 例如,存在2个机关消息表,个中每一个机关有机构编号(dept_id)、部门名称、部门简介等音信。那么在的职工新闻表中列出单位编号后就不可能再将单位名称、部门简介等与部门有关的消息再投入职员和工人音信表中。假诺不存在机构音讯表,则基于第二范式(三NF)也应该创设它,不然就会有雅量的数据冗余。简单的讲,第1范式正是性质不依靠于别的非主属性。

  

  二.四具体实例分析

  上边罗列1个学校的学生系统的实例,以示几个范式的运用。

  在规划数据库表结构在此之前,我们先鲜明一下要设计的始末囊括那么些。学号、学生姓名、年龄、性别、课程、课程学分、系别、学科战表,系办地址、系办电话等新闻。为了不难大家如今只思量那一个字段新闻。大家对于这一个消息,说关注的题材有如下多少个地点。

     
 1)学生有那1个基本信息 
     
 二)学生选了那1个课,成绩是怎样 
     
 叁)每种课的学分是有点 
     
 肆)学生属于万分系,系的宗旨音讯是怎么着。

     
 首先第三范式(一NF):数据库表中的字段都是单一属性的,不可再分。那么些单1属性由宗旨类型构成,包括整型、实数、字符型、逻辑型、日期型等。在当下的其余关周到据库管理种类(DBMS)中,不一样意你把数据库表的一列再分为二列或多列,因而做出的都以适合第一范式的数据库。 

     
 大家再思考第三范式,把富有这一个新闻放到三个表中(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科战绩,系办地址、系办电话)上面存在如下的依靠关系。 
     
 一)(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
     
 二) (课程名称) → (学分) 
     
 三)(学号,课程)→ (学科战表)

  根据正视关系咱们能够把选课关系表SelectCourse改为如下八个表: 

     
 学生:Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话); 
     
 课程:Course(课程名称, 学分); 
     
 选课关系:SelectCourse(学号, 课程名称, 成绩)。

     
 事实上,对照第3范式的须要,那正是满意第3范式的数目库表,若不满意第2范式,会发出如下问题:
  (壹)数据冗余: 同壹门课程由n个学生选修,”学分”就再也n-1回;同1个学生选修了m门课程,姓名和年龄就再度了m-1遍。

  (贰)更新至极:一)若调整了某门课程的学分,数据表中全数行的”学分”值都要更新,不然会产出一样门科目学分不相同的情形。 
     
         
 ②)尽管要实行1门新的学科,一时还未有人选修。那样,由于还未曾”学号”关键字,课程名称和学分也无从记录入数据库。

  (3)删除至极 : 倘诺一堆学生早已形成课程的选修,那个选修记录就应当从数据库表中删除。可是,与此同时,课程名称和学分新闻也被删去了。很强烈,那也会导致插入十分。

  大家再思考什么将其改成满足第3范式的数额库表,接着看上边的学生表Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话),关键字为单一关键字”学号”,因为存在如下决定涉及:

     
(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
  然则还留存上面包车型地铁操纵涉及 
     
 (学号) → (所在高校)→(大学地方, 大学电话) 
     
 
即存在非关键字段”高校地点”、”大学电话”对首要字段”学号”的传递函数依赖。 
     
 它也会设有多少冗余、更新相当、插入非常和删除极度的事态(那里就不具体分析了,参照第3范式中的分析)。依据第一范式把学生关系表分为如下五个表就足以满意第二范式了:

     
 学生:(学号, 姓名, 年龄, 性别,系别); 
     
 系别:(系别, 系办地址、系办电话)。

SQL语句总括

壹、相关概念

问题:
一、查询“00一”课程比“00二”课程成绩高的保有学员的学号;
  select a.S# from (select s#,score from SC where C#=’001′)
a,(selects#,score
  from SC where C#=’002′) b
  where a.score>b.score and a.s#=b.s#;
二、查询平均战表超过伍15分的同桌的学号和平均战绩;
    select S#,avg(score)
    from sc
    group by S# having avg(score) >60;
三、查询全体同学的学号、姓名、选课数、总成绩;
  select Student.S#,Student.Sname,count(SC.C#),sum(score)
  from Student left Outer join SC on Student.S#=SC.S#
  group by Student.S#,Sname
4、查询姓“李”的民间兴办教师的个数;
  select count(distinct(Tname))
  from Teacher
  where Tname like ‘李%’;
5、查询没学过“叶平”老师课的同窗的学号、姓名;
    select Student.S#,Student.Sname
    from Student 
    where S# not in (select distinct( SC.S#) fromSC,Course,Teacher
where  SC.C#=Course.C# and Teacher.T#=Course.T#
andTeacher.Tname=’叶平’);
6、查询学过“001”并且也学过数码“00二”课程的同校的学号、姓名;
  select Student.S#,Student.Sname from Student,SC where
Student.S#=SC.S#and SC.C#=’001’and exists( Select * from SC as SC_2
where SC_2.S#=SC.S# andSC_2.C#=’002′);
7、查询学过“叶平”老师所教的全部课的校友的学号、姓名;
  select S#,Sname
  from Student
  where S# in (select S# from SC ,Course ,Teacher where
SC.C#=Course.C#and Teacher.T#=Course.T# and Teacher.Tname=’叶平’
groupby S# having count(SC.C#)=(select count(C#) from Course,Teacher 
whereTeacher.T#=Course.T# and Tname=’叶平’));
八、查询课程编号“00贰”的大成比课程编号“001”课程低的具备同学的学号、姓名;
  Select S#,Sname from (select Student.S#,Student.Sname,score
,(selectscore from SC SC_2 where SC_2.S#=Student.S# and
SC_2.C#=’002′) score2
  from Student,SC where Student.S#=SC.S# and C#=’001′) S_2 where
score2<score;
玖、查询全数科目成绩小于伍拾8分的同室的学号、姓名;
  select S#,Sname
  from Student
  where S# not in (select Student.S# from Student,SC where
S.S#=SC.S# andscore>60);
拾、查询未有学全全部课的校友的学号、姓名;
    select Student.S#,Student.Sname
    from Student,SC
    where Student.S#=SC.S# group by Student.S#,Student.Sname having
count(C#) <(select count(C#) from Course);
1一、查询至少有1门课与学号为“十0一”的同学所学相同的同窗的学号和姓名;
    select S#,Sname from Student,SC where Student.S#=SC.S# andC# in
select C# from SC where S#=’1001′;
12、查询至少学过学号为“00一”同学全体一门课的其余同学学号和人名;
    select distinct SC.S#,Sname
    from Student,SC
    where Student.S#=SC.S# and C# in (select C# from SC
whereS#=’001′);
一叁、把“SC”表中“叶平”老师教的课的大天津转移为此课程的平分战表;
    update SC set score=(select avg(SC_2.score)
    from SC SC_2
    where SC_2.C#=SC.C# ) from Course,Teacher whereCourse.C#=SC.C#
and Course.T#=Teacher.T# and Teacher.Tname=’叶平’);
14、查询和“十0二”号的同窗学习的课程完全相同的别的同学学号和人名;
    select S# from SC where C# in (select C# from SC
whereS#=’1002′)
    group by S# having count(*)=(select count(*) from SC
whereS#=’1002′);
一伍、删除学习“叶平”老师课的SC表记录;
    Delect SC
    from course ,Teacher 
    where Course.C#=SC.C# and Course.T#= Teacher.T# and
Tname=’叶平’;
1陆、向SC表中插入1些记录,这个记录供给符合以下原则:未有上过编号“00三”课程的同校学号、二、
    号课的平分成绩;
    Insert SC select S#,’002′,(Select avg(score)
    from SC where C#=’002′) from Student where S# not in (SelectS#
from SC where C#=’002′);
一柒、按平均成绩从高到低突显全数学员的“数据库”、“企管”、“印度语印尼语”三门的教程成绩,按如下格局显得:
学生ID,,数据库,企管,立陶宛(Lithuania)语,有效课程数,有效平均分
    SELECT S# as 学生ID
        ,(SELECT score FROM SC WHERESC.S#=t.S# AND C#=’004′) AS
数据库
        ,(SELECT score FROM SC WHERESC.S#=t.S# AND C#=’00一’) AS
企管
        ,(SELECT score FROM SC WHERE SC.S#=t.S#AND C#=’006′) AS
英语
        ,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均战绩
    FROM SC AS t
    GROUP BY S#
    ORDER BY avg(t.score) 
1捌、查询各科成绩最高和压低的分:以如下格局展示:课程ID,最高分,最低分
    SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分
    FROM SC L ,SC AS R
    WHERE L.C# = R.C# and
        L.score = (SELECT MAX(IL.score)
                     FROM SC AS IL,Student AS IM
                     WHERE L.C# = IL.C# and IM.S#=IL.S#
                     GROUP BY IL.C#)
        AND
        R.Score = (SELECT MIN(IR.score)
                     FROM SC AS IR
                     WHERE R.C# = IR.C#
                 GROUP BY IR.C#
                   );
1玖、按各科平均成绩从低到高和及格率的百分比从高到低依次
    SELECT t.C# AS
课程号,max(course.Cname)AS课程名,isnull(AVG(score),0) AS 平均战表
        ,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0
END)/COUNT(*) AS 及格百分数
    FROM SC T,Course
    where t.C#=course.C#
    GROUP BY t.C#
    ORDER BY 100 * SUM(CASE WHEN  isnull(score,0)>=60THEN 1 ELSE 0
END)/COUNT(*) DESC
20、查询如下课程平均成绩和及格率的比重(用”一行”展现):
企业管理(00一),马克思(00贰),OO&UML (003),数据库(00四)
    SELECT SUM(CASE WHEN C# =’001′ THEN score ELSE 0END)/SUM(CASE C#
WHEN ’00一’ THEN 一 ELSE 0 END) AS 企管平均分
        ,100 * SUM(CASE WHEN C# = ‘001’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ‘001’ THEN 壹 ELSE 0 END)AS
企管及格百分数
        ,SUM(CASE WHEN C# = ‘002’ THEN scoreELSE 0 END)/SUM(CASE C#
WHEN ’00二’ THEN 一 ELSE 0 END) AS 马克思平均分
        ,100 * SUM(CASE WHEN C# = ‘002’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ‘002’ THEN 一 ELSE 0 END)AS Marx及格百分数
        ,SUM(CASE WHEN C# = ‘003’ THEN scoreELSE 0 END)/SUM(CASE C#
WHEN ‘003’ THEN 1 ELSE 0 END) AS UML平均分
        ,100 * SUM(CASE WHEN C# = ‘003’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ’00三’ THEN 壹 ELSE 0 END)AS UML及格百分数
        ,SUM(CASE WHEN C# = ‘004’ THEN scoreELSE 0 END)/SUM(CASE C#
WHEN ‘004’ THEN 1 ELSE 0 END) AS 数据库平均分
        ,100 * SUM(CASE WHEN C# = ‘004’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ‘004’ THEN 一 ELSE 0 END)AS 数据库及格百分数
  FROM SC

SQL语句中常用关键词及其表达如下:

     
 1. 主键: 能够唯1地方统一标准识三个元组的习性或属性组称为关系的键或候选键。 若三个关系有三个候选键则可选其壹作为主键(Primary key)。

 

1)SELECT

将材质从数据库中的表格内选出,多少个关键字:从 (FROM) 数据库中的表格内选出
(SELECT)。语法为
SELECT
“栏位名” FROM “表格名”。

     
 2. 外键:如果三个事关的3个或一组属性引用(参照)了另2个涉及的主键,则称这几个或那组属性为外码或外键(Foreign key)。

二1、查询不相同老师所教分裂学科平均分从高到低展现
  SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS
课程ID,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩
    FROM SC AS T,Course AS C ,Teacher AS Z
    where T.C#=C.C# and C.T#=Z.T#
  GROUP BY C.C#
  ORDER BY AVG(Score) DESC
22、查询如下课程战表第 3 名到第 6名的学生成绩单:企管(001),马克思(00二),UML
(003),数据库(00四)
    [学生ID],[学员姓名],企管,马克思,UML,数据库,平均战表
    SELECT  DISTINCT top 3
      SC.S# As 学生学号,
        Student.Sname AS 学生姓名 ,
      T一.score AS 企业管理,
      T2.score AS 马克思,
      T3.score AS UML,
      T4.score AS 数据库,
      ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) +
ISNULL(T4.score,0) as 总分
      FROM Student,SC  LEFT JOIN SC AS T1
                     ON SC.S# = T1.S# AND T1.C# = ‘001’
            LEFT JOIN SCAS T2
                     ON SC.S# = T2.S# AND T2.C# = ‘002’
            LEFT JOIN SCAS T3
                     ON SC.S# = T3.S# AND T3.C# = ‘003’
            LEFT JOIN SCAS T4
                     ON SC.S# = T4.S# AND T4.C# = ‘004’
      WHERE student.S#=SC.S# and
      ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) +
ISNULL(T4.score,0)
      NOT IN
      (SELECT
            DISTINCT
            TOP 15 WITHTIES
           ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0)
+ISNULL(T4.score,0)
      FROM sc
            LEFT JOIN scAS T1
                     ON sc.S# = T1.S# AND T1.C# = ‘k1’
            LEFT JOIN scAS T2
                     ON sc.S# = T2.S# AND T2.C# = ‘k2’
            LEFT JOIN scAS T3
                     ON sc.S# = T3.S# AND T3.C# = ‘k3’
            LEFT JOIN scAS T4
                     ON sc.S# = T4.S# AND T4.C# = ‘k4’
      ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0)+
ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);

2)DISTINCT

在上述 SELECT 关键词后增长1个 DISTINCT
就可以去除选取出来的栏位中的重复,从而成就求得那些表格/栏位内有如何差别的值的功力。语法为
SELECT
DISTINCT “栏位名” FROM “表格名”。

     
 3. 关全面据库: 遵照关系模型建立的数据库称为关周到据库。 它是在有些应用领域的装有关乎的聚众。

 

3)WHERE

其一至关主要词能够支持大家采用性地抓资料,而不是全取出来。语法为
SELECT
“栏位名” FROM “表格名” WHERE “条件” 

     
 四. 关联格局: 简单地说,关系情势正是对涉及的型的定义, 包蕴涉嫌的品质构成、各属性的数据类型、 属性间的依靠、 元组语义及完整性约束等。 关系是关乎格局在某壹随时的景况或内容, 关系模型是型, 关系是值, 关系模型是静态的、 稳定的, 而关系是动态的、随时间不断变更的,因为涉嫌操作在频频地翻新着数据库中的数据。

2三、总结列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[
<60]
    SELECT SC.C# as 课程ID, Cname as 课程名称
        ,SUM(CASE WHEN score BETWEEN 85 AND100 THEN 1 ELSE 0 END) AS
[100 – 85]
        ,SUM(CASE WHEN score BETWEEN 70 AND85 THEN 1 ELSE 0 END) AS [85

4)AND OR

上例中的 WHERE
指令能够被用来由表格中有规则地采用资料。那几个条件恐怕是不难的
(像上壹页的例子),也说不定是繁体的。复杂条件是由贰或七个简易标准经过 AND
或是 OTucson 的连天而成。语法为:
SELECT
“栏位名”  FROM “表格名”  WHERE “简单标准”  {[AND|OR]
“简单标准”}+

     
 五. . 实体完整性:用于标识实体的唯一性。它供给基本关系必须求有3个能够标识元组唯1性的主键,主键无法为空,也不行取重复值

  • 70]
            ,SUM(CASE WHEN score BETWEEN 60 AND70 THEN 1 ELSE 0 END) AS [70
  • 60]
            ,SUM(CASE WHEN score < 60 THEN 1ELSE 0 END) AS [60 -]
        FROM SC,Course
        where SC.C#=Course.C#
        GROUP BY SC.C#,Cname;  

5)IN

在 SQL 中,在多个状态下会用到 IN  这些命令;那一页将介绍在那之中之1:与
WHERE
有关的这个景况。在那一个用法下,我们先行已领略至少3个我们必要的值,而笔者辈将那几个知道的值都放入
IN  那个子句。语法为:
SELECT
“栏位名”  FROM “表格名”  WHERE “栏位名” IN (‘值一’, ‘值二’, …)
 

     
 陆. 参照完整性: 用于爱慕实体之间的引用关系。 它供给三个关联的外键要么为空, 要么取与被参照关系对应的主键值,即外键值必须是主键中已存在的值

24、查询学一生均战绩及其排名
      SELECT 一+(SELECT COUNT( distinct 平均成绩)
             FROM (SELECT S#,AVG(score) AS 平均战绩
                     FROM SC
                 GROUP BY S#
                 ) AS T1
            WHERE 平均战表 > T二.平分成绩) as 排名,
      S# as 学生学号,平均成绩
    FROM (SELECT S#,AVG(score) 平均战表
            FROM SC
        GROUP BY S#
        ) AS T2
    O福特ExplorerDE奥迪Q5 BY 平均成绩 desc;
25、查询各科战表前叁名的笔录:(不思考成绩并列情形)
      SELECT t1.S# as 学生ID,t1.C#as 课程ID,Score as 分数
      FROM SC t1
      WHERE score IN (SELECT TOP 3 score
             FROM SC
             WHERE t1.C#= C#
            ORDER BYscore DESC
             )
      ORDER BY t1.C#;
二陆、查询每门科目被选修的学生数
  select c#,count(S#) from sc group by C#;
贰七、查询出只选修了一门科指标任何上学的小孩子的学号和姓名
  select SC.S#,Student.Sname,count(C#) AS 选课数
  from SC ,Student
  where SC.S#=Student.S# group by SC.S# ,Student.Sname having
count(C#)=1;
2八、查询男人、女孩子人数
    Select count(Ssex) as 男士人数 fromStudent group by Ssex having
Ssex=’男’;
    Select count(Ssex) as 女子人数 fromStudent group by Ssex having
Ssex=’女’;
2九、查询姓“张”的学生名单
    SELECT Sname FROM Student WHERE Sname like ‘张%’;
30、查询同名同性学生名单,并计算同有名气的人数
  select Sname,count(*) from Student group by Sname
having count(*)>1;;
3一、1九捌4年降生的学生名单(注:Student表中Sage列的品种是datetime)
    select Sname,  CONVERT(char (11),DATEPART(year,Sage))as age
    from student
    where  CONVERT(char(11),DATEPART(year,Sage))=’1981′;
3二、查询每门科目标平均战绩,结果按平均成绩升序排列,平均成绩1样时,按学科号降序排列
    Select C#,Avg(score) from SC group by C# order byAvg(score),C#
DESC ;
3三、查询平均成绩超过八伍的保有学生的学号、姓名和平均成绩
    select Sname,SC.S# ,avg(score)
    from Student,SC
    where Student.S#=SC.S# group by SC.S#,Snamehaving   
avg(score)>85;
34、查询课程名字为“数据库”,且分数低于60的学习者姓名和分数
    Select Sname,isnull(score,0)
    from Student,SC,Course
    where SC.S#=Student.S# and SC.C#=Course.C#
and Course.Cname=’数据库’and score <60;
35、查询全数学生的选课情况;
    SELECT SC.S#,SC.C#,Sname,Cname
    FROM SC,Student,Course
    where SC.S#=Student.S# and SC.C#=Course.C# ;
36、查询任何一门学科成绩在陆10八分以上的姓名、课程名称和分数;
    SELECT  distinctstudent.S#,student.Sname,SC.C#,SC.score
    FROM student,Sc
    WHERE SC.score>=70 AND SC.S#=student.S#;
三七、查询不比格的学科,并按学科号从大到小排列
    select c# from sc where scor e <60 order by C# ;
38、查询课程编号为003且课程战绩在七十九分以上的上学的小孩子的学号和姓名;
    select SC.S#,Student.Sname from SC,Student whereSC.S#=Student.S#
and Score>80 and C#=’003′;
3九、求选了课程的学员人数
    select count(*) from sc;
40、查询选修“叶平”老师所授课程的学员中,战表最高的上学的小孩子姓名及其成绩
    select Student.Sname,score
    from Student,SC,Course C,Teacher
    where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T#and
Teacher.Tname=’叶平’ and SC.score=(selectmax(score)from SC where
C#=C.C# );
四一、查询种种科目及相应的选修人数
    select count(*) from sc group by C#;
4二、查询差异科目成绩1样的上学的小孩子的学号、课程号、学生成绩
  select distinct  A.S#,B.score from SC A  ,SC B whereA.Score=B.Score
and A.C# <>B.C# ;
四三、查询每门功战绩最佳的前两名
    SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
      FROM SC t1
      WHERE score IN (SELECT TOP 2 score
             FROM SC
             WHERE t1.C#= C#
            ORDER BYscore DESC
             )
      ORDER BY t1.C#;
4四、总括每门课程的上学的儿童选修人数(超过1四个人的教程才总括)。供给输出课程号和选修人数,查询结果按人口降序排列,查询结果按人口降序排列,若人数相同,按学科号升序排列 
    select  C# as 课程号,count(*) as 人数
    from  sc 
    group  by  C#
    order  by  count(*) desc,c# 
四伍、检索至少选修两门课程的学习者学号
    select  S# 
    from  sc 
    group  by  s#
    having  count(*)  >  =  2
四六、查询全体上学的小孩子都选修的教程的课程号和学科名
    select  C#,Cname 
    from  Course 
    where  C#  in  (select  c# from  sc group  by  c#) 
四7、查询没学过“叶平”老师授课的任一门科目标学习者姓名
    select Sname from Student where S# not in (select S#
fromCourse,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C#
and Tname=’叶平’);
48、查询两门以上不如格课程的同桌的学号及其平均战表
    select S#,avg(isnull(score,0)) from SC where S# in (selectS# from
SC where score <60 group by S# having count(*)>2)group by S#;
4玖、检索“004”课程分数小于60,按分数降序排列的同班学号
    select S# from SC where C#=’004’and score <60 order byscore
desc;
50、删除“00二”同学的“00一”课程的大成
delete from Sc where S#=’001’and C#=’001′;

6)BETWEEN

IN 这几个命令能够让我们根据1或数个不一而再(discrete)的值的限定之内抓出资料库中的值,而 BETWEEN
则是让我们得以应用二个范围 (range)
 内抓出资料库中的值,语法为:
SELECT
“栏位名”  FROM “表格名” WHERE “栏位名” BETWEEN ‘值一’ AND
‘值二’ 

     
 七. 用户定义的完整性:正是对准某一实际应用的数量必须知足的语义约束。包括非空、 唯一和布尔条件约束三种情景。

 

7)LIKE

LIKE 是另1个在 WHERE  子句中会用到的吩咐。基本上, LIKE
 能让我们依照1个方式(pattern) 来找出大家要的资料。语法为:
SELECT
“栏位名”  FROM “表格名”  WHERE “栏位名” LIKE {模式} 

      二、首要知识点

(三)

8)ORDER BY

作者们日常索要能够将抓出的素材做三个有系统的呈现。那或者是由小往大
(ascending)  或是由大往小(descending)。在那种意况下,大家就能够接纳OLX570DETiggo BY 那一个命令来达成大家的指标。语法为:
SELECT
“栏位名”  FROM “表格名 [WHERE “条件”] ORDER BY “栏位名” [ASC,
DESC] 

      一. 关全面据库语言分为关系代数、关系演算和结构化查询语言3大类。

 

9)函数

函数允许我们能够对那几个数字的型态存在的行照旧列做运算,包罗 AVG
(平均)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM
(总合)。语法为:
SELECT
“函数名”(“栏位名”) FROM “表格名”  

      2. 提到的 伍 种基本操作是选项、投影、并、差、笛Carl积。

难点讲述:
宗旨用到下边多个事关表:
CARD     借书卡。   CNO 卡号,NAME  姓名,CLASS 班级
BOOKS    图书。     BNO书号,BNAME 书名,AUTHO昂科拉 小编,P福睿斯ICE
单价,QUANTITY 仓库储存册数
BOXC60ROW   借书记录。 CNO 借书卡号,BNO 书号,奥迪Q3DATE 还书日期
备注:限定每人每一种书只可以借一本;仓库储存册数随借书、还书而更改。
渴求落实如下一四个处理:
  壹.
写出建立BORubiconROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。
  二. 找出借书当先5本的读者,输出借书卡号及所借图书册数。
  3. 查询借阅了”水浒”一书的读者,输出姓名及班级。
  4. 查询过期未还图书,输出借阅者(卡号)、书号及还书日期。
  五. 查询书名包罗”互联网”关键词的书本,输出书号、书名、作者。
  陆. 查询现有图书中价格最高的书本,输出书名及小编。
  7.
询问当前借了”总结方法”但未有借”总括办法习题集”的读者,输出其借书卡号,并按卡号降序排序输出。
  8. 将”C01″班同学所借图书的还期都延长15日。
  9. 从BOOKS表中删去当前无人借阅的书籍记录。
  十.如若常常按书名查询图书音讯,请建立适用的目录。
 
1壹.在BOOdysseyROW表上树立2个触发器,完毕如下效果:倘诺读者借阅的书名是”数据库技术及使用”,就将该读者的借阅记录保留在BO奥德赛ROW_SAVE表中(注ORROW_SAVE表结构同BO奥迪Q7ROW表)。
 
1二.起家三个视图,展现”力0一”班学员的借书音讯(只需要出示姓名和书名)。
 
一三.查询当前同时借有”总结办法”和”组合数学”两本书的读者,输出其借书卡号,并按卡号升序排序输出。
  1四.假定在建BOOKS表时未有概念主码,写出为BOOKS表追加定义主码的言语。
  一五.对CAXC60D表做如下修改:
    a. 将NAME最大列宽扩展到十一个字符(假定原为多少个字符)。
    b. 为该表增添一列NAME(系名),可变长,最大1几个字符。

10)COUNT

其一至关心重视要词能够帮自个儿大家总计有多少笔资料被选出来,语法为:
SELECT
COUNT(“栏位名”) FROM “表格名”

     
3.事关情势是对涉及的叙述,5元组方式化表示为:Lacrosse(U,D,DOM,F),个中

 

11)GROUP BY

GROUP BY
语句用于结合合计函数,依照贰个或多少个列对结果集进行分组。语法为:
SELECT
“栏位1”, SUM(“栏位2”)  FROM “表格名”  GROUP BY “栏位1” 

            R —— 关系名

  1. 写出建立BOMuranoROW表的SQL语句,要求定义主码完整性约束和引用完整性约束
    –达成代码:
    CREATE TABLE BORROW(
        CNO int FOREIGN KEY REFERENCES CARD(CNO),
        BNO int FOREIGN KEY REFERENCES BOOKS(BNO),
        RDATE datetime,
        PRIMARY KEY(CNO,BNO))

     

  2. 找出借书超越五本的读者,输出借书卡号及所借图书册数
    –实现代码:
    SELECT CNO,借图书册数=COUNT(*)
    FROM BORROW
    GROUP BY CNO
    HAVING COUNT(*)>5

     

  3. 查询借阅了”水浒”一书的读者,输出姓名及班级
    –完毕代码:
    SELECT * FROM CARD c
    WHERE EXISTS(
        SELECT * FROM BORROW a,BOOKS b
        WHERE a.BNO=b.BNO
            AND b.BNAME=N’水浒’
            AND a.CNO=c.CNO)

     

  4. 查询过期未还图书,输出借阅者(卡号)、书号及还书日期
    –实现代码:
    SELECT * FROM BORROW
    WHERE RDATE<GETDATE()

     

  5. 查询书名包含”互联网”关键词的书籍,输出书号、书名、作者
    –完毕代码:
    SELECT BNO,BNAME,AUTHOR FROM BOOKS
    WHERE BNAME LIKE N’%网络%’

     

  6. 查询现有图书中价位最高的书籍,输出书名及小编
    –达成代码:
    SELECT BNO,BNAME,AUTHOR FROM BOOKS
    WHERE PRICE=(
        SELECT MAX(PRICE) FROM BOOKS)

     

12)HAVING

该重大词能够支持大家对函数发生的值来设定标准。语法为:
SELECT
“栏位一”, SUM(“栏位贰”)  FROM “表格名”  GROUP BY “栏位一”  HAVING
(函数条件)  

            U —— 组成该关系的属性名集合

柒.
询问当前借了”总结情势”但未有借”总结方法习题集”的读者,输出其借书卡号,并按卡号降序排序输出
–完结代码:
SELECT a.CNO
FROM BORROW a,BOOKS b
WHERE a.BNO=b.BNO AND b.BNAME=N’总计办法’
    AND NOT EXISTS(
        SELECT * FROM BORROW aa,BOOKS bb
        WHERE aa.BNO=bb.BNO
            ANDbb.BNAME=N’计算方法习题集’
            ANDaa.CNO=a.CNO)
ORDER BY a.CNO DESC

13)ALIAS

小编们能够透过ALIAS为列名称和表名称内定别名,语法为:
SELECT
“表格别称”.”栏位一” “栏位别名”  FROM “表格名” “表格小名”  

  • *

            D —— 属性组 U 中质量所来自的域

 

问题:

1、查询“001”课程比“00贰”课程成绩高的持有学生的学号;
select
a.S#
from
(select s#,score from SC where C#=’001′) a,
(select
s#,score from SC where C#=’002′) b
where
a.score>b.score and a.s#=b.s#;

二、查询平均战绩超乎伍拾八分的同桌的学号和平均战绩;
select
S#,avg(score)
from
sc
group
by S# having avg(score) >60;

叁、查询全部同学的学号、姓名、选课数、总战表;
select
Student.S#,Student.Sname,count(SC.C#),sum(score)
from
Student left Outer join SC on Student.S#=SC.S#
group
by Student.S#,Sname

四、查询姓“李”的先生的个数;
select
count(distinct(Tname))
from
Teacher
where
Tname like ‘李%’;

五、查询没学过“叶平”老师课的同窗的学号、姓名;
select
Student.S#,Student.Sname
from
Student
where
S# not in (select distinct( SC.S#) from SC,Course,Teacher where
SC.C#=Course.C# and Teacher.T#=Course.T# and
Teacher.Tname=’叶平’);

陆、查询学过“00一”并且也学过数码“002”课程的同校的学号、姓名;
select
Student.S#,Student.Sname
from
Student,SC

where
Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as
SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);

 

七、查询学过“叶平”老师所教的全部课的同班的学号、姓名;
select
S#,Sname
from
Student
where
S# in
(select
S#
from
SC ,Course ,Teacher
where
SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname=’叶平’
group by S# having count(SC.C#)=(select count(C#) from Course,Teacher
where Teacher.T#=Course.T# and Tname=’叶平’));

八、查询全数科目成绩小于六十九分的同室的学号、姓名;
select
S#,Sname
from
Student
where
S# not in (select Student.S# from Student,SC where S.S#=SC.S# and
score>60);

玖、查询未有学全全部课的校友的学号、姓名;
select
Student.S#,Student.Sname
from
Student,SC
where
Student.S#=SC.S#
group
by Student.S#,Student.Sname having count(C#) <(select count(C#)
from Course);

10、查询至少有1门课与学号为“十01”的同窗所学相同的同窗的学号和人名;
select
S#,Sname
from
Student,SC
where
Student.S#=SC.S# and C# in (select C# from SC where
S#=’1001’);

1一、删除学习“叶平”老师课的SC表记录;
Delect
SC
from
course ,Teacher
where
Course.C#=SC.C# and Course.T#= Teacher.T# and Tname=’叶平’;

1二、查询各科战表最高和最低的分:以如下情势体现:课程ID,最高分,最低分
SELECT
L.C# 课程ID,L.score 最高分,R.score 最低分
FROM
SC L ,SC R
WHERE
L.C# = R.C#
and
L.score
= (SELECT MAX(IL.score)
FROM
SC IL,Student IM
WHERE
IL.C# = L.C# and IM.S#=IL.S#
GROUP
BY IL.C#)
and
R.Score
= (SELECT MIN(IR.score)
FROM
SC IR
WHERE
IR.C# = R.C#
GROUP
BY IR.C# );

一三、查询学一生均成绩及其排名
SELECT
1+(SELECT COUNT( distinct 平均战表)
FROM
(SELECT S#,AVG(score) 平均成绩
FROM
SC
GROUP
BY S# ) T1
WHERE
平均成绩 > T二.平分战表) 排行, S# 学生学号,平均成绩
FROM
(SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# ) T2
O途达DER
BY 平均战表 desc;

1四、查询各科战表前三名的记录:(不思量战表并列景况)
SELECT
t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM
SC t1
WHERE
score IN (SELECT TOP 3 score
FROM
SC
WHERE
t1.C#= C#
ORDER
BY score DESC)
ORDER
BY t1.C#;

一伍、查询每门功战绩最佳的前两名
SELECT
t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM
SC t1
WHERE
score IN (SELECT TOP 2 score
FROM
SC
WHERE
t1.C#= C#
ORDER
BY score DESC )

ORDER
BY t1.C#;

            DOM —— 属性向域的画面集合

  1. 将”C0壹”班同学所借图书的还期都延长七日
    –完毕代码:
    UPDATE b SET RDATE=DATEADD(Day,7,b.RDATE)
    FROM CARD a,BORROW b
    WHERE a.CNO=b.CNO
        AND a.CLASS=N’C01′

     

  2. 从BOOKS表中去除当前无人借阅的书籍记录
    –实现代码:
    DELETE A FROM BOOKS a
    WHERE NOT EXISTS(
        SELECT * FROM BORROW
        WHERE BNO=a.BNO)

     

  3. 假设日常按书名查询图书音信,请建立合适的目录
    –完成代码:
    CREATE CLUSTERED INDEX IDX_BOOKS_BNAME ON BOOKS(BNAME)

     

            F —— 属性间的数目正视关系集合

1一.
在BO奥迪Q5ROW表上确立四个触发器,达成如下效果:假使读者借阅的书名是”数据库技术及运用”,就将该读者的借阅记录封存在BOENCOREROW_SAVE表中(注ORROW_SAVE表结构同BO大切诺基ROW表)
–完结代码:
CREATE TRIGGER TR_SAVE ON BORROW
FOR INSERT,UPDATE
AS
IF @@ROWCOUNT>0
INSERT BORROW_SAVE SELECT i.*
FROM INSERTED i,BOOKS b
WHERE i.BNO=b.BNO
    AND b.BNAME=N’数据库技术及应用’

       肆.笛Carl乘积,选用和阴影运算如下

 

图片 4

  1. 创设三个视图,展现”力0壹”班学生的借书新闻(只供给出示姓名和书名)
    –完毕代码:
    CREATE VIEW V_VIEW
    AS
    SELECT a.NAME,b.BNAME
    FROM BORROW ab,CARD a,BOOKS b
    WHERE ab.CNO=a.CNO
        AND ab.BNO=b.BNO
        AND a.CLASS=N’力01′ 

第三节

一3.
查询当前同时借有”总括办法”和”组合数学”两本书的读者,输出其借书卡号,并按卡号升序排序输出
–达成代码:
SELECT a.CNO
FROM BORROW a,BOOKS b
WHERE a.BNO=b.BNO
    AND b.BNAME IN(N’总括方法’,N’组合数学’)
GROUP BY a.CNO
HAVING COUNT(*)=2
ORDER BY a.CNO DESC

一、相关概念

 

     
 一. SQL:结构化查询语言的简称, 是关周到据库的正经语言。SQL 是一种通用的、 作用极强的关周全据库语言, 是对关周全据存取的标准接口, 也是例外数据库系统里面互操作的根基。集数据查询、数据操作、数据定义、和数量控制效果于一体。

  1. 设若在建BOOKS表时未有概念主码,写出为BOOKS表追加定义主码的言辞
    –完毕代码:
    ALTER TABLE BOOKS ADD PRIMARY KEY(BNO) 

     
 2. 数码定义:数据定义功效包蕴形式定义、表定义、视图和目录的概念。

15.一 将NAME最大列宽扩充到11个字符(假定原为多少个字符)
–达成代码:
ALTER TABLE CARD ALTER COLUMN NAME varchar(10)

     
 3. 嵌套查询:指将二个查询块嵌套在另2个查询块的 WHERE 子句或 HAVING 短语的口径中的查询。

 

 
    贰、主要知识点

15.二 为该表扩充一列NAME(系名),可变长,最大十八个字符
–实现代码:
ALTER TABLE CARD ADD 系名 varchar(20)

       壹. SQL
数据定义语句的操作对象有:形式、表、视图和目录。
       二. SQL 数据定义语句的指令动词是:CREATE、DROP 和 ALTE奥德赛。
       三. RDBMS 中索引一般采取 B+树或 HASH 来促成。
       四. 索引能够分成唯一索引、非唯一索引和聚簇索引二种档次。

 

图片 5

 

     
 六.SQL 创设表语句的相似格式为

 

            
 CREATE TABLE <表名>

(四)

            
 ( <列名> <数据类型>[ <列级完整性约束> ]

 

            
 [,<列名> <数据类型>[ <列级完整性约束>] ] …

题材讲述:
为管理职位业务培养和练习音信,建立二个表:
S (S#,SN,SD,SA)   S#,SN,SD,SA
分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN )       C#,CN       分别表示课程编号、课程名称
SC ( S#,C#,G )    S#,C#,G    
分别代表学号、所选修的课程编号、学习战绩

            
 [,<表级完整性约束> ] ) ;

 

其中<数据类型>能够是数据库系统帮忙的各样数据类型,包含长度和精度。 

须要落实如下五个处理:
  一. 使用正规SQL嵌套语句询问选修课程名称叫’税收基础’的学习者学号和人名
  二. 施用专业SQL嵌套语句询问选修课程编号为’C2’的学生姓名和所属单位
  叁. 用到专业SQL嵌套语句询问不选修课程编号为’C伍’的学生姓名和所属单位
  4. 施用标准SQL嵌套语句询问选修全体课程的学生姓名和所属单位
  五. 查询选修了课程的学习者人数
  六. 询问选修课程当先5门的上学的小孩子学号和所属单位

   
列级完整性约束
为针对单个列(本列)的完整性约束, 包涵 PHummerH二IMA索罗德Y KEY、 REFERENCES表名(列名)、UNIQUE、NOT NULL 等。 

 

   
表级完整性约束
能够是依照表中多列的束缚,包含 P昂科雷IMARY KEY ( 列名列表) 、FOREIGN KEY REFERENCES 表名(列名) 等。

  1. 行使正规SQL嵌套语句询问选修课程名字为’税收基础’的学习者学号和人名
    –完成代码:
    SELECT SN,SD FROM S
    WHERE [S#] IN(
        SELECT [S#] FROM C,SC
        WHERE C.[C#]=SC.[C#]
            AND CN=N’税收基础’)

     

  2. 行使标准SQL嵌套语句询问选修课程编号为’C2’的学习者姓名和所属单位
    –达成代码:
    SELECT S.SN,S.SD FROM S,SC
    WHERE S.[S#]=SC.[S#]
        AND SC.[C#]=’C2′

     

  3. 选用专业SQL嵌套语句询问不选修课程编号为’C伍’的学员姓名和所属单位
    –达成代码:
    SELECT SN,SD FROM S
    WHERE [S#] NOT IN(
        SELECT [S#] FROM SC
        WHERE [C#]=’C5′)

     

  4. 应用正规SQL嵌套语句询问选修全部课程的上学的小孩子姓名和所属单位
    –达成代码:
    SELECT SN,SD FROM S
    WHERE [S#] IN(
        SELECT [S#] FROM SC
            RIGHT JOIN C ON SC.[C#]=C.[C#]
        GROUP BY [S#]
        HAVING COUNT(*)=COUNT(DISTINCT [S#]))

     

  5. 查询选修了学科的学习者人数
    –达成代码:
    SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC

     

  6. 查询选修课程超过5门的学员学号和所属单位
    –达成代码:
    SELECT SN,SD FROM S
    WHERE [S#] IN(
        SELECT [S#] FROM SC
        GROUP BY [S#]
        HAVING COUNT(DISTINCT [C#])>5)

     

 
     7. SQL 成立索引语句的形似格式为

(五)

     
      
 CREATE [UNIQUE] [CLUSTER] INDEX <索引名>

 

     
      
 ON <表名> (<列名列表> ) ;

1 SQLSE路虎极光VE汉兰达管理有个别

其中UNIQUE:表示创立唯一索引,缺省为非唯一索引;

 

      CLUSTER:表示创建聚簇索引,缺省为非聚簇索引;

一请讲出身份验证情势与登录帐号的涉嫌及怎么样用各个帐号举行登录,并画出示意图
二 请讲出登录帐号、数据库用户及数据库角色里面包车型地铁涉嫌,并画出示意图
3请讲出数据库用户、数据库剧中人物与数据库对象时期的涉及,并画出直接对用户授权与直接对用户授权(系统权限与对象权限)的章程
肆请讲出服务器角色、数据库剧中人物、标准剧中人物与应用程序角色的分别与认证其权力的方法
五 请讲出数据库还原模型对数据库的震慑
陆 有三个实施重大任务的数据库,请设计四个数据库备份策略
七 请使用文件与公事组苏醒的不2法门恢复生机数据库
8 请使用工作日志复苏数据库到3个时光点
⑨ 请设计作业进行周期性的备份数据库
10 怎样监督数据库的不通,并贯彻数据库的死锁测试
1一 怎么着监督数据库的活动,并能使用索引优化向导生成索引
1二 了然数据库框图的功力并得以设计表与表之间的涉及

      <列名列表>:八个或逗号分隔的三个列名,每个列名后可跟 ASC 或 DESC,表示升/降序,缺省为升序。多列时则按为千家万户排序。

 

     
  八. SQL 查询语句的一般格式为

一 有订单表,必要达成它的数码,格式如下:二〇〇〇1拾3000一……二〇〇二2203999玖等

     
      
 SELECT [ALL|DISTINCT] <算术表达式列表> FROM <表名或视图名列表>

 

     
      
 [ WHERE <条件表明式 1> ]

贰有表T壹,T二,现有一工作,在向表T一添加多少时,同时也务必向T二也丰盛数据,怎么着贯彻该事务

     
      
 [ GROUP BY <属性列表 一> [ HAVING <条件表明式 二 > ] ]

 

     
      
 [ O福睿斯DEGL450 BY <属性列表 贰> [ ASC|DESC ] ] ;

三怎么样向T第11中学的编号字段(codevarchar(20))添加一千0条记下,不充许重复,规则如下:编号的数目必须从小写的a-z之间取值

其中

 

   
  ALL/DISTINCT: 缺省为 ALL, 即列出全部查询结果记录, 包含重复记录。 DISTINCT则对重复记录只列出一条。

4 怎么着删除表中的重复数据,请使用游标与分组的措施

       算术表明式列表:2个或四个逗号分隔的算术表达式,表明式由常量(包涵数字和字符串)、列名、函数和算术运算符构成。种种表明式后还可跟外号。也可用 *代表查询表中的全体列。

 

   
  <表名或视图名列表>: 叁个或八个逗号分隔的表或视图名。 表或视图名后可跟别称。

5 如何求表中相邻的两条记下的某字段的值之差

   
  原则表明式 一:蕴含关系或逻辑运算符的表明式,代表询问条件。

 

   
  规则发挥式 **2**:包罗关系或逻辑运算符的表明式,代表分组条件。

陆 如何总计数据库中持有用户表的数目,呈现格式如下:

   
  <属性列表 一>:二个或逗号分隔的两个列名。

 

   
  <属性列表 二>: 一个或逗号分隔的五个列名, 每种列名后可跟 ASC 或 DESC, 表示升/降序,缺省为升序。

表名      记录数

 
   
关于SQL语句的学识那里先作如上海南大学学概介绍,具体写法下次将特别拿出一篇来叙述。

 

第四节

  sales      23

壹、相关概念和知识

 

     
 1.触发器是用户定义在基本表上的一类由事件驱动的独特进程。由服务器自动激活, 能执行越发复杂的检讨和操作,具有更加精致和更加强大的数码控制能力。使用 CREATE TSportageIGGEGL450 命令建立触发器。

柒 怎样删除数据库中的全部用户表(表与表之间有外键关系)

     
 二.处理器体系设有技能安全、管理安全和方针法规3类安全性问题。

 

     
 3. TCSEC/TDI 标准由安全策略、义务、保障和文档三个地点内容结合。

8 表A editor_id lb2_id
123 000
123 003
123 003
456 007
456 006
表B lb2_id lb2_name
000 a
003 b
006 c
007 d
显示 a 共1条 (表A内lb2_id为000的条数)
b 共2条(表A内lb2_id为003的条数)

     
 四. 常用存取控制方法包蕴自立存取控制(DAC)和强制存取控制(MAC)两种。

 

     
 5. 独立存取控制(DAC)的 SQL 语句包罗 GRANT 和 REVOKE 多个。 用户权限由数量对象和操作类型两有的组成。

九职员情状表(employee):里面有一字段学问程度(wh):包涵种种状态(本科以上,大专,高级中学,初级中学以下),以后自个儿要依据年龄字段查询总括出:表普通话化程度为本科以上,大专,高级中学,初级中学以下,各有多少人,占总人数多少。

图片 6

 

       陆. 常见SQL 自主权力决定命令和例子。
         一) 把对 Student 和 Course 表的总体权力授予全数用户。
            
 GRANT ALL PRIVILIGES ON TABLE Student,Course TO PUBLIC ;
       
 二) 把对 Student 表的查询权和人名修改权授予用户 U四。
            
 GRANT SELECT,UPDATE(Sname) ON TABLE Student TO U4 ;
       
 3) 把对 SC 表的插入权限授予 U五 用户,并允许她传播该权限。
            
 GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION ;
       
 肆) 把用户 U5 对 SC 表的 INSELANDT
权限收回,同时裁撤被他传播出去的授权。
            
 REVOKE INSERT ON TABLE SC FROM U5 CASCADE ;
       
 伍) 创制一个剧中人物 LX5701,并使其对 Student
表具有数据查询和立异权限。
            
 CREATE ROLE R1;
            
 GRANT SELECT,UPDATE ON TABLE Student TO R1;
       
 陆) 对修改 Student 表结构的操作进行审计。
            
 AUDIT ALTER ON Student ;

SELECT wh AS 学历,age as 年龄, Count(*) AS 人数,

=====================================

 

数据库知识计算(二)范式

 一、相关概念和知识点

       一.数据重视:反映1个关系里面属性与质量之间的束缚关系,是具体世界属性间相互联系的虚幻,属于数据内在的性质和语义的反映。
       贰. 规范化理论:是用来统一筹划精良的涉嫌形式的基本理论。它通过分解关系形式来清除在那之中不适于的数据依赖,以缓解插入极度、删除极度、更新相当和数据冗余难点。
       3. 函数依赖:简单地说,对于涉及形式的八个属个性集X和Y,若X的任壹取值能唯1明确Y的值,则称Y函数正视于X,记作X→Y。
       4. 非日常函数正视:对于涉及情势的多个属个性集X和Y,若是X→Y,但Y!⊆X,则称X→Y为非平时函数依赖;假如X→Y,但Y⊆X,则称X→Y为非通常函数重视。
       5. 通通函数正视:对于涉嫌格局的五个属特性集X和Y,若是X→Y,并且对于X的别的二个真子集X’,都未曾X’→Y,则称Y对X完全函数依赖。
       6. 范式:指符合某1种级别的涉嫌格局的汇集。在规划关周详据库时,依照满意重视关系供给的例外定义为不一样的范式。
       7. 规范化:指将三个低顶尖范式的关系情势,通过形式分解转换为多少个高一流范式的涉及格局的聚合的进度。
       八. 一NF:若关系情势的享有属性都以不可分的主干数据项,则该关系方式属于一NF。
       九. 二NF:一NF关系格局1旦同时知足每三个非主属性完全函数正视于码,则该关系格局属于二NF。
       拾. 三NF:若关系格局的每三个非主属性既不有的依靠于码也不传递重视于码,则该关系形式属于3NF。
       1壹. BCNF:若二个涉及形式的每二个操纵因素都包蕴码,则该关系形式属于BCNF。
       1二. 数据库设计:是指对于三个加以的应用环境,构造优化的数据库逻辑方式和情理结构,并由此建立数据库及其应用种类,使之力所能及有效地囤积和保管数据,满意各类用户的应用要求,包含音信保管须要和数量操作须求。
       壹三. 数据库设计的几个基本步骤:须求分析,概念结构划设想计,逻辑结构设计,物理结构划设想计,数据库实施,数据库运维和维护。
       1肆. 定义结构设计:指将供给分析得到的用户要求抽象为新闻结构即概念模型的历程。也正是通过对用户要求进行综合、归咎与虚无,形成二个独自于具体DBMS的概念模型。
       一五. 逻辑结构划设想计:将概念结构模型(基本E-凯雷德图)转换为有些DBMS产品所扶助的数据模型相适合的逻辑结构,并对其进展优化。
       1陆. 大体结构划设想计:指为1个加以的逻辑数据模型选拔3个最符合应用环境的情理构造的长河。包涵安排数据库的贮存结构与存取方法。
       一七. 华而不实:指对实际的人、物、事和定义实行人工处理,抽取所关切的共同特性,忽略非本质的细节,并把那几个特征用种种概念精确地加以描述,这么些概念组成了某种模型。

     
 1八. 数据库设计必须比照结构划设想计和行事设计相结合的尺码。

     
 1九. 多少字典首要总结数据项、数据结构、数据流、数据存款和储蓄和处理进程四个部分。
       20. 三种常用抽象方法是分类、聚集和包含。
       二一. 有的 E-奥迪Q5 图之间的争持重要表现在性质争持、命名龃龉和结构争执八个地点。

       2二.
数据库常用的存取方法包涵索引方法、聚簇方法和
HASH方法三种。
       二三. 规定数据存放地点和存储结构亟待怀想的因素至关心注重要有: 存取时间、
存款和储蓄空间利用率和掩护代价等。

2、细说数据库三范式

二.1 第三范式(一NF)无重复的列

       第一范式(1NF)中数量库表的每壹列都是不可分割的主导数据项
       同一列中无法有多少个值
     
 即实体中的某些属性无法有四个值也许无法有再一次的习性。
     
 简单来说,第三范式便是无重复的列。

     
 在其他3个关周到据库中,第二范式(一NF)是对关联格局的为重需求,不满意第3范式(壹NF)的数据库就不是关全面据库。

2.二 第二范式(二NF)属性完全重视于主键[裁撤部分子函数依赖]

     
满意第一范式(二NF)必须先满足第二范式(1NF)。

     
第贰范式(二NF)须要数据库表中的各样实例或行必须能够被惟1地有别于。

     
为贯彻区分常常要求为表加上三个列,以存款和储蓄各类实例的独一无二标识。 
     
第3范式(2NF)供给实体的习性完全依赖于主关键字。所谓完全依靠是指不可能存在仅依靠主关键字一部分的属性,假如存在,那么那一个天性和主关键字的那一部分应该分离出来形成1个新的实体,新实体与原实体之间是一对多的关联。为贯彻区分日常需求为表加上三个列,以存款和储蓄种种实例的独步标识。一句话来说,第二范式便是性质完全依靠于主键。
二.三 第一范式(3NF)属性不依赖于别的非主属性[解除传递注重]

     
满意第一范式(三NF)必须先满意第一范式(贰NF)。

     
简单的说,第1范式(3NF)需求多少个数据库表中不分包已在别的表中已涵盖的非主关键字音信。

     
例如,存在3个部门新闻表,当中每种机关有机关编号(dept_id)、部门名称、部门简介等新闻。那么在的职员和工人新闻表中列出单位编号后就不能再将机关名称、部门简介等与机关有关的音信再加入职员和工人音讯表中。若是不存在机构音讯表,则依照第一范式(三NF)也应当创设它,不然就会有大量的数量冗余。简单来说,第二范式正是性质不看重于任何非主属性。

二.肆具体实例分析

     
下边列举1个高校的学员系统的实例,以示多少个范式的运用。

     
 在筹划数据库表结构在此之前,大家先分明一下要设计的始末包含那个。学号、学生姓名、年龄、性别、课程、课程学分、系别、学科成绩,系办地址、系办电话等音讯。为了不难大家一时半刻只思索这个字段音信。大家对此那几个消息,说关怀的标题有如下多少个方面。

     
 一)学生有那1个基本消息 
       二)学生选了那个课,战表是怎样 
       三)各种课的学分是稍微 
       肆)学生属于相当系,系的核心新闻是何等。

       率先第3范式(一NF):数据库表中的字段都以单壹属性的,不可再分。那一个单一属性由基本项目构成,包含整型、实数、字符型、逻辑型、日期型等。在近期的别的关周全据库管理连串(DBMS)中,不容许你把数据库表的1列再分为2列或多列,因而做出的都以相符第壹范式的数据库。 

       咱俩再思索第二范式,把装有这几个新闻放到二个表中(学号,学生姓名、年龄、性别、课程、课程学分、系别、学科战绩,系办地址、系办电话)上面存在如下的依靠关系。 
       一)(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
       二) (课程名称) → (学分) 
       叁)(学号,课程)→ (学科战表)

听大人讲正视关系大家能够把选课关系表SelectCourse改为如下多少个表: 

     
 学生:Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话); 
       课程:Course(课程名称, 学分); 
       选课关系:SelectCourse(学号, 课程名称, 战绩)。

     
 事实上,对照第二范式的渴求,那正是满意第一范式的多少库表,若不知足第一范式,会发生如下难点 
数量冗余: 同1门学科由n个学生选修,”学分”就再一次n-三回;同三个学员选修了m门课程,姓名和年龄就再一次了m-贰回。

立异相当: 一)若调整了某门课程的学分,数据表中全体行的”学分”值都要更新,不然会油可是生同样门科目学分分裂的意况。 
               
 二)假使要开办一门新的教程,临时还从未人选修。那样,由于还尚未”学号”关键字,课程名称和学分也不恐怕记录入数据库。

删除非凡 : 就算一堆学员已经到位课程的选修,这几个选修记录就相应从数据库表中删除。不过,与此同时,课程名称和学分音讯也被去除了。很明显,那也会促成插入很是。

       我们再思索什么将其改成满意第一范式的数目库表,接着看上面包车型大巴学习者表Student(学号,姓名, 年龄,性别,系别,系办地址、系办电话),关键字为单1关键字”学号”,因为存在如下决定涉及:

     
(学号)→ (姓名, 年龄,性别,系别,系办地址、系办电话) 
只是还留存上面包车型地铁控制涉及 
       (学号) → (所在学院)→(高校地点, 高校电话) 
       
即存在非关键字段”大学地方”、”高校电话”对主要字段”学号”的传递函数依赖。 
     
 它也会设有数据冗余、更新格外、插入相当和删除非凡的景况(那里就不具体分析了,参照第二范式中的分析)。根据第2范式把学生关系表分为如下三个表就能够满意第二范式了:

     
 学生:(学号, 姓名, 年龄, 性别,系别); 
       系别:(系别, 系办地址、系办电话)。

SQL语句总结

SQL语句中常用关键词及其表达如下:

      Count(*) * 100 /(SELECT Count(*) FROMemployee) AS 百分比

1)SELECT

将材质从数据库中的表格内选出,八个第三字:从
(FROM) 数据库中的表格内选出 (SELECT)。语法为
SELECT “栏位名” FROM “表格名”。

 

2)DISTINCT

在上述
SELECT 关键词后拉长叁个 DISTINCT
就能够去除选择出来的栏位中的重复,从而成就求得那些表格/栏位内有怎么样差别的值的法力。语法为
SELECT DISTINCT “栏位名” FROM
“表格名”。

FROM employee GROUP BY wh,age

3)WHERE

以此重大词可以帮忙我们选用性地抓资料,而不是全取出来。语法为
SELECT “栏位名” FROM “表格名”
WHERE “条件” 

 

4)AND OR

上例中的
WHERE 指令能够被用来由表格中有规则地采纳资料。那个条件大概是粗略的
(像上1页的事例),也恐怕是繁体的。复杂条件是由二或多个大致标准经过 AND
或是 OMurano 的连年而成。语法为:
SELECT “栏位名”  FROM “表格名”
 WHERE “不难标准”  {[AND|OR] “不难标准”}+

学历      年龄   人数      百分比

5)IN


SQL 中,在三个情景下会用到 IN  这一个命令;那一页将介绍个中之一:与 WHERE
有关的那二个情景。在那一个用法下,大家先行已领略至少三个大家须求的值,而作者辈将这几个知道的值都放入
IN  那么些子句。语法为:
SELECT “栏位名”  FROM “表格名”
 WHERE “栏位名” IN (‘值一’, ‘值二’, …)  

 

6)BETWEEN

IN
这些命令可以让大家依据一或数个不一而再(discrete)的值的界定之内抓出资料库中的值,而 BETWEEN
则是让大家能够动用七个限量 (range)  内抓出资料库中的值,语法为:
SELECT “栏位名”  FROM “表格名”
WHERE “栏位名” BETWEEN ‘值一’ AND ‘值二’ 

本科以上  20     3四          1四

7)LIKE

LIKE
是另多个在 WHERE  子句中会用到的通令。基本上, LIKE
 能让大家依据2个方式(pattern) 来找出大家要的素材。语法为:
SELECT “栏位名”  FROM “表格名”
 WHERE “栏位名” LIKE {模式} 

 

8)ORDER BY

笔者们平日索要能够将抓出的素材做一个有系统的显示。那只怕是由小往大
(ascending)  或是由大往小(descending)。在那种景况下,大家就可以利用
ORubiconDE奥迪Q叁 BY 那些命令来完毕大家的目标。语法为:
SELECT “栏位名”  FROM “表格名
[WHERE “条件”] ORDER BY “栏位名” [ASC, DESC] 

大专      20     33          13

9)函数

函数允许大家能够对那几个数字的型态存在的行依旧列做运算,包蕴AVG (平均)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM
(总合)。语法为:
SELECT “函数名”(“栏位名”) FROM
“表格名”  

 

10)COUNT

这些重大词能够帮自个儿大家计算有微微笔资料被选出来,语法为:
SELECT COUNT(“栏位名”) FROM
“表格名”

高中      20     33          13

11)GROUP BY

GROUP
BY 语句用于结合合计函数,依据三个或几个列对结果集举行分组。语法为:
SELECT “栏位1”, SUM(“栏位2”)  FROM
“表格名”  GROUP BY “栏位1” 

 

12)HAVING

该重大词能够扶持大家对函数产生的值来设定条件。语法为:
SELECT “栏位一”, SUM(“栏位二”)  FROM
“表格名”  GROUP BY “栏位一”  HAVING (函数条件)  

初级中学以下  20     拾0        40

13)ALIAS

大家得以经过ALIAS为列名称和表名称钦赐别称,语法为:
SELECT “表格别称”.”栏位一”
“栏位外号”  FROM “表格名” “表格小名”  

上边为三个例证,通过它大家相应能很好地左右以上首要词的选择办法。

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表

问题:
一、查询“00一”课程比“00二”课程成绩高的有所学生的学号;
select a.S#
from (select s#,score from SC where C#=’001′) a,
(select s#,score from SC where C#=’002′) b
where a.score>b.score and a.s#=b.s#;

2、查询平均成绩超乎5八分的同窗的学号和平均成绩;
select S#,avg(score)
from sc
group by S# having avg(score) >60;

3、查询全数同学的学号、姓名、选课数、总战表;
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname

4、查询姓“李”的教员职员和工人的个数;
select count(distinct(Tname))
from Teacher
where Tname like ‘李%’;

伍、查询没学过“叶平”老师课的同桌的学号、姓名;
select Student.S#,Student.Sname
from Student
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where
SC.C#=Course.C# and Teacher.T#=Course.T# and
Teacher.Tname=’叶平’);

六、查询学过“001”并且也学过数码“002”课程的同窗的学号、姓名;
select Student.S#,Student.Sname
from Student,SC

where
Student.S#=SC.S# and SC.C#=’001′and exists( Select * from SC as
SC_2 where SC_2.S#=SC.S# and SC_2.C#=’002′);

7、查询学过“叶平”老师所教的全部课的同校的学号、姓名;
select S#,Sname
from Student
where S# in
(select S#
from SC ,Course ,Teacher
where SC.C#=Course.C# and Teacher.T#=Course.T# and
Teacher.Tname=’叶平’ group by S# having count(SC.C#)=(select
count(C#) from Course,Teacher where Teacher.T#=Course.T# and
Tname=’叶平’));

捌、查询全数科目战表小于61九分的同窗的学号、姓名;
select S#,Sname
from Student
where S# not in (select Student.S# from Student,SC where S.S#=SC.S#
and score>60);

九、查询未有学全全数课的同桌的学号、姓名;
select Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S#
group by Student.S#,Student.Sname having count(C#) <(select
count(C#) from Course);

10、查询至少有1门课与学号为“1001”的同窗所学相同的同班的学号和姓名;
select S#,Sname
from Student,SC
where Student.S#=SC.S# and C# in (select C# from SC where
S#=’1001’);

1一、删除学习“叶平”老师课的SC表记录;
Delect SC
from course ,Teacher
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname=’叶平’;

12、查询各科成绩最高和压低的分:以如下方式体现:课程ID,最高分,最低分
SELECT L.C# 课程ID,L.score 最高分,R.score 最低分
FROM SC L ,SC R
WHERE L.C# = R.C#
and
L.score = (SELECT MAX(IL.score)
FROM SC IL,Student IM
WHERE IL.C# = L.C# and IM.S#=IL.S#
GROUP BY IL.C#)
and
R.Score = (SELECT MIN(IR.score)
FROM SC IR
WHERE IR.C# = R.C#
GROUP BY IR.C# );

1三、查询学平生均战绩及其排行
SELECT 壹+(SELECT COUNT( distinct 平均战表)
FROM (SELECT S#,AVG(score) 平均成绩
FROM SC
GROUP BY S# ) T1
WHERE 平均战表 > T2.平均战绩) 排名, S# 学生学号,平均战绩
FROM (SELECT S#,AVG(score) 平均成绩 FROM SC GROUP BY S# ) T2
O路虎极光DECRUISER BY 平均成绩 desc;

1四、查询各科成绩前3名的笔录:(不思考成绩并列情状)
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 3 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC)
ORDER BY t1.C#;

一5、查询每门功成绩最佳的前两名
SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数
FROM SC t1
WHERE score IN (SELECT TOP 2 score
FROM SC
WHERE t1.C#= C#
ORDER BY score DESC )

ORDER
BY t1.C#;

=

 

本科以上  二一      50         20

 

10 未来有八个表student:(FID 学生号,FName  姓名),

 

subject:(FSubID  课程号,FSubName 课程名), 

 

Score(FScoreId  战表记录号,FSubID   课程号,FStdID    学生号,FScore   
成绩)

 

怎么能促成那一个表:

 

姓名  英语  数学 语文  历史

 

张萨  78    67   89    76

 

王强  89    67   84    96 

 

SELECT a.FName AS 姓名,

 

      英语 = SUM(CASEb.FSubName WHEN ‘英语’ THEN c.FScore END),

 

      数学 = SUM(CASEb.FSubName WHEN ‘数学’ THEN c.FScore END),

 

      语文 = SUM(CASEb.FSubName WHEN ‘语文’ THEN c.FScore END),

 

      历史 = SUM(CASEb.FSubName WHEN ‘历史’ THEN c.FScore END)

 

FROM Student a, Subject b, Score c

 

WHERE a.FID = c.FStdId AND b.FSubID = c.FsubID GROUP BY a.FName

 

1壹 原始表的多寡如下:

 

PID PTime    PNo

 

111111    2003-01-2804:30:09     

 

111111    2003-01-28 18:30:00

 

222222    2003-01-2804:31:09     

 

333333    2003-01-2804:32:09     

 

111111    2003-02-0903:35:25     

 

222222    2003-02-0903:36:25     

 

333333    2003-02-0903:37:25     

 

询问生成表

 

PDate       111111        222222   333333      ……

 

2003-01-28   04:30:09    04:31:09      04:32:09   ……

 

2003-01-28   18:30:00

 

2003-02-09   03:35:25    03:36:25     03:37:25    ……

 

12  表一(AAA)

 

商品名称mc  商品总量sl

 

  A        100

 

  B        120

 

表二(BBB)

 

商品名称mc  出库数量sl

 

  A        10

 

  A        20

 

  B        10

 

  B        20

 

  B        30

 

用一条SQL语句算出商品A,B近日还剩多少?

 

 

declare @AAA table (商品名称  varchar(10), 商品总量  int)

 

insert into @AAA values(‘A’,100)

 

insert into @AAA values(‘B’,120)

 

declare @BBB table (商品名称 varchar(十), 出库数量 int)

 

insert into @BBB values(‘A’, 10)

 

insert into @BBB values(‘A’, 20)

 

insert into @BBB values(‘B’, 10)

 

insert into @BBB values(‘B’, 20)

 

insert into @BBB values(‘B’, 30)

 

select TA.商品名称,A-B AS 剩余数量 FROM

 

(select 商品名称,sum(商品总量) AS A

 

from @AAA

 

group by 商品名称)TA,

 

(select 商品名称,sum(出库数量) AS B

 

from @BBB

 

group by 商品名称)TB

 

where TA.商品名称=TB.商品名称

 

 

select 商品名称,sum(商品总量)剩余数量 from (select * from @aaa union
all select 商品名称,-出库数量 from @bbb) a group by 商品名称

 

一叁 优化这句SQL语句

 

UPDATE tblExlTempYear

 

SET tblExlTempYear.GDQC = tblExlTempMonth.GDQC

 

FROM tblExlTempYear,tblExlTempMonth

 

where tblExlTempMonth.GDXM=tblExlTempYear.GDXM
andtblExlTempMonth.TXDZ=tblExlTempYear.TXDZ

 

(1)、加索引:

 

tblExlTempYear(GDXM,TXDZ)

 

tblExlTempMonth (GDXM,TXDZ)

 

(二)、删除无用数据

 

(3)、转移过时数据

 

(四)、加服务器内存,升级服务器

 

(伍)、升级网络体系

 

UPDATE tblExlTempYear

 

SET tblExlTempYear.GDQC = tblExlTempMonth.GDQC

 

FROM tblExlTempYear (index indexY),tblExlTempMonth (index indexM)

 

where tblExlTempMonth.GDXM=tblExlTempYear.GDXM
andtblExlTempMonth.TXDZ=tblExlTempYear.TXDZ

 

14 品种    日期    数量

 

P0001  2002-1-10 10

 

P0001  2002-1-10 11

 

P0001  2002-1-10 50

 

P0001  2002-1-12  9

 

P0001  2002-1-12  8

 

P0001  2002-1-12  7

 

P0002  2002-10-10 5

 

P0002  2002-10-10 7

 

P0002  2002-10-12 0.5

 

P0003  2002-10-10 5

 

P0003  2002-10-12 7

 

P0003  2002-10-12 9

 

结果要先遵照连串汇总,再根据日期汇总,结果如下:

 

P0001  2002-1-10   71

 

P0001    2002-1-12 24

 

P0002    2002-10-10 12

 

P0002    2002-10-12 0.5

 

P0003    2002-10-10 5

 

P0003    2002-10-12 16

 

SQL SE奥迪Q5VE福特Explorer能做出如此的汇总吗…

 

一5 在分組查循中with{cube|rollup}的區別是什么样?

 

如:

 

  use pangu

 

  select firm_id,p_id,sum(o_price_quantity)as sum_values

 

  from orders

 

  group by firm_id,p_id

 

  with cube

 

  與

 

  use pangu

 

  select firm_id,p_id,sum(o_price_quantity)as sum_values

 

  from orders

 

  group by firm_id,p_id

 

  with rollup

 

  的區別是怎么?

 

CUBE 和 ROLLUP 之间的分别在于:

 

CUBE 生成的结果集体现了所选列中值的有着组成的联谊。

 

ROLLUP 生成的结果集显示了所选列中值的某一层次结构的集纳。

 

例如,简单表 Inventory 中包含:

 

Item               Color               Quantity                 

 

 

Table               Blue               124                       

 

Table               Red                 223                       

 

Chair               Blue               101                       

 

Chair               Red                 210 

 

下列查询将转变小计报表:

 

SELECT CASE WHEN (GROUPING(Item) = 1) THEN ‘ALL’

 

           ELSE ISNULL(Item, ‘UNKNOWN’)

 

      END AS Item,

 

      CASE WHEN (GROUPING(Color) = 1) THEN’ALL’

 

           ELSE ISNULL(Color, ‘UNKNOWN’)

 

      END AS Color,

 

      SUM(Quantity) AS QtySum

 

FROM Inventory

 

GROUP BY Item, Color WITH ROLLUP

 

Item               Color               QtySum                   

 

 

Chair               Blue               101.00                   

 

Chair               Red                 210.00                   

 

Chair               ALL                 311.00                   

 

Table               Blue               124.00                   

 

Table               Red                 223.00                   

 

Table               ALL                 347.00                   

 

ALL                 ALL                 658.00                   

 

(7 row(s) affected)

 

倘使查询中的 ROLLUP 关键字改成为 CUBE,那么 CUBE
结果集与上述结果壹致,只是在结果集的末梢还会回来下列两行:

 

ALL                 Blue               225.00                   

 

ALL                 Red                 433.00                   

 

CUBE 操作为 Item 和Color 中值的只怕组合生成行。例如,CUBE 不仅报告与Item
值 Chair 相组合的 Color 值的具备恐怕构成(Red、Blue 和 Red
+Blue),而且告诉与 Color 值 Red 相组合的 Item
值的有所恐怕构成(Chair、Table 和 Chair + Table)。对于 GROUP BY
子句中右侧的列中的各类值,ROLLUP
操作并不告知左侧1列(或左边各列)中值的兼具恐怕构成。例如,ROLLUP
并不对各种 Color 值报告 Item 值的保有极大概率构成。ROLLUP
操作的结果集全数类似于 COMPUTE BY 所再次来到结果集的功效;不过,

 

ROLLUP 具有下列优点: ROLLUP 重返单个结果集;COMPUTE BY
重临八个结实集,而多少个结实集会扩充应用程序代码的复杂。ROLLUP能够在服务器游标中央银行使;COMPUTE
BY 不得以。有时,查询优化器为 ROLLUP 生成的施行安插比为 COMPUTE BY
生成的愈加快速。

 

16 就算小编有三个表
表一(电话号码,是或不是留存)
表2(电话号码,是还是不是拨打)
想搜寻表第11中学的电话号码是或不是在表第22中学设有,假如存在就创新表第11中学的是或不是留存字段为一。
    UPDATE 表一 SET 是还是不是存在=壹
WHERE EXISTS(SELECT * FROM 表二 WHERE 表二.电话号码 = 表壹.电话号码)

 

一七 用存款和储蓄进度调用外部程序.
唯独要做成com控件
用sp_OACreate存款和储蓄进度)
DECLARE @object int
DECLARE @hr int
DECLARE @src varchar(255), @desc varchar(255)
EXEC @hr = sp_OACreate ‘SQLDMO.SQLServer’, @object OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END

 

(六)

 

1、在MS SQL Server中,用来浮现数据库新闻的系列存款和储蓄进程是( )
A sp_ dbhelp
B sp_ db
C sp_ help
D sp_ helpdb

 

2、SQL语言中,删除3个表的下令是( )
A DELETE
B DROP
C CLEAR
D REMORE

 

3、关周全据库中,主键是(__)
A、为标识表中绝无仅有的实业
B、创立唯壹的目录,允许空值
C、只允许以表中首先字段建立
D、允许有多少个主键的

 

四、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包罗的片段(一___),使用首要字(二___)能够把重复行屏
蔽,将多少个查询结果重返一个结实集合的演算符是(三___),如若在SELECT语句中动用聚合函数时,一定在后边使用(4___)。
    ⑴ A、SELECT,INTO             B、SELECT,FROM
      C、SELECT,GROUP           D、仅SELECT
  ⑵ A、DISTINCT                         B、UNION
        C、ALL                                 C、TOP
  ⑶ A、JOIN                               B、UNION
        C、INTO                             C、LIKE
  ⑷ A、GROUPBY                     B、COMPUTE BY
        C、HAVING                         D、COMPUTE

 

5、语句DBCC SHSportageINKDATABASE (Sample, 25)中的二5代表的趣味是
A、25M
B、剩余占全部空间的2伍%
C、已用空间占整个空间的1/4
D、以上都不对

 

陆、你是二个保险企业的数据库开发人士,集团的保险单新闻囤积在SQL Server
2000数据库中,你使用以下脚本建立了1个名称叫Policy的表:
CREATE TABLE Policy
(
PolicyNumber int NOT NULL DEFAULT (0),
InsuredLastName char (30) NOT NULL,
InsuredFirstName char (20) NOT NULL,
InsuredBirthDate datetime NOT NULL,
PolicyDate datetime NOT NULL,
FaceAmount money NOT NULL,
CONSTRAINT PK_Policy PRIMARY KEY (PolicyNumber)
)
历次集团销售出1份保单,Policy表中就大增一条记下,并授予其1个新的保险单号,你将怎么办?

 

a.建立1个INSTEAD OF
INSE奥迪Q五T触发器来发出二个新的保险单号,并将那个保险单号插入数据表中。
b.建立三个INSTEAD OF
UPDATE触发器来产生3个新的保险单号,并将以此保险单号插入数据表中。
c.建立一个AFTER
UPDATE触发器来发出一个新的保险单号,并将这一个保险单号插入数据表中。
d.用AFTER
UPDATE触发器替代DEFAULT约束规范产生2个新的保险单号,并将以此保险单号插入数据表中。

 

7、在SQL语言中,假使要树立3个薪水表包括职工号,姓名,职称。工资等字段。若要保险薪水字段的取值不低于800元,最合适的兑现格局是:
A。在成立工资表时为”工资“字段建立缺省
B。在开创薪俸表时为”报酬“字段建立检查约束
C。在薪酬表建立叁个触发器
D。为薪水表数据输入编写1个顺序开始展览控制

 

8、Select 语句中用来延续字符串的记号是______.
A. “+” B. “&” C.“||” D.“|”

 

9、你是1个问世集团的数据库开发职员,对特定的书名的每天的销售场合建立了之类的存款和储蓄进度:
CREATE PROCEDURE get_sales_for_title
title varchar(80), @ytd_sales int OUTPUT
AS
SELECT @ytd_sales = ytd_sales
FROM titles
WHERE title = @title
IF @@ROWCOUNT = 0
RETURN(-1)
ELSE
RETURN(0)
此外建立了3个本子执行这几个蕴藏进度,如若进行成功,将回到对应于书名的每一日的销售意况的表格,假设履行破产,将回来“NoSales
Found”,如何建立那一个剧本?

 

A. DECLARE @retval int
DECLARE @ytd int
EXEC get_sales_for_title ‘Net Etiquette’, @ytd
IF @retval < 0
PRINT ‘No sales found’
ELSE
PRINT ‘Year to date sales: ’ + STR (@ytd)
GO

 

B. DECLARE @retval int
DECLARE @ytd int
EXEC get_sales_for_title ‘Net Etiquette’, @ytd OUTPUT
IF @retval < 0
PRINT ‘No sales found’
ELSE
PRINT ‘Year to date sales: ’ + STR (@ytd)
GO

 

C. DECLARE @retval int
DECLARE @ytd int
EXEC get_sales_for_title ‘Net Etiquette’,@retval OUTPUT
IF @retval < 0
PRINT ‘No sales found’
ELSE
PRINT ‘Year to date sales: ’ + STR (@ytd)
GO

 

D. DECLARE @retval int
DECLARE @ytd int
EXEC @retval = get_sales_for_title ‘Net Etiquette’, @ytd OUTPUT
IF @retval < 0
PRINT ‘No sales found’
ELSE
PRINT ‘Year to date sales: ’ + STR (@ytd)
GO

 

10、You are a database developer for a container manufacturing
company.The containers produced by your company are a number of
different sizes andshapes. The tables that store the container
information are shown in the Size,Container, and Shape Tables exhibit:
Size
SizeID
SizeName
Height
Container
ContainerID
ShapeID
SizeID
Shape
ShapeID
ShapeName
Measurements

 

A sample of the data stored in the tables is shown below:
Size Table
SizeID       SizeName        Height
1           Small          40
2           Medium          60
3           Large          80
4           Jumbo          100
Shape Table
ShapeID  ShapeName  Measurement
1       Triangle        10
2       Triangle        20
3       Triangle        30
4       Square          20
5       Square          30
6       Square          40
7       Circle          15
8       Circle          25
9       Circle          35
Periodically, the dimensions of the containers change. Frequently, the
databaseusers require the volume of a container. The volume of a
container iscalculated based on information in the shape and size
tables.
You need to hide the details of the calculation so that the volume can
beeasily accessed in a SELECT query with the rest of the container
information.What should you do?
A.    Create a user-defined function that requires ContainerIDas an
argument and returns the volume of the container.
B.    Create a stored procedure that requires ContainerID as anargument
and returns the volume of the container.
C.    Add a column named volume to the container table. Create atrigger
that calculates and stores volume in this column when a new containeris
inserted into the table.
D.    Add a computed column to the container table thatcalculates the
volume of the container.

 

填空题(1空1分共20分)
壹、
若是设计的表不切合第2范式,也许会促成_______,________,_______。
2、
SQL是由_______语言,________语言,_______语言结合。
三、 SQL
Server在三个安全级上表明用户,分别是______________,_____________________。
四、
自定义函数由___________函数,_______________函数,___________________函数组成。
5、
备份策略的三种档次是__________备份,_______________备份,___________________备份组成。
陆、
运转一个显式事务的话语为__________,提交业务的口舌为__________,回滚事务的言辞为__________
七、
表的每一行在表中是全世界无双的实业属于__________完整性,使列的输入有效属于__________完整性,七个表的主关键字和外关键字的数码应该相应一致属于__________完整性。
简答题(共20分)
1、 在扶持中[ ,…n ] 意思是如何?(4分)
贰、 请简述一下次之范式(4分)
三、 现有1销售表,它们组织如下:(4分)
idint                     (标识号)
codnochar(7)             (商品编码)
codname varchar(30)        (商品名称)
specvarchar(20)                       (商品规格)
pricenumeric(10,2)           (价格)
sellnumint                         (销售数目)
deptnochar(三)                   (售出分店编码)
selldatedatetime                   (销售时间)
务求:写出查询销售时间段在二〇〇二-二-一二十日到二〇〇一-肆-2九里边,分店编码是0一的有所记录。
4、写三个存款和储蓄进度,须求传入3个表名,重临该表的记录数(倘使传入的表在数据库中都留存)(4分)
5、请简述UPDATE 触发器如何是好事原理。(4分)
简答题:(共40分)
一、(5分)使用一条SQL语句找到重复的值及重复的次数:有一数额表ZD_ks,在那之中有字段BM,MC,。。。,请查询出在ZD_ks中BM有再次的值及重复的次数,未有的永不列出。如下表:
BM DUPCOUNT
001 3
002 2

 

2、描述(5分)
表一 student 学生新闻表
ID    int      学生编号
Name  varchar  学生姓名
Sex    bit      性别(男0女1)
Class int      班级编号

 

表二 schedule 课程音讯表
ID    int      课程编号
Name  varchar  课程名称

 

表三 Grade  战绩音讯表
ID    int      自动编号
UID    int      学生编号
SID    int      课程编号
Num    int      考试成绩

 

(a)求各班的总人数(1分)
(b)求1班女人和男子的平分战绩(2分)
(c)各班”数据结构”(课程名称)不比格的人数(2分)

 

3、难点讲述:(三十多分)
核心用到上边五个事关表:
CARD    借书卡。  CNO 卡号,NAME 姓名,CLASS 班级
BOOKS    图书。    BNO 书号,BNAME 书名,AUTHO普拉多 作者,PRAV肆ICE单价,QUANTITY
仓库储存册数
BO奇骏ROW  借书记录。 CNO 借书卡号,BNO书号,EvoqueDATE 还书日期
备注:限定每人每个书只好借壹本;仓库储存册数随借书、还书而改变。
务求贯彻如下十五个处理:
  一.找出借书超越5本的读者,输出借书卡号及所借图书册数。(二分)
贰.询问借阅了”水浒”壹书的读者,输出姓名及班级。(3分)
三.询问过期未还图书,输出借阅者(卡号)、书号及还书日期。(三分)
四.查询书名包罗”网络”关键词的书籍,输出书号、书名、作者。(贰分)
5.查询现有图书中价位最高的图书,输出书名及作者。(二分)
陆.查询当前借了”总结办法”但尚无借”总计格局习题集”的读者,输出其借书卡号,并按卡号降序排序输出。(五分)
七.将”C01″班同学所借图书的还期都延长10十日。(2分)
8.从BOOKS表中除去当前无人借阅的书籍记录。(二分)
九.在BO安德拉ROW表上确立二个触发器,完毕如下效果:假如读者借阅的书名是”数据库技术及选用”,就将该读者的借阅记录保留在BO宝马X5ROW_SAVE表中(注ORROW_SAVE表结构同BO奥迪Q5ROW表)。(6分)
拾.创造2个视图,展现”力0一”班学生的借书消息(只要求出示姓名和书名)。(叁分)
1一.询问当前还要借有”总结办法”和”组合数学”两本书的读者,输出其借书卡号,并按卡号升序排序输出。(叁分)

 

 

 

(七)

 

1、难题讲述:
已知关系形式:
S (SNO,SNAME)                     学生关系。SNO 为学号,SNAME 为真名
C (CNO,CNAME,CTEACHELacrosse)  课程关系。CNO 为课程号,CNAME 为课程名,CTEACHE君越为任课教师
SC(SNO,CNO,SCGRADE)        选课关系。SCGRADE 为成绩
须求贯彻如下五个处理:
  壹. 找出从未选修过“李明”老师教学课程的装有学生姓名
  贰. 列出有二门之上(含两门)不如格课程的上学的小孩子姓名及其平均成绩
  三. 列出既学过“1”号课程,又学过“二”号课程的持有学员姓名
  四. 列出“一”号课战表比“二”号同学该门课成绩高的兼具学员的学号
  五.
列出“一”号课战绩比“二”号课成绩高的享有学生的学号及其“1”号课和“二”号课的大成

 

二、难题讲述:
为管理职位业务培养和磨练信息,建立三个表:
S (S#,SN,SD,SA)  S#,SN,SD,SA
分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN )       C#,CN      分别表示课程编号、课程名称
SC ( S#,C#,G )    S#,C#,G   
分别代表学号、所选修的教程编号、学习战表

 

渴求贯彻如下五个处理:
  一. 选择正式SQL嵌套语句询问选修课程名称叫’税收基础’的上学的小孩子学号和姓名
  2. 利用正规SQL嵌套语句询问选修课程编号为’C二’的学习者姓名和所属单位
  三. 选用正规SQL嵌套语句询问不选修课程编号为’C伍’的学习者姓名和所属单位
  肆. 利用专业SQL嵌套语句询问选修全体学科的学习者姓名和所属单位
  5. 询问选修了学科的上学的小孩子人数
  陆. 查询选修课程超过伍门的学员学号和所属单位

 

 

 

(八)

 

Student(S#,Sname,Sage,Ssex) 学生表   
Course(C#,Cname,T#) 课程表   
SC(S#,C#,score) 成绩表   
Teacher(T#,Tname) 教师表   
问题:   
壹、查询“001”课程比“00二”课程成绩高的保有学员的学号;   
  select a.S# from (select s#,score from SC where C#=’001′)
a,(selects#,score   
  from SC where C#=’002′) b   
  where a.score>b.score and a.s#=b.s#;   
贰、查询平均成绩超过五15分的同窗的学号和平均成绩;   
    select S#,avg(score)   
    from sc   
    group by S# having avg(score) >60;   
叁、查询全数同学的学号、姓名、选课数、总战绩;   
  selectStudent.S#,Student.Sname,count(SC.C#),sum(score)   
  from Student left Outer join SC on Student.S#=SC.S#   
  group by Student.S#,Sname   
四、查询姓“李”的教员的个数;   
  select count(distinct(Tname))   
  from Teacher   
  where Tname like ‘李%’;   
伍、查询没学过“叶平”老师课的同校的学号、姓名;   
    select Student.S#,Student.Sname   
    from Student    
    where S# not in (select distinct( SC.S#) fromSC,Course,Teacher
where  SC.C#=Course.C# and Teacher.T#=Course.T#
andTeacher.Tname=’叶平’);   
6、查询学过“001”并且也学过数码“002”课程的同班的学号、姓名;   
  select Student.S#,Student.Sname from Student,SC where
Student.S#=SC.S#and SC.C#=’001’and exists( Select * from SC as SC_2
where SC_2.S#=SC.S# andSC_2.C#=’002′);   
七、查询学过“叶平”老师所教的全体课的同室的学号、姓名;   
  select S#,Sname   
  from Student   
  where S# in (select S# from SC ,Course ,Teacher where
SC.C#=Course.C#and Teacher.T#=Course.T# and Teacher.Tname=’叶平’
groupby S# having count(SC.C#)=(select count(C#) from Course,Teacher 
whereTeacher.T#=Course.T# and Tname=’叶平’));   
八、查询课程编号“002”的成绩比课程编号“001”课程低的具有同学的学号、姓名;   
  Select S#,Sname from (select Student.S#,Student.Sname,score
,(selectscore from SC SC_2 where SC_2.S#=Student.S# and
SC_2.C#=’002′)score2   
  from Student,SC where Student.S#=SC.S# and C#=’001′) S_2 where
score2<score;   
玖、查询全体课程战绩小于陆11分的同窗的学号、姓名;   
  select S#,Sname   
  from Student   
  where S# not in (select Student.S# from Student,SC where
S.S#=SC.S# andscore>60);   
拾、查询未有学全全体课的同桌的学号、姓名;   
    select Student.S#,Student.Sname   
    from Student,SC   
    where Student.S#=SC.S# group by Student.S#,Student.Sname having
count(C#) <(select count(C#) fromCourse);   
1一、查询至少有1门课与学号为“十0一”的同窗所学相同的同窗的学号和姓名;   
    select S#,Sname from Student,SC where Student.S#=SC.S# andC# in
select C# from SC where S#=’1001′;   
1贰、查询至少学过学号为“001”同学全体一门课的别的同学学号和姓名;   
    select distinct SC.S#,Sname   
    from Student,SC   
    where Student.S#=SC.S# and C# in (select C# from SC
whereS#=’001′);   
壹三、把“SC”表中“叶平”老师教的课的实际业绩都改变为此课程的平分成绩;   
    update SC set score=(selectavg(SC_2.score)   
    from SC SC_2   
    where SC_2.C#=SC.C# ) from Course,Teacher whereCourse.C#=SC.C#
and Course.T#=Teacher.T# and Teacher.Tname=’叶平’);   
1四、查询和“十0二”号的同学学习的学科完全相同的其余同学学号和人名;   
    select S# from SC where C# in (select C# from SC
whereS#=’1002′)   
    group by S# having count(*)=(select count(*) from SC
whereS#=’1002′);   
一5、删除学习“叶平”老师课的SC表记录;   
    Delect SC   
    from course ,Teacher    
    where Course.C#=SC.C# and Course.T#= Teacher.T# and
Tname=’叶平’;   
1陆、向SC表中插入一些记录,这个记录要求符合以下规则:未有上过编号“00三”课程的校友学号、贰、   
    号课的平均战绩;   
    Insert SC select S#,’002′,(Selectavg(score)   
    from SC where C#=’002′) from Student where S# not in (SelectS#
from SC where C#=’002′);   
一柒、按平均战表从高到低彰显全体学员的“数据库”、“企管”、“意国语”三门的学科成绩,按如下方式体现:
学生ID,,数据库,企管,克罗地亚共和国语,有效课程数,有效平均分   
    SELECT S# as 学生ID   
        ,(SELECT score FROM SC WHERESC.S#=t.S# AND C#=’004′) AS
数据库   
        ,(SELECT score FROM SC WHERESC.S#=t.S# AND C#=’00一’) AS
企管   
        ,(SELECT score FROM SC WHERESC.S#=t.S# AND C#=’006′) AS
英语   
        ,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均战绩   
    FROM SC AS t   
    GROUP BY S#   
    ORDER BY avg(t.score)    
18、查询各科战绩最高和压低的分:以如下方式体现:课程ID,最高分,最低分   
    SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分   
    FROM SC L ,SC AS R   
    WHERE L.C# = R.C# and   
        L.score = (SELECTMAX(IL.score)   
                     FROM SC AS IL,Student AS IM   
                     WHERE L.C# = IL.C# and IM.S#=IL.S#   
                     GROUP BY IL.C#)   
        AND   
        R.Score = (SELECTMIN(IR.score)   
                     FROM SC AS IR   
                     WHERE R.C# = IR.C#   
                 GROUP BY IR.C#   
                   );   
1玖、按各科平均成绩从低到高和及格率的百分比从高到低依次   
    SELECT t.C# AS
课程号,max(course.Cname)AS课程名,isnull(AVG(score),0) AS 平均战表   
        ,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0
END)/COUNT(*) AS 及格百分数   
    FROM SC T,Course   
    where t.C#=course.C#   
    GROUP BY t.C#   
    ORDER BY 100 * SUM(CASE WHEN  isnull(score,0)>=60THEN 1 ELSE 0
END)/COUNT(*) DESC   
20、查询如下课程平均战绩和及格率的比例(用”一行”呈现):
企管(001),马克思(00二),OO&UML (00三),数据库(004)   
    SELECT SUM(CASE WHEN C# =’001′ THEN score ELSE 0END)/SUM(CASE C#
WHEN ’00一’ THEN 一 ELSE 0 END) AS 企业管理平均分   
        ,100 * SUM(CASE WHEN C# = ‘001’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ’00壹’ THEN 1 ELSE 0 END)AS
企管及格百分数   
        ,SUM(CASE WHEN C# = ‘002’ THEN scoreELSE 0 END)/SUM(CASE C#
WHEN ’00二’ THEN 1 ELSE 0 END) AS Marx平均分   
        ,100 * SUM(CASE WHEN C# = ‘002’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ’00二’ THEN 一 ELSE 0 END)AS
马克思及格百分数   
        ,SUM(CASE WHEN C# = ‘003’ THEN scoreELSE 0 END)/SUM(CASE C#
WHEN ‘003’ THEN 1 ELSE 0 END) AS UML平均分   
        ,100 * SUM(CASE WHEN C# = ‘003’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ’00三’ THEN 一 ELSE 0 END)AS UML及格百分数   
        ,SUM(CASE WHEN C# = ‘004’ THEN scoreELSE 0 END)/SUM(CASE C#
WHEN ’00四’ THEN 一 ELSE 0 END) AS 数据库平均分   
        ,100 * SUM(CASE WHEN C# = ‘004’ ANDscore >= 60 THEN 1 ELSE
0 END)/SUM(CASE WHEN C# = ‘004’ THEN 一 ELSE 0 END)AS
数据库及格百分数   
  FROM SC   
二一、查询不一致老师所教不一样学科平均分从高到低显示   
  SELECT max(Z.T#) AS 教授ID,MAX(Z.Tname) AS 助教姓名,C.C# AS
课程ID,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩   
    FROM SC AS T,Course AS C ,Teacher AS Z   
    where T.C#=C.C# and C.T#=Z.T#   
  GROUP BY C.C#   
  ORDER BY AVG(Score) DESC   
2二、查询如下课程战绩第 3 名到第 陆名的学生成绩单:企管(001),Marx(00贰),UML
(00三),数据库(00四)   
    [学生ID],[学生姓名],企管,Marx,UML,数据库,平均成绩   
    SELECT  DISTINCT top 3   
      SC.S# As 学生学号,   
        Student.Sname AS 学生姓名 ,   
      T壹.score AS 企管,   
      T2.score AS 马克思,   
      T3.score AS UML,   
      T4.score AS 数据库,   
      ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) +
ISNULL(T4.score,0) as 总分   
      FROM Student,SC  LEFT JOIN SC AST1   
                     ON SC.S# = T1.S# AND T1.C# = ‘001’   
            LEFT JOIN SCAS T2   
                     ON SC.S# = T2.S# AND T2.C# = ‘002’   
            LEFT JOIN SCAS T3   
                     ON SC.S# = T3.S# AND T3.C# = ‘003’   
            LEFT JOIN SCAS T4   
                     ON SC.S# = T4.S# AND T4.C# = ‘004’   
      WHERE student.S#=SC.S# and   
      ISNULL(T1.score,0) + ISNULL(T2.score,0) +ISNULL(T3.score,0) +
ISNULL(T4.score,0)   
      NOT IN   
      (SELECT   
           DISTINCT   
            TOP 15 WITHTIES   
           ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0)

  • ISNULL(T4.score,0)   
          FROM sc   
                LEFT JOIN scAS T1   
                         ON sc.S# = T1.S# AND T1.C# = ‘k1’   
                LEFT JOIN scAS T2   
                         ON sc.S# = T2.S# AND T2.C# = ‘k2’   
                LEFT JOIN scAS T3   
                         ON sc.S# = T3.S# AND T3.C# = ‘k3’   
                LEFT JOIN scAS T4   
                         ON sc.S# = T4.S# AND T4.C# = ‘k4’   
          ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0)+
    ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);   
    贰3、总结列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[<60]   
        SELECT SC.C# as 课程ID, Cname as 课程名称   
            ,SUM(CASE WHEN score BETWEEN 85 AND100 THEN 1 ELSE 0 END) AS
    [100 – 85]   
            ,SUM(CASE WHEN score BETWEEN 70 AND85 THEN 1 ELSE 0 END) AS [85
  • 70]   
            ,SUM(CASE WHEN score BETWEEN 60 AND70 THEN 1 ELSE 0 END) AS [70
  • 60]   
            ,SUM(CASE WHEN score < 60 THEN 1ELSE 0 END) AS [60 -]   
        FROM SC,Course   
        where SC.C#=Course.C#   
        GROUP BY SC.C#,Cname;   
    二4、查询学毕生均成绩及其排行   
          SELECT ①+(SELECT COUNT( distinct 平均成绩)   
                 FROM (SELECT S#,AVG(score) AS 平均战绩   
                         FROM SC   
                     GROUP BY S#   
                     ) AS T1   
                WHERE 平均战表 > T二.等分战绩) as 排名,   
          S# as 学生学号,平均成绩   
        FROM (SELECT S#,AVG(score) 平均战绩   
                FROMSC   
            GROUP BY S#   
            ) AS T2   
        O福特ExplorerDEQashqai BY 平均成绩desc;   
    2伍、查询各科成绩前三名的笔录:(不思虑战表并列景况)   
          SELECT t1.S# as 学生ID,t1.C#as 课程ID,Score as 分数   
          FROM SC t1   
          WHERE score IN (SELECT TOP 3score   
                 FROM SC   
                 WHERE t1.C#= C#   
                ORDER BYscore DESC   
                 )   
          ORDER BY t1.C#;   
    2陆、查询每门科目被选修的学习者数   
      select c#,count(S#) from sc group by C#;   
    二七、查询出只选修了1门课程的全套上学的小孩子的学号和人名   
      select SC.S#,Student.Sname,count(C#) AS 选课数   
      from SC ,Student   
      where SC.S#=Student.S# group by SC.S# ,Student.Sname
    havingcount(C#)=1;   
    28、查询哥们、女孩子人数   
        Select count(Ssex) as 男子人数 fromStudent group by Ssex having
    Ssex=’男’;   
        Select count(Ssex) as 女孩子人数 fromStudent group by Ssex having
    Ssex=’女’;   
    2九、查询姓“张”的学生名单   
        SELECT Sname FROM Student WHERE Sname like ‘张%’;   
    30、查询同名同性学生名单,并总括同名家数   
      select Sname,count(*) from Student group by Sname
    having count(*)>1;;   
    31、1983年诞生的学生名单(注:Student表中Sage列的体系是datetime)   
        select Sname,  CONVERT(char (11),DATEPART(year,Sage))as age   
        from student   
        where CONVERT(char(11),DATEPART(year,Sage))=’1981′;   
    3二、查询每门学科的平分成绩,结果按平均成绩升序排列,平均战绩同样时,按学科号降序排列   
        Select C#,Avg(score) from SC group by C# order byAvg(score),C#
    DESC ;   
    3叁、查询平均战绩超越85的持有学员的学号、姓名和平均成绩   
        select Sname,SC.S# ,avg(score)   
        from Student,SC   
        where Student.S#=SC.S# group by SC.S#,Snamehaving   
    avg(score)>85;   
    3四、查询课程名字为“数据库”,且分数低于60的学生姓名和分数   
        Select Sname,isnull(score,0)   
        from Student,SC,Course   
        where SC.S#=Student.S# and SC.C#=Course.C#
    and Course.Cname=’数据库’and score <60;   
    3五、查询全数学员的选课景况;   
        SELECT SC.S#,SC.C#,Sname,Cname   
        FROM SC,Student,Course   
        where SC.S#=Student.S# and SC.C#=Course.C#;   
    3六、查询任何一门科目成绩在陆十五分以上的姓名、课程名称和分数;   
        SELECT  distinctstudent.S#,student.Sname,SC.C#,SC.score   
        FROM student,Sc   
        WHERE SC.score>=70 ANDSC.S#=student.S#;   
    三柒、查询不如格的学科,并按学科号从大到小排列   
        select c# from sc where scor e <60 order by C#;   
    38、查询课程编号为00三且课程成绩在八十分以上的学员的学号和人名;   
        select SC.S#,Student.Sname from SC,Student whereSC.S#=Student.S#
    and Score>80 and C#=’003′;   
    3玖、求选了学科的学生人数   
        select count(*) from sc;   
    40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其战绩   
        select Student.Sname,score   
        from Student,SC,Course C,Teacher   
        where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T#and
    Teacher.Tname=’叶平’ and SC.score=(selectmax(score)from SC where
    C#=C.C# );   
    4一、查询各类科目及相应的选修人数   
        select count(*) from sc group by C#;   
    4二、查询区别科目战表一样的学生的学号、课程号、学生战表   
      select distinct  A.S#,B.score from SC A  ,SC B whereA.Score=B.Score
    and A.C# <>B.C# ;   
    四三、查询每门功成绩最佳的前两名   
        SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数   
          FROM SC t1   
          WHERE score IN (SELECT TOP 2score   
                 FROM SC   
                 WHERE t1.C#= C#   
                ORDER BYscore DESC   
                 )   
          ORDER BY t1.C#;   
    4四、总结每门课程的学生选修人数(抢先十一个人的科目才总计)。供给输出课程号和选修人数,查询结果按人头降序排列,查询结果按人口降序排列,若人数相同,按学科号升序排列    
        select  C# as 课程号,count(*) as 人数   
        from  sc    
        group  by  C#   
        order  by  count(*)desc,c#    
    四伍、检索至少选修两门科目标学童学号   
        select  S#    
        from  sc    
        group  by  s#   
        having  count(*)  >  = 2   
    肆陆、查询全体学生都选修的教程的课程号和科目名   
        select  C#,Cname    
        from  Course    
        where  C#  in  (select  c# from  sc group  by  c#)    
    47、查询没学过“叶平”老师上课的任一门学科的学生姓名   
        select Sname from Student where S# not in (select S#
    fromCourse,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C#
    and Tname=’叶平’);   
    48、查询两门以上比不上格课程的同班的学号及其平均成绩   
        select S#,avg(isnull(score,0)) from SC where S# in (selectS# from
    SC where score <60 group by S# having count(*)>2)group
    byS#;   
    4玖、检索“00四”课程分数小于60,按分数降序排列的同室学号   
        select S# from SC where C#=’004’and score <60 order byscore
    desc;   
    50、删除“00贰”同学的“001”课程的实绩   
    delete from Sc where S#=’001’and C#=’001′;   
    标题讲述:  
    主旨用到上边多个涉及表:  
    CARD     借书卡。   CNO 卡号,NAME  姓名,CLASS 班级  
    BOOKS    图书。     BNO书号,BNAME 书名,AUTHO瑞鹰 我,P哈弗ICE
    单价,QUANTITY 库存册数   
    BO帕杰罗ROW   借书记录。 CNO 借书卡号,BNO 书号,GL450DATE 还书日期  
    备考:限定每人每一个书只好借一本;仓库储存册数随借书、还书而更改。  
    渴求达成如下壹四个处理:  
      一.
    写出建立BO智跑ROW表的SQL语句,供给定义主码完整性约束和引用完整性约束。  
      二. 找出借书超过五本的读者,输出借书卡号及所借图书册数。  
      三. 询问借阅了”水浒”1书的读者,输出姓名及班级。  
      四. 询问过期未还图书,输出借阅者(卡号)、书号及还书日期。  
      五. 询问书名包涵”网络”关键词的图书,输出书号、书名、作者。  
      6. 查询现有图书中价格最高的书本,输出书名及小编。  
      七.
    询问当前借了”计算方法”但从没借”计算办法习题集”的读者,输出其借书卡号,并按卡号降序排序输出。  
      捌. 将”C0一”班同学所借图书的还期都延长一周。  
      玖. 从BOOKS表中去除当前无人借阅的书本记录。  
      10.假如平日按书名查询图书音讯,请建立适宜的目录。  
     
    1壹.在BORubiconROW表上确立贰个触发器,完毕如下效果:要是读者借阅的书名是”数据库技术及运用”,就将该读者的借阅记录封存在BOEvoqueROW_SAVE表中(注ORROW_SAVE表结构同BO中华VROW表)。  
     
    12.建立贰个视图,展现”力0一”班学员的借书新闻(只必要出示姓名和书名)。  
     
    一3.查询当前还要借有”总计情势”和”组合数学”两本书的读者,输出其借书卡号,并按卡号升序排序输出。  
     
    1四.假定在建BOOKS表时未有定义主码,写出为BOOKS表追加定义主码的说话。  
      一5.对CATiggoD表做如下修改:  
        a. 将NAME最大列宽扩张到13个字符(假定原为四个字符)。  
        b. 为该表扩展1列NAME(系名),可变长,最大贰十二个字符。  
  1. 写出建立BO中华VROW表的SQL语句,需求定义主码完整性约束和引用完整性约束  
    –实现代码:  
    CREATE TABLE BORROW(  
        CNO int FOREIGN KEY REFERENCES CARD(CNO),  
        BNO int FOREIGN KEY REFERENCES BOOKS(BNO),  
        RDATE datetime,  
        PRIMARY KEY(CNO,BNO))   
  2. 找出借书超过5本的读者,输出借书卡号及所借图书册数  
    –实现代码:  
    SELECT CNO,借图书册数=COUNT(*)  
    FROM BORROW  
    GROUP BY CNO  
    HAVING COUNT(*)>5 
  3. 询问借阅了”水浒”一书的读者,输出姓名及班级  
    –达成代码:  
    SELECT * FROM CARD c  
    WHERE EXISTS(  
        SELECT * FROM BORROW a,BOOKS b   
        WHERE a.BNO=b.BNO  
            AND b.BNAME=N’水浒’ 
            AND a.CNO=c.CNO)   
  4. 询问过期未还图书,输出借阅者(卡号)、书号及还书日期  
    –达成代码:  
    SELECT * FROM BORROW   
    WHERE RDATE<GETDATE()   
  5. 查询书名蕴涵”网络”关键词的书籍,输出书号、书名、小编  
    –完成代码:  
    SELECT BNO,BNAME,AUTHOR FROM BOOKS  
    WHERE BNAME LIKE N’%网络%’   
  6. 查询现有图书中价格最高的书籍,输出书名及笔者  
    –达成代码:  
    SELECT BNO,BNAME,AUTHOR FROM BOOKS  
    WHERE PRICE=(  
        SELECT MAX(PRICE) FROM BOOKS)   
    七.
    询问当前借了”总计方法”但从不借”总括办法习题集”的读者,输出其借书卡号,并按卡号降序排序输出  
    –达成代码:  
    SELECT a.CNO  
    FROM BORROW a,BOOKS b  
    WHERE a.BNO=b.BNO AND b.BNAME=N’总括办法’ 
        AND NOT EXISTS(  
            SELECT * FROM BORROW aa,BOOKSbb  
            WHERE aa.BNO=bb.BNO  
                ANDbb.BNAME=N’总结方法习题集’ 
                ANDaa.CNO=a.CNO)  
    ORDER BY a.CNO DESC   
  7. 将”C0一”班同学所借图书的还期都延长二十八日  
    –完成代码:  
    UPDATE b SET RDATE=DATEADD(Day,7,b.RDATE)  
    FROM CARD a,BORROW b  
    WHERE a.CNO=b.CNO  
        AND a.CLASS=N’C01′   
  8. 从BOOKS表中去除当前无人借阅的图书记录  
    –达成代码:  
    DELETE A FROM BOOKS a  
    WHERE NOT EXISTS(  
        SELECT * FROM BORROW  
        WHERE BNO=a.BNO)   
  9. 设若平日按书名查询图书音信,请建立适合的目录  
    –完成代码:  
    CREATE CLUSTERED INDEX IDX_BOOKS_BNAME ON BOOKS(BNAME)  
    1一.
    在BO奥迪Q5ROW表上创立多个触发器,完结如下效果:假若读者借阅的书名是”数据库技术及使用”,就将该读者的借阅记录封存在BO翼虎ROW_SAVE表中(注ORROW_SAVE表结构同BOSportageROW表)  
    –完毕代码:  
    CREATE TRIGGER TR_SAVE ON BORROW  
    FOR INSERT,UPDATE  
    AS  
    IF @@ROWCOUNT>0 
    INSERT BORROW_SAVE SELECT i.*  
    FROM INSERTED i,BOOKS b  
    WHERE i.BNO=b.BNO  
        AND b.BNAME=N’数据库技术及运用’   
  10. 树立3个视图,突显”力0一”班学员的借书消息(只需要出示姓名和书名)  
    –完成代码:  
    CREATE VIEW V_VIEW  
    AS  
    SELECT a.NAME,b.BNAME  
    FROM BORROW ab,CARD a,BOOKS b  
    WHERE ab.CNO=a.CNO  
        AND ab.BNO=b.BNO  
        AND a.CLASS=N’力01′ 
    壹3.
    询问当前还要借有”总结办法”和”组合数学”两本书的读者,输出其借书卡号,并按卡号升序排序输出  
    –完成代码:  
    SELECT a.CNO  
    FROM BORROW a,BOOKS b  
    WHERE a.BNO=b.BNO  
        AND b.BNAME IN(N’总计方法’,N’组合数学’)  
    GROUP BY a.CNO  
    HAVING COUNT(*)=2 
    ORDER BY a.CNO DESC   
  11. 假设在建BOOKS表时未有定义主码,写出为BOOKS表追加定义主码的言辞  
    –实现代码:  
    ALTER TABLE BOOKS ADD PRIMARY KEY(BNO)   
    一5.一 将NAME最大列宽扩充到11个字符(假定原为伍个字符)  
    –落成代码:  
    ALTER TABLE CARD ALTER COLUMN NAME varchar(10)   
    壹5.2 为该表扩展壹列NAME(系名),可变长,最大十多个字符  
    –实现代码:  
    ALTER TABLE CARD ADD 系名 varchar(20)  
    题材讲述:  
    为治本岗位业务培养和锻炼新闻,建立一个表:  
    S (S#,SN,SD,SA)   S#,SN,SD,SA
    分别表示学号、学员姓名、所属单位、学员年龄  
    C (C#,CN )       C#,CN       分别表示课程编号、课程名称  
    SC ( S#,C#,G )    S#,C#,G    
    分别表示学号、所选修的科目编号、学习战绩  
    要求落实如下四个处理:  
      一. 行使专业SQL嵌套语句询问选修课程名叫’税收基础’的学生学号和姓名  
      二. 利用标准SQL嵌套语句询问选修课程编号为’C二’的学员姓名和所属单位  
      三. 选拔标准SQL嵌套语句询问不选修课程编号为’C5’的上学的儿童姓名和所属单位  
      四. 采取标准SQL嵌套语句询问选修全体科指标学习者姓名和所属单位  
      5. 询问选修了课程的上学的小孩子人数  
      陆. 查询选修课程超越伍门的学员学号和所属单位  
  12. 运用专业SQL嵌套语句询问选修课程名称叫’税收基础’的学童学号和姓名   
    –完成代码:  
    SELECT SN,SD FROM S  
    WHERE [S#] IN(  
        SELECT [S#] FROM C,SC  
        WHERE C.[C#]=SC.[C#]  
            AND CN=N’税收基础’)  
  13. 行使标准SQL嵌套语句询问选修课程编号为’C二’的学习者姓名和所属单位  
    –达成代码:  
    SELECT S.SN,S.SD FROM S,SC  
    WHERE S.[S#]=SC.[S#]  
        AND SC.[C#]=’C2′ 
  14. 运用正规SQL嵌套语句询问不选修课程编号为’C5’的上学的儿童姓名和所属单位  
    –达成代码:  
    SELECT SN,SD FROM S  
    WHERE [S#] NOT IN(  
        SELECT [S#] FROM SC   
        WHERE [C#]=’C5′)  
  15. 运用标准SQL嵌套语句询问选修全部学科的上学的小孩子姓名和所属单位  
    –达成代码:  
    SELECT SN,SD FROM S  
    WHERE [S#] IN(  
        SELECT [S#] FROM SC   
            RIGHT JOIN C ONSC.[C#]=C.[C#]  
        GROUP BY [S#]  
        HAVING COUNT(*)=COUNT(DISTINCT [S#]))  
  16. 询问选修了课程的学生人数  
    –完成代码:  
    SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC  
  17. 查询选修课程超越五门的学习者学号和所属单位  
    –完毕代码:  
    SELECT SN,SD FROM S  
    WHERE [S#] IN(  
        SELECT [S#] FROM SC   
        GROUP BY [S#]  
        HAVING COUNT(DISTINCT [C#])>5)  
    if not object_id(‘cj’)is null   
       drop table cj  
    go  
    create table cj(stuName nvarchar(10),KCM
    nvarchar(10),cjnumeric(5,2))   
    insert into cj select ‘张三’,’语文’,98   
    union select ‘李四’,’语文’,89   
    union select ‘王五’,’语文’,67   
    union select ‘周攻’,’语文’,56   
    union select ‘张三’,’数学’,89 
    union select ‘李四’,’数学’,78   
    union select ‘王五’,’数学’,90   
    union select ‘周攻’,’数学’,87   
    方法一:  
    select stuname from  
        (select stuName,kcm,(select count(*) from cj
    wherestuname!=a.stuname and kcm=a.kcm and cj>a.cj) cnt from cj a)
    x  
        group by stuname having max(cnt)<=1 
    go  
    方法二:  
    SELECT stuname FROM cj1 a    
    where cj IN(SELECT TOP 2 cj FROM cj1 WHERE kcm=a.kcm ORDER BY cj
    desc)  
    GROUP BY stuname HAVING(count(1)>1)  
    方法三:  
    select distinct stuname from cj a  
        where not exists(select kcm from cj b wherea.stuname=stuname  
                   and (select count(*) from cj where kcm=b.kcm and
    stuname!=a.stuname andcj>b.cj)>1)

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website