第一节 检索系统与数据库编程
第一节 检索系统与数据库编程
准备工作
- 下载安装WampServer
- 检查localhost是否能正常
单击任务栏的WampServer图标,点击localhost
- 检查phpMyAdmin是否正常
单击任务栏的WampServer图标,点击phpMyAdmin
- 修改PHP上传文件大小限制
单击任务栏的WampServer图标,点击PHP,点击php.ini
,找到upload_max_filesize
,将等号后面改成200M
- 下载唐诗数据表
从群文件中下载tangshiutf8.txt
和tangshiutf8-7300.txt
1 检索系统
1.1 检索系统初识
1.1.1 什么是检索系统
所谓检索系统,是指图书情报档案工作者和其他学者按某种方式方法建立起来的供读者查检图书情报档案资料等信息的某种有层次的体系。
这是图情专业的定义,我们看着似乎云里雾里不是很懂。
1.1.2 从认知心理学看待检索系统
从认知心理学角度出发,基于西蒙和纽厄尔的观点,我们把人的认知系统比作计算机或信息加工系统。
假设别人问你,你们的心理语言学的老师是哪位?你肯定会毫不犹豫地回答宋老师。
那么这个过程经历了什么呢?
第一步,言语知觉
;第二步,信息加工
;第三步,言语产出
。
我们知道,对于人脑而言,从知觉了语言信息,到做出反馈,中间经历了复杂的认知过程,这里为了方便理解,简单地概括为信息加工。
我们把人脑比喻成计算机,则对应了计算机的输入信息
,加工信息
,输出信息
三个过程。
我们进一步把人脑具体地比作一个检索系统,我们就可以发现,一个检索系统需要哪些部分?输入请求
——进行查询
——输出结果
。
1.2 检索系统的四大法宝
1.2.1 检索的工具——结构化查询语言(SQL)
根据以上的理解,整个检索系统的最关键的部分是哪个部分?
必然是进行查询。
那我们进行查询需要一个工具,这个工具就是一种在数据结构(Structure)清晰的数据表中进行查询(Query)的语言(Language),简称SQL(Structured Query Language),它是一门编程语言。这就是我们非常熟悉的SQL。
此章节只是阐述检索系统的结构,SQL会在后文详细展开讲解。
1.2.2 检索的环境——MySQL
我们有了进行检索的工具之后,接下来就面临着一个问题:在哪里查询呢?
答案就是MySQL。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
在某种程度上,可以将MySQL理解为一个类似于access的网页版的数据库管理平台。在这个平台里,可以存放我们的数据库。
1.2.3 发出请求和接收结果——PHP
我们有了检索工具,有了检索环境,那谁来向MySQL发出这个请求呢?
是用户吗?
当然不是,用户没有写SQL语句,用户也没有用SQL语句在MySQL里进行查询,真正完成从用户检索词到把SQL语句放入MySQL的是PHP。
同理,把查询的结果从MySQL拿到用户面前的,也是PHP。
PHP就像是在帮你跑腿一样!
当然PHP并不只是一个用于向MySQL发出请求和接受结果的工具,只是在我们这里讲到的检索系统中,PHP姑且屈才扮演了这样的一个角色。
所以之前自学过PHP的同学可以将之前的知识暂且放到一边。
1.2.4 接触用户——HTML
PHP从哪里获取需要搜索的内容,又要把搜索的结果放到放到哪里呢?
答案就是用户所接触到的HTML,也就是我们俗称的网页。
一个标准的检索系统往往由两个HTML页面组成,分别是检索框页面和检索结果页面。
因此可以将以上的4个法宝按照实际的顺序画出来。
为了更加形象地理解,我们可以把整个查询过程比作外卖小哥的跑腿买奶茶的过程:
第一步,你想喝不太甜的量又不多的奶茶,正好旁边有个外卖小哥,你拍了拍外卖小哥,说去给我买一杯不太甜又少量的奶茶。
第二步,外卖小哥将你的要求翻译成“一杯半糖小杯奶茶”,然后找到了奶茶店,提出了要求。
第三步,奶茶店根据要求做出了奶茶。
第四步,外卖小哥取走奶茶给你送回来。
第五步,你喝上了奶茶。
2. WampServer
2.1 WampServer初识
从上面的内容来看,检索框页面和检索结果页面肯定是在用户的浏览器里完成显示的,那别的过程是在哪里完成的呢?这就涉及到我们的软件:WampServer
WampServer是Windows下的Apache+Mysql/MariaDB+Perl/PHP/Python,一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
WampServer是一个Windows Web开发平台,用于使用Apache服务器,PHP脚本语言和MySQL数据库的动态Web应用程序。它还具有PHPMyAdmin,可以更轻松地管理数据库。
2.2 WampServer的三种状态
这三种状态分别对应了启动成功
,正在上线
,在线上
3. 数据库的创建和管理
3.1 phpMyAdmin
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。
3.2 创建数据库
创建数据库的时候一定要注意编码的选择,否则会造成乱码。
我们一般选择utf8_unicode_ci
输入名称,创建数据库
3.3 创建数据表
选中数据库,在新建的区域输入名称,字段数(列数),然后点击执行
针对每个字段输入名称并选择类型,注意选择编码格式。
本次使用到的唐诗数据表的字段名称类型可参考下表
字段 | 类型 | 长度 |
---|---|---|
vol | varchar | 20 |
title | varchar | 50 |
author | varchar | 20 |
poem | text | — |
3.4 导入数据
选中数据库,点击菜单栏的导入,点击选择文件,在文件窗口里选择你需要导入的数据表
在导入文件的格式里点选CSV
。根据数据表设置字段分隔符
唐诗数据表的字段分隔符是|,所以就设置为|
之后点击执行
即可。
数据文件较大时可能会上传较慢,处于假死状态,此时万万不能点击执行,否则会造成数据重复上传。
4. SQL查询
上面我们已经了解了SQL是干什么用的,那么这节我们就来学习两种基本的SQL语句。
对于文科生而言,可能听到编程二字都会头皮发麻,但其实我们从其本质来看,编程语言说到底还是一门语言。我们是汉语言的同学,我们不妨从语言学角度来看待。语言学界把语言分为了自然语言、人工语言和设计语言。设计语言是人们设计出来的用于完成一系列程式的机器语言,那我们便可以从语言学的角度来学习编程语言。
我们常见的编程语言是以英语词汇为基础的,所以我们不妨以英语为切入点,来学习SQL,这个时候你会发现编程是多么的简单!
4.1 简单的精确检索
我们以一个例子来感受一下这个角度入手学习SQL的简单程度。
假设我们有一个需求:从唐诗数据表中找出李白的诗的题目
我们首先根据数据表的信息来重新描述一下:从唐诗中选出作者是“李白”的题目
接下来,我们把它翻译成英文select title from tang_poem where author is "李白"
在编程中,为了体现逻辑性,经常用数学符号来表示,所以,我们把is换成=select title from tang_poem where author = "李白"
这就形成了一句完整经典的SQL语句。
我们将它粘贴在MySQL里的SQL输入框中,点击运行,就查找出了我们所需要的数据结果。
是不是非常简单?
我们继续尝试,要求升级为:从唐诗数据表中找出李白以【怨情】为题写的诗文
根据数据表重新描述:从唐诗中选出作者是“李白”并且题目是“【怨情】”的诗文
接下来,我们把它翻译成英文select poem from tang_poem where author = "李白" and title = "【怨情】"
这就形成了一句完整经典的SQL语句。
我们将它粘贴在MySQL里的SQL输入框中,点击运行,就查找出了我们所需要的数据结果。
至于题目是“李白”或题目是“【怨情】”这种的大家自行发挥。
因此,我们汉语言的同学学习计算机编程语言,要充分发挥自身的优势,从语言学的角度入手,把人类思维到代码的转换借助语言的词汇系统,语法系统的理论来完成,这时候,编程语言将非常有趣和简单。
4.2 简单的模糊检索
假设我们有一个需求:从唐诗数据表中找出含有“李白”的题目
我们首先根据数据表的信息来重新描述一下:从唐诗中选出题目中包含“李白”的题目
接下来,我们把它翻译成英文select title from tang_poem where title is like "…李白…"
在编程中,为了体现逻辑性,我们把is省掉,用通配符%来替换省略号
通配符%和省略号的含义一样,代表任意文字
select title from tang_poem where title like "%李白%"
我们将它粘贴在MySQL里的SQL输入框中,点击运行,就查找出了我们所需要的数据结果。
但是,这结果里只有题目,如果需求改成:从唐诗数据表中找出含有“李白”的题目,并显示对应的诗文
我们首先根据数据表的信息来重新描述一下:从唐诗中选出题目中包含“李白”的题目,诗文
接下来,我们把它翻译成英文select title,poem from tang_poem where title is like "…李白…"
再处理一下:select title,poem from tang_poem where title like "%李白%"
我们将它粘贴在MySQL里的SQL输入框中,点击运行,就查找出了我们所需要的数据结果。
声明
本讲义仅用于文科教学,讲解深度较浅。为了便于文科生理解,一些举例可能和计算机领域有些微出入,还请各位大咖多多包涵!
本人资历尚浅,欢迎各位博主批评指正!