搜档网
当前位置:搜档网 › day20-MyBatis高级查询与分页

day20-MyBatis高级查询与分页

day20-MyBatis高级查询与分页
day20-MyBatis高级查询与分页

MyBatis高级查询与分页

一课程介绍

●高级查询

1 高级查询的概念

2 #与$的区别

3 使用代码完成高极查询

4 使用MyBatis完成高级查询

5 Web页面完成高级查询

●分页功能

1 真分页与假分页

2 分页的设计原理

3 后台完成分页功能

4 前台完成分页

●高级查询与分页的集成(难点)

二高级查询

2.1 高级查询的概念

什么叫高级查询?为什么我们需要高级查询?

在我们的课程系统中,高级查询就是多条件查询。大家在上网的时候一定遇到很多这种相应的查询功能。它可以帮我们更快更好的找到需要的信息与资源。

试想一下,以后咱们做一个客户管理系统。一张表中有10000多个客户,我们是让用户从10000多个人中去找,还是根据一些条件(如名称,性别等)过一次过滤查询就找到。

下面为一些经常看到的高级查询:

以咱们的Product这个货品为例:如果我们现在要根据这个货品的名称与价格做高级查询应该是怎么样的呢?下图分析:

根据上面的分析我们可以得出以下结论:

1 高级查询就是在查询基础上添加后面的where条件

2 根据不同的情况,where后面的条件都不同的

3 提供的过滤条件越多,我们查询的排列组合也就越多

综上可以看到,我们需要提供相应的查询字段,但是会不会用到,就看客户自己。

但是由于这么多排列组合,我们不可能把所有的Sql全部准备好。

因此,咱们必需要能生成动态SQL(说白了就是根据用户选择条件来拼接字符串(where语句))

怎么拼接呢?用户选择了,这个字段就不为空,当这个字段不为空的时候,我们就在where后的查询加上这个条件过滤

2.2 使用代码完成高级查询

在完成高级查询之前,我们要准备一个Query对象。

为什么要准备这个Query对象呢?

1 查询的条件是有很多的,如果我们不封装成对象,传多个参数的话很麻烦,也不利于以后的修改与扩展

2 调用MyBatis中配置的sql的时候,只能传一个参数,那咱们只有把所有参数都封装到一个对象中,然后把这个对象传递过去

Query对象就是咱们的查询对象,创建Query对象是有一定的规范的:

它应该在一个query包中,这个包与domain同级,名称为XxxQuery---Xxx表示实体的名称如:StudentQuery/ProductQuery

在Query中我们准备好相应的查询条件字段与属性(Query就是一个JavaBean)

根据上面的分析,咱们为Product准备相应的Query对象:

public class ProductQuery {

private String name; //商品名称

private BigDecimal maxPrice; //最高价格

private BigDecimal minPrice; //最低价格

//提供相应的getter与setter方法

//提供一个方法来返回拼接的Sql语句

public String getWhereSql(){

...

}

}

然后咱们在dao层准备一个高级查询的方法直接传入ProductQuery,如下:List queryAll(ProductQuery query);

我们接着完成这个queryAll的功能,包含xml中也搞定相应的代码。但是在使用的时候咱们会遇到问题,而解决的方案居然是把#号改成$。讲到这里,我们得先来研究一下#与$的区

别。再来完成其它的功能。

讲完#现$的区别后,咱们就来完成相应的代码。也就是拼接字符串的方案(课堂中完成):第一种:使用where 1=1 (影响查询的效率)

public String getWhereSql(){

String sql = " where 1=1 ";

if(productName!=null && !"".equals(productName)){

sql += " and productName like '%"+productName+"%'";

}

if(maxSalePrice!=null){

sql += " and salePrice <="+maxSalePrice;

}

if(minSalePrice!=null){

sql += " and salePrice >="+minSalePrice;

}

return sql;

}

第二种方式:用一个集合来保存,第一个用where,其它的用and

好处:解决了1=1的问题,代码稍显复杂

public String getWhereSql(){

String sql = "";

List sqlList= new ArrayList();

if(productName!=null && !"".equals(productName)){

sqlList.add(" productName like '%"+productName+"%'");

}

if(maxSalePrice!=null){

sqlList.add(" salePrice <="+maxSalePrice);

}

if(minSalePrice!=null){

sqlList.add(" salePrice >="+minSalePrice);

}

for(int i=0;i

if(i==0){

sql += " where ";

}else{

sql += " and ";

}

sql += sqlList.get(i);

}

return sql;

}

第三种方式:使用JDK自带的功能来替换第一个字符串

/**

* 在这里拼接我们的条件字符串

* 我们想达成的目标:如果没有条件,就没有where以及的后面的代码 * 如果有条件,第一个条件前面是where,后面的条件才是and * 我们可以加一个功能,把sql字符串中的第一个and修改成 where * @return

*/

public String getWhereSql(){

String sql = "";

if(productName!=null && !"".equals(productName)){

sql += " and productName like '%"+productName+"%'";

}

if(maxSalePrice!=null){

sql += " and salePrice <="+maxSalePrice;

}

if(minSalePrice!=null){

sql += " and salePrice >="+minSalePrice;

}

sql = sql.replaceFirst("and", "where");

return sql;

}

2.3 #与$的区别

在拼接字符串之前,咱们先说一个在MyBatis的映射文件,一个占位使用#与$的区别,我们了解了这个后,才能去完成字符串的拼接。

select * from product ${whereSql}

select * from product where productName like '%小米%' $:直接从javaBean中拿属性值,可以用于拼接SQL字符串(不安全)

$:只能从对象中拿到数据

select * from product #{whereSql} - 报错

select * from product ?

#:只是代表?占位符(安全),设置值时值和设置的数据库字段名有关,和#{xxx}里面的xxx无关。

2.4 使用MyBatis完成高级查询

刚才咱们已经讲解了在Java代码中拼接字符串的方案。有的复杂,有的简单。这确实也是一种解决方案。不过MyBatis也为我们提供了一种完成高级查询的解决方案,而且这个方式用起来还非常简单(那就开始吧)。

