资源描述
Click To Edit Master Title Style,Click to edit Master text styles,Second level,Third level,4th level,5th level,数据库原理及应用(,SQL Server,版,北京大学出版社,ISBN 978-7-301-13321-7/TP0941 2008.2,Click To Edit Master Title Style,Click to edit Master text styles,Second level,Third level,4th level,5th level,北京大学出版社,ISBN 978-7-301-13321-7/TP0941 2008.2,数据库原理及应用(,SQL Server,版,第,4,章 关系型数据库标准语言,SQL,第四章,关系数据库标准语言,SQL,教学目标,:,通过本章学习,了解,SQL,语言的主要功能及特点;掌握,SQL,的数据定义、数据查询、数据更新及数据控制功能,能够灵活运用数据查询语句,SELECT,。,文章来自个人网站,转载注明,http:/,4.1 SQL,语言的概述,4.2 SQL,数据定义功能,4.3 SQL,的数据查询功能,4.4 SQL,数据更新,4.5,数 据 控 制,4.6,本章小结,第四章 关系数据库标准语言,SQL,1 SQL,的主要功能,2 SQL,数据库的体系结构,3 SQL,的特点,4 SQL,对象命名约定,5 SQL,语句结构和书写准则,4.1 SQL,语言的概述,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,SQL,语言按照功能可以分为,三,大类:,1.,SQL,的主要功能,1SQL,语言的概述,SQL,的主要功能,SQL,数据库的体系结构,SQL,的特点,SQL,对象命名约定,SQL,语句结构和书写准则,2SQL,数据定义功能,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,(1),数据定义语言,(Data Definition Language,,,DDL),。,用于定义关系数据库的模式、外模式和内模式,以实现对数据库基本表、视图及索引文件的定义、修改和删除等操作。最常用的,DDL,语句是,CREATE,、,DROP,和,ALTER,。,(2),数据操纵语言,(,Data Manipulation Language,,,DML),。,用于完成数据查询和数据更新操作,其中数据更新是指对数据进行插入、删除和修改操作。最常使用的,DML,语句是,SELECT,、,INSERT,、,UPDATE,和,DELETE,。,(3),数据控制语言,(Data Control Language,,,DCL),:,用于控制对数据库的访问,服务器的关闭、启动等操作。最常使用的,DCL,语句是,GRANT,、,REVOKE,等。,SQL,支持数据库的三级模式结构,如,图,4.1,所示。,2.,SQL,数据库的体系结构,1SQL,语言的概述,SQL,的主要功能,SQL,数据库的体系结构,SQL,的特点,SQL,对象命名约定,SQL,语句结构和书写准则,2SQL,数据定义功能,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,基本表,是模式的基本内容,每个基本表对应一个实际存在的关系。,视图,是外模式的基本单位,是从基本表或其他视图中导出的表,它本身不单独地存储在数据库中,也就是说,数据库中只存放视图的定义而不存放视图所对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。,存储文件,是内模式的基本单位,每个存储文件存储一个或多个基本表的内容。一个基本表可有若干索引,索引也存储在存储文件中。,视图,和基本表是,SQL,的主要操作对象,用户可以用,SQL,语言对视图和基本表进行各种操作。在用户看来,视图和基本表都是关系表,而存储文件的存储结构对用户是透明的。,2.,SQL,的特点,1SQL,语言的概述,SQL,的主要功能,SQL,数据库的体系结构,SQL,的特点,SQL,对象命名约定,SQL,语句结构和书写准则,2SQL,数据定义功能,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,特点:,(,1),语言简洁,风格统一,易学易懂。,(2),既是自含式语言,又是嵌入式语言。,SQL,语言的这两种使用方式,使它具有极好的灵活性与方便性。,(3),高度非过程化。,用,SQL,语言进行数据操作,只要提出“做什么”,而无需知道“怎么做”,,SQL,语句的实现过程由系统自动完成。,3. SQL,对象命名约定,SQL,对象包括数据库、表、视图、属性名等。这些对象名必须符合一定规则或约定,各个,DBMS,的约定不完全相同,一般应遵守下列规则。,1SQL,语言的概述,SQL,的主要功能,SQL,数据库的体系结构,SQL,的特点,SQL,对象命名约定,SQL,语句结构和书写准则,2SQL,数据定义功能,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,数据对象名应以字母或汉字开头,其余字符可以由字母、汉字、数字和下划线组成。,(2),数据对象名可以为,1,30,个字符,(,在,MS Access,为,64,个字符,),,但有些,DBMS,限制为,8,个字符,如,Oracle,数据库。,4.,SQL,语句结构和书写准则,语法格式的一些约定符号,:,(1),尖括号“,”,中的内容为实际语义。,(2),中括号“, ”,中的内容为任选项。,(3) ,.,意思是“等等”,即前面的项可以重复。,(4),大括号“,”,与竖线“,|”,表明此处为选择项,在所列出的各项中仅需选择一项。,(5) SQL,中的数据项,(,包括列项、表和视图,),分隔符为“,”,;其字符串常量的定界符用单引号“, ”,表示。,1SQL,语言的概述,SQL,的主要功能,SQL,数据库的体系结构,SQL,的特点,SQL,对象命名约定,SQL,语句结构和书写准则,2SQL,数据定义功能,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,4.,SQL,语句结构和书写准则,在编写,SQL,语句时,遵守某种准则可以提高语句的可读性,并且易于编辑,这是很有好处的。以下是一些通常的,准则,:,(1) SQL,语句对,大小写不敏感,。但是为了提高,SQL,语句的可读性,子句开头的关键字通常采用大写形式。,(2) SQL,语句可写成一行或多行,习惯上每个子句占用一行。,(3),关键字不能在行与行之间分开,并且很少采用缩写形式。,(4) SQL,语句的结束符为分号“,;”,,分号必须放在语句中最后一个子句的后面,但可以不在同一行。,1SQL,语言的概述,SQL,的主要功能,SQL,数据库的体系结构,SQL,的特点,SQL,对象命名约定,SQL,语句结构和书写准则,2SQL,数据定义功能,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,4.2 SQL,数据定义功能,1,表的概述,2,创建表,3,修改表结构,4,快速添加、查看、修改与删除数据记录,5,删除表,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,1.,表的概述,在,SQL Server,中,表是一种重要的数据库对象。如果把数据库比喻成柜子,那么表就像柜子中各种规格的抽屉。一个表就是一个关系,用来存储实体集及实体之间的联系,不同的表有不同的名字。在,SQL Server,的一个数据库中可以存储,20,亿个表,一个表最多允许定义,1024,个列,每一列必须具有相同的数据类型。表的行数和总大小仅受可使用空间的限制,。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,1.,表的概述,在一个数据库中,允许多个用户创建表。创建表的用户称为该表的所有者,因此,表的名称应该体现数据库、用户和表名,3,方面的信息。,命名表,格式如下:,database_name.owner.table_name,其中,,database_name,说明表在哪个数据库上创建,默认为当前数据库;,owner,表示表的所有者名称,默认为创建表的用户;,table_name,为表的名称,应遵守,SQL Server,标识符的命名规则。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,1.,表的概述,表的结构,在学习如何创建表之前,首先需要了解表的结构。如图,4.2,所示,表的存在方式如同电子表格的工作表一样拥有列,(Column),和行,(Row),,用数据库的专业术语来表示,这些列即是字段,(FIELD),,每个字段分别存储着不同性质的数据,而每一行中的各个字段的数据则构成一条数据记录,(RECORD),。,事实上,结构,(STRUCTURE),和数据记录,(RECORD),是表的两大组成部分。当然,在表能够存放数据记录之前,必须先定义结构,而表的结构定义工作即决定表拥有哪些字段以及这些字段的特性。所谓“字段特性”是指这些字段的名称、数据类型、长度、精度、小数位数、是否允许空值,(NULL),等。显然,只有彻底了解字段特性的各个定义项,才能有办法创建一个功能完善和具有专业水准的表。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,字段名,表可以拥有多个字段,各个字段分别用来存储不同性质的数据,为了加以识别,每个字段必须有一个名称。字段名同样必须符合,SQL Server,的命名规则。,(1),字段名最长可达,128,个字符。,(2),字段名可包含中文、英文字母、数字、下划线符号,(_),、井字符号,(#),、货币符号,($),及,at,符号,(),。,(3),同一个表中,各个字段的名称绝对不能重复。,(4),字段名可以用中文。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,1.,表的概述,长度、精度和小数位数,字段的长度是指字段所能容纳的最大数据量。但是对不同的数据类型而言,长度对字段的意义有些不同,说明如下。,(1),对字符串和,Unicode,数据类型而言,长度代表字段所能容纳字符的数目,因此它会限制用户所能输入的文本长度。,(2),对数值类的数据类型而言,长度则代表字段使用多少个字节来存放数字。,(3),对,binary,、,varbinary,与,image,数据类型而言,长度代表字段所能容纳的字节数。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,1.,表的概述,1.,表的概述,数据类型,确定表的每列的数据类型,是设计表的重要步骤。列的数据类型就是定义该列所能存放的数据的值。例如,表的某一列存放姓名,则定义该列的数据类型为字符型;又如,表的某一列存放出生日期,则定义该列为日期时间型。,SQL Server 2000,的数据类型很丰富,这里仅给出,SQL Server,常用的数据类型,见,表,4-1,。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,常用的数据类型,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,2.,创建表,创建表的方法有两种:一种是使用,SQL Server,企业管理器;另一种是使用,Transact-SQL,的,CREATE TABLE,命令。下面以创建一个名为,student,的表为例,介绍创建表的方法及过程。,Student,表的表结构见,表,4-2,.,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,2.,创建表,使用企业管理器创建表的步骤如下。,(1),在,SQL Server,企业管理器中,在树形目录中展开,【SQL Server,组,】|【XXGC415(Windows NT)】|【,数据库,】|【,grademanger,】,。,(2),选择,【,表,】,右击,在弹出的快捷菜单中选择,【,新建表,】,命令,打开设计表窗口,(3),在设计表窗口中的上半部分有一个表格,在这个表格中输入列的列名、数据类型、长度,(,有的数据类型不需要指定长度,如,datetime,类型的长度为固定值,8),、是否可以为空,在“允许空”域中单击,可以切换是否允许为空值的状态,打钩说明允许为空值,空白说明不允许为空值,默认状态是允许为空值的。图,4.4,所示的设计表窗口中的下半部分是特定列的详细属性,包括是否是标识列、是否使用默认值等。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,2.,创建表,(5),设置主键约束。选中要作为主键的列,单击工具栏上的设置主键按钮,主键列的前上方将显示钥匙标记。,(6),右击表中的任意一行,(,即任意一个列的定义,),,在弹出的快捷菜单中选择,【,属性,】,命令,或单击工具栏中的,【,表和索引属性,】,按钮。,(7),定义好所有的列后,单击工具栏上的,【,保存,】,按钮,表就创建完成了。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,2.,创建表,在,Transact-SQL,中,使用,CREATE TABLE,命令创建表。语法格式如下。,CREATE TABLE ,( , ,., ,.,),2,使用,Transact-SQL,命令创建表,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,2.,创建表,在定义表结构的同时还可以定义与该表相关的完整性约束条件,(,实体完整性、参照完整性和用户自定义完整性,),,这些完整性约束条件被存入系统的数据字典中,当用户操作表中的数据时,由,DBMS,自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及该表的多个属性列,则必须定义在表级上,其他情况则既可以定义在列级上也可以定义在表级上。,说明如下,:,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,2.,创建表,PRIMARY KEY,:指定该字段为主键。,NULL /NOT NULL,:指定的字段允许为空,/,不允许为空,如果没有约束条件,则默认为,NULL,。,UNIQUE,:指定字段取值唯一,即每条记录的指定字段的值不能重复。,注:如果指定了,NOT NULL,和,UNIQUE,,就相当于指定了,PRIMARY KEY,。,DEFAULT ,:指定设置字段的默认值。,CHECK ,:用于对输入值进行检验,拒绝接受不满足条件的值。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,(1),列级完整性约束条件包括,:,2.,创建表,PRIMARY KEY,用于定义表级约束,语法格式为:,CONSTRAINT PRIMARY KEY CLUSTERED,注:当使用多个字段作为表的主键时,使用上述设置主键的方法。,FOREIGN KEY,用于设置参照完整性规则,即指定某字段为外键,语法格式为:,CONSTRAINT FOREIGN KEY REFERENCES , CHECK,用于设置用户自定义完整性规则,既可用于列级完整性约束,也可用于表级完整性约束,语法格式为:,CONSTRAINT CHECK ,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,(2),表级完整性约束条件包括,:,2.,创建表,CREATE TABLE student /,创建学生关系表,(,sno,char(10) PRIMARY KEY, /,学号为主键,sname,varchar(8) NOT NULL, /,姓名,ssex,char (2) CHECK (,ssex,IN (,男,女,),/,性别,sbirthday,datetime,DEFAULT 1986-01-01,/,出生日期,sdept,char(16) /,系别,address,varchar,(50),),1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,【,例,4-1】,利用,SQL,语句定义表,4-2,中的关系表,2.,创建表,表,4-3 course,表,(,课程表,),的表结构,字段名称,数 据 类型,长 度,精 度,小 数 位数,是否允许,Null,cno,char,5,0,0,否,cname,varchar,20,0,0,否,表,4-4 sc,表,(,成绩表,),的表结构,字段名称,数 据 类型,长 度,精 度,小 数 位数,是否允许,Null,sno,char,10,0,0,否,Cno,char,5,0,0,否,degree,decimal,5,5,1,是,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,利用,SQL,语句定义表,4-3,、表,4-4,中的关系表,2.,创建表,CREATE TABLE course /,创建课程关系表,(,cno,char(5) PRIMARY KEY, /,课程号为主键,cname,var,char(20) NOT NULL /,课程名称,),CREATE TABLE sc /,创建成绩关系表,(,sno,char(10) NOT NULL, /,学号,cno,char(5) NOT NULL, /,课程号,degree decimal(5,1), /,成绩,CONSTRAINT A1 PRIMARY,KEY(sno,cno,), /,学号、课程号为主键,CONSTRAINT A2 FOREIGN,KEY(sno,) REFERENCE,STUDENT(sno,),/,学号为外键,CONSTRAINT A3 FOREIGN,KEY(cno,) REFERENCE,COURSE(cno,), /,课程号为外键,CONSTRAINT A4,CHECK(degree,BETWEEN 0 AND 100)/,成绩约束条件,),1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,3.,修改表结构,表创建后,难免要对其进行修改。可以使用企业管理器或,ALTER TABLE,命令来进行表的修改。,1,使用企业管理器修改表,2,使用,ALTER TABLE,命令修改表,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,3.,修改表结构,右击要修改的表,在弹出的快捷菜单中选择,【,设计表,】,命令,打开设计表窗口,此时可以与新建表时一样,向表中加入列、从表中删除列或修改列的属性,修改完毕后单击,【,保存,】,按钮即可。使用属性对话框可以修改检查、外键或主键约束及索引等。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,1,使用企业管理器修改表,3.,修改表结构,(1),语法格式:,ALTER TABLE ,ADD( ,),ALTER COLUMN ( ),DROP COLUMN | ,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,2,使用,ALTER TABLE,命令修改表,3.,修改表结构,(2),功能:,ADD( ,),为指定的表添加一个新字段,它的数据类型由用户指定。,ALTER COLUMN ( ),对指定表中字段的数据类型或完整性约束条件进行修改。,DROP COLUMN | ,对指定表中不需要的字段或完整性约束进行删除。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,3.,修改表结构,(3),具体实例 :,【,例,4-2】,在,student,表中添加一个数据类型为,char,,长度为,10,的字段,class,,表示学生所在班级。,ALTER TABLE student ADD class char(10),【,例,4-3】,将,sc,表中的,degree,字段的数据类型改为,smallint,。,ALTER TABLE sc ALTER COLUMN degree,smallint,【,例,4-4】,将,student,表中,class,字段删除。,ALTER TABLE student DROP COLUMN class,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,4.,快速添加、查看、修改与删除数据记录,1,向表中添加数据,创建表只是建立了表结构,还应该向表中添加数据。只有,System Administrator,角色成员、数据库和数据库对象所有者及其授权用户才能向表中添加数据。在添加数据时,对于不同的数据类型,插入数据的格式不一样,因此,应严格遵守它们各自的要求。添加数据按输入顺序保存,条数不限,只受存储空间的限制。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,1,向表中添加数据(续),启动企业管理器后,展开,【,数据库,】,文件夹,再展开要添加数据的数据库,(,如,grademanager,),,可以看到所有的数据库对象,单击,【,表,】,,并右击右侧窗口列表中要操作的表,(,如,student),,选择快捷菜单中的,【,打开表,】,命令,在弹出的子菜单中选择,【,返回所有行,】,命令,打开该表的数据窗口。,在数据窗口中,用户可以添加多行新数据,同时还可以修改表中数据。使用该窗口的快捷菜单,可以实现表中数据各行记录间跳转、剪贴、复制和粘贴等。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,4.,快速添加、查看、修改与删除数据记录,(1),添加数据记录。只需将光标移动到最后一条数据记录下方的空白行,然后开始在各字段输入数据即可。但是如果表中包含许多条数据记录时,如何快速移到最后一条数据记录下方的空白行呢?此时可,如图,4.11,所示,,右击窗口的任何一处并从快捷菜单中用鼠标单击,【,新建,】,按钮。,(2),修改数据记录。若想修改某字段的内容,只需将光标移到该字段然后开始修改即可。,(3),删除数据记录。若想删除某条数据记录,可单击该条数据记录左边的选取框,然后按下,DELETE,键或,DEL,键,接着在确认对话框中单击,【,是,】,按钮即可。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,4.,快速添加、查看、修改与删除数据记录,2,快速查看、修改和删除数据记录,(,4,) 快速查看数据记录。在快速查看数据记录方面,除了利用方向键和翻页键来浏览数据记录外,右击窗口的任何一处,然后从快捷菜单中选择,【,第一个,】,、,【,最后一个,】,或,【,行,】,命令,以便快速移到第一条、最后一条或特定记录编号的数据记录。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,4.,快速添加、查看、修改与删除数据记录,5.,删除表,删除一个表时,它的结构定义、数据、约束、索引都将被永久地删除。,如果一个表被其他表通过,FOREIGN KEY,约束引用,那么必须先删除定义,FOREIGN KEY,约束的表,或删除其,FOREIGN KEY,约束。当没有其他表引用它时,这个表才能被删除,否则删除操作就会失败。例如,,SC,表通过外键约束引用了,STUDENT,表,如果尝试删除,STUDENT,表,那么会出现警告对话框,删除操作被取消。,删除一个表可以使用企业管理器或,Transact-SQL,语句。,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,1,使用企业管理器删除表,使用企业管理器删除一个表非常简单,只需展开,【,服务器组,】|【,服务器,】|【,数据库,】|【,表,】,,在右边窗口中右击要删除的表,在弹出的快捷菜单中选择,【,删除,】,命令,如果确定要删除该表,则在弹出的,【,除去对象,】,对话框中单击,【,全部除去,】,按钮,便完成对表的删除。,5.,删除表,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,2,使用,Transact-SQL,语句删除表,使用,DROP TABLE,命令可以删除表,语法格式为:,DROP TABLE ,注:,DROP TABLE,命令不能用来删除系统表。,【,例,4-5】,删除学生成绩表,sc,。,DROP TABLE sc,5.,删除表,1SQL,语言的概述,2SQL,数据定义功能,表的概述,创建表,修改表结构,快速添加、查看修改与删除数据记录,删除表,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,4.3 SQL,的数据查询功能,1.,单表无条件查询,2.,单表有条件查询,3.,聚集函数的使用,4.,分组与排序,5.,多表连接查询,6.,嵌套查询,7.,集合查询,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,4SQL,数据更新,5,数据控制,6,本章小结,4.3 SQL,的数据查询功能,数据查询是数据库中最常见的操作,,SQL,语言是通过,SELECT,语句来实现查询的。由于,SELECT,语句的结构较为复杂,为了更加清楚地理解,SELECT,语句,下面所示的语法结构将省略细节,并在以后各小节展开来讲。,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,SELECT,子句,1,FROM,子句,2,WHERE,表达式,1,GROUP BY,子句,3,HAVING,表达式,2,ORDER BY,子句,4,UNION,运算符,功能及说明,:,(1) SELECT,子句:指定查询结果中需要返回的值。,(2) FROM,子句:指定从其中检索行的表或视图。,(3) WHERE,表达式:指定查询的搜索条件。,(4) GROUP BY,子句:指定查询结果的分组条件。,(5) HAVING,表达式:指定分组或集合的查询条件。,(6) ORDER BY,子句:指定查询结果的排序方法。,(7) UNION,运算符:将多个,SELECT,语句查询结果组合为一个结果集,该结果集包含联合查询中的所有查询的全部行。,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,4.3,SQL,的数据查询功能,4.3 SQL,的数据查询功能,本节以学生成绩管理,(,grademanager,),数据库为例,所用的基本表中数据见,表,4-5,、表,4-6,、表,4-7,。该数据库包括:,学生关系表,student(,说明:,sno,表示学号,,sname,表示姓名,,ssex,表示性别,,sbirthday,表示出生日期,,sdept,表示所在系,),课程关系表,course(,说明:,cno,表示课程号,,cname,表示课程名,),成绩表,sc(,说明:,sno,表示学号,,cno,表示课程号,,degree,表示成绩,),其关系模式为:,student(sno,,,sname,,,ssex,,,sbirthday,,,sdept,),course(cno,,,cname,),sc(sno,,,cno,,,degree),1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,1.,单表无条件查询,1,命令格式,SELECT ALL|DISTINCT TOP NPERCENT AS , AS ,. FROM ,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,2.,说明,:,(1)ALL,:表示输出所有记录,包括重复记录。默认值为,ALL,。,DISTINCT,:表示查询结果中去掉重复值。,(2)TOP N,:返回查询结果集中的前,N,行。加,PERCENT:,返回查询结果集中的前,N%,行。,N,的取值范围是,0,100,。,(3),选项:查询结果集中的输出列。可为字段名、表达式或函数。用,“,*,”,表示表中的所有字段。若选项为表达式或函数,输出的列名系统自动给出,不是原字段名,故用,AS,重命名。,(4),显示列名:在输出结果中,设置选项显示的列名。,(5),表名:要查询的表。表不需打开,到当前路径下寻找表所对应的文件。,1),查询指定列,【,例,4-6】,查询全体学生的学号和姓名。,SELECT,sno,sname,FROM student,【,例,4-7】,查询全体学生的姓名、学号、所在系。,SELECT,sname,sno,sdept,FROM student,SELECT,子句中各列的先后顺序可以与表中的顺序不一致。用户可以根据应用的需要改变列的显示顺序。本例中先列出姓名,再列出学号和所在系。,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,实例,:,1.,单表无条件查询,1.,单表无条件查询,【,例,4-8】,查询选修了课程的学生学号,(,本例是对表,4-7,的查询,),。,SELECT DISTINCT,sno,FROM sc,如果没有指定,DISTINCT,,则默认为,ALL,,即保留结果表中取值重复的行。,2),查询全部列,【,例,4-9】,查询全体学生的详细记录。,SELECT * FROM student,上面的语句等价于:,SELECT,sno,sname,ssex,sbirthday,sdept,FROM student,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,1.,单表无条件查询,3),查询经过计算的列,SELECT,子句中不仅可以是表中的字段名,也可以是表达式。,【,例,4-11】,查询全体学生的姓名及其年龄。,SELECT,sname,YEAR(GETDATE()-YEAR(sbirthday,),FROM student,在本例中,子句中的第二项不是字段名,而是一个计算表达式,是用当前的年份减去学生的出生年份,这样,所得的即是学生的年龄。其中,,GETDATE( ),函数返回当前的系统日期和时间,,YEAR( ),函数返回指定日期的年部分的整数。,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,1.,单表无条件查询,SELECT,子句中不仅可以是算术表达式,还可以是字符串常量、函数等;用户还可以通过指定别名来改变查询结果中的列标题,这对包含算术表达式、常量、函数名的目标列表达式尤为有用。,【,例,4-12】,查询全体学生的姓名、出生年份和所在系,要求用小写字母表示所有系名,同时为姓名列指定别名为,NAME,,出生年份所在列指定别名为年份,系别所在列指定别名为系别。,SELECT,sname,NAME,出生年份,:,生日,YEAR(sbirthday,),年份,LOWER(sdept,) AS,系别,FROM student,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,1.,单表无条件查询,【,例,4-13】,将,sc,表中的学生成绩增加,20%,后输出。,SELECT,sno,cno,degree,*(1.2),成绩,FROM SC,注:命令中的标点符号一律为半角。,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,1.,单表无条件查询,Transact-SQL,提供了一个扩展特性,允许用户使用,SELECT,语句查询得到的结果记录来创建一个新的数据表,创建新表使用,INTO,子句。,INTO,子句不能单独使用,它包含在,SELECT,语句中。,INTO,子句的语法格式如下:,INTO ,新创建的数据表的属性列由,SELECT,语句的目标列表达式来确定,属性列的列名、数据类型以及在表中的顺序都与,SELECT,语句的目标列表达式相同。新表的行数据也来自,SELECT,语句的查询结果,其值可以是计算列表达式,也可以是函数。,4,查询结果的输出,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,4,查询结果的输出,【,例,4-14】,使用,INTO,子句创建一个新表,存放,student,表中的姓名和系别两列。,SELECT,sname,sdept,INTO,studtemp,FROM student,说明:该语句执行后将创建一个新表,studtemp,,表 中有两个属性列:,sname,、,sdept,,所有数据来自,student,。,通常情况下,,INTO,子句的主要作用是创建一个临时表,因为使用,INTO,子句创建的表,并不保留原表中已定义好的各种约束,因此一般不使用,INTO,子句创建永久表。,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,2.,单表有条件查询,1,命令格式,SELECT ALL|DISTINCT AS , AS,.,FROM ,WHERE ,说明:条件表达式是通过逻辑运算符连接起来的逻辑表达式。,【,例,4-15】,查询所有男生的信息。,SELECT * FROM student,WHERE,ssex,=,男,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,2.,单表有条件查询,【,例,4-16】,查询所有成绩大于,80,分的学生的学号和成绩。,SELECT,sno,AS ,学号,degree ,成绩,FROM sc,WHERE degree80,【,例,4-17】,查询所有男生的学号、姓名、系别及出生日期。,SELECT,sno,sname,sdept,sbirthday,FROM student,WHERE,ssex,=,男,【,例,4-18】,查询计算机系女生的信息。,SELECT * FROM student,WHERE,sdept,=CS AND,ssex,=,女,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,2.,单表有条件查询,【,例,4-19】,查询计算机系全体学生的名单。,SELECT,sname,FROM student,WHERE,sdept,=CS,【,例,4-20】,查询考试成绩有不及格的学生的学号。,SELECT DISTINCT,sno,FROM sc,WHERE degree,!,NOT+=,NOT+!=, NOT+, NOT+!,NOT+!,确定范围,BETWEEN AND,NOT BETWEEN AND,确定集合,IN,NOT IN,字符匹配,LIKE,NOT LIKE,空值,IS NULL,IS NOT NULL,多重条件,AND,OR,3,WHERE,条件中的运算符,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,2.,单表有条件查询,1) LIKE(,模糊查询,),(1),用法:, NOT LIKE ESCAPE ,其含义是查找指定的属性列值与,相匹配的记录。,可以是一个完整的字符串,也可以含有通配符,%,和,_,。其中:,%(,百分号,),:代表任意长度,(,长度可以为,0),的字符串;,_(,下划线,),:代表任意单个字符。,ESCAPE ,的作用是当用户要查询的字符串本身应含有,%,或,_,时,可以使用该选项对通配符进行转义。,如果,LIKE,后面的匹配串中不含通配符,则可以用,“,=,”,(,等于,),运算符取代,LIKE,谓词,用,“,!=,”,或,“,”,(,不等于,),运算符取代,NOT LIKE,谓词。,1SQL,语言的概述,2SQL,数据定义功能,3SQL,的数据查询功能,单表无条件查询,单表有条件查询,聚集函数的使用,分组与排序,多表连接查询,嵌套查询,集合查询,4SQL,数据更新,5,数据控制,6,本章小结,2.,单表有条件查询,【,例,4-21】,查询所有姓李的学生的个人信息。,SELECT * FROM student,WHERE,sname,LIKE ,李,%,【,例,4-22】,查询生源地不是山东省的所有学生信息。,SELECT * FROM student,WHERE,saddress,
展开阅读全文