版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库复习资料第一讲数据库概述数据与信息的概念1.数据:是实现对象的数据模型,表达对象的特征〔属性〕,是对现实对象的抽象与简化,是人们用于记录事物情况的物理符号。2.信息:是经过加工处理并对人类社会实践和生产活动产生决策影响的数据。3.数据处理:是指将数据转换为信息的过程。4.数据处理的过程:收集、存储、分类、计算、加工、检索、传输。5.数据类型:〔1〕数值类型:能参与数值计算的数据类型,如整数、浮点数。〔2〕非数值型数据:不能参与数值计算的数据类型,如整数。浮点数。〔3〕日起型数据:表达日期和时间的数据类型。二、数据管理技术的开展阶段三、数据库1.定义:指数据库系统中按照一定的方式组织的,存储在外部存储设备上的,能为多个用户共享的、与应用程序相互独立的相关数据集合。2.类型:〔1〕关系数据库:以关系模型为数据存储机制的数据库。〔2〕层次数据库:以层次模型为数据存储机制的数据库。〔3〕网络数据库:以网络模型为根底的数据库。第二讲关系模型根底一、数据模型1.定义:客观事物对象某些特征的数据抽象和模拟,是严格定义的一组概念的集合。2.数据模型的要求:〔1〕比拟真实地模拟或抽象表示现实对象。〔2〕容易被人们理解和接受。〔3〕便于在计算机上实现。二、数据模型类型〔1〕层次数据模型〔2〕网络数据模型〔3〕关系数据模型三、关系数据模型〔1〕概念模型:不关联任何DBMS的简化关系模型,只考虑对象、属性、联系,不考虑实现技术细节。〔2〕逻辑模型:关联到具体的DBMS产品,与技术细节有关。〔3〕物理模型:是关系模型的物理有贮结构,与DBMS和OS有关。〔1〕关系表:一个关系就是一个二维表,由行和列组成,每个行表达一个实体对象或联系对象,行不能重复,即没有两个行的值完全相同。列表达实体对象的属性。每个关系都有一个关系名。〔2〕元组〔记录〕:关系的每个行称为一个元组,也称为记录或行。每个元组表达现实世界的一个对象或对象之间的一个联系。元组是不重复的。〔3〕属性:二维表的每个列称为属性。每个属性都有属性名和数据类型。每个关系中列是不能重复的。〔4〕关系的度:关系中属性的个数称为关系的度。〔5〕域:属性的取值范围。〔6〕模式:将关系二维表的表头称为关系的模式,表达对象的属性结构。〔7〕主键〔Primarykey〕:关系中能唯一区分确定不同元组的属性和属性集合。〔8〕外键〔Foreignkey〕:关系中的某个属性或属性的组合不是此关系的关键字,但却是另一个关系的主关键字。〔1〕关系中每个元组的分量必须是原始的。〔2〕每一列的值只能取自同一个域。〔3〕列的次序可以任意交换。〔4〕行的次序可以任意交换。〔5〕关系中不能出现完全相同的两行。〔1〕数据结构:二维表〔2〕操作集合:增加元组、修改元组、删除元组、遍历元组〔3〕关系模型约束:完整性约束、引用性约束、自定义约束第三讲数据库管理和维护一、SQLServer数据库的组成1.组织结构:<1>数据库的逻辑结构:SQLServer把数据库及其各种对象使用逻辑组件表示,通过SQLServer提供的专门工具。<2>数据库的物理结构:是DBMS管理磁盘上的物理文件,是从操作系统角度看到的数据库的文件对象,可以通过OS提供的资源器等工具查看数据库的物理对象。二、数据文件1.数据库数据文件是存放数据库对象和数据的文件,保存在文件系统中。2.一个数据库可以有多个数据文件。3.每个数据文件只能属于一个数据库。4.当有多个数据文件时,一个数据文件被定义为主文件,扩张名为mdf,主数据文件用于存储数据库启动信息或局部或全部数据库。5.每个数据库只能有1个主数据文件。6.其他数据文件称为次数据文件,扩展名为ndf,用于存储主数据文件没有存储的其他数据库信息。三、数据库日志文件〔logfile〕1.日志文件用于保存对数据的更新操作,保存数据的增加,修改,删除。2.事务日志文件最小为512kb,扩展名为.ldf。3.每个数据库至少有1个日志文件,也可以有多个日志文件。四、使用Transact-SQL语句创立数据库数据库名称:ERPDB数据文件:(1)名称:erpdata01;存储:d:\erp\data\;大小:1MB;最大:2MB;增量:5%;文件组:主文件组。(2)名称:erpdata02;存储:d:\erp\data\;大小:1MB;最大:4MB;增量:1M;文件组:GP001。 日志文件:名称:erplog01;存储:d:\erp\data\;大小:1MB;最大:4MB;增量:1M;createdatabaseERPDBon(name=erpdata01,filename='d:\erp\data\erpdata01.mdf',size=1MB,maxsize=2MB,filegrowth=5%),filegroupGP001(name=erpdata02,filename='d:\erp\data\erpdata02.ndf',size=1MB,maxsize=4MB,filegrowth=1MB)logon(name=erplog01,filename='d:\erp\data\erplog01.ldf',size=1MB,maxsize=4MB,filegrowth=1MB)五、使用Transact-SQL语句修改数据库1.修改数据库ERPDB,增加数据文件文件名:erpdata04;存储:d:\erp\data\;大小:2MB;最大:4MB;增量:500KBalterdatabaseERPDBaddfile(name=erpdata04,filename='d:\erp\data\erpdata04.ndf',size=2MB,maxsize=4MB,filegrowth=500KB)2.修改数据库ERPDB,增加日志文件文件名:erplog04;存储:d:\erp\data\;大小:1MB;最大:3MB;增量:8%alterdatabaseERPDBaddlogfile(name=erplog04,filename='d:\erp\data\erplog04.ldf',size=1MB,maxsize=3MB,filegrowth=8%)3.修改数据库ERPDB,增加文件组,名称为:ERPFG并为此文件组增加一个数据文件文件名:erpdata05;存储:d:\erp\data\;大小:1MB;最大:2MB;增量:2MBalterdatabaseERPDBaddfilegroupERPFGgoalterdatabaseERPDBaddfile(name=erplog05,filename='d:\erp\data\erplog05.ndf',size=1MB,maxsize=2MB,filegrowth=2MB)4.删除数据文件:erpdata04和删除日志文件:erplog04alterdatabaseERPDBremovefileerpdata04alterdatabaseERPDBremovefileerplog045.删除数据库ERPDBDropdatabaseERPDB第四讲关系代数和集合运算一、关系运算1.关系运算:指操作对象和结果都是关系。2.关系代数:对关系进行操作的科学。二、关系运算的类型1.根本运算:并、交、差。2.选择运算:对表的行的选择〔〕。3.投影运算:对表的列的选择,从关系中选取局部属性的运算〔Π〕。4.笛卡尔积运算:〔1〕定义:设D1,D2,D3,…,Dn为属性的值域集合,将每个集合的元素进行关联组合,形成笛卡尔积,记为 D1XD2XD3X…XDn={d1,d2,d3,…,dn|di∈Dii=1,2,3,…,n}如:A={1,2}B={a,b}那么AxB={(1,a),(2,a),(1,b),(2,b)}5.广义笛卡尔的定义:当普通的笛卡尔积的集合是任意的关系集合时,这些关系集合的笛卡尔积称为广义笛卡尔积。记为 R1XR2X…XRn={(r1,r2,…,rn)|ri∈Ri}6.连接:〔1〕等值连接:某些属性相等。〔2〕条件连接:R⋈S。〔3〕自然连接:有公共属性的关系,在公共属性上等值连接,且结果集去除重复属性。三、关系的定义1.任意集合D1,D2,…,Dn的笛卡尔积D1xD2x…xDn的任何一个子集称为D1,D2,…,Dn上的一个n元关系。记为:R(D1,D2,…,Dn)⊂D1xD2x…xDnR(D1,D2,…,Dn)={(d1,d2,…,dn)|di∈Di}一般将R(D1,D2,..,Dn)称为关系的模式,即二维表的表头。2.关系不是元素的集合,而是元组的集合。3.关系代数的常见运算符〔1〕传统的集合运算符,包括并〔∪〕、差〔—〕、交〔∩〕、笛卡尔积〔×〕;〔2〕专门的关系运算符,包括选择〔〕、投影〔Π〕、连接〔⋈〕和除〔÷〕运算;〔3〕算术比拟运算符,包括大于〔>〕、大于等于〔≥〕、小于〔<〕、小于等于〔≤〕、等于〔=〕、不等于〔≠〕;〔4〕逻辑运算符,包括与〔∧〕、或〔∨〕、非〔¬〕。第五讲SQLServer表管理和约束条件一、表〔table〕的概念1.表是关系模型的逻辑存储结构。2.实体和关系都保存在数据库表中。3.表由模式、字段和记录组成。4.模式表达表的结构,即字段及其类型。5.字段表达实体的属性,字段有类型,表达取值范围。6.记录表达一个具体的实体,即现实对象。二、创立表的根本信息:表名、字段名、字段数据类型、表的字段的约束、字段的默认值和规那么。三、SQLServer2000的数据类型1.字符类型:存储汉字,英文符号,数字符号等。〔1〕char<1>用于存储定长字符串。<2>语法:char(n)n取值:1—8000,缺乏补空格。<3>优点:查询速度快。<4>缺点:浪费磁盘存储空间。〔2〕varchar<1>存储可变长度字符串。<2>语法:varchar(n)n=1-8000〔3〕Text<1>存储可变长度超长字符串,最大2^31-1个字符<2>Text类型不能用于变量和存储过程参数。〔1〕Nchar(n)n=1—4000字符〔2〕Nvarchar(n)n=1—4000字符〔3〕Ntext2^30-1字符〔1〕整数类型<1>int:存储4字节,-2^31~2^31-1<2>Smallint:存储2字节-2^15~2^15-1<3>Tinyint:存储1字节0~255<4>bigint:存储8个字节-2^63~2^63-1〔2〕浮点类型<1>Float:存储8个字节,精确到小数点15位,表达-1.79x10^308~1.79x10^308,可以通过float(n)指定小数位数n=1-53<2>Real:存储4个字节,精确到小数点7位,表达-3.04x10^38~3.04x10^38,real不能指定小数点位数。〔3〕精确数值类型<1>decimal(p,s)p:有效位数,s:小数位数<2>numeric(p,s)p:有效位数,s:小数位数〔4〕货币数值类型<1>Money存储8个字节,-2^63~2^63-1<2>Smallmoney存储4个字节,-2^31~2^31-1〔1〕DATETIME:存储日期和时间,精度为3/100秒,存储2个4字节的空间,分别存储日期和时间。〔2〕SmallDatetime:精确到分,占用4个字节的存储空间。时间值按小时和分钟存储〔3〕Timestamp:时间戳数据类型,用于自动记录的操作时间,此类型的字段值由系统自动提供,不允许用户手动设置该字段值。〔1〕Binary:定长二进制类型,binary(n),n=1-8000字节默认为1,可以为十进制数,自动转换为十六进制,或使用0x开头的十六进制数表示。〔2〕Varbinary:可变长二进制类型,varbinary(n),n=1-8000字节,〔3〕Image:可变长大二进制类型,存储2^31-1字节的二进制数据。四、使用T-SQl语句创立表〔1〕创立系统功能表 表名 字段名类型默认值约束OA_FUNCTIONFUNNOIntPKFUNNAMEVarchar(50)非空UPFUNNOIntFK->PK(本表PK)OA_DEPARTMENTDEPTNOIntPKDEPTCODEVarchar(10)非空唯一DEPTNAMEVarchar(50)非空唯一LOCATIONVarchar(200)POSTCODECHAR(6)OA_EMPLOYEEEMPNOIntPKEMPIDVarchar(20)非空唯一PASSWORDVarchar(20)非空NAMEVarchar(50)非空SEXChar(2)‘男’只能是’男’或’女’AGEInt20在18到60之间WORKAGEintAge>workage+18HIREDATEDatetime要在’2000-10-10’之后LeaveDateDatetime要在Hiredate之后Salarydecimal(10,2)在1000到9000之间BONUSDecimal(10,2)Salary>bonusMailVarchar(100)PhotoImageJobDescTextDEPTNOintOA_SKILLSKILLNOIntPKSKILLNAMEVarchar(50)非空唯一OA_EMPSKILLEMPNOIntSKILLNOInt2.6员工功能关联表OA_EMPFUNCTIONEMPNOIntFUNNOIntcreatetableOA_FUNCTION(FUNNOintprimarykey,FUNNAMEvarchar(50)notnull,UPFUNNOInt,foreignkey(UPFUNNO)referencesOA_FUNCTION(FUNNO))createtableOA_DEPARTMENT(DEPTNOintprimarykey,DEPTCODEvarchar(10)notnullunique,DEPTNAMEvarchar(50)notnullunique,LOCATIONVarchar(200),POSTCODECHAR(6))createtableOA_EMPLOYEE(EMPNOintprimarykey,EMPIDvarchar(20)notnullunique,EPASSWORDvarchar(20)notnull,ENAMEVarchar(50)notnull,SEXChar(2)default'男'check(sex='男'orsex='女'),AGEIntdefault'20'check(18<=AGEandAGE<=60),WORKAGE int,HIREDATEDatetimecheck(HIREDATE>'2000-10-10'),LeaveDateDatetime,check(LeaveDate>HIREDATE),Salarydecimal(10,2)check(1000<=SalaryandSalary<=9000),BONUS Decimal(10,2),Mail Varchar(100),Photo Image,JobDesc Text,DEPTNO int,foreignkey(DEPTNO)referencesOA_Department(DEPTNO),check(LeaveDate>HIREDATE),check(Salary>bonus),check(Age>workage+18),)CREATETABLEOA_SKILL(SKILLNOintprimarykey,SKILLNAMEVarchar(50)NOTNULLUNIQUE,)CREATETABLEOA_EMPSKILL(EMPNOint,SKILLNOInt,primarykey(EMPNO,SKILLNO),foreignkey(EMPNO)REFERENCESOA_EMPLOYEE(EMPNO),foreignkey(SKILLNO)REFERENCESOA_SKILL(SKILLNO),)createtableOA_EMPFUNCTION(EMPNO Int,FUNNO Int,primarykey(EMPNO,FUNNO),foreignkey(EMPNO)referencesOA_EMPLOYEE(EMPNO),foreignkey(FUNNO)referencesOA_FUNCTION(FUNNO))五、使用T-SQL语句修改表〔1〕为员工表OA_EMPLOYEE增加列:MobilePhone,类型为varchar(50),不能为空altertableOA_EMPLOYEEaddMobilePhonevarchar(50)GO〔2〕将员工表OA_EMPLOYEE的Mail列修改为Varchar(200),且不能为空altertableOA_EMPLOYEEaltercolumnMailVarchar(200)nullGO〔3〕将员工表OA_EMPLOYEE的JobDesc列删除altertableOA_EMPLOYEEdropcolumnJobDescGO〔4〕删除员工表droptableOA_EMPLOYEE六.表设计范式的实现----约束1.定义:规定表记录字段的取值范围和限定。2.类型:〔1〕主键约束〔2〕非空约束〔3〕唯一约束〔4〕外键约束〔5〕检查约束3.主键约束〔primarykey〕〔1〕唯一标识表中的所有行的一个列或一组列,主键不允许空值。不能存在具有相同的主键值的两个行,因此主键值总是唯一标识单个行。表中可以有不止一个键唯一标识行,每个键都称作候选键。只有一个候选键可以作表的主键。〔2〕分类<1>列级主键约束:在定义表的列字段时,直接定义本列是表的主键。<2>表级主键约束:在创立表时,单独创立表的主键约束。当表中有多个字段组合起来作为表的主键时,不能单独在列上定义主键,只能在表的级别上创立这类主键约束。4.非空约束〔notnull〕〔1〕非空约束:字段值不能为null,只有列级定义,无表级定义。〔2〕分类:<1>自定义约束名:字段名类型constraint约束名notnull<2>默认约束名:字段名类型notnull5.唯一性约束〔unqiue〕〔1〕唯一性约束:约束确保未输入重复值,并创立一个索引以增强性能,可以为空。6.外键约束〔foreignkey〕〔1〕定义:由一列或多列构成的,它用来建立和强制两个表间的关联,这种关联是通过将一个表中的组成主键的列或组合列参加到另一个表中形成的,这个列或组合列就成了第二个表中的外键。〔2〕定义类型:<1>列级外键:列名类型reference表名〔列名〕<2>表级外键:foreignkey〔列名1,列名2….〕reference表名〔列名1,列名2…..〕7.检查约束〔check〕〔1〕定义:在设定栏数据类型之上更进了一步。它们使用一个决定数据是否有效的布尔表达式限制一个栏可以接受的实际值。〔2〕类型:<1>列级检查约束:列名类型check〔逻辑表达式〕<2>表级检查约束:check〔逻辑表达式〕七、表的修改〔1〕修改列类型〔2〕增加列〔3〕删除列〔4〕增加约束〔5〕删除约束第六讲关系代数和关系运算一、关系的专门运算1.关系有特定的运算,这些运算是关系特有的,与集合运算不同。2.专门运算分类:(1)单目运算:只操作一个关系,结果是新的关系,有选择,投影(2)多目运算:操作2个或2个以上关系,产生新的关系,有连接运算二、选择运算1.选择运算是针对一个关系,对指定的关系的元组(记录)按照指定的条件进行筛选。2.选择的语法标识:σ条件(关系)条件包含:〔1〕关系的属性名称〔2〕比拟运算符:><>=<=<>〔3〕逻辑运算符:∧与∨或¬非例:关系:学生(学号,姓名,年龄,生日,性别)(1)选择年龄大于22的学生σage>22(Student)(2)选择1980前出生的所有男同学σ生日<‘1980-01-10’∧sex=‘男’(Student)三、投影运算〔Project〕1.投影运算是对指定的关系只查询局部属性的运算。投影运算也是单目运算,针对一个关系。2.投影的语法标识:∏属性名,属性名,属性名〔关系名〕例:设关系:Student(Id,Name,Age,birthday,sex)(1)查询学生关系的学号和姓名∏id,name(Student)(2)查询学生的所有性别∏sex(Student)(1)先选择后投影∏name,sex(σage>22∧sex=‘男’(Student))(2)先投影后选择σage>22∧sex=‘男’(∏name,age,sex(Student))四、关系的链接运算〔join〕1.当用户检索的数据分别存储在不同的关系中时,需要将多个关系连接起来,形成一个包含所有关系的属性的新的关系,这就需要关系的连接运算。〔1〕条件连接:使用条件表达式如<><=>=<>等连接两个关系属性的连接。〔2〕等式连接:使用等式=关联多个关系属性的连接。〔3〕自然连接:如果两个关系中进行比拟的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。3.外连接:两个关系R和S进行自然连接时,选择两个关系R和S公共属性上相等的元组,去掉重复的属性列构成新关系。这样,关系R中的某些元组有可能在关系S中不存在公共属性值上相等的元组,造成关系R中这些元组的值在运算时舍弃了;同样关系S中的某些元组也可能舍弃。〔1〕左外连接:R和S进行自然连接时,只把R中舍弃的元组放到新关系中。〔2〕右外连接:R和S进行自然连接时,只把S中舍弃的元组放到新关系中。〔3〕完全外连接:R和S进行自然连接时,只把R和S中舍弃的元组都放到新关系中。R关系S关系A1A2A3A1A2A4abcazabadbahcddcdddfgdscR和S的自然连接R和S的左外连接:A1A2A3A4abcnullbadhcddddfgnullA1A2A3A4badhcdddA1A2A3A4aznullabadhcddddsnullcA1A2A3A4abcnullbadhcddddfgnullaznulladsnullcR和S的右外连接R和S的完全外连接第七讲数据管理和事物管理数据管理1.功能:对数据库的数据管理功能CRUD,即增删改查四大根本功能。2.分类:〔1〕C(Create):将数据增加到数据库中,即将数据增加到表中。〔2〕U(Update):将数据库中的数据进行更新。〔3〕D(Delete):将数据库中的数据删除。〔4〕R(Retrive):从数据库检索出存储的数据。3.CUD功能通过SQL的DML语句完成,R功能通过SQL的DQL语句完成。二、SQL的DML语句1.对数据的增加,修改和删除通过DML语句完成。2.DML主要有3个SQL语句(1)Insertinto语句:完成数据的增加(2)Update语句:完成数据的修改(3)Delete语句:完成数据的删除。三、增加数据1.语句:insertinto2.分类:〔1〕单记录增加:每次执行只能增加一个记录。格式1:insertinto表名values(值1,值2,…) 全字段增加,没有列出字段名,值的个数必须与字段个数相同。格式2:insertinto表名(列1,列2,…)values(值1,值2,…) 局部字段的记录增加,只给出局部字段的值,未列出字段按默认值指定,无默认值那么为null。所有非空字段,且无默认值时,不能省略该字段。例:insertintodeptvalues(1,’001’,’财务部’);增加新的部门,所有字段均赋值。insertintodept(deptno,deptcode)values(2,’002’) 增加新的部门,只赋值部门编号和编码,而名称字段没有赋值,取默认值,假设没有默认值那么为null。如果部门名称字段不允许为空,那么出现错误。〔2〕多记录增加格式1:Insertinto表名Select语句将select语句结果集的记录增加到表中。要求select的工程个数和数据类型与表的字段个数和类型相符。格式2:insertinto表名(列1,列2,…)select语句将select结果集增加到指定列的表中。要求select个数与指定的列数相同,且数据类型相符。例:格式1:insertintodeptSelectno,code,nameFromdepartmentwherenamelike‘%产’格式2:insertintodept(deptno,deptcode)Selectno,codeFromdepartmentWhereno<10四、修改数据1.功能:对数据表中指定的记录字段值进行修改。2.语法:〔1〕通过给定值修改Updata表名set列名=值,列名=值…..〔2〕通过查询修改Updata表名set列名=select语句,列名=表达式….From表名where条件表达式例:UPDATEOrdersSETOrderAmount=OrderAmount*1.1,Freight=Freight*WHEREShipCountry='UK';五、删除数据1.功能:删除表中的指定记录或全部记录。2.语法:〔1〕deletefrom表名[where条件]〔2〕truncatetable表名该语句与delete的区别是此语句不支持事务处理,无法进行回滚,不能撤销。六、事务1.定义:事务(Transaction)是将多条DML数据操作语句的执行作为一个逻辑整体,要么全部执行成功,要么都不执行。2.事务的特点:〔1〕原子性(Atomic):事务中的所有语句作为一个整体,不能别离,要成功都成功,要失败都失败。〔2〕一致性(Consistence):事务完成后所有的数据都保持一致,所有的数据库约束和规那么都必须遵守。〔3〕隔离性(Isolation)多个事务之间必须不能相互影响,每个事务都是独立的。〔4〕永久性(Duobility):事务结束后,事务的执行结果要永久保存。3.实现事务的方式:〔1〕自动提交事务模式:每个SQL语句自己作为一个事务,执行成功后自动提交,如果执行失败,自动回滚该语句。〔2〕显式事务处理模式;使用事务管理语句完成事务的开始,事务的提交和事务的回滚,可以将多条DML语句作为一个事务管理。〔3〕隐身事务处理模式:此模式下一个事务结束后,新的事务自动开始,不需要使用begintransaction标识事务的开始,但要使用committransaction和rollbacktransaction结束事务。例创立城市银行数据库:CITYBANK,使用默认位置和大小即可。创立如下银行业务表:表名字段名类型约束说明//账户表Bank_AccountAccountIDPASSWORDANAMEcardidOpenDateBalanceAccountStatusATYPEChar(6)Varchar(10)Varchar(20)Varchar(18)DatetimeDecimal(20,2)Char(4)Char(4)PKNOTNULLNOTNULLUNIQUE默认值:0默认值:’激活’默认值:’普通’账户ID账户密码姓名身份证号码开户日期帐户余额账户状态账户类型//存款单表Bank_DepositNoteNoteNoAccountIDAmountNoteDateIntChar(6)Decimal(10,2)datetimePK存款单序号帐户ID存款金额存款日期//取款单表Bank_WithdrawNoteNoteNoAccountIDAmountNoteDateIntChar(6)Decimal(10,2)datetimePK取款单序号帐户ID取款金额取款日期//转帐单表Bank_TransferNoteNoteNoFROMAccountIDTOAccountIDAmountNOTEDATEIntChar(6)Char(6)Decimal(10,2)datetimePKFK->Bank_AccountPK取款单序号转出帐户ID转入帐户ID转帐金额转帐日期//注销申请单表Bank_DestoryNoteNoteNoAccountIDNoteDateNoteCommentIntChar(6)DatetimeVarchar(500)PK注销单序号帐户ID申请日期申请理由1.createdatabaseCITYBANK2.createtableBank_Account(AccountIDChar(6)primarykey,EPASSWORDVarchar(10)notnull,ANAMEVarchar(20)notnull,cardidVarchar(18)UNIQUE,OpenDateDatetime,BalanceDecimal(20,2)default0,AccountStatusChar(4)default'激活',ATYPEChar(4)default'普通')createtableBank_DepositNote(NoteNoIntprimarykey,AccountIDChar(6)foreignkey(AccountID)referencesBank_Account(AccountID),AmountDecimal(10,2),NoteDatedatetime)createtableBank_WithdrawNote(NoteNoIntprimarykey,AccountIDChar(6)foreignkey(AccountID)referencesBank_Account(AccountID),AmountDecimal(10,2),NoteDatedatetime)createtableBank_TransferNote(NoteNoIntprimarykey,FROMAccountIDChar(6)foreignkey(FROMAccountID)referencesBank_Account(AccountID),TOAccountIDChar(6)foreignkey(TOAccountID)referencesBank_Account(AccountID),AmountDecimal(10,2),NOTEDATEdatetime,)createtableBank_DestoryNote(NoteNoIntprimarykey,AccountIDChar(6)foreignkey(AccountID)referencesBank_Account(AccountID),NoteDateDatetime,NoteCommentVarchar(500))账号密码姓名身份证号码开户日期开户金额状态类型001001001李铭2010-01-200激活金卡001002002张林2009-03-010激活银卡001003003刘鑫2008-10-10激活普通(1)setxact_abortonbegintransactioninsertintoBank_Account(AccountID,EPASSWORD,ANAME,cardid,OpenDate,Balance,AccountStatus,ATYPE)2010-01-20',0,'激活','金卡')committransaction(2)setxact_abortonbegintransactioninsertintoBank_Account(AccountID,EPASSWORD,ANAME,cardid,OpenDate,Balance,AccountStatus,ATYPE)2009-03-01',0,'激活','银卡')committransaction(3)setxact_abortonbegintransactioninsertintoBank_Account(AccountID,EPASSWORD,ANAME,cardid,OpenDate,Balance,AccountStatus,ATYPE)2008-10-10',0,'激活','普通')committransaction4.存款业务:<1>李铭2010-02-20存入2000元。setxact_abortonbegintransactionupdateBank_AccountsetBalance=2300where(AccountID=001001)insertintoBank_DepositNote(NoteNo,AccountID,Amount,NoteDate)values(222,'001001',2000,'2010-02-20')committransaction5.取款业务:<1>李铭2010-04-10取出1670.78元。setxact_abortonbegintransactionupdateBank_AccountsetBalance=Balance-1670.78where(AccountID=001001)insertintoBank_WithdrawNote(NoteNo,AccountID,Amount,NoteDate)values(111,'001001',1670.78,'2010-04-10')committransaction6.转账业务:<1>李铭2010-04-10转帐500到张林。setxact_abortonbegintransactionupdateBank_AccountsetBalance=Balance-500where(AccountID=001001)updateBank_AccountsetBalance=Balance+500where(AccountID=001003)insertintoBank_TransferNote(NoteNo,FROMAccountID,TOAccountID,Amount,NoteDate)values(111,'001001','001002',500,'2009-07-14')committransaction7.注销业务:<1>李铭2010-04-10日,因出国定居申请帐户注销。setxact_abortonbegintransactioninsertintoBank_DestoryNote(NoteNo,AccountID,NoteDate,NoteComment)values(111,'001001','2010-04-10','出国定居')updateBank_AccountsetAccountStatus='注销'whereAccountID=001001committransaction7.查询业务:<1>查询所有帐户的余额。selectBank_Account.BalancefromBank_Account<2>查询刘鑫的所有转帐记录。select*fromBank_TransferNotewhereFROMAccountID=001003orTOAccountID=001003第八讲关系模型和函数依赖〔1〕一、数据库标准设计理论体系1.函数依赖:研究表字段之间的关系。2.范式:关系模式的设计的标准。3.模式分解:将不符合范式的关系模式分解为多个符合范式的关系模式。二、函数依赖〔FD〕1.定义:设有关系模式R(U),其中U是R的属性,U={A1,A2,A3,…,An},X,Y是U的子集,X∈U,Y∈U,设u和v的任意元组,如果u[X]=v[y],那么必有存在u[Y]=v[Y],那么称属性X函数决定属性Y,或属性Y依赖属性X,记为:X->YX称为决定因子,Y称为依赖因子。2.函数依赖集:关系R的所有函数依赖构成函数依赖集,记为F。3.类型:〔1〕平凡函数依赖:如果XY,但Y⊂X,那么称XY是平凡的。〔2〕非平凡函数依赖:如果XY,但Y!⊂X,那么称XY是非平凡的〔3〕完全函数依赖:如果XY,有X的真子集X‘,不存在X’->Y.那么称X->Y是完全依赖。〔4〕局部函数依赖:如果XY,有X的真子集X‘,存在X’->Y.那么称X->Y是完全依赖。〔5〕传递函数依赖:如果XY且YZ,那么XZ是传递的。四、函数依赖蕴含1.定义:设有关系模式R(U,F),对于U的子集X和Y,如果F中使得X->Y成立,那么称F蕴含X->Y。例:关系模式:员工(学号,姓名,专业,系,分院) F={学号->姓名,学号->专业,专业->系,系->分院} 那么F蕴含:{学号->系},{学号->分院},{专业->分院},{学号->姓名,专业,系,分院}这些依赖都蕴含在F中五、FD的逻辑推理1.自反律:如果Y⊂X,那么XY。2.传递律:如果XY且YZ,那么XZ。3.合成律:如果XY且XZ,那么X(Y,Z)成立。4.分解律:如果X(Y,Z),那么XY且XZ。5.曾广律:如果XY,那么XZYZ。六、函数依赖中得属性的类型〔1〕主属性〔2〕非属性〔3〕左属性〔4〕右属性〔5〕双重属性〔6〕孤立属性七、〔1〕候选键:有关系模式R(U,F),存在属性集X,有XU,且有X的真子集X’,且X’U不成立,称X是R的候选键。〔2〕主键:R中有多个候选键时,选中一个作为主键。〔3〕超键:包含候选键的属性集称为超键。第九讲简单查询一、查询语句select语句1.数据库最主要功能是数据查询。2.按功能分类:〔1〕简单查询〔2〕关联查询〔3〕分类汇总查询〔4〕子查询3.简单查询是指从一个表中进行数据查询,查询的数据只是简单的字段或简单的函数。二、select子句1.功能:用于确定查询的数据项〔投影〕。2.语法:〔1〕selectall表示输出所有记录,包括重复记录。〔2〕selecttopn查询前n条记录〔3〕selecttopnpercent选择查询的前n%的记录。三、from子句1.功能:指定查询数据的来源。2.语法:〔1〕from表名别名,表名别名…〔2〕from表名别名innerjoin表名别名on条件四、where子句1.功能:按指定的条件表达式对记录进行筛选。2.语法:where条件表达式3.常见的表达式:(1)比拟运算符:>,<,>=,<=,<>(2)逻辑运算符:andornot(3)区间运算符:[not]betweenxandY(4)属于运算符:in,notin(结果集合)(5)Null判断运算符:isnull,isnotnull(6)模糊匹配符:like‘匹配符’,notlike‘匹配符’五、orderby子句1.功能:将查询结果重新排列。2.语法:orderby工程[ASC/DESC],工程[ASC/DESC]。六、模糊匹配运算符(1)%包含零个或更多字符的任意字符串。 WHEREtitleLIKE'%computer%'
(2)_〔下划线〕任何单个字符 WHEREau_fnameLIKE'_ean'
(3)[]指定范围([a-f])或集合([abcdef])中的任何单个字符 WHEREau_lnameLIKE'[C-P]arsen'
(4)[^]不属于指定范围([a-f])或集合([abcdef])的任何单个字符。 WHEREau_lnameLIKE'de[^l]%'
七、SQLServer的函数<1>Datalength(char):取得字符串的字节长度<2>Len(char):取得字符串的字符个数<3>Upper(char):将字符串转换为大写字母<4>Lower(char):将字符串转换为小写<1>Abs(x):取得x的绝对值<2>Sign(x):符号函数<3>Ceiling(x):大于等于x的最小整数<4>Floor(x):小于等于x的最大整数<1>GETDate():返回系统当前的时间(日期和时间)<2>DateName(part,date):以字符串的返回日期date的指定的局部,如年,月,日,时,分,秒等。<3>DatePart(part,date):以数值类型返回Date的指定局部,如年,月,日,时,分,秒等。<4>Year(date):返回date的年份<5>Month(date):返回date的月份<6>Day(Date):返回date的日期对于数据库Northwind的简单查询‘1992年09月10日之后参加公司日期的员工姓名,参加公司日期,出生日期。selectLastName+FirstNameasneme,HireDate,BirthDatefromEmployeeswhereCountry='USA'andHireDate>'1992-9-10'2.查询产品单价在20和30之间的产品的列表〔产品名称,单价,库存数量〕selectProductName,UnitPrice,UnitsInStockfromProductswhereUnitPricebetween20and303.查询不是在1992年01月01日和1993年10月01日之间出生的员工列表(员工姓名,出生日期)。selectLastName+FirstNamenamee,BirthDatefromEmployeeswhereBirthDatenotbetween'1992-01-01'and'1993-10-01'4.查询价格最高的10个产品的列表(产品名称,单价)selecttop10ProductName,UnitPricefromProductsorderbyUnitPricedesc5.查询员工姓或名中有字母N(n)的员工列表(员工姓名)(不区分大小写)selectLastName+FirstNameasLastNameFirstNamefromEmployeeswhereLastName+FirstNamelike'%n%'6.查询员工姓名只含有2个A的员工列表〔员工姓名〕〔不区分大小写〕selectLastName+FirstNameasLastNameFirstNamefromEmployeeswhereLastName+FirstNamelike'%a%a%'andLastName+FirstNamenotlike'%a%a%a%'7.查询姓名中第2个字母是’A’且倒数第2个字母是’C’的员工列表〔所有字段〕〔不区分大小写〕selectLastName+FirstNameasLastNameFirstNamefromEmployeeswhereLastName+FirstNamelike'_A%'andLastName+FirstNamelike'%C_'8.查询姓名中第三个字符是A或V或X或Y的员工列表〔员工姓名,职位,参加公司日期〕〔不区分大小写〕selectLastName+FirstNameasLastNameFirstName,Title,HireDatefromEmployeeswhereLastName+FirstNamelike'__[AVXY]%'9.查询员工姓名中第二个字母不是A且以Y,T,E字符结尾的员工列表〔员工姓名,出生日期〕selectLastName+FirstNameasLastNameFirstName,HireDatefromEmployeeswhereLastName+FirstNamelike'_[^A]%'andLastName+FirstNamelike'%[YTE]'14.查询每个员工的姓名和参加公司的年份。select(LastName+FirstName)asname,datepart(yy,HireDate)asHireDateyyfromEmployees第十讲关系模型-函数依赖一、函数依赖逻辑蕴含1.定义:设有关系模式R(U,F),X,Y是U的子集,如果X->Y的函数依赖可以从函数依赖集F推导出来,那么称F逻辑蕴含X->Y。二、函数依赖集的闭包1.定义:在关系模式R(U,F)中,被函数依赖F所蕴含的函数依赖所构成的集合称为函数依赖集F的闭包,记为F+。〔1〕定义:设关系模式R(U,F),属性集合U={A1,A2,A3...An},F是一个函数依赖集合,存在属性集合X,Y,X⊆U,Y⊆U,通过函数依赖集合F,推导出所有X->Y的属性集合Y,称为X的闭包,记为X+X+={Y|X->A∈F+} X+称为属性集合X在F上的闭包。 X+实际包含属性集合X在F+中决定的所有属性集合。〔2〕函数依赖集属性闭包的求解例:模式R(U,F),属性集合U={A,B,C,D,E}F={B->A,D->A,A->E,AC->B,D->C},求属性AD的闭包。解:设V={A,D},求{A,D}+在函数依赖集F中,找到A->E,D->C,得V1={A,C,D,E}在V1中找到关系,有AC->B,得到V2={ABCDE}所以{AD}+={ABCDE}〔3〕根据F判断指定的函数依赖是否成立例:关系R(U,F),U={A,B,C,D,E,F}F={AB->C,BC->AD,D->E,CF->B}判断{AB}->{D}是否成立解:{AB}+={ABCDE},所以AB->D成立三、最小函数依赖集F’’满足的3个条件〔1〕F任何一个函数依赖的右边仅有一个属性。〔2〕无冗余函数依赖,即F中不存在这样的函数依赖X->A使得F与F—{X->A}等价。〔3〕函数依赖左边无冗余属性,即F中不存在这样的函数依赖集X->A,X有真子集X’,使得(F—{X->A})U{X’->A}与F等价。’求解〔1〕右边拆分成单属性。〔2〕依次检查每个函数是否多余G=F—{X->Y},求X+如X+包含Y,X->Y多余〔3〕依次检查非单属性,看某属性是否多余。例:关系R(U,F),U={A,B,C,D,E,F}F={AB->C,C->A,BC->D,ACD->B,BE->C,CE->FA,CF->BD,D->EF}解:1〕F={AB->C,C->A,BC->D,ACD->B,BE->C,CE->F,CE->A,CF->BCF->D,D->E,D->F}2)去掉AB->C,求{AB}+,假设{AB}+能推导AB->C那么F中去掉AB->C依次检查得ACD->B,CE->A,CF->D是冗余的函数依赖3〕去掉F中得所有依赖左边的冗余属性,先去掉属性中得一个属性,如AB->C,先去掉A,看B->C是否依然成立,假设B->C成立,那么属性A冗余,依次检验可得:F’={AB->C,C->A,BC->D,BE->C,CE->F,CF->B,D->E,D->F}四、关系模式候选键的求解〔1〕左属性和孤立属性一定在候选键中〔2〕右属性不会出现子啊候选键中,即右属性对候选键没有奉献〔3〕步骤:1〕求最小函数依赖F’2〕查找左属性集合L,孤立属性S,双重属性D3〕求(LS)+,如果(LS)+=U,那么LS是R的唯一候选键4〕假设(LS)+!=U,那么求D的子集D’,计算(LSD’)+,假设(LSD’)+=U,那么LSD’是候选键例:关系R(U,F),U={A,B,C,D,E}F={AB->C,AC->E,DE->B}求候选键解:左属性L={A,D}孤立属性S=Φ(AD)+={AD}!=U,双重属性D={B,C,E}所以(ADB)+=(ADC)+=(ADE)+=(ABCDE)=U候选键集合为{ADB,ADC,ADE}第十一讲关联查询和分类汇总查询连接查询1.定义:从两个或两个以上数据源查询。2.类型:〔1〕内连接〔2〕外连接〔3〕交叉连接3.条件:〔1〕两表有公共属性〔2〕合法关联条件:FK->PK二、内连接查询1.定义:使用比拟运算符进行表间某(些)列数据的比拟操作,并列出这些表中与连接条件相匹配的数据行。2.功能:用于查询多个表中同时满足关联条件的记录的数据。3.类型:〔1〕等值连接:连接条件是相等关系,在连接条件中使用等号运算符比拟连接列的列值,按对应列的共同值将一个表中的记录与另一个表中的记录相连接,包括其中的重复列。语法1:from中指定等值条件Select....F语法2:where中指定等值条件Select….From表1a,表2b,表3cW〔2〕不等值连接:当关联的条件使用费等号就称为不等值连接。〔3〕自然连接:连接条件使用等号,使用选择列表方式来指定查询结果集合中所包含的列,删除连接表中的重复列。三、外连接查询〔outerjoin〕1.定义:当将多表连接查询时,外连接不只列出与连接条件相匹配的行,而且列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。2.类型:〔1〕左外连接查询:使用leftouterjoin关联词连接多表,显示左表的全部记录,如果右表有关联记录那么显示,无关联记录那么显示null〔2〕右外连接查询:使用rightouterjoin关联词连接多表.与左外关联相反,显示右表的所有记录,如果左表有关联记录那么显示,否那么显示显示null。〔3〕全外关联查询:使用fullouterjoin关联多表。同时实现左关联和右关联的功能。四、交叉连接〔crossjoin〕1.定义:交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。2.语法:select…fromtable1crossjointable2五、分类汇总查询1.数据库中保存的原始单据数据。2.SQL的汇总函数:〔1〕count(x):可用于字符、数值和日期型数据。count(*)计算表中行总数,count(column)计算列不为null的行数,count(distinctcolumn)计算指定列中相异值的数量〔2〕max(x):列中最大值。可用于字符、数值和日期型数据〔3〕min(x):列中最小值。可用于字符、数值和日期型数据〔4〕avg(x):计算所有值的平均数。只用于数值型数据,忽略null。〔5〕sum(x):计算所有值的总和。只用于数值型数据例:(1).查询产品类型为2的产品的平均单价。〔平均单价〕selectavg(Products.UnitPrice)namefromProductswhereProducts.CategoryID=2(2).查询最低和最高的产品的销售单价。〔产品名称,最低销售单价,最高销售单价〕selecta.ProductName,min(b.UnitPrice)min,max(b.UnitPrice)maxfromProductsainnerjoin[OrderDetails]b(3)查询每个订单的订单号,订单日期,员工姓名,客户名称。fromOrdersainnerjoinEmployeesbinnerjoinCustomersc(4)查询1997年下半年的订单号,订单日期,客户名称,员工名称。fromOrdersainnerjoinEmployeesbinnerjoinCustomerscwhereyear(a.OrderDate)=1997anddatename(qq,a.OrderDate)in(3,4)(5)查询每个客户的历年的销售统计信息〔客户名称,年份,销售金额〕。selecta.ContactName,year(b.OrderDate)yy,sum(c.UnitPrice)sumfromCustomersainnerjoinOrdersbinnerjoin[OrderDetails]cgroupbya.ContactName,year(b.OrderDate)(6)查询每个产品的历年销售信息〔产品名称,年份,销售额〕selecta.ProductName,year(c.OrderDate)yy,sum(b.UnitPrice*b.Quantity)sumfromProductsainnerjoin[OrderDetails]binnerjoinOrderscgroupbya.ProductName,year(c.OrderDate)(7)查询每个1997年每个产品各个季度的销售信息〔产品名称,季度,销售金额〕selecta.ProductName,datepart(qq,c.OrderDate)qq,sum(b.UnitPrice*b.Quantity)sumfromProductsainnerjoin[OrderDetails]binnerjoinOrderscwheredatepart(yy,c.OrderDate)=1997groupbya.ProductName,datepart(qq,c.OrderDate)(8)查询每个员工和他的上级的名称〔员工姓名,上级姓名〕。selecta.LastName+a.FirstNameReportsTo,b.LastName+b.FirstNamenamefromEmployeesarightjoinEmployeesb第十二讲关系模式的标准化标准化1.定义:把一组有异常的关系分解成更小的,结构良好的关系的过程。2.理论体系:〔1〕函数依赖〔2〕范式〔3〕模式分解3.原那么:〔1〕不能丧失标准化前原有模式的任何信息。〔2〕当重构原始模式时,不能包含伪信息,即多于原始信息的额外信息。〔3〕保存原有模式中的函数依赖,即原有关系模式的函数依赖都要保持。4.关系模式设计中存在的问题:〔1〕数据大量冗余〔2〕更新异常:执行updata后产生数据不一致〔3〕数据插入异常〔4〕删除异常:删除一个信息会删除其他信息二、范式1.定义:是关系的一种状态,是将函数依赖的简单规那么应用到关系的结果,是关系标准化的一种度量,说明关系标准化的程度。2.类型:1NF,2NF,3NF,BCNF,4NF,5NF三、第一范式〔1NF〕1.定义:如果关系中所有的属性域的值都是原子的,属性不可再分。S#C#S1{C1,C2,C3}S#C#S1C1S1C2S1C3不符合1NF符合1NF四、第二范式〔2NF〕1.定义:如果关系中R属于1NF,并且R中的每个非属性都完全函数依赖于R的候选键。2.2NF中关系的属性都不函数依赖于复合候选键的一局部。符合2NF:学生选课关系 选课(课程号,学生号,成绩)不符合2NF:选课(学生号,学生名,课程号,课程名,成绩) 函数依赖:学生号->学生名课程号->课程名学生号,课程号->成绩 主键:{学生号,课程号} 存在:非主属性局部依赖主属性,不是完全依赖主属性。不符合2NF。五、第三范式〔3NF〕1.定义:如果R属于2NF,且不存在非主属性传递依赖于候选键。2.特征:(1)首先要满足第二范式, (2)其次非主属性之间不存在函数依赖。由于满足了第二范式,表示每个非主属性都函数依赖于主键。如果非主属性之间存在了函数依赖,就会存在传递依赖,这样就不满足第三范式。符合3NF客户关系模式: Customer(CustomerID,CustomerName,CustomerAddr,CustomerCity)不符合3NF的关系模式订单表【Order】〔OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity〕 主键是〔OrderID〕。
其中
OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity
等非主键列都完全依赖于主键〔OrderID〕,所以符合
2NF。不过问题是
CustomerName,CustomerAddr,CustomerCity
直接依赖的是CustomerID〔非主键列〕,而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合
3NF。六、BCNF1,定义:假设R属于3NF,且不存在主属性局部依赖于候选键,即任何一个函数依赖X->Y,X一定是候选键。2.BCNF的实质是所有的函数依赖左边都是超键。即函数依赖左边都包含候选键。〔1〕符合BCNF的关系模式学生(学号,姓名,性别)函数依赖:学号->姓名,性别候选键:学号分析:函数依赖左边是候选键。 符合:BCNF不符合BCNF的关系模式地址关系:CSZ(CITY城市,ST街道,ZIP),F={(CITY,ST)→ZIP,ZIP→CITY}。 候选键:{(CITY,ST),(ST,ZIP)}(CITY,ST)和(ST,ZIP)是两个候选码,没有非主属性,自然CSZ∈3NF。但存在传递依赖(CITY,ST)->ZIP->CITY,所以CSZ∉BCNF第十三讲子查询一、子查询1.定义:将嵌入在其他SQL语句的SELECT语句称为子查询,也称嵌套查询。2.子查询经常嵌入的语句:(1)select(2)insert(3)updata(4)delete3.类型;〔1〕按SQL语句类型分:1)select中子查询2)insert中子查询3)updata中子查询4)delete中子查询〔2〕按子查询返回结果分:1)单行单列子查询2)多行单列子查询3)多行多列子查询〔3〕按位置分:1)select中子查询2)from中子查询3)where中子查询4)having中子查询〔4〕按与主SQL语句相关与否分:1)无关子查询2)相关子查询二、select中的子查询1.功能:select子查询作为一个数据项。2.限制:必须是单行单列,可以是相关也可以无关。三、from中的子查询1.功能:提供查询用的数据来源,将子查询作为一个中间表。2.限制:一般是多行单列,或多行多列子查询,但必须是无关子查询。四、where中子查询1.功能:给筛选条件提供判断结果。2.类型:〔1〕单行单列子查询:可使用比拟运算符:>,>=,<,<=,<>,!=,between…and〔2〕多行单列子查询:可使用in,notin或结果转换符all,any,some转换为单值。〔3〕相关子查询的判断exists五、having中子查询1.功能:where为每条记录进行筛选,而having子句那么为汇总后的结果提供筛选。例:1.查询参加公司最晚的员工〔员工姓名,参加公司日期〕selectLastName+FirstNameasNames,HireDatefromEmployeesawhere(a.HireDate=(selectmax(HireDate)fromEmployees))2.查询产品单价小于所有产品平均单价的产品及库存数量(产品名称,单价,所有产品平均单价)。selecta.ProductNameasmm,UnitPrice,avg(UnitPrice)asaafromProductsawhere(a.UnitPrice<(selectavg(b.UnitPrice)fromProductsb))3.查询产品单价小于所属类别平均单价的产品和单价信息(产品名称,单价,所属类别平均单价)。selectProductName,UnitPrice,(selectAvg(UnitPrice)fromProductsbwherea.CategoryID=b.CategoryID)avgunitprice2fromProductsawherea.unitprice<(selectAvg(UnitPrice)fromProductsbwherea.CategoryID=b.CategoryID)4.查询1996年各个季度的销售额,且大于1996年中各季度的平均销售。〔季度,销售额〕selectmonth(a.orderdate)mm,sum(b.unitprice*b.quantity)amountfromOrdersainnerjoin[orderdetails]bwhereyear(a.orderdate)=1997groupbymonth(a.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中地理中考一轮复习“东南亚区域认知与地形河流影响”教学设计
- 小学三年级综合实践活动《常用绳扣系法-实扣》教学设计
- 初中七年级英语上册Unit 1 Integration A-D听说读写综合课教学设计
- 初中七年级英语Unit1 Reading Plus教学设计-交友语篇阅读与表达能力进阶
- 高中信息技术必修一“4.4 综合问题的解决-用程序设计破解校园生活难题”教学设计
- 初中七年级英语Unit 5 Starting out听说导入课教学设计
- 劳动防护用品试题及答案
- 项目管理师考试卷及解答
- 重构企业 AI 蓝图:聚焦价值主航道驱动增长新势能
- 2026年浙江省中考物理实验操作专项练习题
- 名老中医工作室验收
- “六张网”系列专题研究报告:从“纲-目-结”看“十五五”时期我国水网投资新方向
- 智能机电技术专业招生宣讲介绍
- 2026年蚌埠医科大学第一附属医院(出入院管理科)公开招聘劳务派遣人员笔试模拟试题及答案详解
- 2026年护理三基三严与护理创新测试题含答案
- 讲解特殊感染病例的诊断与隔离措施
- 2026秋小学鲁科版(五四制)新教材英语四年级上册教学计划含教学进度表
- 《旅游策划》课件-项目一 旅游策划概述
- 新版部编人教版四年级上册道德与法治(课件)10购物有学问
- 2026秋小学新版苏教版数学六年级上册教学计划、教学设计(附目录)适用于新课标
- 铸牢中华民族共同体意识·共圆复兴梦想-初中九年级道德与法治第四单元“大概念·大单元”深度学习教学设计
评论
0/150
提交评论