在MyBatis中,它提供了一个where标签,然后在它里面加上if标签,所有的条件咱们都加上and,由于在where中,它会把第一个and替换成where。从而自动帮我们完成高级查询的字符串拼接。

代码如下:

2.5 Web中完成高级查询

1 完成页面上的查询条件

先看我们要做的效果:

当我们点提交的时候就应该根据过滤条件得到相应的产品

那么我们页面上就需要一个form表单:写页面时要使用placeholder,必须是的结构

value="${query.productName}"placeholder="商品名称"/>

value="${query.minSalePrice }"placeholder="最低价格"/>

value="${query.maxSalePrice }"placeholder="最高价格"/>

2 完成servlet中的代码

2.1 得到form表单中的数据,将它封装到ProductQuery里面

2.2 通过Query里面的查询数据到dao层去拿到过滤后的所有产品

三分页功能

分页是我们开发中很常见的功能。试想一下,如果一张表有20万条数据,我们一次读取出来,对整个程序的性能是非常大的负担,而且也要影响到查询的速度。对用户来说,一下看到这么多数据估计也是醉了。

因此:分页功能必不可少!

3.1 真分页与假分页

分页有两种:真分页与假分页。

这个只是我们对两种分页方式的取名而已,两种分页方式没有孰优孰劣。他们只是方式与特性不同,于是选择上有不同,咱们B/S结构的软件可能更多的会使用真分页来完成功能。

下面,我们就对真分页与假分页进行介绍

假分页(前端分页)

比如说现有数据库有300条数据。

它先把300要数据全部读取到我们的内存里面。

Select * from product; -> List 300条

1--30

如果我每页30条,那么我们都从内存里面(List) 里面来读取

好处:翻页快,功能实现简单,不匀速(第一次非常慢,后面快)

劣势:占用内存大

c/s

真分页(后端分页)

比如说现有数据库有300条数据。

如果我每页30条,那么每次到数据库里去读取当前的30条数据

select * from product LIMIT 0,29

select * from product LIMIT 30,59

select * from product LIMIT 60,89

好处:占用内存小

劣势:翻页慢

它查询数据是匀速的

3.2 分页的设计原理

分页前咱们要研究的几个问题:

查询的数据一共多少条?通过Sql直接查询

每页要显示多少条数据?自己决定的(或者客户前台选择)

我们如何计算一共多少页?

需要知道共多少条?每页多少条?

共多少条/每页多少条(可以除尽)

共多少条/每页多少条+1 (不可以除尽的情况)

怎么拿到某一页的所有数据?

SELECT * FROM product LIMIT (当前页数-1)*每一页的条数

从哪一条数据开始不是由客户来直接输入的。而是由他传过来的当前页面算出来的。

计算的公式:(当前页数-1)*每一页的条数

解决了上面四个问题,咱们就可以完成后台的分页功能!

3.3 后台完成分页功能

第一步:在xml中添加分页的sql

第二步:在query对象中加上分页的查询条件

注:对咱们来说,分页的的条件也是属性查询的过滤条件。-----------------------------

第三步:直接在dao层里面实现分页查询

3.4 Web中完成分页功能

在写代码之前,咱们先说一下。完成分页功能,我们需要在前端做一个什么样的展示。3.4.1 分页功能的分析

研究一些数据:①.每页多少条数据②.一共多少条数据③.当前第几页④首页⑤上一页⑥下一页⑦尾页我们要考虑的是,这些数据应该是从何而来的

分析与计算过程:

1 totalCount :一共多少条数据从数据库中直接查询

select count(*) from product

2 pageSize:每页多少条数据:由我们自己决定

3 currentPage:当前每几页:由客户决定(客户在前台选择)

当客户点击上一页,下一页,首页,尾页就代表它在做选择

也就是不管他点的是哪一个:

------------------------------------------------------

下面的所有数据都可以通过上面的条件计算出来:

4 totalPage一共多少页

分析:总共50条数据,每页10条 -> 5页totalCount/pageSize

分析:总共52条数据,每页10条 -> 6页totalCount/pageSize + 1

也就是说:不能除尽,就需要加1

totalCount%pageSize==0?totalCount/pageSize:totalCount/pageSize + 1

5 firstPage :首页就是第一页

6 lastPage : 最后一页就是一共多少页(等于totalPage)

7 prevPage : 上一页(判断,如果是第1页,不会变化)

currentPage<=1?1:currentPage-1

8 nextPage : 下一页(判断,如果是最后一页,不会变化)

currentPage>=totalPage?currentPage:currentPage+1

----------------------------------------------------

9 List这个查询到的数据

3.4.2 封装分页对象

当我们点分页的每一个分页元素(如上一页,下一页)的时候,都会修改我们的当前页。

而我们又怎么知道上一页要到第几页,而下一页又是到第几页呢?难道每次到了这个页面我们再进行计算嘛?

当然不是,在这个地方,我们的最佳实践就是把我当前显示的分页信息与展示的所有数据封装成一个分页对象. 对于我们之前所分析研究出来的分页字段与数据全部封装到这个对象中。之后,咱们直接从后台返回这个分页对象,就可以拿到所有数据了。

注意:前面咱们学了一个Query对象,是前台传给后台,用于做查询的。现在这个叫做分页对象,是后台传给前台,是用于展示了。这个点一定要清楚。

分页对象的基础字段

分页数据的计算(可以查看上页的分析部分理解)

3.4.3 dao层的改动

思考:咱们准备好的分页对象怎么用?

分页对象是需要我们在后台(dao层)组装好,然后返回到前台。

我们在dao层准备一个返回分页对象的方法即可:

注意了:在分页对象中我们需要拿到一共多少条数据,因为需要加上这条SQL:

3.4.3 Jsp的修改(根据PageList显示数据)

3.4.4 Servlet层的修改

调用拿到PageList的方法,并根据情况在前台提供currentPage这个参数

四高级查询与分页的集成

完成分页后我们可以去看一下现在我们的功能,不过很快会发生一个很让我们失望的结果。就是高级查询与分页之间似乎毫无关系。

试想一下,我在淘宝上搜索电脑,然后我不管再选第几页,我查到的都应该是电脑的数据吧!因此,我们需要把高级查询与分页这两个家伙结合起来。

