第一讲 检索系统与数据库编程

2023-11-05



准备工作

  • 下载安装WampServer
  • 检查localhost是否能正常
    单击任务栏的WampServer图标,点击localhost,若能打开页面且没有报错则正常
  • 检查phpMyAdmin是否正常
    单击任务栏的WampServer图标,点击phpMyAdmin,若能打开页面且没有报错则正常
  • 修改PHP上传文件大小限制
    单击任务栏的WampServer图标,点击PHP,点击php.ini,找到upload_max_filesize,将等号后面改成200M
  • 下载唐诗数据表
    从群文件中下载tangshiutf8_2.txttangshiutf8-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 创建数据库

创建数据库的时候一定要注意编码的选择,否则会造成乱码,我们一般使用UTF-8编码。
点击整理,选择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输入框中,点击运行,就查找出了我们所需要的数据结果。

声明
本讲义仅用于文科教学,讲解深度较浅。为了便于文科生理解,一些举例可能和计算机专业领域有些微出入,还请各位大咖多多包涵!
本人资历尚浅,欢迎各位博主批评指正!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一讲 检索系统与数据库编程 的相关文章

随机推荐

  • Spark学习(六) 数据结构(迭代器、数组、元组)

    Spark学习 六 数据结构 迭代器 数组 元组 1 迭代器 Iterator 1 在Scala中迭代器不是一种集合 但是它提供了访问集合的一种方法 2 迭代器包含两个基本操作 next和hasNext next可以返回迭代器的下一个元素
  • 哈希表(Hash Table)原理及其实现

    原理 介绍 哈希函数构造 冲突处理 举例 拉链法 hash索引跟B树索引的区别 实现 原理 介绍 哈希表 Hash table 也叫散列表 是根据关键码值 Key value 而直接进行访问的数据结构 也就是说 它通过把关键码值映射到表中一
  • 逻辑回归(梯度上升、交叉验证)Python实现

    目录 1 介绍 2 算法实现 3 代码 4 实验结果 1 介绍 logistic回归又称logistic回归分析 是一种广义的线性回归分析模型 常用于数据挖掘 疾病自动诊断 经济预测等领域 例如 探讨引发疾病的危险因素 并根据危险因素预测疾
  • [shell/脚本]检索某个文件夹下的所有文件夹并且复制文件夹下文件到指定目录

    写一个脚本实现不同分支下的代码sync 递归去检索某个文件下的所有文件 bin bash usage source sync code sh 源码路径 目标路径 SOURCEDIR 1 TARGETDIR 2 if d SOURCEDIR
  • node、npm、cnpm踩坑

    文章目录 前言 一 cnpm i 报错无法使用 二 解决步骤 1 查看cnpm 是否安装 2 查看 node 和 npm 版本 3 处理 总结 前言 提示 npm install g cnpm registry https registry
  • vue项目请求控制请求头必须为https

    前言 因为很多项目必须要求是严格模式 不能有http请求 需要限制我们的请求头必须为https 如果是http的话 手动转成https来实现请求效果 实现方法 在 public index html 的 head 标签里面加入以下代码 效果
  • Step4:Angular调试方法

    1 方法一 采用VSCode编译器 下载插件debugger for chrome 选择调试 然后再选择chrome浏览器 在运行中输入npm start执行 就可以在代码中打断点了 2 方法二 在浏览器中按F12打开开发者工具 Sourc
  • Python第二课

    枭 Python第二课 今天讲解了Python的 内置函数 模块导入 序列 列表 切片操作 内置函数 divmod x y 用法 x y divmod a b 其中x返回值a b y返回值a b map func iterablies 用法
  • 4g网络设置dns地址_4G网速越来越慢,通过这三个简单的操作,网速成倍提升

    随着互联网的进步 从零几年开始移动手机在全国开始普及起来 网速也像火箭一样快速飙升 从2G发展到了现在的5G 不过 有很多网友表示 刚从2G或者3G升级到4G时 网速体验非常好 但近两年来的4G网速越来越慢 还卡顿 甚至感觉还不如以前的3g
  • 忘记网站服务器密码怎么办,忘记远程服务器的密码怎么办

    忘记远程服务器的密码怎么办 内容精选 换一换 如果在创建弹性云服务器时未设置密码 或密码丢失 过期 可以参见本节操作重置密码 密码丢失或过期前 已安装密码重置插件 公共镜像创建的弹性云服务器默认已安装一键重置密码插件 私有镜像创建的云服务器
  • Matlab—M_Map的实战学习笔记(一)M_Map库的安装

    最近在做美赛集训 做到了2020年的美赛A题 有关苏格兰附近鲭鱼和鲱鱼分布预测问题 在写论文的过程中 为了画几张精美的地图 可谓是历经千难万险 花费了不少时间 走了不少弯路 现在对使用matlab的m map映射库进行地图绘制做一个总结 力
  • Python:UnicodedecodeError编码问题解决方法汇总-彻底解决

    今天真的被编码问题一直困扰着 午休都没进行 也真的见识到了各种编码 例如 gbk unicode utf 8 ansi gb2312等 如果脚本程序中编码与文件编码不一致 就会报出UnicodedecodeError的错误 1 情景一 读文
  • python语法-面向对象(构造方法、魔术方法)

    python语法 面向对象 构造方法 魔术方法 1 构造方法 构造方法 python类可以使用 init 方法 称之为构造方法 可以实现 在创建类对象时 会自动执行 在创建类对象时 将传入参数自动传递给 init 方法使用 演示使用构造方法
  • Android中的定时器Timer、AlarmManager、CountDownTimer的使用

    1 Timer和TimerTask的使用 java util Timer定时器 实际上是个线程 定时调度所拥有的TimerTasks 1 创建一个Timer code class hljs cs has numbering style di
  • 解析 Linux 内核可装载模块的版本检查机制

    解析 Linux 内核可装载模块的版本检查机制 王 华东 系统工程师 自由职业者 简介 为保持 Linux 内核的稳定与可持续发展 内核在发展过程中引进了可装载模块这一特性 内核可装载模块就是可在内核运行时加载到内核的一组代码 通常 我们会
  • js获取到的时间减1秒或加1秒

    如题 使用时间戳来计算 function setDate time isAdd var date getCurTime time 也可以直接透传如 2021 5 8 var d new Date date var t s d getTime
  • 闲鱼把各种玩法做成了一个平台:哆啦A梦

    玩法平台背景 在闲鱼内我们把供给用户的闲鱼红包 支付宝红包 包邮券 宝卡等统称为用户权益 是闲鱼用户运营的重要策略 在拉新 留存 促活 裂变等方面都展现了其重要价值 在阿里内部管理权益的平台是拉菲 拉菲对外提供概率抽奖和领奖两种能力 各个业
  • 为什么gbk编码常用抽取正则表达式无法抽取“嘚瑟“的“嘚”字

    根据 GBK汉字内码扩展规范编码表 http ff 163 com newflyff gbk list 可以查到 嘚 字的编码为874e 而我们常用的gbk汉字抽取正则表达式为 x80 xff x80 xff 以python正则为例 抽取汉
  • Python基础--入门基础和数据类型测试题(二)

    Made By Zly All Right Reversed 上一篇 篇四 Python 入门基础和数据类型测试题 二 1 以下不属于Python语言保留字的是 A do B pass C while D def 2 表达式3 4 2 8
  • 第一讲 检索系统与数据库编程

    第一讲 检索系统与数据库编程 准备工作 1 检索系统 1 1 检索系统初识 1 1 1 什么是检索系统 1 1 2 从认知心理学看待检索系统 1 2 检索系统的四大法宝 1 2 1 检索的工具 结构化查询语言 SQL 1 2 2 检索的环境