ssh与mysql基础知识

saveorupdate()如果传入的对象在数据库中有就做update操作,如果没有就做save操作。
save()在数据库中生成一条记录,如果数据库中有,会报错说有重复的记录。
update()就是更新数据库中的记录
主键在saveorupdate()方法中是起着关键作用的,只有这个主键的值不为空的时候才进行insert还是update的判断,否则直接insert
若主键不为空,就可以进行saveorupdate()操作了。
save是返回插入数据的主见的,而saveOrUpdate是void
save方法更适用于确定了是要插入,而且需要得到插入数据的主键
而saveOrUpdate更倾向于不缺定是插入还是更新,而且你不需要得到他的主键
另一方面,如果你无法确定你要插入或更新的对象是不是持久态或游离态时。如果你save一个持久态或更新一个游离态,这都是有问题的,此时搜索你就要用到saveOrUpdate
总体来说,如果你能确定你即将操作对象的状态,则不需要用saveOrUpdate

7.Hibante用的样板

8.Hibernate的模糊查询

9.
mysql数据库可以存图片吗?

破碎这是事实 | 浏览 2820 次

发布于2016-06-08 20:38  最佳答案

可以。存图片的列需要设置成BLOB、MEDIUMBLOB或LONGBLOB等数据类型。

但是以前基本上不会把图片直接存在数据库里,因为数据库里的数据是为了用来快速分析、快速存取的,图片数搜索据在mysql里既不能建立索引也不能和其他数据一起分析,存取速度和读写磁盘也没什么区别,每次备份、导入导出数据库时还增加了数据量,降低了效率。所以一般都是把图片存在系统里,然后把图片的存放路径放在数据库里。

this.getHibernateTemplate().find("from bean.User u
where u.name like ?", "%test%");

10.

//修改作用 数据库添加新字段
ALTER TABLE FarmersStoreGoods ADD ProductUnivalentMax FLOAT;
、、添加

ALTER TABLE FarmersStoreGoods ADD Processor VARCHAR(20);

6.1.修改某个表的字段类型及指定为空或非空
>alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];
删除字段:

alter table `user_movement_log` drop column Gatewayid

//修改
UPDATE farmersstoregoods SET figureName = ‘haha‘ WHERE fid=44;
com.nmfz.app.manager.impl.LogisticsManHeft warehouseMan

11
//foreach的运用

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:forEach items="${aa}" var="a">
<p>${a.companyHuman}</p>
</c:forEach>

12
//hibnate解决乱码
jdbc:mysql://localhost:3306/biao1?useUnicode=true&amp;characterEncoding=UTF-8

13
6.1.修改某个表的字段类型及指定为空或非空
>alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空];

14
saveorupdate()如果传入的对象在数据库中有就做update操作,如果没有就做save操作。
save()在数据库中生成一条记录,如果数据库中有,会报错说有重复的记录。
update()就是更新数据库中的记录
主键在saveorupdate()方法中是起着关键作用的,只有这个主键的值不为空的时候才进行insert还是update的判断,否则直接insert
若主键不为空,就可以进行saveorupdate()操作了。
save是返回插入数据的主见的,而saveOrUpdate是void
save方法更适用于确定了是要插入,而且需要得到插入数据的主键
而saveOrUpdate更倾向于不缺定是插入还是更新,而且你不需要得到他的主键
另一方面,如果你无法确定你要插入或更新的对象是不是持久态或游离态时。如果你save一个持久态或更新一个游离态,这都是有问题的,此时搜索你就要用到saveOrUpdate
总体来说,如果你能确定你即将操作对象的状态,则不需要用saveOrUpdate

15
Hibernate的模板查询写法
http://www.cnblogs.com/JemBai/archive/2011/01/17/1937409.html
大概的删除,修改
http://blog.csdn.net/tianxiezuomaikong/article/details/53021895

17
//通过<script>获得<td>里<buttion>所对应的值(values="")

<SCRIPT LANGUAGE="JavaScript">
function sub(btn){
var tds = btn.parentElement.parentElement.children;
var td = (tds[1]).innerHTML;
alert("测试是否获取到本行第一个表格的值: " + td);
var a=1;
$.ajax({
async: false,
type: "post",
data:"m_s_no="+td,
url: "<%=path%>/smallTowns_sp/skipPage.action",
success: function(data){
alert(td);
$("#ckshow")[0].innerHTML=data;
}

});

}
<td>
<input type=‘button‘ name=‘btn‘ onclick="javascript:sub(this);" value="递 交">
</td>