但是,现在的问题就是!我们应该怎么去完成这个集成功能呢?

1 完成DAO层的集成:

我的建议是:从SQL入手!

我们要把高级查询与分页的功能都写到一条SQL中。

...

思考:除了查询的数据,查询总条数是否也需要高级查询与分页?

高级查询肯定是需要了,还是以找电脑为例。当我们做了查询后,总条件就应该是一共有多少条电脑信息,而不是应该是所有商品有多少条了。

分页就不需了,要页是针对当前结果分页,而我们查总条数只有一个结果。因此根据就没有必要。

2 完成前台的集成

后台条件集成后,我们可以看到结果依然有问题,那是由于前台的操作还没有合并。

什么意思呢?咱们前台现在传给后台的条件只有两种可能:

1 只传分页条件给前台

2 只传高级查询条件给前台

其实我们要做的很简单:将两种条件合并在一起就可以了(即点分页的时候带上查询条件)。说起来简单,但是到底怎么怎么做?

分页是使用超连接直接到后台的,它怎么带上我们的高级查询条件呢?

我们可以通过JS来完成相应的功能:

第一:将分页的条件(currentPage),放到高级查询中(隐藏域中)

第二:点链接的时候不要直接跳转,而去执行一段JS代码

第三:这段JS代码完成两件事

①将当前页的值赋给隐藏域(修改currentPage这个隐藏域)

②提交表单

完成这三步后,大家可以看到:当我们点击分页条的时候,其实是把要查的页面与高级查询的条件一起通过表单进行了提供,这样,咱们前台的查询功能大功告成!

附:功能分析图

数据库基础操作语句

一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar 类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

MySQL数据库高级查询和多表查询二

机试测试试卷 (MySQL数据库应用与开发) 注意:考试结束试卷必须交Array 回,不交回试卷者成绩无效题目:MySQL 数据库高级查询和多表查询 一、语言和环境 A、实现技术 SQL 语句练习 B、环境要求 Mysql5.7+Navicat 二、实验要求 1、创建名为 s_t 的数据库,参数全部使用 UTF-8 实验目的: 通过上机实验验证数据库的多表的高级查询操作。 实验内容:

1、将s_t数据库还原。 2、在s_t数据库中,完成以下多表连接查询的操作。 (1)查询计算机系学生的修课情况,要求列出学生的名字、所修课的课程号和成绩。 (2)查询“信息管理系”修了“计算机文化学”的学生姓名和成绩。 (3)查询所有选修了Java课程的学生情况,列出学生姓名和所在系。 (4)统计每个系的学生的考试平均成绩。 (5)统计计算机系学生每门课程的选课人数、平均成绩、最高成绩和最低成绩。 (6)查询与刘晨在同一个系学习的学生的姓名和所在的系。 (7)查询与“数据结构”在同一个学期开设的课程的课程名和开课学期。 (8)查询至少被两个学生选的课程的课程号。 (9)查询全体学生的选课情况,包括选修了课程的学生和没有选修课程的学生。 (10)查询没人选的课程的课程名。 (11)查询计算机系没有选课的学生,列出学生姓名和性别。 (12)统计计算机系每个学生的选课门数,包括没有选课的学生。 (13)查询信息管理系选课门数少于3门的学生的学号和选课门数,包括没有选课的学生。查询结果按选课门数递增排序。 (14)查询考试成绩最高的三个成绩,列出学号、课程号和成绩。 (15) 查询Java考试成绩最高的前三名的学生的姓名、所在系和VB考试成绩。 (16)查询选课人数最少的两门课程(不包括没有人选的课程),列出课程号和选课人数。 (17)查询计算机系选课门数超过2门的学生中,考试平均成绩最高的前2名(包括并列的情况)学生的学号、选课门数和平均成绩。 (18)将计算机系的学生信息保存到#ComputerStudent局部临时表中。 (19)将选了Java课程的学生的学号及成绩存入永久表Java_Grade中。 (20)统计每个学期开设的课程总门数,将结果保存到永久表Cno_Count表中 (21)利用例19题生成的新表,查询第2学期开设的课程名、学分和课程总门数。 3、在s_t数据库中,完成以下多表的高级查询操作。 (1)查询选了Java课程的学生的学号、姓名、所在系和成绩,并对所在系进行如下处理:“计算机系”:显示“CS”;“信息管理系”:显示“IM”;“通信工程系”:显示“COM”。(2)查询“C001”课程的考试情况,列出学号和成绩,对成绩进行如下处理:如果成绩大于等于90,则在查询结果中显示“优”;如果成绩在80到89分之间,则在查询结果中显示“良”;如果成绩在70到79分之间,则在查询结果中显示“中”;如果成绩在60到69分之间,则在查询结果中显示“及格”;如果成绩小于60分,则在查询结果中显示“不及格”。 (3)统计每个学生的考试平均成绩,列出学号、考试平均成绩和考试情况,其中考

MYSQL数据库基本操作命令

MYSQL数据库基本操作命令 用户名和密码:123456 创建一个名称为mydb1的数据库。 create database mydb1; 查看所有数据库 show databases; 创建一个使用utf-8字符集的mydb2数据库。 create database mydb2 character set utf8; 创建一个使用utf-8字符集,并带校对规则的mydb3数据库。 create database mydb3 character set utf8 collate utf8_general_ci; 显示库的创建信息 show create database mydb3; 删除前面创建的mydb1数据库 drop database mydb1; 查看服务器中的数据库,并把其中某一个库的字符集修改为gb2312; alter database mydb2 character set gb2312; show create database mydb2; 备份库 1、准备库的数据 create database mydb1; use mydb1; create table test ( id int ); insert into test(id) values(1); select * from test; 2、删除库:drop database mydb1; 3、 4.1 创建库:create database mydb1; 4.2 \. test.sql (通过执行脚本文件实现) 5、

