版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库原理与应用课程实验指导书数据库系统概论课程实验指导书江 涛淮南师范学院计算机信息工程系2011.09目录目录 实验一 数据库的创建和管理 实验二 表的创建、管理及数据操作实验三 sql数据查询实验四 sql数据操纵实验五 数据库保护实验六 数据库应用开发附加实验 事务并发控制操作实验一 数据库的创建和管理一、实验目的n 熟悉sql server 2000实验环境的设置、学会独立使用该系统;n 熟悉sql server 2000中企业管理器和查询分析器两个常用管理工具;n 熟练掌握sql server enterprise manager 创建和管理数据库;n 熟练掌握在查询分析器中使用t
2、-sql语句创建和管理数据库二、实验内容1. 熟悉microsoft sql server / enterprise manager2. 熟悉microsoft sql 查询分析器3. 利用企业管理器创建和管理数据库 (1) 创建数据库(2) 删除数据库4. 在查询分析器中使用t-sql语句创建和管理数据库(1) 创建数据库 (2) 修改数据库(3) 删除数据库三、实验步骤1、启动服务器管理器首先通过【开始】【程序】【microsoft sql servers】【服务器管理器】,在系统托盘中会同时出现sql服务的图标,单击【开始/继续】前的小三角,此时,在系统托盘中的图标上会有一个绿色箭头,表
3、示服务已经启动。2、sql server 2000企业管理器首先通过【开始】【程序】【microsoft sql servers】【企业管理器】进入企业管理器界面。在企业管理器的左边列出的是控制台管理目录,依次是数据库类型(sql servers)、数据库群组名(sql servers组)、数据库服务器主机名,默认连接为本机)和该数据库服务器提供的所有的管理工具(包括数据库、数据转换服务、管理、复制、安全性、支持服务等)。在“数据库”选项中列出的是当前服务器中所有的数据库名(master、model、msdb、northwind等),其中master、model、tempdb等为系统数据库,记
4、录其他数据库的公有属性和某些隐藏信息,用户不要直接对系统数据库(也就是master库)中的表和数据项进行修改和删除,否则将会给数据库系统造成不可挽回的损失。3、新建数据库在服务器组的“数据库”上,右击,弹出快捷菜单,选择“新建数据库”。在弹出的对话框中常规(general)页框中,要求用户输入数据库名称以及排序规则名称。点击数据文件(data files)页框,该页框用来输入数据库文件的逻辑名称、存储位置、初始容量大小和所属文件组名称,如图点击事务日志(transaction log)页框,该页框用来设置事务日志文件信息,如图: 单击“确定”按钮,则开始创建新的数据库。4、表操作 新建表 在企
5、业管理器中,展开指定的服务器和数据库,打开想要创建新表的数据库,用右键单击表对象,从弹出的快捷菜单中选择“新建表”选项,或者在工具栏中选择图标,就会出现新建表对话框,在该对话框中,可以定义列的以下属性:列名称、数据类型、长度、精度、小数位数、是否允许为空、缺省值、标识列、标识列的初始值、标识列的增量值和是否有行的标识。 然后根据提示进行设置。 增加、删除和修改字段 在企业管理器中,打开指定的服务器中要修改表的数据库,用右键单击要进行修改的表,从弹出的快捷菜单中选择“设计表”选项,则会出现设计表对话框,在该对话框中,可以利用图形化工具完成增加、删除和修改字段的操作。 创建、删除和修改约束 在企业
6、管理器中,用右键单击要操作的数据库表,从弹出的快捷菜单中选择“设计表”选项 ,然后根据提示对主键进行添加、删除和修改操作。 查看表格在企业管理器中,用右键单击要操作的数据库表,从弹出的快捷菜单中选择“设计表”选项 ,可以查看表格的定义在企业管理器中,用右键单击要操作的数据库表,从弹出的快捷菜单中选择“打开表返回所有行”选项 ,查看表格中的数据 删除表格 在企业管理器中,展开指定的数据库和表格项,用右键单击要删除的表,从快捷菜单中选择“除去表”选项,则会出现除去对象对话框。单击“全部删除”按钮,即可删除表。5、查询分析器(query analyzer)首先通过【开始】【程序】【microsoft
7、 sql servers】【查询分析器】进入查询分析器界面。窗口的顶部是菜单和工具栏,在工具栏中有一个数据库列表框,列出主机中所有的数据库,用户可直接在列表框中选择进行操作的数据库名(如:northwind)。主窗口的左边是对象浏览器(包括对象和模板两页),右边是transact-sql程序编辑器。查询分析器是sql server2000的另一个非常主要的客户端工具,查询分析器用transact-sql程序对数据库系统进行分析和管理,企业管理器用图形界面和向导对数据库进行操作。对于那些更高级的查询分析、批处理创建删除,使用查询分析器就比较灵活。用户可直接在编辑器中输入查询分析语句“select
8、 * from categories”,其中categories是northwind数据库中的一张表,用户可以在左边对象浏览器的数据库用户表中找到。然后点击工具栏上的绿色三角形按钮进行执行。查询结果将出现在编辑器的下面,如下图:查询分析器的有一实用功能程序模板,选择左边的模板类型,右边编辑框将自动生成相应的transact-sql程序。修改程序中的参数就执行相应的功能。例如要创建一个数据库,就在左边选择create database 模板类型,再选择详细类型create database basic template,右边出现一段程序,其功能是判断主机中是否存在数据库n,如果存在的话,就将其删
9、除,然后再创建数据库n。用户也可以通过程序模板来进一步学习transact-sql语言。6、在查询分析器使用t-sql语句管理数据库 利用t-sql语句创建数据库打开查询分析器,输入如下语句:create database mydbon(name='my_db_data',filename='d:program filesmicrosoft sql servermssqldatamy_db_data.mdf',size=5, maxsize=15, filegrowth=2)log on(name='my_db_log',filename=
10、9;d:program filesmicrosoft sql servermssqldatamy_db_log.ldf',size=3, maxsize=10, filegrowth=1)go 利用t-sql语句修改数据库用t-sql语句完成修改数据库的操作,语句如下。alter database mydbadd file(name='my_db_data1',filename='c:program filesmicrosoft sql servermssqldatamy_db_data1.ndf',size=3, maxsize=15, filegro
11、wth=2)goalter database mydbmodify file(name='my_db_log',maxsize=20, filegrowth=2)go 利用t-sql语句删除数据库drop database mydb实验二 表的创建、管理及数据操作一、实验目的n 熟练掌握使用企业管理器和t-sql语句创建、修改和删除表。n 熟练掌握使用企业管理器和t-sql语句插入、修改和删除表数据。二、实验内容1、使用企业管理器创建学生选修课程数据库student_courses(参照课本);2、student_courses数据库包含如下三个表:学生表、选修表、课程表;主要
12、设置表的完整性;3、在企业管理器中插入、修改和删除表数据。4、使用t-sql重复上述操作5、分别使用企业管理器和t-sql修改和删除表三、实验步骤1、建立studentdb数据库和spjdb数据库;2、在studentdb数据库中利用企业管理器和查询分析器创建以下3个表,同时完成数据完整性的定义(实体完整性、参照完整性和用户定义的域完整性):student(学生信息表):主码列名数据类型宽度小数位空否取值范围备 注pksnochar9 n学号 snamechar10 n姓名 ssexchar2 y性别 sagesmallinty不小于
13、12年龄sdeptchar15y系名course(课程表):主码列名数据类型宽度小数位空否备 注pkcnochar4 n课程号 cnamechar20 y课程名称 cpnochar4 y先行课号 ccreditsmallinty学分sc(学生选课表):主码列名数据类型宽度小数空否外码参照关系取值范围备 注pksnochar9 nfkstudent学号cnochar4 nfkcourse课程号 gradedecimal51y0x100成绩3、在spjdb数据库中利用企业管理器和查询分析器创建以下4个表,同时
14、完成数据完整性的定义(实体完整性、参照完整性和用户定义的域完整性):s(供应商信息表):主码列名数据类型宽度小数位空否取值范围备 注pksnochar2 n供应商号 snamechar10 n供应商名称 statussmallinty大于0供应商状态citychar10y所在城市p(零件信息表):主码列名数据类型宽度小数位空否取值范围备 注pkpnochar2 n零件号 pnamechar10 n零件名称colorchar2y颜色 weightsmallinty大于0重量j(工程项目表):主码列名数据类型宽度小数位
15、空否取值范围备 注pkjnochar2 n工程项目号 jnamechar10 n工程项目名称citychar10y所在城市spj(供应情况表):主码列名数据类型宽度小数空否外码参照关系取值范围备 注pksnochar2 nfks供应商号pnochar2 nfkp零件号jnochar2 nfkj工程项目号 qtysmallintyx>0数量4、修改表结构,具体要求如下:(1) 将表course的cname列的数据类型改为varchar(40).(2) 为表student增加一个新列: birthday(出生日期), 类型
16、为datetime, 默认为空值.(3) 将表sc中的grade列的取值范围改为小于等于150的正数.(4) 为student表的“sex”字段创建一个缺省约束,缺省值为男(5)为“sdept”字段创建一个检查约束,使得所在系必须是cs、ma或is之一。(6)为student表的“sname”字段增加一个唯一性约束(7)为sc表建立外键,依赖于student表的fk_s_c约束。(8)禁止启用student表的“sdept”的check约束ck_student。5、分别建立以下索引(如果不能成功建立,请分析原因)(1) 在student表的sname列上建立普通降序索引.(2) 在course
17、表的cname列上建立唯一索引.(3) 在sc表的sno列上建立聚集索引.(4) 在spj表的sno(升序), pno(升序)和jno(降序)三列上建立一个普通索引.transact-sql提示: 1. 建立表, 修改表, 建立索引需具有create table的权限. 2. 创建基本表的sql语句是create table . 简单语法格式: create table 表名 ( 列名 数据类型 default 缺省值 not null ,列名 数据类型 default 缺省值 not null ,primary key(列名 ,列名 ) ,foreign key (列名 ,列名 ) refe
18、rences 表名 (列名 ,列名 ) ,check(条件) );一般语法格式:create table database_name.owner. table_name(<column_definition>| column_name | < table_constraint> ,n )on filegroup | default textimage_on filegroup | default <column_definition>:=column_name data_typedefault constant_expression| identity (s
19、eed, increment ) rowguidcol <column_constraint> n参数说明:database_name.owner. table_name:定义表的名字,表名的长度不得超过128个字节,如果是临时表,则表名不能超过116个字符。<column_definition>:列的定义。column_name:列的名字。列的命名必须遵守有关数据库对象的命名规则。data_type:列的数据类型。default constant_expression:定义该列的默认值。identity:定义该列是一个标识列。当一个新的数据行插入表中的时候,sql s
20、erver2000为标识列提供一个唯一的、递增的数值。在一张表格中,只能定义一个标识列。在定义标识列时,必须同时定义起始值和增量。seed:定义标识列的起始值。所谓起始值就是插入表的第一行的数据的标识列的值。increment:定义标识列的增量。所谓增量就是插入表的最近一行相对与前一行标识列的数据值的增量。rowguidcol:定义该列是一个行全局唯一的标识列。在一张表中只有一个唯一标识符列可以被定义为rowguidcol。column_constraint:定义与列相关联的约束。table_constraint:定义对表的约束。on filegroup | default :定义将表存储在某
21、一个指定的文件组中,default表示将表存储在默认文件组中。textimage_on filegroup | default :如果表中有ntext、text或image类型的数据,则将这些数据存储在某一个指定的文件组里。 3. 修改表结构的sql语句是alter table, 修改的内容包括:修改、增加、删除列或约束、使约束和触发器无效等。简单语法格式:alter table <表名>add <列名> <数据类型> <列级完整性约束> / 增加新列drop <完整性约束名> / 删除约束 drop column <列名>
22、; / 删除列alter column <列名> <数据类型> <列级完整性约束> ;/修改列定义 其中列级完整性约束包括:·空值约束 not null和null·主关键字约束 primary key·唯一性约束 unique·参照完整性约束 foreign key一般语法格式:alter table table alter column column_name new_data_type null| not null|add |drop rowguidcol |add <column_definition>
23、;| column_name as computed_column_expression ,n |add <table_constraint>,n |drop constraint constraint_name |column column ,n |check |nocheck constraint all | constraint_name ,n |enable |disable trigger all |trigger_name ,n参数说明:alter column:修改已经存在的列的属性。add |drop rowguidcol:将指定列定义成rowguidcol,或者删
24、除该列的rowguidcol属性。add <column_definition>| column_name as computed_column_expression,n:增加新的列。add <table_constraint>,n:定义新的表约束。drop constraint constraint_name |column column ,n:删除约束或删除列。check |nocheck constraint all | constraint_name ,n:使所有约束或者指定的约束有效或失效。例:使cnst_example表中的约束salary_cap失效。al
25、ter table cnst_example nocheck constraint salary_capenable |disable trigger all |trigger_name ,n:使所有或部分触发器有效或无效。例:使用t_sql语句对学生表进行各种修改。向表中添加新的字段:在学生表中添加一个“class”字段,数据类型为字符型。alter table student add class char(10)删除表中的旧列:将学生表中的“class”字段删除。alter table student drop column class更改表中的约束:删除某列的约束:将sc表中的外码约束f
26、k_sc_sno删除。alter table sc drop fk_sc_sno将student表中的主码约束pk_student_sno删除。alter table student drop pk_student_sno为某列添加约束:为student表的“ssex”字段创建一个缺省约束,缺省值为男。alter table student add constraint def_ssex default '男' for ssex更改student表中的“sno”字段的宽度为10及非空约束。alter table student alter column sno char(10)
27、 not null为student表添加一个主码约束pk_student_sno。alter table student add constraint pk_student_sno primary key(sno)为sc表添加一个外码约束fk_sc_sno。alter table sc add constraint fk_sc_sno foreign key (sno) references student(sno) 给学生表增加“grade”字段并加上check约束,让其不可以大于100。alter table student add grade int constraint ch_grad
28、e check(grade<100)exec sp_help student给学生表中添加“birthday”字段,并且这个日期不能在录入当天的日期之后。alter table student add birthday datetime null constraint ch_birthday check (birthday<getdate()添加具有默认值的可为空的列:在学生表中加入“matriculationday”字段,并且这一字段的默认值为录入当天的日期。alter table student add matriculationday smalldatetime null c
29、onstraint adddateflt default getdate()4.建立索引的sql语句是create index, 语法格式: create unique clustered index <索引名> on <表名>(<列名> asc | desc ,<列名> asc | desc )其中 unique指出是唯一索引, clustered指出是聚集索引。实验三 sql数据查询一、实验目的n 熟练掌握使用t-sql语句进行单表查询,尤其要熟练掌握group by子句、having 子句和集函数;n 熟练掌握使用sql标准语句和t-sql
30、扩展语句进行连接查询。n 熟练掌握使用in、比较符、any或all和exists操作符进行嵌套查询操作。二、实验内容 完成如下单表查询:1、 单表查询 2、 使用分组和集函数3、 内连接4、 外连接5、 in子查询6、 exists子查询三、实验步骤1、在studentdb数据库中student、course以及sc表中,完成以下查询(必做):(1)查询course表中所有学分大于2并且序号小于5的课程信息。(2)查询学分界于2和8之间的课程的信息。(3)从course表中查询出课程号为1或4或7的课程的课程号、课程名称、以及学分。(4)从course表中查询学分大于3的课程信息,并按升序排列
31、。(5)查询每个学生及其选修课情况。(6)查询选修2号课程且成绩在80分以上的学生信息。(7)查询每个学生的学号、姓名、选修的课程及成绩。(8)在student数据库中,查询所有计算机系学生的学号、选修课程号以及分数。(使用in谓词)。(9)查询选修了课程名为“操作系统”的学生学号和姓名。(10)在student数据库中,查询所有计算机系学生的学号、选修课程号以及分数(使用exists谓词)。2、在spjdb数据库中s、p、j以及spj表中,完成以下查询(选做): 完成p74习题5中的查询; 完成p127习题5中(1)(7)的查询。transact-sql提示:1. select语句的语法格式
32、如下:基本格式:select all|distinct <表达式1>,<表达式2> from <表名1>,<表名2> where <逻辑表达式>group by <列名>,<列名> having <谓词|条件>order by <列名>asc|desc,<列名>asc|desc 一般格式:select all|distinct top n percent with ties <select_list> into <new_table> from <
33、; table_source > , . n where < search_condition > | < old_outer_join > group by all group_by_expression , . n with cube | rollup having <search_condition><select_list>:=*|table_name|view_name|table_alias .*|column_nameas column_alias,n< table_source > :=
34、 table_name as table_alias with ( < table_hint > ,.n ) | view_name as table_alias with ( < view_hint > ,.n ) | rowset_function as table_alias | user_defined_function as table_alias | deri
35、ved_table as table_alias ( column_alias ,.n ) | < joined_table >< joined_table > := < table_source > < join_type > < table_source > on < search_condition > | < table_source > cross join < table_source >
36、60; | ( ) < joined_table > < join_type > := inner | left | right | full outer < join_hint > join< old_outer_join > := column_name * = | = * column_name 参数说明:(1)all:默认设置,指定在结果集中可以显示重复行。(2)distinct:指定在结果集中只能显示唯一行,空值被认为相
37、等。(3)top n:指定只从查询结果集中输出前n行。n是介于04294967295之间的整数。(4)percent:从结果集中输出前百分之几行,当指定时带percent,n的值必须介于0100之间。(5)with ties:指定从结果集中返回附加的行,这些行包含与出现在top n(percent)行最后的order by列中的值相等的值。如果指定了order by子句,则只能指定topwith ties。(6)<select_list>:为结果选择的列。选择列表是以逗号分隔的一系列表达式。(7)into <new_table>:创建新表并将结果行从查询插入新表中。用户
38、若要执行带 into 子句的 select 语句,必须在目的数据库内具有 create table 权限。select.into 不能与 compute 子句一起使用。new_table 的格式通过对选择列表中的表达式进行取值来确定。new_table 中的列按选择列表指定的顺序创建。new_table 中的每列有与选择列表中的相应表达式相同的名称、数据类型和值。(8) from < table_source >: 指定要在transact-sql语句中使用的表或视图(带或不带别名均可)。可在语句中使用多达256个表。可将table变量指定为表源。 < table_sourc
39、e >中的参数说明见(19)。 (9)< old_outer_join >: 使用不标准的产品专用语法和 where 子句指定外联接。*= 运算符用于指定左向外联接,=* 运算符用于指定右向外联接。注:这种语法具有潜在的二义性解释并且不标准,因此不提倡使用这种语法进行外联接。而应在 from 子句中使用联接运算符指定联接。不能在同一语句中同时使用这两种方法。(10)<search_condition>:通过使用谓词限制结果集内返回的行。对搜索条件中可以包含的谓词数量没有限制。(11) *:指定在from子句内返回所有表和视图内的所有列,列按from子句所指定的由表
40、或视图返回,并按他们在表或视图中的顺序返回。(12)column_name:要返回的列名,必要时限定column_name以避免二义性引用,当from子句中的两个表内包含重复名的列时会出现该情况。(13)column_alias:是查询结果集内替换列名的可选名。(14)group by all: 包含所有组和结果集,甚至包含那些任何行都不满足 where 子句指定的搜索条件的组和结果集。如果指定了 all,将对组中不满足搜索条件的汇总列返回空值。不能用 cube 或 rollup 运算符指定 all。如果访问远程表的查询中有 where 子句,则不支持 group by all 操作。(15)
41、group_by_expression : 是对其执行分组的表达式。group_by_expression 也称为分组列。group_by expression 可以是列或引用列的非聚合表达式。在选择列表内定义的列的别名不能用于指定分组列。说明 text、ntext 和 image 类型的列不能用于 group_by_expression。对于不包含 cube 或 rollup 的 group by 子句,group_by_expression 的项数受查询所涉及的 group by 列的大小、聚合列和聚合值的限制。该限制从 8,060 字节的限制开始,对保存中间查询结果
42、所需的中间级工作表有 8,060 字节的限制。如果指定了 cube 或 rollup,则最多只能有 10 个分组表达式。(16)cube: 指定在结果集内不仅包含由 group by 提供的正常行,还包含汇总行。在结果集内返回每个可能的组和子组组合的 group by 汇总行。group by 汇总行在结果中显示为 null,但可用来表示所有值。使用 grouping 函数确定结果集内的空值是否是 group by 汇总值。结果集内的汇总行数取决于 group by 子句内包含的列数。group by 子句中的每个操作数(列)绑定在分组 null 下,并且分组适用于所有其它操作数(列)。由于
43、cube 返回每个可能的组和子组组合,因此不论指定分组列时所使用的是什么顺序,行数都相同。(17)rollup: 指定在结果集内不仅包含由 group by 提供的正常行,还包含汇总行。按层次结构顺序,从组内的最低级别到最高级别汇总组。组的层次结构取决于指定分组列时所使用的顺序。更改分组列的顺序会影响在结果集内生成的行数。重要提示:使用 cube 或 rollup 时,不支持区分聚合,如 avg(distinct column_name)、count(distinct column_name) 和 sum(distinct column_name)。如果使用这类聚合,sql server 将返
44、回错误信息并取消查询。(18) having <search_condition>: 指定组或聚合应满足的搜索条件。having 通常与 group by 子句一起使用。当 having 与 group by all 一起使用时,having 子句替代 all。如果不使用 group by 子句,having 的行为与 where 子句一样。注:在having子句中不能使用text、image和ntext数据类型。在select语句中使用having 子句不影响cube运算符分组结果集和返回汇总聚合行的方式。(19) < table_source >中的参数说明:tab
45、le_name: 表名。from 关键字之后的表和视图的顺序并不影响返回的结果集。当 from 子句中出现重复名称时将报告错误。as table_alias: table_name、view_name 或 rowset_function 的别名,为方便起见而使用,或用于区分自联接或子查询中的表或视图。别名通常是一个缩短了的表名,用于在联接中引用表中的特定列。如果联接中的多个表中有相同名称的列存在,sql server 要求必须使用表名或别名来限定列名。(如果定义了别名则不能使用表名)。with ( < table_hint > ) : 指定表扫描、查询优化器要使用的一个或多个索引或
46、查询优化器要对此表、此语句使用的锁定方法。有关更多信息,请参见"表提示"。view_name: 是视图名称。视图是一个"虚拟表",通常创建为一个或多个表中列的子集。 with ( < view_hint > ) :指定索引视图扫描。默认情况下,视图在查询优化器处理查询之前展开。视图提示只能用在 select 语句中,而不能用于 update、delete 或 insert 语句。rowset_function: 指定一个行集函数,该函数返回可替代表引用的对象。user_defined_function : 指定用户定义的函数,该函数返回一个表
47、。如果用户定义的函数是一个内置的用户定义函数,则前面必须加两个冒号,如:from :fn_listextendedpropertyderived_table: 是从数据库中检索行的子查询。derived_table 用作对外部查询的输入。 column_alias: 替换结果集内列名的可选别名。在选择列表中放入每个列的一个别名,并将整个列别名列表用圆括号括起来。<joined_table>: 由两个或更多表的积组成的结果集,例如:select * from tab1 left outer join tab2 on tab1.c3 = tab2.c3 right outer join
48、 tab3 left outer join tab4 on tab3.c1 = tab4.c1 on tab2.c3 = tab4.c3对于多个 cross 联接,请使用圆括号来更改联接的自然顺序。<join_type>: 指定联接操作的类型。inner: 指定返回每对匹配的行。废弃两个表中不匹配的行。如果未指定联接类型,则这是默认设置。full outer: 指定在结果集中包含左表或右表中不满足联接条件的行,并将对应于另一个表的输出列设为 null。这是对通常由 inner join 返回的所有行的补充。注:按此处指定的方法指定外联接或在 where 子句中使用旧式非标准的 *=
49、 和 =* 运算符都是可行的。不能在同一语句中同时使用这两种方法。left outer: 指定在结果集中包含左表中所有不满足联接条件的行,且在由内联接返回所有的行之外,将另外一个表的输出列设为 null。right outer: 指定在结果集中包含右表中所有不满足联接条件的行,且在由内联接返回的所有行之外,将与另外一个表对应的输出列设为 null。<join_hint>: 指定 sql server 查询优化器为在查询的 from 子句中指定的每个联接使用一个联接提示或执行算法。有关更多信息,请参见本主题下面的"联接提示"。join: 指明所指定的联接操作应在给
50、定的表或视图之间执行。on <search_condition>: 指定联接所基于的条件。尽管经常使用列和比较运算符,但此条件可指定任何谓词,例如:select productid, suppliers.supplierid from suppliers join products on (suppliers.supplierid = products.supplierid)当条件指定列时,列不一定必须具有相同的名称或数据类型;但是,如果数据类型不一致,则这些列要么必须相互兼容,要么是 microsoft® sql server 能够隐性转换的类型。如果数据类型不能隐式转
51、换,则条件必须使用 cast 函数显式转换数据类型。 在 on 子句中可能有仅涉及一个联接表的谓词。这样的谓词也可能出现在查询中的 where 子句中。尽管这种谓词的放置在 inner 联接中不会产生差别,但是在涉及 outer 联接时可能会导致不同的结果。这是因为 on 子句中的谓词在应用于联接之前先应用于表,而 where 子句在语意上应用于联接结果。cross join: 指定两个表的矢量积。这将返回相同的行,就好像在旧式的非 sql-92 式联接中并没有指定 where 子句。2. 简单的select查询:select语句在任何sql语言中都是使用频率最高的语句,是sql的灵魂。最简单
52、的select查询语法如下: select column_name , n from tablename使用top关键字 例:分别从course中检索出前2条及前面67%的教师的信息。select top 2 * from courseselect top 67 percent * from course使用distinct关键字使用计算列例:将teacher表中各教师的姓名、教工号及工资按95%发放的信息,第2条语句将工资按95%发放后列名改为预发工资。select 教工号,姓名,工资*0.95 from teacherselect 教工号,姓名,工资*0.
53、95 as 预发工资 from teacher操作查询的列名select cno 课程序号,cname 课程名称, credit+1 修正学分 from course使用where子句例:查询course表,返回修正后的学分后仍然大于4的课程的代号、名称以及原先的学分。select cno as 序号,cname as课程名称,credit as 学分 from course where course+1>4使用like子句进行模糊查询例:从teacher表中分别检索出姓伍的教师的资料,或者姓名的第2个字是寿或立的教师的资料。select * from teacher where 姓名
54、like 伍%select * from teacher where 姓名 like _寿,立%使用order by给数据排序例:从course表中查询学分大于3的课程信息,并按升序排列。select cno as 序号,cname as 课程名 , credit as 学分 from coursewhere credit>3 order by credit asc3. 多表查询数据库各表中存放着不同的数据,用户经常需要用多个表中的数据来组合提炼出所需要的信息,如果一个查询需要对多个表进行操作,就称为关联查询,关联查询的结果集或结果表称为表之间的连接。关联查询实际上是通过各各表之间共同列
55、的关联来查询数据的,它是关系数据库查询最基本的特征。连接查询:如果需要对多张表中的数据进行查询,称之为连接查询。等值和非等值连接查询例:查询每个学生及其选修课情况。select student.*,sc.* from student,sc where student.sno=sc.sno外连接 例:以student表为主体列出每个学生的基本情况及其选课情况,若没有选课,只输出其基本情况。select student.sno,sname,sex,sbirth,sdept,o,gradefrom student,sc where student.sno*=sc.sno复合条件连接例:查询选修2号课程且成绩在80分以上的学生信息。select student.sno,sname,grade from student,sc where student.sno=sc.sno and sc.grade>80例:查询每个学生的学号、姓名、选修的课程及成绩。select stude
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂家电商合作合同范本
- 厂房买卖居间合同范本
- 版权转让协议及样本
- 共同投资居间合同范本
- 卖菜水果配送合同范本
- 协议合同模板制作模板
- 养殖蘑菇出售合同范本
- 厂房土地抵押合同范本
- 化工产品销售合同
- 养鸭出租转让合同范本
- 2024北森图形推理题
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 叉车安全行驶作业指导书
- 心力衰竭教学查房
- 烧烤店菜单模板
- 麻精药品培训课件
- 土壤微量元素含量分级与评价
- GB/T 4688-2020纸、纸板和纸浆纤维组成的分析
- GB/T 19638.1-2014固定型阀控式铅酸蓄电池第1部分:技术条件
- 隧道工程施工技术及质量控制要点培训
- 社区营养学-第二章营养调查与监测课件
评论
0/150
提交评论