精华内容
下载资源
问答
  • java web与数据库相连,具体怎么做

    千次阅读 2021-01-18 19:08:16
    首先要移动mysql-connector-java-5.1.44-bin.jar到tomactde的lib目录下(我的目录是这样32313133353236313431303231363533e58685e5aeb931333365656636:F:\tomcat\apache-tomcat-7.0.63\lib)这是一个连接数据库要用到...

    展开全部

    1.首先要移动mysql-connector-java-5.1.44-bin.jar到tomactde的lib目录下(我的目录是这样32313133353236313431303231363533e58685e5aeb931333365656636:F:\tomcat\apache-tomcat-7.0.63\lib)这是一个连接数据库要用到包,一般在下载mysql的时候选择配置会下载,然后移动到tomact的lib下;

    c2820018da2b62f9b0164213cdddb90b.png

    2.在你要连接数据库的项目中新建一个jsp文件,将下列代码复制进去;

      //使用DriverManager获取数据库连接,其中返回的Connection就代表了Java程序和数据库的连接  

        MySQL connect test");        }         result.close();        statement.close();        connection.close();    } catch (Exception e) {        e.getMessage();    }%>

    3.然后运行该代码就可以在页面看见你的数据了。在这里同时提供一个可以在IDEA快速查看数据库的方法;

    4.点击IDEA右侧的DataBase,进入如下页面,点击要查看的数据库类型,我是MySQL;

    902bd0bbe6fa31706276c182fac51783.png

    5. 然后进入如下界面,输入数据库名称,账号,密码,然后先测试一下连接,测试通过后,就可以点击OK;

    ebb37c052eeb7cee147a5dd71fef44ff.png

    6.然后就可以查看你的数据信息啦。

    c6393d359a73c0a8acff1ca24824f66d.png

    拓展资料:

    Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

    Java的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。

    展开全文
  • 图书简介配套资源:电子课件,源代码本书特色:深层次剖析了Web数据库系统的设计实现方法特别适合管理类专业本书在介绍Web数据库基本理论知识的基础上,详细分析和论述了利用HTML、PHP、ASP对MySQL数据库进行...

    图书简介

    配套资源:电子课件,源代码

    本书特色:

    深层次剖析了Web数据库系统的设计与实现方法

    特别适合管理类专业

    本书在介绍Web数据库基本理论与知识的基础上,详细分析和论述了利用HTML、PHP、ASP对MySQL数据库进行开发的方法,介绍了Web数据库系统的开发与应用技术,并提供了完整的网页及应用程序代码。全书共7章,第1章介绍Web数据库的基本知识与AppServ软件包的使用,第2章介绍MySQL数据库的基本操作与批量执行命令的基本方法,第3章对HTML、CSS、PHP进行了概述,并对PHP验证HTML表单数据的方法进行了说明,第4章介绍了使用PHP进行MySQL数据库编程,重点介绍PHP维护MySQL数据表数据的技术和方法,第5章介绍ASP及使用ASP访问MySQL数据库的基本知识与技术,第6章以读者借阅系统设计与实现为例,详细分析基于PHP+MySQL的Web数据库的设计过程与实现技术,第7章介绍了基于ASP+MySQL的通讯录系统的设计与实现。

    全书以理论叙述为基础,以案例分析为依托,以MySQL数据库的Web访问与系统实现为主线,系统阐述和全面揭示了Web数据库技术的基本理论与知识体系,从深层次剖析了Web数据库系统的设计与实现方法。本书所有网页及应用程序代码均在计算机上运行通过。

    本书每章均附有适量的思考题,可作为高等院校管理类

    专业学生的数据库教材,也可作为网站开发人员的参考书。

    章节目录

    目 录

    前言

    第1章 Web数据库技术概述1

    1.1 数据管理技术与数据库系统1

    1.1.1 数据管理技术1

    1.1.2 数据库与数据库系统2

    1.1.3 关系数据库4

    1.1.4 数据模型与数据模式14

    1.2 Web数据库15

    1.2.1 网络体系结构与网站资源构成15

    1.2.2 Web技术基础17

    1.2.3 Web数据库基本原理19

    1.2.4 Web数据库应用系统的开发23

    1.3 AppServ软件包的安装与使用25

    1.3.1 AppServ软件包简介25

    1.3.2 AppServ软件包的下载、安装与

    测试25

    1.3.3 AppServ软件的默认文件夹结构30

    1.3.4 运行环境的个性化设置31

    思考题34

    第2章 MySQL数据库基础35

    2.1 MySQL数据库简介35

    2.1.1 MySQL特点35

    2.1.2 MySQL数据类型36

    2.2 MySQL数据库基本操作39

    2.2.1 MySQL数据库模型39

    2.2.2 MySQL数据库操作方式41

    2.2.3 MySQL客户端命令格式与应用42

    2.2.4 MySQL用户管理59

    2.3 MySQL批处理61

    2.3.1 批量执行若干命令61

    2.3.2 批处理命令执行多个sql脚本63

    思考题64

    第3章 HTML、CSS与PHP基础68

    3.1 HTML技术68

    3.1.1 HTML技术概述68

    3.1.2 HTML列表、表格与表单71

    3.1.3 HTML应用菜单设计75

    3.2 CSS及其使用79

    3.3 PHP技术82

    3.3.1 PHP简介82

    3.3.2 PHP文件的编辑与执行83

    3.3.3 PHP语法嵌入HTML85

    3.3.4 PHP程序流程控制86

    3.3.5 PHP内置函数与自定义函数92

    3.3.6 PHP数组96

    3.3.7 正则表达式与数据正确性验证99

    3.3.8 利用PHP验证HTML表单提交的

    数据101

    思考题105

    第4章 使用PHP进行MySQL数据库

    编程107

    4.1 PHP进行MySQL数据库编程

    基础107

    4.1.1 PHP管理MySQL数据库的基本

    操作107

    4.1.2 PHP维护MySQL数据库的基本

    操作108

    4.1.3 PHP维护MySQL数据表的基本

    操作109

    4.1.4 PHP维护MySQL数据表数据的

    基本操作110

    4.2 PHP维护MySQL数据库111

    4.2.1 建立数据库111

    4.2.2 显示数据库列表113

    4.2.3 删除数据库113

    4.3 PHP维护MySQL数据表115

    4.3.1 建立数据表115

    4.3.2 显示数据表结构123

    4.3.3 修改数据表结构126

    4.3.4 删除数据表134

    4.4 PHP维护MySQL数据表的记录136

    4.4.1 插入、修改与删除记录136

    4.4.2 显示与查询记录137

    4.4.3 统计记录139

    思考题141

    第5章 使用ASP进行MySQL数据库

    编程142

    5.1 ASP概述142

    5.1.1 ASP与ASP文件142

    5.1.2 ASP程序的编写148

    5.2 通过ASP操作MySQL数据库153

    5.2.1 建立MySQL ODBC数据源153

    5.2.2 利用Connection对象操作MySQL

    数据库154

    5.2.3 利用RecordSet对象操作MySQL

    数据库156

    5.2.4 利用Command对象操作MySQL

    数据库157

    5.3 ASP操作MySQL数据库编程

    实例158

    5.3.1 建立数据库158

    5.3.2 建立数据表159

    5.3.3 插入记录159

    5.3.4 查询或浏览数据160

    5.3.5 更新数据161

    5.3.6 删除记录162

    5.3.7 删除数据表163

    5.3.8 删除数据库163

    思考题164

    第6章 PHP+MySQL应用实践:读者

    借阅系统设计与实现165

    6.1 读者借阅系统的数据模型与功能

    分析165

    6.2 用户注册166

    6.2.1 用户注册表单166

    6.2.2 注册信息处理170

    6.2.3 系统管理员修改会员类别172

    6.3 用户登录与菜单管理175

    6.3.1 用户登录表单175

    6.3.2 自定义函数文件与菜单数据文件176

    6.3.3 用户登录数据的校验与处理178

    6.4 读者信息管理180

    6.4.1 修改密码180

    6.4.2 读者信息浏览与分页显示183

    6.4.3 读者信息查询187

    6.4.4 读者信息修改190

    6.4.5 读者信息删除197

    6.5 图书信息管理201

    6.5.1 图书信息查询与管理201

    6.5.2 添加图书信息204

    6.5.3 图书信息分页显示208

    6.5.4 图书信息修改210

    6.5.5 图书记录删除214

    6.5.6 图书信息的分类汇总、统计与

    计算216

    6.6 借阅信息管理218

    6.6.1 借书信息管理218

    6.6.2 还书信息管理222

    6.6.3 综合查询227

    6.6.4 清理已还书信息231

    6.7 留言管理237

    6.7.1 用户发布、浏览与删除留言237

    6.7.2 管理员浏览、回复与删除留言242

    思考题247

    第7章 ASP+MySQL应用实践:通讯

    录系统设计与实现250

    7.1 通讯录系统概述250

    7.2 增加联系人信息251

    7.3 通讯录信息浏览与分页显示255

    7.4 查询联系人信息259

    7.5 修改联系人信息262

    7.6 删除联系人信息269

    7.7 通讯录系统管理界面272

    7.8 修改用户密码276

    7.9 修改用户类别279

    7.10 系统登录284

    思考题286

    参考文献288

    图书评论

    展开全文
  • 目 录前言第1章 Web数据库技术概述11.1 数据管理技术与数据库系统11.1.1 数据管理技术11.1.2 数据库与数据库系统21.1.3 关系数据库41.1.4 数据模型与数据模式141.2 Web数据库151.2.1 网络体系结构与网站资源构成151....

    目    录

    前言

    第1章  Web数据库技术概述1

    1.1  数据管理技术与数据库系统1

    1.1.1  数据管理技术1

    1.1.2  数据库与数据库系统2

    1.1.3  关系数据库4

    1.1.4  数据模型与数据模式14

    1.2  Web数据库15

    1.2.1  网络体系结构与网站资源构成15

    1.2.2  Web技术基础17

    1.2.3  Web数据库基本原理19

    1.2.4  Web数据库应用系统的开发23

    1.3  AppServ软件包的安装与使用25

    1.3.1  AppServ软件包简介25

    1.3.2  AppServ软件包的下载、安装与

    测试25

    1.3.3  AppServ软件的默认文件夹结构30

    1.3.4  运行环境的个性化设置31

    思考题34

    第2章  MySQL数据库基础35

    2.1  MySQL数据库简介35

    2.1.1  MySQL特点35

    2.1.2  MySQL数据类型36

    2.2  MySQL数据库基本操作39

    2.2.1  MySQL数据库模型39

    2.2.2  MySQL数据库操作方式41

    2.2.3  MySQL客户端命令格式与应用42

    2.2.4  MySQL用户管理59

    2.3  MySQL批处理61

    2.3.1  批量执行若干命令61

    2.3.2  批处理命令执行多个sql脚本63

    思考题64

    第3章  HTML、CSS与PHP基础68

    3.1  HTML技术68

    3.1.1  HTML技术概述68

    3.1.2  HTML列表、表格与表单71

    3.1.3  HTML应用菜单设计75

    3.2  CSS及其使用79

    3.3  PHP技术82

    3.3.1  PHP简介82

    3.3.2  PHP文件的编辑与执行83

    3.3.3  PHP语法嵌入HTML85

    3.3.4  PHP程序流程控制86

    3.3.5  PHP内置函数与自定义函数92

    3.3.6  PHP数组96

    3.3.7  正则表达式与数据正确性验证99

    3.3.8  利用PHP验证HTML表单提交的

    数据101

    思考题105

    第4章  使用PHP进行MySQL数据库

    编程107

    4.1  PHP进行MySQL数据库编程

    基础107

    4.1.1  PHP管理MySQL数据库的基本

    操作107

    4.1.2  PHP维护MySQL数据库的基本

    操作108

    4.1.3  PHP维护MySQL数据表的基本

    操作109

    4.1.4  PHP维护MySQL数据表数据的

    基本操作110

    4.2  PHP维护MySQL数据库111

    4.2.1  建立数据库111

    4.2.2  显示数据库列表113

    4.2.3  删除数据库113

    4.3  PHP维护MySQL数据表115

    4.3.1  建立数据表115

    4.3.2  显示数据表结构123

    4.3.3  修改数据表结构126

    4.3.4  删除数据表134

    4.4  PHP维护MySQL数据表的记录136

    4.4.1  插入、修改与删除记录136

    4.4.2  显示与查询记录137

    4.4.3  统计记录139

    思考题141

    第5章  使用ASP进行MySQL数据库

    编程142

    5.1  ASP概述142

    5.1.1  ASP与ASP文件142

    5.1.2  ASP程序的编写148

    5.2  通过ASP操作MySQL数据库153

    5.2.1  建立MySQL ODBC数据源153

    5.2.2  利用Connection对象操作MySQL

    数据库154

    5.2.3  利用RecordSet对象操作MySQL

    数据库156

    5.2.4  利用Command对象操作MySQL

    数据库157

    5.3  ASP操作MySQL数据库编程

    实例158

    5.3.1  建立数据库158

    5.3.2  建立数据表159

    5.3.3  插入记录159

    5.3.4  查询或浏览数据160

    5.3.5  更新数据161

    5.3.6  删除记录162

    5.3.7  删除数据表163

    5.3.8  删除数据库163

    思考题164

    第6章  PHP+MySQL应用实践:读者

    借阅系统设计与实现165

    6.1  读者借阅系统的数据模型与功能

    分析165

    6.2  用户注册166

    6.2.1  用户注册表单166

    6.2.2  注册信息处理170

    6.2.3  系统管理员修改会员类别172

    6.3  用户登录与菜单管理175

    6.3.1  用户登录表单175

    6.3.2  自定义函数文件与菜单数据文件176

    6.3.3  用户登录数据的校验与处理178

    6.4  读者信息管理180

    6.4.1  修改密码180

    6.4.2  读者信息浏览与分页显示183

    6.4.3  读者信息查询187

    6.4.4  读者信息修改190

    6.4.5  读者信息删除197

    6.5  图书信息管理201

    6.5.1  图书信息查询与管理201

    6.5.2  添加图书信息204

    6.5.3  图书信息分页显示208

    6.5.4  图书信息修改210

    6.5.5  图书记录删除214

    6.5.6  图书信息的分类汇总、统计与

    计算216

    6.6  借阅信息管理218

    6.6.1  借书信息管理218

    6.6.2  还书信息管理222

    6.6.3  综合查询227

    6.6.4  清理已还书信息231

    6.7  留言管理237

    6.7.1  用户发布、浏览与删除留言237

    6.7.2  管理员浏览、回复与删除留言242

    思考题247

    第7章  ASP+MySQL应用实践:通讯

    录系统设计与实现250

    7.1  通讯录系统概述250

    7.2  增加联系人信息251

    7.3  通讯录信息浏览与分页显示255

    7.4  查询联系人信息259

    7.5  修改联系人信息262

    7.6  删除联系人信息269

    7.7  通讯录系统管理界面272

    7.8  修改用户密码276

    7.9  修改用户类别279

    7.10  系统登录284

    思考题286

    参考文献288

    展开全文
  • 展开来说几年都说不完, 而且互联网项目呢大多都使用开源开放的关系型数据库, 所以本文的目标就定位为给大家提供一个针对最常用的开源关系型数据库(MySQL以及PostgreSQL)的通用入门指南, 而且是针对Web项...

    系列授权转载自 @李明的简书

    关系型数据库是迄今为止最靠谱的, 性能最均衡的数据持久化方案了.所以现在大多数的Web项目都是用关系型数据库来作为最终的数据存储方案.由于关系型数据库很多, 展开来说几年都说不完, 而且互联网项目呢大多都使用开源开放的关系型数据库, 所以本文的目标就定位为给大家提供一个针对最常用的开源关系型数据库(MySQL以及PostgreSQL)的通用入门指南, 而且是针对Web项目常用部分功能的最小集合, 以及最基础的数据库表结构设计方法, 目的在于学习完此部分内容后, 可以快速的上手开发项目. 本文会加入大量的外联引用, 主要用于指向具体的数据库官方文档.

    继续阅读本文需要具备基础的Linux操作基础, 本文将不会涉及商业关系型数据库, 但是除了安装维护部分, 其余的内容可以参考借鉴.

    一. 安装数据库

    虽然对开发来说安装部署数据库有运维可以背锅, 但是开发环境还是得自己动手, 所以必要的安装数据库的技能还是需要具备的.

    1.1 MySQL的安装

    MySQL是互联网领域最流行的开源关系型数据库系统, 用户众多文档文章齐全, 上手入门最快, 问问题能回答的人数最多.

    1.1.1 在Linux安装MySQL

    因为Linux的发行版庞杂, 本人经验有限, 就暂时只提供Centos和Ubuntu(Debian) 两个最常用发行版的安装方式, arch粉们请原谅我的Lowbe.

    Centos版安装方式: 传送门

    Ubuntu版安装方式:传送门

    1.1.2 在Mac的OSX系统上安装MySQL

    Mac版安装方式:传送门

    1.1.3 在windows上安装MySQL

    windows版安装方式:传送门

    1.2 PostgreSQL的安装

    PostgreSQL是非常强大的开源关系型数据库, 在能提供共和MySQL相差无几的性能的时候, 更提供了更加强悍的功能, 支持更多的索引以及更标准的SQL标准支持, 是很多老鸟的首选

    1.2.1 在Linux上安装PostgreSQL

    Centos版安装方式:传送门

    Ubuntu版安装方式:传送门

    1.2.2 在Mac上安装PostgreSQL

    Mac上用于开发的PostgreSQL有一个神器 PostgresApp, 下载 后直接拖入应用程序即可使用, 打开就是开启数据库, Cmd+q就直接关闭数据库退出了, 特别适合在开发机上用.

    1.2.3 在Windows上安装PostgreSQL

    Windows版的安装方式: 传送门

    1.3 云服务的数据库

    现在的云服务商大多数都提供了云数据库的服务, 因为大部分关系型数据库的性能还是依托与磁盘的性能, 而云主机所提供的磁盘, 性能只能相当于物理主机的1/20(阿里云实测结果), 如果选择了SSD型的加强磁盘性能版本的, 最多也只能和普通磁盘版的物理主机持平(实测结果其实并没有这么乐观).所以在云主机上直接安装数据库性能非常的不理想, 所以现在大多数云服务提供商都会提供云数据库服务来解决这个问题.

    如果不差钱的话, 其实可以直接用云服务提供的数据库来作为开发数据库, 也可以解决开发机性能不足启动了数据库就卡成翔的问题.

    二. Web项目数据库的表结构设计基础

    数据库表结构设计可以当成一门大学课程来讲, 我们这里也假定读者具备基本的数据库知识, 建议大家读一读清华大学出版社出版的数据库原理这本书.这里我特地加了限定性的词[Web项目],因为对于互联网项目的表结构设计相对于传统的DBMS的设计原则有一些差别, 有的时候需要打破一些设计原则才行.

    2.1 数据库建模的简单入门-实体-表映射

    数据库建模是一门大学问, 如果要深入学习请参考下面列举的一些学习书目.

    参考书目:

    机械工业出版社 数据库设计教程

    为了不对初学小白"误人子弟", 我这里简要介绍一个上手简单的入门级设计方法: 实体-表映射的入门级用法. 这种方法简单的来说分两个步骤:

    2.1.1 定义概念模型-划分实体

    概念模型的设计又是一个比较大的话题, 我们这里用一个简单的例子来说明. 假设我们要做一个多人留言评论的系统, 按照产品经理的设计我们得到了下面几个User Story:US01: 输入"用户名"和"密码"后登录系统

    US02: 输入"评论内容"保存

    US03: 列表页面, 每条评论显示"昵称", "头像", "评论内容", "评论时间"

    根据这三条User Story我们可以分析出 2 个实体 和. 并且分析出每个实体的部分属性. <>扩起来是实体, ""扩起来的是实体属性, 正常的User Story并没有标注, 我这里标注出来只是为了方便大家阅读

    根据上面User Story的实体以及实体之间的关系如下图:

    实体模型

    这个例子很简单了, 以后有机会再来详细说说设计的问题, 接下来就是如何把这个实体模型映射到数据表.

    2.1.2 实体映射到数据表

    还是接上面的例子, 我们得到了有两个实体构成的实体模型, 其中Comment实体的user属性关联到User实体. 实体映射到数据表的方法最简单的就是一对一直接映射, 也就是Comment对应到Comment表, User直接对应到User表.

    一对一的表模型

    其实呢, 在显示评论的时候, 只需要昵称和头像, 并且User的属性在随着系统的扩展会需要扩充表的属性, 而且登录需要用的信息 user_name和password并不会变, 所以我们可以将User表拆分成两个表.

    拆分表后的表模型

    这样我们就将可变和不变的部分分割开了, 并且提供了将来两个方面的扩展能力, 一是可以新建新的UserLogin表来支持不同的登录方式, 比如微信登录, 另外可以通过增加User表的属性来扩展User实体的属性. 并且在读取评论和用户数据的时候, 就不用把不需要显示的用户登录信息给一起查询出来了.

    2.2 表结构设计之其他Tips

    因为并不是系统化的数据库技能学习, 所以这里把其他部分的要点整理成一些Tips, 供大家在设计的时候参考

    2.2.1 数据列类型

    2.2.1.1 主键类型

    不同数据库因为本身设计上的区别, 在一些特性上也是有所区别的.

    MySQL最常用的innodb引擎, 因为是基于BTree结构存储的, 所以数据表是天然必须有主键的,折这就涉及到如何设计表的主键, 一般来说都会有id列来作为主键列, 因为BTree的特征, MySQL最好是用自增id作为主键在性能上是最好的, 而如果用uuid作为主键的话, 在性能上就会受到影响.

    而PostgreSQL的存储结构是基于HEAP的, 所以用什么类型作为主键并没有性能上的差别.

    2.2.1.2 字符串类型

    字符串类型对不同的数据库都有Char, Varchar, Text这三种最常用的类型

    MySQL数据库的时候, 对于定宽数据尽量采用Char类型, 比如手机号码, 身份证号码, Hash后的密码.因为Varchar和Text在性能上低于Char, 但是对于变长数据Char又会浪费空间.

    PostgreSQL数据库不存在这个问题, Char, Varchar, Text的性能是相差无几的, 不需要特别主意

    2.2.1.3 日期时间类型

    一般来说数据库会有 datetime类型和timestamp两类日期时间类型. 第一种datetime是类似包含了年,月,日,时,分,秒,毫秒,时区等几个部分的结构体, 而第二种时间戳是用整形来表示的格林威治时间1970年1月1日0时0分0秒到当前的秒数(或者毫秒数).由此可见这两种方式各自的特点就比较明显了.

    第一, datetime包含时区信息, 而timestamp不包含时区信息

    第二, datetime的时间范围比timestamp广, 比如公元1543年5月24日哥白尼去世, 这个可以用datetime来记录但是就没法用timestamp来记录了.

    所以诸如 创建时间, 最近更新时间, 发布时间, 审核时间等等近期操作的时间, 最好采用timestamp类型来记录, 而涉及到历史时间的时候再用datetime.

    2.2.1.4 布尔类型

    MySQL和PostgreSQL都支持Boolean类型, 但是实现上有差异. MySQL会隐式的将Boolean转化成TinyInt, 而且查询的时候在对Boolean类型的列可以用true, false, 也可以用1, 0. 所以从性能上和使用上, 以及数据宽度上, Boolean和TinyInt并没有什么太大的区别.

    PostgreSQL的Boolean类型不能应用到Gist, Gin索引种, 而在加上Btree-Gist和Btree-Gin插件后, Gist和Gin索引都可以使用Int和TinyInt类型的列. 所以从长远来看, 用TinyInt代替Boolean会比较划算一些.

    2.2.2 约束与索引

    2.2.2.1 外键约束

    在很多企业级应用来说, 外键约束是一个保障数据完整性的重要措施. 但是在互联网领域来说, 这一剂良方就是毒药了.因为一旦对数据库进行拆分, 无论是水平拆分还是垂直拆分, 都会因为破坏外键约束而碰壁. 所以不管什么数据库, 不要外键约束, 在外键的列上加索引就好了.

    2.2.2.2 索引设计

    索引设计是个大话题, 展开写能写本书, 往深入了说能扯到具体数据库的查询优化器怎么工作的, 数据结构原理什么的, 枯燥又乏味, 小白一定会瞌睡, 但是小白同学经常又会疑惑, 那么多列要在哪些列上加索引呢?所以有两个极端的情况就是, 要么干脆就不知道加索引, 要么就是干脆暴力一波流, 所有列统统加了索引.

    首先我们要明白索引是什么. 索引是数据表以外一个额外的数据结构, 用来对数据排序的. 比如假设有一个字段是age, 类型是tinyint, 我们对这个字段创建了索引idx_age, 索引类型是Btree, 那么其实就是数据库里创建了一个名字叫idx_age的Btree数据结构, 索引的节点结构是类似key-value的形式, 排序是按照key来排序的, 所以key值也就是age这个字段的值, 而value就是实际存储数据的数据行的地址. 所以当我们对表查询时有一个WHERE age<20 的条件, 执行计划器发现了age字段有对应的索引idx_age的时候, 就会先从索引idx_age上执行age<20这个条件, 因为索引是预先排序的, 通过几次匹配就能定位到age=20的节点, 然后一次性就能取出所有小于20的记录的地址.文字描述不够详尽, 详细的工作过程请参见数据结构-Btree

    由此可见, 数据库在对字段建立索引后是一种空间换时间的策略, 假设在一个表的三个字段上都创建了索引, 那么在表中插入记录的时候, 需要将数据插入表还需要对三个索引执行插入的操作, 那么对比没有索引的表, 插入的效率就会降低. 同理在update数据的时候, 如果update的字段正好有索引, 也会降低update的效率. 但是相对的来说, 查询的效率得到了数量级的提升.

    所以不管是MySQL还是PostgreSQL来说建索引要克制, 一波流是不行的.一个简单的原则就是,不在WHERE中出现的字段, 就不要建索引.

    索引优化什么的又是一个大坑, 而且不同数据库的查询优化器的脾气不一样, 工作方式不一样, 支持的索引类型不一样, 所以下面我们分数据库来看看各自有那些坑可以绕过去的.

    MySQL的查询优化器有个特性就是一条查询只能匹配到一条索引, 那么多个查询条件如果只能其中一个条件匹配到索引的话, 效率就会大打折扣, 如果要每个列的查询都能匹配到索引的话, 就需要建立联合索引.因此MySQL的索引要遵循下面的一些原则:

    1). 最左前缀匹配原则: 假设有条件 a = 1 and b = 2 and c > 3 and d = 4, mysql会一直向右匹配直到遇到范围查询(>、

    2).尽量用区分度高的列建立索引, 因为MySQL的查询优化器在查询条件匹配的数据条数超过总数据量的一定比例后就会放弃使用索引. 比如"性别"字段, 男女比例基本趋近于1:1, 那么在gender这个字段上加索引的话, 无论是你用 gender=0还是gender=1都会导致查询优化器放弃索引.

    3).=和in可以乱序, 比如a = 1 and b = 2 and c=3的时候, 索引(a, b, c)还是(a, c, b)都不会影响

    4).索引列不能参与运算, 比如 a/2=10 就不能匹配到索引.

    PostgreSQL的查询优化器就没有这么娇气了, 但是和MySQL还是有一定共性的, 比如 2, 3, 4原则实际上都是通用的.

    对所有数据库来说, 针对字符串字段建立索引, 如果用Like条件 like '%xxx%' 和 like '%xxx' 是铁定会被放弃索引的, 只有like 'xxx%' 才会匹配到索引.

    PostgreSQL支持了更多类型的索引, 包括 Gist, Gin, Brin和函数索引, 并且还能对JSON类型的字段内部的field建索引. 具体可以参考 从难缠的模糊查询聊开 - PostgreSQL独门绝招之一 GIN , GiST , SP-GiST , RUM 索引原理与技术背景

    三. 基本查询的原则

    相对表结构设计来说, 互联网项目中的的SQL查询就相当的简单了, 事实上,第一原则就是, SQL一定要写得简单, 最好不要出现超级复杂的SQL语句, 事实上互联网项目基本上不会有出现复杂SQL的机会, 如果你发现非要写出一个复杂SQL的时候, 就意味着你该重构你的系统了.

    3.1 尽量减少JOIN的表

    据传阿里的内部规范里规定, 一条查询不能join超过三张表.但是如果需求非要超过3张表怎么办呢? 那就只有打破范式的规定在表里建冗余的字段, 然后通过程序的办法来解决不同步什么的问题.

    3.2 WHERE条件的列一定要有索引

    和之前表结构部分的原则一样, WHERE条件里提到的列一定要有索引, 或者在某个多列索引中, 不然查询就会丢索引

    3.3 Like条件导致丢失索引的问题

    同前面的描述 like '%xxx%'和like '%xxxx'都会导致索引丢失. 但是在数据量不够大的时候其实并不能立马看出性能上的区别, 所以在项目刚起步的时候模糊查询这么写并没有什么问题, 但是在数据量超过100w的时候基本上就该考虑用全文检索来替代 like '%xxxx%' 这类模糊查询

    3.4 OR条件导致丢失索引的问题

    OR查询毁所有, 一旦查询条件中出现 or 条件, 一定会导致查询优化器放弃索引, 所以如果遇到非要OR不可的时候, 用union来代替. 比如 SELECT * FROM T1 WHERE a=5 OR b=5, 可以用

    (SELECT * FROM T1 WHERE a=5) UNION (SELECT * FROM T1 WHERE b=5) 来代替.

    如果OR的两边是相同的列, 比如 SELECT * FROM T1 WHERE a=3 OR a=5, 那么可以用

    SELECT * FROM T1 WHERE a in (3, 5) 来代替.

    3.5 NOT IN条件导致丢失索引的问题

    在子查询中,NOT IN子句将执行一个内部的排序和合并。 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历)。 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.

    举个栗子:

    SELECT …

    FROM EMPLOY

    WHERE D_NO NOT IN (SELECT D_NO

    FROM DEPARTMENT

    WHERE D_NAME=’XXX’);

    如果要换成高效的写法的话, 如下:

    SELECT ….

    FROM EMPLOY AS E

    WHERE NOT EXISTS (SELECT ‘X’

    FROM DEPARTMENT AS D

    WHERE D.D_NO = E.D_NO

    AND D_NAME = ‘XXX’);

    小结

    新入门的小白如果掌握到上面的这些姿势的话, 就不会在自己独立做项目的时候在遇到数据库设计的时候找不到北了, 所以呢本章就是 Web项目数据库快速指北.

    下一章我们将从一个实际的项目出发来把前两章的内容连贯起来实战一把

    to be continue...

    展开全文
  • 数据库访问技术(特别强调:1.安装MysQL需要安装数据库和可视化界面;除了SqlServer系统有自带的驱动包外,其他数据库需要下载驱动包(例如Mysql数据库驱动包为"mysql-connector-java-5.0.8.jar");2.数据库连接步骤:...
  • 第一篇:深入浅出数据库 第一章 MySQL基础 1.1 数据库概述 数据库是一个存放数据的仓库。这个仓库是按照一定的数据结构来组织、存储数据的,...1.2 MySQL的安装配置 安装 启动 1. 命令行启动:mysql -u root -p 回车
  • //HTML5 WEB SQL查询数据$scope.queryCenterReimbursData = function(keyword,querycol){var lencr="0";//拼接sqlvar condition="";//拼过滤条件var conditiontemp="";//临时过滤条件变量var querycrsql="";//最后...
  • WebcatEE 是一个java版的 web 数据库管理和运维软件,支持多种数据库,包含了SQL审核,SQL执行,SQL查询,线上发布等功能。 WebcatEE 同时支持 Redis, MongoDB 等主流 NoSQL 数据库且功能强大易用。 WebcatEE 是一...
  • 2020.06.23 更新1 背景开发一个app后台数据库交互,基于MySQL+原生JDBC+Tomcat,没有使用DBUtils或JDBC框架,纯粹底层jdbc实现.以后逐步改用Spring框架,优化MySQL,进一步部署Tomcat等等,现在项目刚刚起步,还有很多不...
  • 相关免费学习推荐:mysql视频教程数据库中有数据表hacker,现在我们要将hacker表中的数据查询出来并在页面上显示,代码如下:
  • // 连接数据库$mysqli = mysqli_connect("localhost","root","123",'student'); //mysqli_close($con);$mysqli ? print 'yes!':print "no!";$sql = $mysqli -> query('use student');$sql = $mysqli -> query...
  • Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作...Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。核心方法以下是规范中定义的三个核心...
  • Web数据库应用的三层体系结构Web服务器6.3.2 数据库与Web的交互 图6.8 .NET框架的基本层次结构 6.3.2 数据库与Web的交互 ASP.NET ASP.NET是一种建立在通用语言上的程序架构。ASP.NET向后兼容ASP,运行在.NET平台上,...
  • ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP ...本文主要实现ASP.NET WebAPI 连接数据库获取数据,并以Json字符串格式返回。1.创建ASP.NET Web Application(.NET Fr...
  • Web界面实现数据库增删改查过程

    千次阅读 2021-02-05 00:34:59
    实现方法:JSP+Servlet+JavaBean基本实现思想:jsp文件为显示界面,包括增删改查四个界面,然后使用form或者href超链接的方法将网页获得的...具体实现步骤:首先使用操作数据库软件(Navicat),新建数据库,建立好自...
  • 内容介绍原文档由会员 刘丽 发布SERVLET技术实现数据库查询1.7万字 20页目 录Abstract …………………………………………………………… 3摘要 ………………………………………………………………… 4第一章 引言 ...
  • HTML5 Web SQL 数据库

    2021-01-18 19:16:47
    HTML5 Web SQL 数据库Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。如果你是一个 Web 后端程序员,应该很容易理解 SQL 的操作。你也可以...
  • 在上面的博客里面,我都是通过查询mysql数据库来获取相应的数据,但是当要查询的表里面的数据非常多的时候,比如数十万的数据,查询效率就会很低,往往要消耗两三秒的时间才能查询到一条数据。 而在学习redis数据库...
  • web项目中连接oracle数据库的步骤首先将oracle安装包(F:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib)下的ojdbc6.jar(版本不同,名称亦不同)文件拷贝到当前web项目中。import java.sql.Connection;import ...
  • JSP连接MySQL数据库实现将内容打印在页面上以及登录显示登录者的信息
  • 导入jdbc驱动程序包其实有很多种方法,但是不同的导包方式有不同的含义,1、给Tomcat导包(表示服务器可能要用到数据库,例如数据源),如果是MyEclipse集成Tomcat,显然是要用“右键项目 -> Properties -> Java...
  • 这次要为我的python程序加上数据库,主要是实现从mysql中查询出数据并在页面上显示出来。首先是mysql的配置文件config.pyhost="127.0.0.1"user="root"password=""charset="utf8"database="service"port=3306然后是从...
  • web管理工具使用的是treesoft1.0版本 前提需要先安装docker 1.拉取镜像 docker pull docker.io/lu566/treesoft:1.0 2.启动镜像为容器 docker run -d -p 127.0.0.1:18080:8080 docker.io/lu566/treesoft:1.0 3....
  • 通过构建web界面,在web界面上对于数据库进行增删改查的操作。使用python中的web模块完成。 这部分内容目前在网上没有搜到太多类似的,所以有很多地方都是一点点自己试出来的。 另外这里的python程序需要用户联系...
  • 首先 - "服务器"可以指物理事物(计算机)或逻辑事物(一种软件).Web,应用程序和数据库服务器软件都可以在同一台物理服务器上运行,也可以分布在多台物理机上.大多数大型网站都有多台机器; 大多数"消费者"托管包在一个...
  • 如果要开发Web应用程序,几乎可以肯定的是,您将不断与数据库进行交互。在本文中,我们将详细介绍5种使用JavaScript与数据库进行交互的方法,我们将讨论每种方法的优缺点。我们将从最低级别的选择(SQL命令)开始,...
  • 需要的jar包:mysql-connector-java....WEB-INF对于浏览器是无法直接通过url访问的,因此要想跳转到WEB-INF目录下必须采用服务端的foward方法而不能采用redirect方法。注意网页的编码问题,一般全采用utf-8就没乱码...
  • 作为web开发人员 我们的生活围绕着数据操作 我们建立数据库来存储数据 写编码来访问和修改数据 设计网页来采集和汇总数据 本文是研究在 中实现这些常见的数据访问模式之技术的长篇系列教程的第一篇 我们将从创建一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,339,420
精华内容 535,768
关键字:

web与数据库的查询