创建一个员工表 use mydb1; 进入库 create table employee ( id int, name varchar(20), gender varchar(4), birthday date, entry_date date, job varchar(40), salary double, resume text )character set utf8 collate utf8_general_ci; 查看库中所有表 show tables; 查看表的创建细节 show create table employee; 查看表的结构 desc employee; 在上面员工表的基本上增加一个image列。 alter table employee add image blob; 修改job列,使其长度为60。 alter table employee modify job varchar(60); 删除sex列。 alter table employee drop gender; 表名改为user。 rename table employee to user; 修改表的字符集 alter table user character set gb2312; show create table user; 列名name修改为username alter table user change column name username varchar(20); 使用insert语句向表中插入一个员工的信息。 insert into employee(id,username,birthday,entry_date,job,salary,resume)

SQLServer数据库的高级操作

(1)批处理 (2) (2)变量 (3) (3)逻辑控制 (5) (4)函数 (7) (4.1)系统函数 (7) (4.2)自定义函数 (13) (5)高级查询 (23) (6)存储过程 (35) (7)游标 (36) (8)触发器 (50) SQL Server 数据库的高级操作 (1) 批处理 (2) 变量 (3) 逻辑控制 (4) 函数 (5) 高级查询 */ (1)批处理 将多条SQL语句作为一个整体去编译,生成一个执行计划,然后,执行! 理解批处理的关键在于"编译",对于由多条语句组成的一个批处理, 如果在编译时,其中,有一条出现语法错误,将会导致编译失败! create table t ( a int,

)

-- 如果多行注释中包含了批处理的标识符go -- 在编译的过程中代码将会被go分割成多个部分来分批编译-- 多行注释的标记将会被分隔而导致编译出错 -- 以下几条语句是三个非常经典的批处理 -- 你猜一下会添加几条记录! /* insert into t values (1,1) go */ insert into t values (2,2) go /* insert into t values (3,3) */ go -- 查询看添加了几条记录 select * from t

truncate table t (2)变量 -- 全局变量 SQL Server中全局变量由系统定义、系统维护,用户一般仅可对其进行读取!-- 查看SQL Server版本 print @@version -- 服务器名称 print @@servername -- 系统错误编号 insert into t values ('a','a') print @@error insert into t values ('a','a') if @@error = 245 print 'Error' -- SQL Server 版本的语言信息 print @@LANGUAGE -- 一周的第一天从星期几算起 print @@datefirst

各大搜索引擎高级搜索语法整理

每个搜索引擎都有自己的高级搜索语法,通过高级搜索语法你可以方便快捷的查找你想要搜索的内容。 目录 一、Google谷歌搜索高级语法 1. 减除无关资料(-) 2. 英文短语搜索(" ") 3. 指定网域 4. 查找特定文件 5. 按链接搜索 6. 限定关键词只在标题中 7. 限定关键词只在URL中 8. Info 9. Related 10. Cache 二、百度(baidu)搜索高级语法 1. 把搜索范围限定在网页标题中——intitle 2. 把搜索范围限定在特定站点中——site 3. 把搜索范围限定在url链接中——inurl 4. 精确匹配——双引号和书名号 5. 要求搜索结果中不含特定查询词 6. 专业文档搜索 三、Yahoo雅虎搜索高级语法 1. title 2. Link 3. Site:或者domain 4. Hostname

5. url 6. 如何使搜索结果中的查询词不被拆开? 四、Sogou搜狗搜索高级语法 1. 使用双引号进行精确查找 2. 使用多个词语搜索 3. 减除无关资料 4. 在指定网站内搜索 5. 文档搜索 五、四大搜索引擎高级语法总结 一、Google谷歌搜索高级语法 1. 减除无关资料(-) 如果要避免搜索某个词语,可以在这个词前面加上一个减号(“-”,英文字符)。但在减号之前必须留一个空格。 2. 英文短语搜索(" ") 在Google 中,可以通过添加英文双引号来搜索短语。双引号中的词语(比如"like this")在查询到的文档中将作为一个整体出现。这一方法在查找名言警句或专有名词时显得格外有用。 一些字符可以作为短语连接符。Google 将“-”、“\”、“.”、“=”和“..."等标点符号识别为短语连接符。 3. 指定网域 有一些词后面加上冒号对Google 有特殊的含义。其中有一个词是“site:”。要在某个特定 的域或站点中进行搜索,可以在Google 搜索框中输入“site https://www.sodocs.net/doc/2f14519452.html,”。 例如,要在Google 站点上查找新闻,可以输入:新闻site:https://www.sodocs.net/doc/2f14519452.html, 4. 查找特定文件 Google已经可以支持13种非HTML文件的搜索——PDF文件,Microsoft Office (doc, ppt, xls, rtf)、Shockwave Flash (swf)、PostScript (ps)和其它类型文档。新的文档类型只要与用户的搜索相关,就会自动显示在搜索结果中。

数据库基本操作习题与答案

第三章数据库基本操作 一、选择题 1. 如果需要给当前表增加一个字段,应使用的命令是________。 A) APPEND B) INSERT C) EDIT D) MODIFY STRU 2. 设表文件及其索引已打开,为了确保指针定位在物理记录号为1的记录上,应该使用命令________。 A) SKIP 1 B) SKIP -1 C) GO 1 D) GO TOP 3. 要显示数据库中当前一条记录的内容,可使用命令________。 A) LIST B) BROWSE C) TYPE D) DISPLAY 4. 在当前表中,查找第2个女同学的记录,应使用命令________。 A) LOCATE FOR 性别="女" B) LOCATE FOR 性别="女" NEXT 2 C) LIST FOR 性别="女" CONTINUE D) LOCATE FOR 性别="女" CONTINUE 5. Visual FoxPro的数据库表之间可建立两种联系,它们是________。 A) 永久联系和临时联系B) 长期联系和短期联系 C) 永久联系和短期联系D) 长期联系和临时联系 6. 数据库表的索引中,字段值不能有重复的索引有________种。 A) 1 B) 2 C) 3 D) 4 7. 建立表间临时关联的命令是________。 A) LET RELATION TO命令 B) JOIN命令 C) SET RELATION TO命令 D) 以上都不是 8. 通过关键字建立表间的临时关联的前提是________。 A) 父表必须索引并打开B) 子表必须索引并打开 C) 两表必须索引并打开D) 两表都不必索引 9. 查询设计器的“筛选”选项卡上,“插入”按钮的作用是________。 A) 用于增加查询输出字段B) 用于增加查询的表 C) 用于增加查询去向D) 用于插入查询输出条件 10. 在多工作区的操作中,如果选择了4,7,8号工作区并打开了相应的数据库,在命令窗口执行命令SELECT 0,其功能是________。 A) 选择4号工作区为当前工作区B) 选择0号工作区为当前工作区 C) 选择7号工作区为当前工作区D) 选择8号工作区为当前工作区 11. 表结构中空值(NULL)的含义是________。 A) 空格B) 尚未确定