//点击<onclick>通过window事件进入相对空间

//hibnate所有方法
https://zhidao.baidu.com/question/328004060874001125.html?fr=iks&word=bulk+Update%28String+queryString%2CObject+value%29%BA%CDbulk+update%28String%29%D3%C3%B7%A8&ie=gbk
//hibnate的hsq用法
http://blog.csdn.net/yu422560654/article/details/7741778
删除
//this.getHibernateTemplate().bulkUpdate(yujv);
System.out.println(HQL);
//int ii= getHibernateTemplate().bulkUpdate("delete from farmersstoregoods where fid=?", fid);

-1.requst接受前台值
HttpServletRequest request=ServletActionContext.getRequest();
String figureName_id=(String)request.getParameter("figureName_id");
System.out.println(figureName_id);
<value>com/nmfz/app/model/supbackgman/ProductStore.hbm.xml</value>
<value>com/nmfz/app/model/supbackgman/ProductShelves.hbm.xml</value>
<value>com/nmfz/app/model/supHeft/LogisticsParcel.hbm.xml</value>
<value>com/nmfz/app/model/supHeft/LogisticsCompany.hbm.xml</value>
<%=path%>/townshipManagement_sp/fuzzyquery.action
0。ajax接受<input>的id的值
村长姓名: <input type="text" id="figureName" />
var aa = document.getElementById(‘figureName‘).value;

1。获取<td>里面的id
var aa=document.getElementById("***").innerText;//td里只有字符的时候
2。mysql大全
http://www.cnblogs.com/yunf/archive/2011/04/12/2013448.html
3。mysql删除表中的某个列
ALTER TABLE 表名 DROP COLUMN 列名;

4//<button>根据id方法produceviaNo()传值,在()里可以写值
<button onclick="produceviaNo(${p.fid})">不通过</button>

