第二章 关系数据库语言

上传人:猪** 文档编号:243126693 上传时间:2024-09-16 格式:PPT 页数:124 大小:9.17MB
返回 下载 相关 举报
第二章 关系数据库语言_第1页
第1页 / 共124页
第二章 关系数据库语言_第2页
第2页 / 共124页
第二章 关系数据库语言_第3页
第3页 / 共124页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,数据库原理与设计,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数据库原理与应用,第,2,章 关系数据库语言,数据库原理与设计,第,2,章 关系数据库语言,SQL,概述,SQL Server数据库的基本管理与设置,数 据 定 义,数 据 查 询,数 据 更 新,SQL,(,Structured Query Language,),是,结构化查询语言,,利用,SQL,语言,可以实现对数据库的访问,。,Transact-SQL,是,Microsoft,公司对,SQL,标准的一个实现,简称,T-SQL,。,数据库原理与设计,2.1 SQL,概述,SQL,简单易学、风格统一,利用简单的几条命令就可以完成所有的功能。,SQL,有以下,主要特点,。,1,综合统一,2,高度非过程化,3,面向集合的操作方式,4,以同一种语法结构提供两种使用方式,5,语言简洁,易学易用,数据库原理与设计,2.1.2 SQL,数据库的体系结构,视图(,View,),-,类似于表,-,虚表,(,窗口,),-,使数据管理更方便和安全,数据库原理与设计,2.1.3 SQL,语句的分类,在,SQL2,标准中,,SQL,语句可大体分为以下三类,数据定义语言,(,Data Definition,Language,,,DDL,),:,用于定义,SQL,模式、基本表、视图、索引等结构。,数据操纵语言,(,Data Manipulation Language,,,DML,):,数据操作分成数据查询和数据更新两类。,数据控制语言,(,Data Control Language,,,DCL,):,包括事务管理功能和数据保护功能,数据库原理与设计,数据库原理与设计,2.1.4 SQL,的语法约定,1,标识符,2,标识符的类型,3,SQL,语句的语法,数据库原理与设计,1.,了解数据库的存储结构,2.,掌握数据库的创建和维护的方法,2.2,数据库的基本管理与设置,数据库原理与设计,2.2,数据库的基本管理与设置,1,数据库的存储结构,分两种,:,逻辑存储结构,和,物理存储结构,。,数据库的,逻辑存储结构,:,SQL Server,的数据库是由诸如表、视图等不同的数据库对象所组成的。,数据库的,物理存储结构,:指的是数据库文件是如何在磁盘上存储的。,SQL Server 2000,中,数据存储在页(,Page,)中,页是数据存储的最小单位,数据库操作系统文件分为三类,:,主数据文件,、,二级数据文件,和,日志文件,.,数据库原理与设计,(,1,)主数据文件:扩展名“,.,mdf,”,,,每个数据库有且仅有一个主数据文件,,用于存储数据库的启动信息、数据和数据库对象。是数据库的起点,指向数据库中文件的其他部分。,(,2,)二级数据文件:扩展名为“,.,ndf,”,。主要在一个数据库跨多个硬盘驱动器时使用。,数据库原理与设计,(,3,)日志文件:扩展名为“,.,ldf,”,。,每个数据库至少拥有一个日志文件,。用于存放对数据库进行操作的事务日志。,数据库的,最精简装备,:一个数据库,至少,应该包含一,个主数据文件,和,一个事务日志文件,。,数据库,较完备装备,:,多个数据文件,三个日志文件,;日志文件与数据文件,不放在同一块物理磁盘上,,以备数据文件磁盘损坏时可以利用日志文件恢复。,数据库原理与设计,日志文件,数据库原理与设计,数据库的创建与管理,数据库原理与设计,SQL Server,的系统数据库与示例数据库,SQL Server,的数据库可以分为两大类:,系统数据库,和,用户数据库,。,系统数据库不能随便更改或删除。,用户数据库一般由用户创建。,SQL Server,安装时建立了,6,个数据库,其中,master,,,tempdb,,,model,和,msdb,是,4,个系统数据库;,pubs,和,Northwind,是两个用户数据库,用以示例。,数据库原理与设计,2,创建数据库,默认情况下,只有系统管理员和数据库拥有者可创建数据库。创建数据库的用户自动成为该数据库的所有者。,创建数据库的过程实际上就是为数据库设计名称、设计所占用的存储空间和存放文件位置的过程。,1.,企业管理器创建数据库,2.,用,T-SQL,语言创建数据库:,Create Database,数据库名,3.,用向导创建数据库,一个数据库,至少应该包含一个,数据库文件,和一个,事务日志文件。,数据库原理与设计,使用,T-SQL,语言创建数据库,语法如下:,Create Database,数据库名,ON PRIMARY, ,,,n ,LOG ON, ,,,n,:=,(,NAME,=,逻辑文件名,,FILENAME,=,操作系统下的物理路径和文件名,,,SIZE=,文件初始大小,,,MAXSIZE=,文件最大大小,|UNLIMITED,,,FILEGROWTH=,增量值, ,,,n,数据库原理与设计,Create Database,Company,ON PRIMARY,(,NAME,=,Company_data,FILENAME,= C:SQL,Company.mdf,SIZE,=10,MAXSIZE,=unlimited,FILEGROWTH,=10%),LOG ON,(,NAME,=,Company_log,FILENAME,=C:SQL,Company.ldf,SIZE,=1,MAXSIZE,=5,FILEGROWTH,=1),创建一个,Company,数据库,主数据文件逻辑名称,物理文件名,初始大小,最大尺寸为无限大,增长速度,日志文件逻辑名称,物理文件名,数据库原理与设计,2.2.3,修改数据库,ALTER DATABASE,包括增、删数据文件和事务日志文件,修改数据文件和事务日志文件的初始容量、最大容量、增长方式等。,Alter Database,数据库名,ADD,FILE ,n,|,ADD,LOG,FILE ,n,|,REMOVE,FILE with delete,|,MODIFY,FILE ,|,MODIFY,NAME=,新数据库名,数据库原理与设计,2.2.4,删除数据库,删除数据库时也删除了该数据库的全部对象。,T-SQL,语言删除数据库:,DROP DATABASE,数据库名, ,.n ,无法除去系统数据库,(,msdb,、,model,、,master,和,tempdb,),以下情况不能删除:,有用户使用此数据库时,数据库正在被恢复时,数据库正在参与复制时,数据库原理与设计,2.2.5,设置数据库选项,sp_dboption,系统存储过程设置数据库选项。,基本语法如下:,sp_dboption,数据库名, ,配置选项名,设置值,将,Company,数据库设为只读,将,Company,数据库设为可写,数据库原理与设计,数据库操作总结,创建数据库:,Create Database,数据库名,修改数据库,:,Alter Database,数据库名,ADD,FILE ,n,|,REMOVE,FILE ,|,MODIFY,FILE ,删除数据库:,Drop Database,数据库名, ,.n ,数据库原理与设计,2.3.1,表的创建与管理,2.3,数 据 定 义,数据库原理与设计,表操作之一,-,表的建立,一个,表,由,表结构、表记录,构成。,定义表的结构,就是定义表的字段个数、字段名称、类型、宽度及小数位数等,。,企业管理器中创建表,使用,Create,命令创建,Create Table,表名,(,字段名,1,类型,(,长度,),字段名,2,类型,(,长度,),),数据库原理与设计,数据库原理与设计,数据类型,注解,:因为,char,类型总是会用空格填充使之达到一个固定宽度,在表中占用很大的存储空间。,数据库原理与设计,数据分类,关系模型,student(,sno,clno,sname,ssex,sbir,scredit),course(,cno,ctno,cname,cinfo,ccredits,cttime,cpno,cterm),sc(,sno,cno,score),E-R,模型,course,student,sno,clno,sname,ssex,sbir,scredit,sc,cno,cname,ctno,cinfo,ccredits,cttime,cpno,cterm,score,N,M,完整性约束,-,建表中的完整性问题,名称,含义,实现,实体完整性,要求表中的每条记录都是唯一的,用,主码,来实现,Primary key,参照完整性,确保表与表之间的引用关系,用,外码,来实现,Foreign key,用户自定义完整性,确保表中数据满足用户的特定要求,例如:,数据必须唯一,数据不能为空,数据满足某些条件,定义数据默认值,Unique,Not null,Check,(Ssex,in (,男,女,),Default,数据库原理与设计,完整性约束,-,建表中的完整性问题,数据库原理与设计,完整性约束,-,建表中的完整性问题,数据库原理与设计,完整性约束,-,建表中的完整性问题,数据库原理与设计,完整性约束,使用命令定义完整性约束条件,:,需要在定义完字段的数据类型和长度之后,定义该字段上的约束类型:,1.,主码,完整性约束,-,如:,sno,char(5),primary key,2.,Foreign Key,约束,-,如:,sno,char(5),foreign key references,student(sno,),3.,check,完整性约束,-,如:,age,int,check,(,age between 18 and 30),4.,唯一,完整性约束,unique,5.,DEFAULT,完整性约束,scredit,numeric(3,0),default 4,6.,非空,完整性约束,sname,char(6),not null,Create Table,表名,(,字段名,1,类型,(,长度,),约束,字段名,2,类型,(,长度,),约束,),数据库原理与设计,例:使用命令的方式创建,student,course,sc,三个表。,Create table,student,(,Sno,char(5),primary key,Clno,char(5,) not null,Sname,varchar(8),not null,Ssex,char(2),check (,ssex,in (,男,女,),Sbir,datetime,Scredit,numeric(4,0),),数据库原理与设计,Create table,course,(,Cno,char(5,) primary key,Cname,varchar(50),unique,Ctno,char(2),Cinfo,varchar(50),Ccredits,numeric(2,0),default 4,Cttime,numeric(3,0),Cpno,char(5),Cterm,numeric(1,0),),数据库原理与设计,Create table,sc,(,Sno,char(5),foreign,key(sno,) references,student(sno,),Cno,char(5),foreign,key(cno,) references,course(cno,),Score numeric(3,1),Primary,key(sno,cno,),),数据库原理与设计,引用完整性约束,(,外码约束,),内容补充,先建,主表,,后建,从表,当定义外码时候,子表中引用的必须是主表的主码,。,默认情况下创建了外码约束,当,删除或修改主表记录,时,若子,表中有对应记录,不能修改或者删除,。,如果用户需要,,删除或者修改主表的记录的同时,系统自动删除或者修改子表中相关的记录,,则需要在建外码的同时指定,on delete cascade,级联删除。,数据库原理与设计,命名约束,定义命名的完整性约束,CREATE TABLE,tablename,(,字段名 类型,长度,CONSTRAINT,constraint_name,Not null,Unique,Primary key,Foreign key(,字段,) references,主表(主键),Check,(,条件,),Default,数据库原理与设计,练习创建表和完整性约束,创建货物表,goods,和订单表,orders,,表结构如下。,所有的约束采用命名约束。,创建外键约束,级联删除,.,数据库原理与设计,表操作之二,-,表的修改,修改表对象,ALTER TABLE,表名,ADD,列名 数据类型,完整性约束条件,ALTER COLUMN,列名 数据类型,DROP COLUMN,列名,ADD CONSTRAINT,约束名 约束,DROP CONSTRAINT,约束名,数据库原理与设计,例,2-12,向表,Student,中增加一列,address,。,Alter table,Student,add,address varchar(40),例,2-14,将,Student,表中,address,列的最大长度修改为,50,,并允许为空。,ALTER Table,Student,ALTER Column,address varchar(50) NULL,例,2-15,删除,Student,表中的,address,列。,ALTER Table,Student,DROP Column,address,数据库原理与设计,向表,Student,中增加列,Email,,且要求输入的电子邮件地址必须包括“,”,字符。,ALTER TABLE,Student,ADD,Email VARCHAR(40),CONSTRAINT,ck_ea,CHECK,(Email,like %),数据库原理与设计,例,2-13,在,Student,表中,SName,列上设置唯一约束。,ALTER TABLE,Student,ADD CONSTRAINT,u_name,Unique,(SName,),例,2-16,删除,Student,表中,SName,列上的唯一约束。,ALTER TABLE,Student,DROP CONSTRAINT,u_name,数据库原理与设计,完整性约束的作用时间,:,在,ALTER TABLE,语句中使用,(1)nocheck constraint,子句,(2)check constraint,子句,来完成使约束无效和重新有效的设置。,ALTER TABLE student,nocheck,constraint,ck_age,age,int,constraint,ck_age,check,(,age between 18 and 60),数据库原理与设计,表操作之三,-,表的删除,DROP TABLE,表名,例如:,DROP TABLE,eg1,注意:,DROP TABLE,语句不能删除系统表。,删除表时,系统会删去该表及其索引,表上的视图往往仍然保留,无法引用,数据库原理与设计,SQL,的数据定义语句,数据库原理与设计,查 询,数据库原理与设计,2.3.2,索引的创建与管理,2.3,数 据 定 义,数据库原理与设计,索引的分类,索引分为,聚簇索引,与,非聚簇索引,。,聚簇索引(,Clustered Index,),叶结点中存储的是实际的数据。,非聚簇索引(,Nonclustered,Index,),叶结点存储组成索引的关键字值和指针,数据库原理与设计,3,创建索引,(,1,)选择创建索引的列,表的主键列;,连接中频繁使用的列;,频繁搜索的列。,插入和更新数据时,维护索引要花费时间和空间,(,2,)创建索引的语法格式,CREATE,unique clustered|,nonclustered,INDEX,索引名,ON,表名,(,列名次序,列名次序,),次序,:,指定索引值的排列次序,:ASC,和,DESC,两种,数据库原理与设计,例,2-18,在,Course,表上创建一个名,cs_index,的非聚簇复合索引,索引关键字为,Cno,和,CTno,,升序排列。,CREATE,nonclustered,INDEX,cs_index,ON,Course (,CNo,ASC,CTno,ASC),CREATE,unique, ,clustered,|,nonclustered,INDEX,索引名,ON,表名,(,列名次序,列名次序,),数据库原理与设计,在,Course,表,CNo,上创建一个唯一性的聚簇索引,索引排列顺序为降序。,CREATE,unique clustered,INDEX,IX_CNo,ON,Course(CNo,DESC ),唯一性索引,对于已含重复值的属性列不能建,UNIQUE,索引,对某个列建立,UNIQUE,索引后,插入新记录时,DBMS,会自动检查新记录在该列上是否取了重复值。这相当于增加了一个,UNIQUE,约束,数据库原理与设计,在,Course,表,CName,上创建一个非唯一性的非聚簇索引,CREATE,nonclustered,INDEX,IX_CName,ON,Course(CName,),WITH DROP_EXISTING,WITH,子句中可包含索引的创建选项,DROP_EXISTING,是指如果表中已存在同名的索引则将其删除,重建索引。,数据库原理与设计,建立索引,在一个基本表上最多只能建立一个聚簇索引,聚簇索引可以提高某些类型的查询效率,聚簇索引的适用范围,很少对基表进行增删操作,数据库原理与设计,4,管理索引,(,1,)查看索引,sp_helpindex,可以查看特定表上的索引信息,例,2-19,查看,Course,表的索引信息。,EXECUTE,sp_helpindex,Course,(,2,)删除索引,DROP,语句将其删除:,DROP INDEX,.,DROP INDEX,Course.,IX_CName,数据库原理与设计,drop index,SC.pk_SC,在表中指定主键时,,将自动创建一个名为“,PK_”,且后跟表名的主键索引,主键索引是唯一索引的特殊类型,ALTER TABLE SC,DROP CONSTRAINT,pk_SC,数据库原理与设计,注意:,如果索引是在,CREATE TABLE,语句中创建的,只能用,ALTER TABLE,语句删除索引;,如果索引是,CREATE INDEX,创建的,可用,DROP INDEX,删除。,DROP INDEX,语句删除多个索引,索引之间需用逗号隔开,被删除的索引一定要以,.”,的形式给出,SELECT 目标列1,目标列2.,FROM 表名或视图名,WHERE,条件表达式,GROUP BY,列名1,HAVING,条件表达式,ORDER BY,列名2,数,据查询,Data Query language,SQL,的核心是查询,select,查询,就是用,SELECT,语句实现对表中的数据的请求。该语句的功能是从表或视图中查询满足条件的记录,1.,输出表中某些列,例,:,查询,Student,的,SNo、SName和S,s,ex,。,SELECT SNo, SName, SSex,FROM Student,2.,输出表中全部列,例,:,查询,Student,表中的所有信息,SELECT,*,FROM Student,选,取字段,Select,3.,为列指定别名,例,:,从,Student,选取,SNo,、,SName,输出,字段名显示为中文,SELECT,学号,=,SNo,姓名,=,SName,FROM Student,SELECT,SNo,AS,学号,SName,AS,姓名,FROM Student,.,添加派生列,例,:,查询,SC,表所有信息,将,Score,(成绩)一列统一增加,20,分,SELECT,SNo,CNo,Score= Score+20,FROM SC,5.,消除重复记录,例:从,Student,选取,SName,和,SSex,作为输出,消去结果集中重复的行,SELECT DISTINCT,SName,SSex,FROM Student,.,限制返回行数,例:查询,Student,表中的所有字段,在结果集中显示表中的前,3,条记录,SELECT,TOP 3,*,FROM Student,例:查询,Student,表中的所有字段,在结果集中显示表中前,20%,的记录,SELECT,TOP,20 PERCENT,*,FROM Student,创,建新表,Into,过,滤记录,Where,对,结果排序,Order by,SELECT -FROM-WHERE,结构的使用,1.,语法格式,SELECT,目标列表达式,INTO,新表名,FROM,表名或视图名,2.,创建新表并添加记录,例,:,查询学生的学号和姓名,写入到自动创建的表,Student2,中,SELECT,SNo,SName,INTO Student2,FROM Student,选,取字段,Select,创,建新表,Into,过,滤记录,Where,对,结果排序,Order by,1.,比较运算符,包括:,、,=,、,、,!,例:查询,SC,表中的所有字段,在,结果集中显示成绩不及格的记录,SELECT *,FROM SC,WHERE Score=60,ORDER BY,SNo,DESC,选,取字段,Select,创,建新表,Into,过,滤记录,Where,对,结果排序,Order by,3.,两个字段排序,例,:,查询,Teacher,表中全部男教师的记录,按姓名降序排序,如姓名相同则按照教师编号升序排序,SELECT *,FROM Teacher,WHERE,TSex,=,男,ORDER BY,TName,DESC,TNo,ASC,4.,排序列的选择,可将排序列指定为列名或列别名和表达式,或位置,SELECT score,成绩,FROM sc ORDER BY,成绩,排序子句可包括未出现在选择列表中的项目,SELECT,TName,FROM Teacher ORDER BY,sal,*12,5.,是查询最后一步,排序应是查询语句的最后一步工作,是即将输出之前的处理,所以排序子句一般也出现在查询语句的最后,设有一个,SPJ,数据库,包括,S,,,P,,,J,,,SPJ,四个关系模式:,S(,SNO,,,SNAME,,,STATUS,,,CITY),;,P(,PNO,,,PNAME,,,COLOR,,,WEIGHT),;,J(,JNO,,,JNAME,,,CITY),;,SPJ(,SNO,,,PNO,,,JNO,,,QTY),;,备注:,供应商表,S,由供应商代码(,SNO,)、供应商姓名(,SNAME,)、供应商状态(,STATUS,)、供应商所在城市(,CITY,)组成;,零件表,P,由零件代码(,PNO,)、零件名(,PNAME,)、颜色(,COLOR,)、重量(,WEIGHT,)组成;,工程项目表,J,由工程项目代码(,JNO,)、工程项目名(,JNAME,)、工程项目所在城市(,CITY,)组成;,供应情况表,SPJ,由供应商代码(,SNO,)、零件代码(,PNO,)、工程项目代码(,JNO,)、供应数量(,QTY,)组成,表示某供应商供应某种零件给某工程项目的数量为,QTY,。,select -from -where-,结构练习,供应商表,s,零件表,p,工程表,j,供应信息表,spj,select -from -where-,结构练习,查询,所有,的,供应商号,。,查询,北京,的,供应商号,。,查询,蓝色,的,零件号,。,查询供应项目,j1,零件,p3,的,供应商号,及相应,数量,。,查询供应项目,j1,零件,p3,的,供应商号,及,相应数量,,并按数量多少升序排列。,select -from -where-,结构练习,集合函数,集合函数用来将结果集中的记录进行汇总计算,并将结果生成一条新的记录。,SQL,中常用的集合函数有,5,种。,1. AVG,函数,用于统计一个数值型字段的平均值:,AVG ( ALL | DISTINCT ,列名,),例:查询所有学生的平均成绩,SELECT,AVG(Score,),FROM SC,集,合函数,function,分,组,Group by,对,分组筛选,Having,分,组统计,Compute,2.,SUM函数,用于统计一个数值型字段的总和:,SUM ( ALL | DISTINCT ,列名,),例:查询,SC,表,在结果集中显示所有,00005,课程及格学生的成绩总和,SELECT,SUM(Score,),FROM SC,WHERE Score=60 AND,CNo,=00005,3.,MAX函数,用于统计一个数值型字段的最大值:,MAX ( ALL | DISTINCT ),例:查询,00005,课程成绩最高的记录。,SELECT,MAX(Score,),FROM SC,WHERE,CNo,=00005,4.,MIN函数,用于统计一个数值型字段的最小值:,MIN ( ALL | DISTINCT ),例,:,查询,选修了,0000,5,课程,的,最,低,成绩。,SELECT M,IN,(Score),FROM SC,WHERE CNo=0000,5,5.,COUNT函数,统计结果集记录的个数:,COUNT ( *|ALL | DISTINCT ,列名,),例:查询学生的总人数。,SELECT COUNT(*),FROM Student,6.,习题,查询,选修了课程的学生人数,计算,2,号课程的学生平均成绩,查询学习了,2,号课程的学生的最高分,查询,女学生的学生总数,SELECT -FROM-WHERE,GROUP BY -HAVING-,结构,1.,语法格式,GROUP BY按列名所指定的列的取值进行分组,取值相同的记录分成一组,对每一组进行汇总计算。每一组生成一条记录 :,GROUP BY,列名,2.,细化集函数,例,:,查询每个课程号及相应选课人数,Select,Cno,COUNT(Sno,),From SC,Group by,Cno,集,合函数,function,分,组统计,Group by,对,分组筛选,Having,分,组统计,Compute,1.,语法格式,用于对,分组以后的结果进行筛选,:,GROUP BY,列名,HAVING,条件表达式,2.,必须和,GROUP BY,一起用,例:查询选了,3,门以上课的学生学号,SELECT,SNo,FROM Sc,Group By,Sno,HAVING count(*)3,集,合函数,function,分,组,Group by,对,分组筛选,Having,分,组统计,Compute,3.HAVING,和,WHERE,区别,HAVING,只应用于组,而,WHERE,子句应用于基本表,SELECT,ssex,count,(*),FROM student,where,clno,=030001,Group By,ssex,having count(*)2,只对符合,WHERE,条件的行进行分组,然后,HAVING,应用于由分组生成的,结果集中的行。,1.,COMPUTE子句,与,GROUP BY,的区别是,:,除显示统计结果外,还显示参加,统计的各组数据的详细信息:,ORDER BY,列名,COMPUTE,集合函数,BY,列名,ORDER BY,用于将数据按分组所,参照的列值进行排序,集,合函数,function,分,组,Group by,对,分组筛选,Having,分,组统计,Compute,2.,示例,例,:,查询各班学生人数和该班级的所有学生记录。,SELECT *,FROM Student,ORDER BY,CLno,COMPUTE,COUNT(Sno,),BY,CLno,设有一个,SPJ,数据库,包括,S,,,P,,,J,,,SPJ,四个关系模式:,S( SNO,,,SNAME,,,STATUS,,,CITY),;,P(PNO,,,PNAME,,,COLOR,,,WEIGHT),;,J(JNO,,,JNAME,,,CITY),;,SPJ(SNO,,,PNO,,,JNO,,,QTY),;,备注:,供应商表,S,由供应商代码(,SNO,)、供应商姓名(,SNAME,)、供应商状态(,STATUS,)、供应商所在城市(,CITY,)组成;,零件表,P,由零件代码(,PNO,)、零件名(,PNAME,)、颜色(,COLOR,)、重量(,WEIGHT,)组成;,工程项目表,J,由工程项目代码(,JNO,)、工程项目名(,JNAME,)、工程项目所在城市(,CITY,)组成;,供应情况表,SPJ,由供应商代码(,SNO,)、零件代码(,PNO,)、工程项目代码(,JNO,)、供应数量(,QTY,)组成,表示某供应商供应某种零件给某工程项目的数量为,QTY,。,单表操作练习,单表操作练习,供应商表,s,零件表,p,工程表,j,供应信息表,spj,查询,供应商,S1,总共供应,几个项目,。,查询,每个供应商,供应项目的,项目数,。,查询,供应项目多于,2,个,的,供应商号,。,统计,项目,j1,由几个,供应商,提供零件。,按照项目来统计,其对应的,供应商数量,。,统计,供应商多余,3,个,的,项目号,。,查询,最轻,的零件的,质量,是多少。,查询,质量最轻,的,零件号,。,查询,质量最重,的,零件号,。,统计汇总操作练习,编写分类统计,SQL,的关键:,(,1,)明确按照“什么”来统计(,分类字段,),(,2,)明确要统计的内容(,统计字段,),统计汇总操作练习,查询固定资产表中有,多少个不同的部门,。,查询表中有,多少种物资,。,查询表中,是否有重名的物资,。,要查询,每个使用部门,到底使用了,多少种物资,。,2.4.2,连接相关表中的数据,连接查询(多表)指从多个有关联的表中查询数据,其基本语法跟单表查询类似。一般来说,,多表查询要在,where,条件中指定表连接的条件,,如果没有连接条件,则查询结果是这多个查询表的笛卡儿积。,建立两表之间关系的最简单的运算符是等号(=)。如果使用等号两个表连接起来。这种类型的连接把来自两个表的在指定列中具有相等值的行连接起来。,2.4.2,连接相关表中的数据,相等连接(内连接,、,外连接),自连接,不相等连接,优化连接查询,1 .,显示成绩单,包括学生姓名、课程名称、成绩。,数据库原理与设计,多表等值连接查询的注意事项:,1.,在,from,语句中指明数据所涉及的表,在,where,条件中须指明表和表之间的连接条件。,select,sname,cname,score,from,student,course,sc,where,student.sno,=,sc.sno,and,o,=,o,2.,由于多个表中可能存在相同列,所以返回列的时候需要指明具体为哪个表中的列。,3.,在,SQL,语句中,使用表别名可以简化代码,增强可读性。,连接之一,-,等值连接,例:,查询选修了“数学,”,课的学生学号。,SELECT,a.SNo,SName, Score,FROM,Student a, SC b, Course c,WHERE,a.SNo,=,b.Sno,AND,b.CNo,=,c.CNo,AND,CName,= ,数学,AND,Scoreselect,manager.ename,from,emp,worker,emp,manager,where,worker.mgr,=,manager.empno,and,worker.ename,=BLAKE;,数据库原理与设计,一张表的两个副本之间连接,可以将同一张表的不同行连接起来。必须为表指定两个不同的别名,.,SELECT .,FROM,表,1,新表名,1,表,1,新表名,2,WHERE,新表名,1.,列名,=,新表名,2.,列名,连接之二,-,自连接,例,:,在,Student,中查询姓名相同的学生信息,.,例,:,和李刚同一个班的学生信息,-,自身连接,数据库原理与设计,例如:,在,Student,中查询姓名相同的学生信息,SELECT *,FROM Student,ST1, Student,ST2,WHERE,ST1.SName,=,ST2.SName,AND,ST1.SNo,ST2.Sno,数据库原理与设计,例如:和李刚同一个班的学生信息,-,自身连接,Select S2.SName,From,Student S1,Student S2,Where,S1.,CLno,=,S2.,CLno,AND,S1.SName=,李刚,连接之三,-,不等值连接,不等值连接,多表操作的连接条件中不为“,=”,运算符的查询叫不等值连接。,关系,R,关系,S,小于,BD,T-SQL,命令表示:,SELECT,*,FROM,R , S,WHERE,R.B S.D,关系代数表示:,连接之三,-,不等值连接,例:显示教师的基本信息(包括教师的编号,姓名、性别,出生日期,年龄,工资,及工资的级别),数据库原理与设计,多表连接的性能低下多数是因为,过滤操作的次序不合理,与,SQL,书写不规范,造成的。,优化连接查询,(,1,),过滤操作次序问题,(,2,),书写规则问题,1,、系统执行的效率:先过滤数据,后进行连接。,2,、书写角度:先书写表连接,后书写过滤条件。,3,、编写规则的,SQL,语句,不仅可以提高,SQL,命令的可读性,而且在网络数据库环境下有利于在服务器内存中命中,从而提高,SQL,执行的效率,优化连接查询,(,1,)过滤操作次序问题,SQL SERVER,数据库采用,自下而上的顺序,来解析,WHERE,子句,SQL SERVER,建议表之间的连接应该写在其他,WHERE,条件之前,。,SELECT,a.SNo,SName, Score,FROM Student a, SC b, Course c,WHERE,a.SNo,=,b.Sno,AND,b.CNo,=,c.CNo,AND,CName,= ,数学,AND Score60,SELECT,a.SNo,SName, Score,FROM Student a, SC b, Course c,WHERE,CName,= ,数学,AND Score2500,intersect,SELECT,ename,sal,job,FROM,emp,WHERE job=MAN
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!