数据库实验报告高级查询

实验三高级查询 1实验目的 (1)掌握SQL的高级查询的使用方法,如分组统计、嵌套查询、集合查询等等。 2实验内容 2.1 掌握SQL高级查询使用方法 (1)分组统计。 (2)嵌套查询,包括IN查询、EXISTS查询。 (3)集合查询。 3实验要求 (1)深入复习教材第三章SQL有关高级查询语句。 (2)根据书上的例子,针对TPCH数据库模式设计分组统计查询、嵌套查询(IN、EXISTS)语句和集合查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附2所列示例查询做实验。 (3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。 4实验步骤 4.1 掌握SQL高级查询使用方法 1 不带分组过滤条件的分组统计查询。 统计每个顾客订购金额。 Select sum(totalprice) From orders O,customer C Where O.custkey=C.custkey Group by O.custkey 2 带分组过滤条件的分组统计查询。 查询平均每个订单金额超过1000元的顾客编号及其姓名。 Select C.custkey,https://www.sodocs.net/doc/2f14519452.html, From orders O,customer C Where O.custkey=C.custkey Group by C.custkey,https://www.sodocs.net/doc/2f14519452.html, Having A VG (O.totalprice)>1000

3IN嵌套查询。 查询订购了“海大”制造的“船舶模拟驾驶舱”的顾客。 Select O.custkey From orders O Where O.orderkey in (select L.orderkey From lineitem L, Where L.partkey in (select P.partkey From part P Where https://www.sodocs.net/doc/2f14519452.html,=’ 船舶模拟驾驶舱’and p.mfgr=’ 海大’)) 4单层EXISTS嵌套查询。 查询没有购买过“海大”制造的“船舶模拟驾驶舱”的顾客。 Select O.custkey From orders O Where not exists (select * From lineitem L Where L.orderkey=O.orderkey and L.partkey in (select P.partkey From part P Where https://www.sodocs.net/doc/2f14519452.html,=’ 船舶模拟驾驶舱’and p.mfgr=’ 海大’)) 5双层EXISTS嵌套查询。 查询至少购买过顾客“张三”购买过的全部零件的顾客姓名。 Select distinct https://www.sodocs.net/doc/2f14519452.html, From customer C1,order O1,lineitem L1,part P1 Where C1.custkey=O1.custkey and O1.orderkey=L1.orderkey=P1.partkey and Not exists (select * Where C2.custkey=O2.custkey and O2.orderkey=L2.orderkey=P2.partkey and https://www.sodocs.net/doc/2f14519452.html,=’ 张三’and Not exists (select * From customer C3,order O3,lineitem L3,part P3 Where C3.custkey=O3.custkey and O3.orderkey=L3.orderkey=P3.partkey and P2.partkey=P3.partkey And C3,name=https://www.sodocs.net/doc/2f14519452.html,) )

JAVA数据库基本操作增删改查(精)

JAVA 数据库基本操作, 增删改查 package mypack; JAVA 数据库基本操作, 增删改查 import java.sql.Connection; import java.sql.ResultSet; import java.util.ArrayList; public class DbOper {//查询多行记录public ArrayList select({Connection conn =null; ResultSet rs =null; try {import java.sql.PreparedStatement; import java.sql.SQLException; PreparedStatement pstmt =null; ArrayList al =new ArrayList(; conn =DbConn.getConn(;pstmt =conn.prepareStatement(“select *from titles ”; rs =pstmt.executeQuery(;while (rs.next({Titles t =new Titles(;t.setTitleid(rs.getString(1;t.setTitle(rs.getString(2;al.add(t;}}catch (SQLExceptione { e.printStackTrace(;}finally {try {//TODO 自动生成catch 块if (rs!=null rs.close(;if (pstmt!=nullpstmt.close(;if (conn!=nullconn.close(;}catch (SQLExceptione { e.printStackTrace(;}}//TODO 自动生成catch 块 return al; }//查询单个对象public Titles selectOne(Stringtitleid{Connection conn =null; ResultSet rs =null; try {PreparedStatement pstmt =null; Titles t =new Titles(;

实验4:数据库的高级查询操作

实验四:数据库的各类数据查询操作 一、实验目的 掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。 二、实验内容和要求 针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。 三、实验步骤 连接查询 1. 查询每个学生及其选修课程的情况: select student.*, sc.* from student, sc where student.sno=sc.sno 比较: 笛卡尔集: select student.*, sc.* from student, sc 自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno 2. 查询每一门课程的间接先行课(只求两层即先行课的先行课): select https://www.sodocs.net/doc/2f14519452.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=https://www.sodocs.net/doc/2f14519452.html,o 比较: select https://www.sodocs.net/doc/2f14519452.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=https://www.sodocs.net/doc/2f14519452.html,o and Second.pcno is not null 3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息: SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno 4. 查询每个学生的学号, 姓名, 选修的课程名和成绩: select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and https://www.sodocs.net/doc/2f14519452.html,o=https://www.sodocs.net/doc/2f14519452.html,o 5. 查询平均成绩在80分以上的学生姓名 Select sname from student,sc where student.sno=sc.sno GROUP BY sc.sno HAVING AVG(sc.grade)>80; 高级查询 使用带IN谓词的子查询 1.查询与’刘晨’在同一个系学习的学生的信息: select * from student where sdept in (select sdept from student where sname='刘晨') 比较: select * from student where sdept = (select sdept from student where sname='刘晨') 的异同

第3章-高级查询(一)上机指导

上机指导 主要目标 ●掌握简单信息查询 ●掌握复杂信息查询 ●掌握排序查询 ●掌握使用函数查询信息’ ●掌握查询汇总信息 实验1 任务: 1)查询全部大一学生信息 2)查询全部大二的学生的姓名和电话 3)查询全部大一女同学的信息 4)查询课时超过60的科目信息 代码如下 实验2 任务: 1)查询大二的科目名称 2)查询大二男同学的姓名和住址 3)查询无电子邮件的学生姓名和年级信息