5//乡级审核不通过 ${p.address}
function produceviaNo(fid){
var a=1;
alert("审核不通过");
$.ajax({
async: false,
type: "post",
data:"m_s_no="+a,
url: "<%=path%>/townshipManagementHuang_sp/auditNoXm.action?fid="+fid,
success: function(data){
alert("123");
$("#content")[0].innerHTML=data;
}
6//disabled="true "此果文字会变成灰色,不可编辑。

readOnly="true" 文字不会变色,也是不可编辑的

7.只显示input下边框
<input style="border-left-width:0px">设置左边框宽度为0<br><hr>

8.使用ajax实现form表单提交数据
<form action="<%=path%>/smallTowns_sp/jiade.action" id="confirmationTask">
<button onclick="confirmationTask(‘confirmationTask‘)">确认接收</button><br>
其中 confirmationTask 是function后面的名字

1.ajax中获取《form》中input id的值
var v = $("#address").val();

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

总结ssh增删改
(一)增加
1:form表单
<form id="tianjiaid" method="post">
乡镇:<input type="text" name="smalltowns.Smalltownsname"><br>
乡镇:<input type="text" name="smalltowns.Attribute"><br>
<button onclick="tianjiaa(tianjiaid)">添加</button>
</form>

2:js
function tianjiaa(){
alert("进入保存ajax的添加");
var a=1;
$.ajax({
async: false,
type: "post",
data:$(‘#tianjiaid‘).serialize(),
url: "<%=path%>/smallTowns_sp/tianjiakaishi.action",
success: function(data){
alert("123");
$("#reviseview")[0].innerHTML=data;
}

});
}

3:action
public String tianjiakaishi(){
System.out.println("得呆滞");
System.out.println(smalltowns.getSmalltownsname());
System.out.println(smalltowns.getAttribute());
//villageOperationManager.addGoods(goods);
smallTownsManager.tianjia(smalltowns);
return "tianjiakaishiok";
}
4:接口
public void tianjia(Smalltowns smalltowns);
5:接口实现类
@Override
public void tianjia(Smalltowns smalltowns) {
// TODO Auto-generated method stub
System.out.println("产品添加");
System.out.println(smalltowns.getSmalltownsname());
System.out.println(smalltowns.getAttribute());
this.getHibernateTemplate().save(smalltowns);
System.out.println("ede1");
System.out.println(this.getHibernateTemplate().save(smalltowns));
}

(二)修改 1:jsp页面
<form method="post" id="selectForm">
<h4 align="center">乡镇简介</h4>
<c:forEach items="${pm.list}" var="p">
<p>id:<b><input type="text" value=${p[0].id } id="fid" name="smalltowns.id"></b></p>
<p>欢迎:<b><input type="text" value=${p[0].smalltownsname} id="smalltownsname"
name="smalltowns.Smalltownsname"></b>(乡)镇登录</p>
</c:forEach>
<button onclick="modifySave(selectForm)">修改</button>
</form>

2:ajax
//修改js
function modifySave(){
var a=1;
$.ajax({
async: false,
type: "post",
//data: {"fid":fid,"smalltownsname":smalltownsname,"attribute":attribute,"identifier":identifier},
data:$(‘#selectForm‘).serialize(),
url: "<%=path%>/smallTowns_sp/modifySaveXm.action",
success: function(data){
alert("123");
$("#reviseview")[0].innerHTML=data;
}

});
}

3:action()
public String modifySaveXmAc(){
System.out.println("得到值1");
System.out.println(smalltowns.getId());
System.out.println("得到值2");
System.out.println(smalltowns.getSmalltownsname());
smallTownsManager.modifySave(smalltowns);
return "modifySaveXmAcok";
}

4:接口
public void modifySave(Smalltowns smalltowns);

5:接口实现类
@Override
public void modifySave(Smalltowns smalltowns) {
// TODO Auto-generated method stub
System.out.println("进入修改impl");
Query query=this.getSession().createQuery("update Smalltowns s set s.Smalltownsname=? where s.id=?")
.setParameter(0, smalltowns.getSmalltownsname()).setParameter(1, smalltowns.getId());
query.executeUpdate();
System.out.println("修改完成");

}
(三)删除
(1)jsp略
(2)ajax略
(3)xml略
(4)action
public String shanchu(){
//int id=Integer.parseInt(ServletActionContext.getRequest().getParameter("id"));
int id=7;
smallTownsManager.shanchu(id);
return "shanchuok";
}

(5)接口
public void shanchu(int id);
(6)接口实现类
@Override
public void shanchu(int id) {
// TODO Auto-generated method stub
System.out.println("删除产品");
Session s=this.getSession();
s.beginTransaction();
List<Smalltowns> list=(List<Smalltowns>)s.createQuery("select g from Smalltowns g where g.id="+id).list();
Smalltowns sm=list.get(0);
s.delete(sm);
s.getTransaction().commit();

}

(四)查询
(一)单表
(1)接口实现类
@Override
public PagerModel smallTownsAuditing(int offset, int pagesize) {
// TODO Auto-generated method stub
System.out.println("进入");
String hql="select s from Shenhe s";
System.out.println("hql------");
return this.searchPaginated(hql, offset, pagesize);
}
(2)接口
public PagerModel smallTownsAuditing(int offset,int pagesize);

(3)action
public String smallTownsAuditingAc(){
System.out.println("产品查询审核跳转");
int offset = 0;
try {
offset = Integer.parseInt(ServletActionContext.getRequest()
.getParameter("pager.offset"));
} catch (RuntimeException e) {
System.out.println("异常");
}
int pagesize = 10;
System.out.println(" 火1");
pm = smallTownsManager.smallTownsAuditing(offset, pagesize);
System.out.println(" 火2");
ServletActionContext.getRequest().setAttribute("pmm", pm);
System.out.println(" 火3");
return "smallTownsAuditingAcok";
}

(4)jsp略
(5)ajax略
(6)xml空间略

(二)多表
(1)@Override
public PagerModel indicationSmallTowns(int offset, int pagesize) {
// TODO Auto-generated method stub
System.out.println("进入首页乡镇显示的imp");
String hql="select s,sm,s.Smalltownsname from Smalltowns s,Smalltownsabstract sm where s.sid=sm.sid and s.id=1";
System.out.println("hql------");
return this.searchPaginated(hql, offset, pagesize);
}
注意:前台显示时:
第一个表用${p[0].identifier },第二个显示用${p[1].属性 }
(2)(3)(4)(5)(6)类似

(五)登录验证
(1)Action
int i=smallTownsManager.yanzheng(smalltownspsw);
System.out.println(i);
if(i==1){
return "pageJumpacok";
}
else{return "";}
}
(2)impi
String[] b=new String[]{smalltownspsw.getUsersName(),smalltownspsw.getUsersPassword()};
List a=super.getHibernateTemplate()
.find("from Smalltownspsw t WHERE t.usersName=? and usersPassword=?"
,b);
if(a.size()>0){
System.out.println("登录");
return 1;
}else{

System.out.println("错误");
return 0;
}
(3)接口
public int yanzheng(Smalltownspsw smalltownspsw);
(六)根据id查询值
类似上面,注意:
(1)接口
public PagerModel xiangxirealize(int offset, int pagesize,String sid);
(2)Action
public String xiangqing(){
System.out.println(1);

HttpServletRequest request=ServletActionContext.getRequest();
String sid=(String)request.getParameter("id");
System.out.println("sid值为"+sid);
int offset = 0;
try {
offset = Integer.parseInt(ServletActionContext.getRequest()
.getParameter("pager.offset"));
} catch (RuntimeException e) {
System.out.println("异常");
}
int pagesize = 10;
System.out.println(" 火1");
pm = smallTownsManager.xiangxirealize(offset, pagesize,sid);
System.out.println(" 火2");
ServletActionContext.getRequest().setAttribute("pm", pm);
System.out.println(" 火3");
return "xiangqingok";
}
(3)impI
@Override
public PagerModel xiangxirealize(int offset, int pagesize,String sid) {
System.out.println("详细信息");
System.out.println("乡镇点击接收任务,查询显示的impI");
String hql="from Goods a where a.id="+sid;
return this.searchPaginated(hql, offset, pagesize);

}

(六)条件查询
(1)jsp:
<form action="<%=path%>/smallTowns_sp/conditionSelect.action" method="post" id="conditionId" >
供货人身份证:<input type="text" id="address" name="warehouseproduct.figureName" />
<button onclick="condition(‘conditionId‘)">查询</button>
</form>
(2)js
function condition(){
alert("条件查询456");
var v = $("#address").val();
alert(v);
var a=1;
$.ajax({
async: false,
type: "post",
data:"v="+v,
url: "<%=path%>/smallTowns_sp/conditionSelect.action",
success: function(data){
alert("456");
$("#view")[0].innerHTML=data;
}

});
}

(3)action
//条件查询功能 conditionSelectAc
public String conditionSelectAc(){
int rid=Integer.parseInt(ServletActionContext.getRequest().getSession().getAttribute ("rid").toString());
System.out.println("进入条件查询action");
HttpServletRequest request=ServletActionContext.getRequest();
String aa=(String)request.getParameter("v");
System.out.println("值");
System.out.println(rid);
int offset = 0;
try {
offset = Integer.parseInt(ServletActionContext.getRequest()
.getParameter("pager.offset"));
} catch (RuntimeException e) {
System.out.println("异常");
}
int pagesize = 10;
System.out.println(" 火1");
pm = smallTownsManager.conditionalInterface(offset, pagesize,aa);
System.out.println(" 火2");
ServletActionContext.getRequest().setAttribute("pm", pm);
System.out.println(" 火3");
return "conditionSelectAcok";
}

(4)
/**
* 条件查询,查询村级商品
* */
@Override
public PagerModel conditionalInterface(int offset, int pagesize ,String aa) {
System.out.println("进入impl");
String hql = "from Goods g where g.sfzheng like :sfzheng";
String countHql = "select count(*) " + hql;
Query query = this.getSession().createQuery(countHql);
query = query.setParameter("sfzheng", "%"+aa+"%");
int total = ((Long)query.uniqueResult()).intValue();
query = this.getSession().createQuery(hql);
query = query.setParameter("sfzheng", "%"+aa+"%");
query.setFirstResult(offset);//设置查询返回记录的开始位置
query.setMaxResults(pagesize);//返回记录每页显示的条数上限
List<?> list = query.list();
PagerModel pm = new PagerModel();
pm.setList(list);
pm.setTotal(total);
return pm;

}

--------------------------------------------------------------------------------------------------------------------------
(1)eclipse安装svn的教程:
http://jingyan.baidu.com/article/63f236280a37680208ab3db7.html

(2)前台css的图片相对路径加载
background: url(../../img/hcfimg/bg1.png) no-repeat center center fixed;
第一个../ 是项目名字
第二个../是WebContent文件夹

--------------------------------------------------------------------------------------------------------------------------
http://blog.csdn.net/seng3018/article/details/6824905
这个路径是ssh中:
如何访问数据库?我们有两个选择:
getSession().createQuery("from Users");
getHibernateTemplate().find( "FROM Users);

--------------------------------------------------------------------------------------------------------------------------
http://www.cnblogs.com/tuhooo/p/6491906.html
ssh的整合简介

--------------------------------------------------------------------------------------------------------------------------
http://blog.csdn.net/key0323/article/details/50773499
struts的简单配置网址,初级很实用
自己总结struts框架简单搭建步骤
1:首先修改web.xml文件,加载
<filter-name >struts2 </filter-name >
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</ filter>
< filter-mapping>
<filter-name >struts2 </filter-name >
<url-pattern >/* </url-pattern >
</ filter-mapping></span>
通过这段代码进入struts.xml
2.然后通过struts.xml进入action,
01.<span style="font-size:18px;"><struts>
02. <package name ="welcomePackage" extends="struts-default">
03. <action name ="first">
04. <result >/first.jsp </result >
05. </action >
06. </package >
07.</struts></span>
注意:<action>标签里写的是action的名字
<result>标签里写的是处理过后返回的页面,这里没有写result的name属性,默认为success也就是处理成功返回的页面,关于Action中自带的5中状态,这里不再多讲。

--------------------------------------------------------------------------------------------------------------------------
String hql="select g,c.cname from Goods g,Category c where c.id=g.cid";
前台接收时,如果想要接收c.cname
用${p[1]},而不是${[1].cname}等什么的

--------------------------------------------------------------------------------------------------------------------------通过onclick的点击进入ajax或js事件得到<td>里面的值,放入ajax,js中
onclick="xiangqing(${p[0].id })
//详细信息xiangqing
function xiangqing(id){
alert(id);
alert("详细信息");
//var v = $("#address").val();
var vv=$("#sid").val();
alert(vv);
var v=document.getElementById("sid").innerText;
alert(v);
var a=1;
$.ajax({
async: false,
type: "post",
data:"a="+a,
url: "<%=path%>/smallTowns_sp/xiangqing.action?id="+id,
success: function(data){
alert("123");
$("#view")[0].innerHTML=data;
}

});
}
--------------------------------------------------------------------------------------------------------------------------(1)data传值
data:{"v":v,"v1":v1},

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

(1)B/S与C/S大致区别
https://jingyan.baidu.com/article/b0b63dbfc9a2874a483070c0.html

(2)
J2EE 动态网站
J2SE java核心基础 CS端
J2ME 手机java端
(3)service和dao层作用
http://blog.csdn.net/Ani521smile/article/details/51460382
(4)

(1)
String b= ServletActionContext.getRequest().getSession().getAttribute("rid").toString();

(2)
从他们的返回类型基本可以看出它们之间的区别
execute返回boolean类型,查询结果是resultset且有值则返回true,其他都返回false
executeQuery返回结果集ResultSet。主要针对查询语句,返回查询结果
executeUpdate返回int类型。更新、删除等操作影响的数目

(3)连接本机
--------------------------------------------------------------------------------------------------------------------------
(1)
js的encodeURI() 函数运用
http://www.w3school.com.cn/jsref/jsref_encodeuri.asp
(2)json基本教程演示,json菜鸟教程
http://www.runoob.com/json/json-syntax.html
(3):json转换
http://ouapi.com/tool/json
-------------------------------------------------------------------------------------------------------------------------
hbm.xml中的name是实体类里面的值
<property name="yh_id" type="int"></property>
-------------------------------------------------------------------------------------------------------------------------网络学习2017/8/14
(1)什么是EJB,服务器集群,都是干嘛的?
黄超凡总结:EJB就是在本机依靠RMI进行通信,调用写在服务器的类。
服务器集群,就是一个软件的几个类调用多个服务器中的类,分担主服务器压力。
(2)如何给文件夹加密,方法(1),通过右键然后有个添加密码

时间: 2024-08-24 09:21:36

ssh与mysql基础知识的相关文章

mysql基础知识之增删查改使用介绍

 mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的student表中的数据如下: mysql> SELECT * FROM student; 一.SELECT语句的使用 1.单表查询 语法格式: SELECT culom1,culom2,culom3 FROM TABLE_NAME; 可以改变字段显示顺序 2.WHERE子句查询 语法格式: SE

MySQL基础知识

MySQL基础知识: 一. 知识点:        1. SQL分类:按照其功能不同,分为3中类别           DDL(Data Defintion Language):数据定义语句,用于定义不同的数据段.数据库.表.列.索引等.常用的语句关键字包括create.drop.alter等;             DML(Data Manipulation Language):数据操纵语句,用于添加.删除.更新和查询数据库记录,并检查数据的完整性.常用的语句关键字主要包括insert.de

趁一切还来得及【一】数据库MySQL基础知识及编译安装

此情更待成追忆,只是当时已惘然.                                        --[唐]李商隐 第一章 数据库概述及分类特点应用 1.1 数据库种类.语言处理.典型产品 ①数据库的理解:就是一个存放数据的仓库,这个仓库是按照一定的数据结构,来组织和存储的.可以通过数据库提供的多种方法来管理数据库. ②数据库的种类:按照早期的数据库理论分为层次数据库.网络式数据库.和关系型数据库.当今互联网最常用的就是关系型数据库和非关系型数据库(NOSQL). ③关系型数据库:

MySql基础知识、存储引擎与常用数据类型

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文将主要讲解了数据库的一些基础知识,介绍了MySql的存储引擎,最后讲了MySql常用的数据类型 1.基础知识 1.1.数据库概述 简单地说:数据库(Database或DB)是存储.管理数据的容器: 严格地说:数据库是"按照某种数据结构对数据进行组织.存储和管理的容器". 总结:数据永远是数据库的核心. 1.2.关系数据库管理系统 通过"数据库管理系统",数据

一、MySQL基础知识

一.背景介绍 我们每天都在访问各种网站.APP,如微信.QQ.抖音,今日头条等,这些东西上面都存在大量的信息,这些信息都需要有地方存储,存储在哪里呢?数据库. 所有我们需要开发一个网站.APP,数据库我们必须掌握的技术.常用的数据库有mysql,oracle.sqlserver.db2等. oracle性能第一,mysql免费,mysql在互联网公司使用率排名第一. 二.mysql系列主要介绍 1.mysql的基本使用 2.mysql性能优化 3.开发过程中mysql一些优秀的案例介绍 三.数据

Mysql基础知识:数据类型

Mysql基础数据类型 1. 整数类型 2. 浮点数类型和定点数类型 DECIMAL型的取值范围与DOUBLE相同,但是DECIMAL的有效范围由M.D决定.而且DECIMAL的字节数为M+2,即定点数的存储空间是根据其精度决定的. M:精度,是数据的总长度,小数点不占位置: D:标度,小数点后的长度 eg:FLOAT(6,2):数据长度为6,小数点后保留2位的FLOAT数据类型.按照该定义,1234.56符合要求. 3. 日期和时间类型 YEAR类型:(使用1个字节表示) 可以用4位字符串或数

MySql基础知识命令总结一

数据库的引入和概念 数据保存到内存: 优点: 1)读写非常快 缺点: 1)程序关闭导致数据丢失 数据保存到文件: 优点: 1)数据可以永久保存 缺点: 1)频繁地IO操作,效率不高! 2)数据管理不方便.例如查询某个数据需要全部读取出来,再匹配. 数据保存到数据库软件: 优点: 1)数据永久保存下来 2)数据管理非常方便.(例如查询非常快速和方便) 数据库,俗称数据的仓库.方便管理数据的软件(或程序). 市面上常见的数据库 Oracle,甲骨文公司的产品. 当前最流行应用最广泛的数据库软件.和j

MySQL 基础知识梳理学习(五)----详解MySQL两次写的设计及实现

一 . 两次写提出的背景或要解决的问题 两次写(InnoDB Double Write)是Innodb中很独特的一个功能点.因为Innodb中的日志是逻辑的,所谓逻辑就是比如插入一条记录时,它可能会在某一个页面(这条记录最终被插入的位置)的多个偏移位置写入某个长度的值,例如页头的记录数.槽数.页尾槽数据.页中的记录值等.这些本是一些物理操作,而Innodb为了节省日志量及其它原因,设计为逻辑处理的方式,即在一个页面上插入一条记录时,对应的日志内容包括表空间号.页面号.将被记录的各个列的值等内容,

第二天 MySQL基础知识

今天开始学MySQL数据库的知识.话说我一直念叨的东西,今天终于看到真面目了,不过刚找了个2012的版本发现有5G大小,而一个2016的版本只有2G...真是略微蛋疼...不管怎么样还是入门了.话又说回来,课程说的是一个星期,但是像我这么聪明估计两个月就搞定了~~~~哈哈~~~唉,说多都是泪啊... 等下把澡洗了,今天学到一点钟,一定要完成数据库的入门.花21天的时间养成一点钟睡觉的习惯到底考不靠谱也可以在这次历练中验证. 老马你能坚持下去么???