4)查询出生日期在1990年之后的大二的学生姓名和年级信息 5)参加了日期为2010年2月15日的“java基础”科目考试的成绩信息 代码如下: 实验3 任务: 1)按照出生日期查询大一的学生信息。 2)按日期由前到后、成绩由高到低的次序查询参加编号为1的科目考试信息。 3)查询2010年3月22日参加“面向对象程序设计”考试的前5名学员成绩信息。 4)查询大三的课时最多的科目名称及课时。 5)查询年龄最小的学生所在的年级及姓名。 6)查询2010年3月22日参加考试的最低分出现在哪个科目。 7)查询学号为"S1101003"的学生参加过的所有考试信息,并按照时间前后次序显示。 8)查询学号为"S1101003"的学生参加过的所有考试中最高分及时间、科目 代码如下:

实验4 任务: 1)查询年龄超过20周岁的大三的学生信息 2)查询1月份过生日的学生信息 3)查询今天过生日的学生姓名及所在年级。 4)查询学号为"Y21003007"的学生Email的域名。 5)新生入学,为其分配一个Email地址,规则如下:D1+当前日期+4位随机数+@https://www.sodocs.net/doc/2f14519452.html, 代码如下:

数据库操作及查询

第三章数据库操作及查询§1刨建数据库表 一、表的分类:库表、自由表。 二、数据库表与自由表的区别 库表:各个表之间有关联 特点:A:长表名和长字段名。 B:每个字可以有提示和注释。 C:可以定义缺省值。 D:字段级的规则和记录级的规则。 自由表: foxbase 表,独立 三、表结构的定义 操作方法:A:表设计器 B:命令create < 表名> 四、表记录的输入 1、追加方式 2、定义结构时同时输入

五、表记录添加 1)、键盘输入 2)、从已有文件中追加 A、INSERT –SQL 命令 命令格式: INSERT INTO 表名[(字段名1[,字段名2,…])] V ALUES(表达式1[,表达式2,…]) 功能:在表尾追加一个新记录,并直接输入记录数据。 说明:表不必事先打开,字段与表达式的类型必须相同。 例如:INSERT INTO TEACHER(BH,XM,XB,JBGZ)V ALUES (“02005”,“张华”,“女”,2021) B、APPEND 命令 格式:APPEND [BLANK] 功能:向表中追加记录 说明:使用BLANK子句能在表尾追加一条空记录。若不选取则进入全屏幕编缉方式。 C、APEND FROM 命令

格式:APPEND FROM <文件名> FIELDS <字段名表> [FOR< 条件>][[TYPE ] DELIMITED[WITH <定界符>/WITH BLANK/WITH TAB]/SDF/XLS]] 功能:在当前的表尾部追加一批记录,这些记录来自于指定的文件。 说明:1、源文件的类型可以为表、系统数据格式文件、定界格文本文件、Excel文件。 2、执行该文件时源表不用打开。 例如:先将表数据导入到EXCEL表中,然后再追加到空表中。 appe from tyty type xls 六、表的打开和关闭 1、表的打开 A: 命令 use B: “文件”——“打开” C:在窗口菜单的“数据工作”期命令来打开 2)、表的关闭 A、命令:

数据库原理实验报告模板-实验四高级查询

大连海事大学 数据库原理课程实验报告(2013-2014学年第二学期) 实验四高级查询 班级:软件工程四班 学号:2220121787 姓名:马跃 指导教师:曹志英 成绩: 大连海事大学软件工程系 2014年6 月23 日

目录 1实验目的 (3) 2实验内容 (3) 2.1掌握SQL高级查询使用方法 (3) 3实验要求 (3) 4实验步骤 (3) 4.1掌握SQL高级查询使用方法 (3) 5总结与体会 (6) 5.1实验中出现的问题及其解决方案 (6) 5.2总结 (7) 5.3体会 (7)

1实验目的 (1)掌握SQL的高级查询的使用方法,如分组统计、嵌套查询、集合查询等等。 2实验内容 2.1 掌握SQL高级查询使用方法 (1)分组统计。 (2)嵌套查询,包括IN查询、EXISTS查询。 (3)集合查询。 3实验要求 (1)深入复习教材第三章SQL有关高级查询语句。 (2)根据书上的例子,针对DBTestBed数据库模式设计分组统计查询、嵌套查询(IN、EXISTS)语句和集合查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附1所列示例查询做实验。 (3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。 4实验步骤 4.1 掌握SQL高级查询使用方法 (1)不带分组过滤条件的分组统计查询。 统计2013-2014上学期信息学院(01)开设的每门课程的最高分,最低分,及平均成绩。 select C.coursename,avg(score)AVGS,max(score)MAXS,min(score)MINS from tb_select_course A,Tb_Cultivate_Scheme B,Tb_Course_info C where A.schemeid=B.schemeid and B.cyear='2013'and B.term='上'and C.courseid=B.courseid and C.deptid='01' group by C.coursename

ORACLE高级技巧 高级查询

! Oracle高级技巧,高级查询 1.删除表的注意事项 在删除一个表中的全部数据时,须使用TRUNCATE TABLE表名;因为用DROP TABLE,DELETE*FROM表名时,TABLESPACE表空间该表的占用空间并未释放,反复几次DROP,DELETE操作后,该TABLESPACE上百兆的空间就被耗光了。 2.having子句的用法 having子句对group by子句所确定的行组进行控制,having子句条件中只允许涉及常量,聚组函数或group by子句中的列. 3.外部联接"+"的用法 外部联接"+"按其在"="的左边或右边分左联接和右联接.若不带"+"运算符的表中的一个行不直接匹配于带"+"预算符的表中的任何行,则前者的行与后者中的一个空行相匹配并被 返回.若二者均不带’+’,则二者中无法匹配的均被返回.利用外部联接"+",可以替代效率十分低下的not in运算,大大提高运行速度.例如,下面这条命令执行起来很慢 用外联接提高表连接的查询速度 在作表连接(常用于视图)时,常使用以下方法来查询数据: SELECT PAY_NO,PROJECT_NAME FROM A WHERE A.PAY_NO NOT IN(SELECT PAY_ NO FROM B WHERE VALUE>=120000); ----但是若表A有10000条记录,表B有10000条记录,则要用掉30分钟才能查完,主要因为NOT IN要进行一条一条的比较,共需要10000*10000次比较后,才能得到结果。该用外联接后,可以缩短到1分左右的时间: SELECT PAY_NO,PROJECT_NAME

实验08 数据表的高级查询操作

实验八数据表的高级查询操作 课程名称:数据库技术 实验名称:数据的高级查询实验课时:2课时实验时间:第9周 实验环境:SQL Server 2005 实验目的: 1、掌握左连接、右连接、全接连的查询。 2、掌握带“IN”谓词的子查询。 3、掌握带比较运算符谓词的子查询。 4、掌握带“EXISTS”谓词的子查询。 实验内容: 【说明】把第1、5、14、15题做在实验报告中。 注意:使用student数据库完成第1、3、4、5、7、10、14、15、17题;使用stu_course数据库完成第2、6、8、9、11、12、13、16、18题。 1、查询“06级网络技术班”班级的学生,显示学生学号、姓名、班级名称和班级代码。(连 接查询) 2、查询选修了课程的每个学生的学号、姓名、选修的课程名称和成绩。(连接查询) 3、查询“06级软件工程班”的学生信息(要求用连接谓词为“=”和“IN”的两种方法)。 4、查询不是“06级软件工程班”的学生信息,并显示所在的班级名称(连接查询) 。 5、查询不是“06级软件工程班”的学生信息。 6、查询“课程注册”表中成绩没有不及格的学生,显示学生的学号和最低成绩。 (说明:如果表中学生的成绩都是及格,则自己动手把其中一个学生的某门课程改成不及格。)7、查询“课程注册”表中成绩没有不及格的学生,显示学生的学号、姓名、课程号和成绩。 (提示:用带有“IN”的嵌套查询方法)。 8、查询选修了课程的每个学生学号、姓名、选修的课程名及成绩。 9、使用stu_course数据库,查询选修2号课程且成绩在80分以上的所有学生的学号、姓名. 10、使用student数据库,查询选修“0003”号课程且成绩在80分以上的学生的学号、姓 名,并显示该选修课的课程号、成绩、任课教师的教师编号和姓名。 11、查询每个学生及其选修课程的情况包括没有选修课程的学生(左外连接)。 12、查询开设选修的课程及选修课程的学生情况,包括没有被学生选修的课程(右外连接)。 13、查询每个学生及每门选修课程的情况包括没有选修课程的学生和没有被选的课程(全 外连接)。 14、查询和“孙辉”在同一个班级学习的学生信息(提示:用带IN的子查询方法)。 15、查询选修了“网络营销”课程的学生学号、姓名(试用带IN的子查询方法求解) 。 16、查询选修了课程名为“数据库”的学生学号和姓名。(试用子查询方法求解) 。 17、查询“经济管理系”和“商务技术系”的学生信息(要求用连接查询和带“IN”的子查 询两种方法)。 18、查询其他系中比信息系(IS)任意一个学生年龄小的学生,显示其姓名、年龄和所在系部。 (试用带ANY/ALL和集函数两种方法) 19、附加题:查询所有选修了1号课程的学生姓名。(试用带EXISTS谓词的方法求解)

各大搜索引擎高级搜索语法整理及语法详解

目录 一、 Google谷歌搜索高级语法 1. 减除无关资料(-) 2. 英文短语搜索(””) 3. 指定网域 4. 查找特定文件 5. 按链接搜索 6. 限定关键词只在标题中 7. 限定关键词只在URL中 8. Info 9. Related 10. Cache 二、百度(baidu)搜索高级语法 1. 把搜索范围限定在网页标题中——intitle 2. 把搜索范围限定在特定站点中——site 3. 把搜索范围限定在url链接中——inurl 4. 精确匹配——双引号和书名号 5. 要求搜索结果中不含特定查询词 6. 专业文档搜索 三、Yahoo雅虎搜索高级语法

1. title 2. Link 3. Site:或者 domain 4. Hostname 5. url 6. 如何使搜索结果中的查询词不被拆开? 四、Sogou搜狗搜索高级语法 1. 使用双引号进行精确查找 2. 使用多个词语搜索 3. 减除无关资料 4. 在指定网站内搜索 5. 文档搜索 五、四大搜索引擎高级语法总结 一、 Google谷歌搜索高级语法 1. 减除无关资料(-) 如果要避免搜索某个词语,可以在这个词前面加上一个减号(“-”,英文字符)。但在减号之前必须留一个空格。 2. 英文短语搜索(””) 在 Google 中,可以通过添加英文双引号来搜索短语。双引号中的词语(比如"like this")在查询到的文档中将作为一个整体出现。这

一方法在查找名言警句或专有名词时显得格外有用。 一些字符可以作为短语连接符。Google 将“-”、“\”、“.”、“=”和“..."等标点符号识别为短语连接符。 3. 指定网域 有一些词后面加上冒号对 Google 有特殊的含义。其中有一个词是“site:”。要在某个特定的域或站点中进行搜索,可以在 Google 搜索框中输入“site:https://www.sodocs.net/doc/2f14519452.html,”。 例如,要在 Google 站点上查找新闻,可以输入:新闻 site:https://www.sodocs.net/doc/2f14519452.html, 4. 查找特定文件 Google已经可以支持13种非HTML文件的搜索——PDF文件,Microsoft Office (doc, ppt, xls, rtf)、Shockwave Flash (swf)、PostScript (ps)和其它类型文档。新的文档类型只要与用户的搜索相关,就会自动显示在搜索结果中。 例如,如果您只想查找 PDF或Flash 文件,而不要一般网页,只需搜索“关键词filetype:pdf” 或“关键词filetype:swf”就可以了。 5. 按链接搜索 例如,“link:https://www.sodocs.net/doc/2f14519452.html,”将找出所有指向 Google 主页的网

谷歌学术论文高级搜索技巧

谷歌学术论文高级搜索技巧

"+" 操作符确保您的搜索结果中包括Google 学术搜索技术通常忽略的普通字词、字母或数字,如[+de knuth]; "-" 操作符排除所有包括搜索字词的结果,如[Flowers -作者:Flowers ]; 短语搜索只返回包括这一确切短语的结果,如["随你便"]; "OR" 操作符返回包括搜索字词之一的结果,如[股票看涨期权OR 看跌期权]; "标题:"操作符如[在标题:mars] 得到的结果只包括文件名中的搜索字词。 6.1、搜索结果要求包含两个及两个以上关键字 一般搜索引擎需要在多个关键字之间加上“+”,而GOOGLE无需用明文的“+”来表示逻辑“与”操作,只要空格就可以了。 示例:搜索所有包含关键词“易筋经”和“吸星大法”的中文网页 搜索:“易筋经吸星大法” 结果:已搜索有关易筋经吸星大法的中文(简体)

网页。共约有774项查询结果,这是第1-10项。搜索用时0.24秒。 注意:文章中搜索语法外面的引号仅起引用作用,不能带入搜索栏内。 6.2、搜索结果要求不包含某些特定信息 GOOGLE用减号“-”表示逻辑“非”操作。 示例:搜索所有包含“易筋经”而不含“吸星大法”的中文网页 搜索:“易筋经-吸星大法” 结果:已搜索有关易筋经-吸星大法的中文(简体)网页。共约有5,150项查询结果,这是第1-10项。搜索用时0.40秒。 注意:这里的“+”和“-”号,是英文字符,而不是中文字符的“+”和“-”。此外,操作符与作用的关键字之间,不能有空格。比如“易筋经- 吸星大法”,搜索引擎将视为关键字为易筋经和吸星大法的逻辑“与”操作,中间的“-”

数据库与表的基本操作

第四章数据库与表的基本操作 实验4-1 数据库及表的操作 (一)实验目的 1.掌握创建数据库的基本操作方法。 2.熟练掌握创建表结构和输入记录的操作方法。 3.熟练掌握修改表结构、浏览和修改表记录数据的操作。 4.熟练掌握建立索引的操作。 5.掌握创建表间联系的操作。 (二)实验内容及步骤 1.创建数据库 【实例4-1】在实验2-1所建立的“教学管理.pjx”项目中,创建一个“学生成绩.dbc”数据库。 操作步骤如下: (1)打开“教学管理.pjx”项目。 (2)在“项目管理器”窗口中,选择“数据库”,然后单击“新建”按钮,打开“新建数据库”对话框,单击其中的“新建数据库”按钮,打开“创建”对话框,如图4-1所示。 图4-1“创建”对话框 (3)在“保存在”文本框中,选择保存数据库的文件夹“程序VX”;在“数据库名”文本框中,输入数据库名称“学生成绩”。 (4)单击“保存”按钮,即在指定位置建立一个“学生成绩.dbc”数据库文件。 此时,在VFP主窗口中弹出一个“数据库设计器”窗口,同时还激活了“数据库设计器”工具栏,如图4-2所示。

18 数据库应用学习与实训指导 图4-2“数据库设计器”窗口 2.创建数据表 【实例4-2】在“教学管理.pjx”项目中,创建学生表(Student.dbf)、成绩表(Grade.dbf)、课程表(Course.dbf)、授课表(Teach.dbf)和教师表(Teacher.dbf)。各个表的结构和数据记录如图4-3、图4-4、图4-5、图4-6、图4-7、图4-8、图4-9、图4-10、图4-11和图4-12所示。 图4-3学生表(Student.dbf)的结构 图4-4学生表(Student.dbf)的记录浏览窗口

搜索引擎高级语法

一、Google谷歌搜索高级语法 1. 减除无关资料(-) 如果要避免搜索某个词语,可以在这个词前面加上一个减号(“-”,英文字符)。但在减号之前必须留一个空格。 2. 英文短语搜索(””) 在Google 中,可以通过添加英文双引号来搜索短语。双引号中的词语(比如"like this")在查询到的文档中将作为一个整体出现。这一方法在查找名言警句或专有名词时显得格外有用。 一些字符可以作为短语连接符。Google 将“-”、“\”、“.”、“=”和“..."等标点符号识别为短语连接符。 3. 指定网域 有一些词后面加上冒号对Google 有特殊的含义。其中有一个词是“site:”。要在某个特定的域或站点中进行搜索,可以在Google 搜索框中输入“site https://www.sodocs.net/doc/2f14519452.html,”。 例如,要在Google 站点上查找新闻,可以输入:新闻site:https://www.sodocs.net/doc/2f14519452.html, 4. 查找特定文件 Google已经可以支持13种非HTML文件的搜索——PDF文件,Microsoft Office (doc, ppt, xls, rtf)、Shockwave Flash (swf)、PostScript (ps)和其它类型文档。新的文档类型只要与用户的搜索相关,就会自动显示在搜索结果中。 例如,如果您只想查找PDF或Flash 文件,而不要一般网页,只需搜索“关键词filetype:pdf” 或“关键词filetype:swf”就可以了。 5. 按链接搜索 例如,“link:https://www.sodocs.net/doc/2f14519452.html,”将找出所有指向Google 主页的网页。不能将link: 搜索与普通关键词搜索结合使用。 6. 限定关键词只在标题中 例如“allintitle:中国苹果”表示“中国”和“苹果”都必须出现在标题中 “intitle:中国苹果”表示“中国”必须出现在标题中,“苹果”可以出现在网页的任意位置,可以是标题也可以不是。。 7. 限定关键词只在URL中 例如“allinURL:koko com”表示“koko”和“com”都必须出现在URL中 “inURL:koko com”表示“koko”必须出现在URL中,“com”可以出现在网页的任意位置,可以是URL也可以不是。。 8. Info用来显示与某链接相关的一系列搜索 提供cache、link、related和完全包含该链接的网页的功能。

相关主题