物性数据库
NIST Chemistry WebBook(免费)
WebElements (网上元素周期表 - 元素知识库)
日本国立材料科学研究所:材料数据库(免费)
Database of Published Interatomic Parameters(免费)
DataGuide Online: 检索ChemSage热化学数据库的物质/混合物体系(免费)
Knovel K-Essentials - Knovel公司的9种数据手册免费访问
Landolt-Bornstein数据手册 (LB手册) - 中国科学院访问网关
LiqCryst Online (液晶数据库)(部分免费)
PoLyInfo (高分子材料设计所需的各种数据)(免费)
检索NIST数据库系列(NIST Data Gateway)(免费)
检索PHYSPROP演示版本(免费)
如何查找物理和化学性质数据(Finding Physical and Chemical Properties)
无机化学热力学软件及数据库集锦(FACT站点)
物理、化学性质数据索引
物性、质谱、晶体结构数据库(Kelvin, Dalton, Angstrom), JST(免费)
物性数据(化学和物理性质)源(Chemical & Physical Property Information Resource)
CAMPUS (塑料产品数据库, 免费)
CATH Protein Structure Classification (蛋白质结构分类)(免费)
CODATA Key Values for Thermodynamics (CODATA推荐的主要化学物质热力学标准数据值)(免费)
Knovel 交互式工程与科技手册/数据库 - 中国科学院网关(部分免费)
Properties of Organic Compounds on CD ROM, Version 5.0
ThermoDex: 热力学数据手册索引
材料性质索引Materials Properties Locator Database
常用溶剂性质数据库SOLV-DB(免费)
从ChemWeb.com检索Chapman & Hall/CRC Properties of Organic Compounds
美国美国加利福尼亚大学伯克利分校:化学教学模块联盟(免费)
牛津大学物性、化合物安全数据表
热力学数据、物性计算及教育资源目录
日本丰桥大学 Jinno实验室的研究数据库(液相色谱、多环芳烃/药物/杀虫剂的紫外谱、物性)(免费)
无机物热力学数据计算(F*A*C*T/FACT, FactSage)
相图网, Georgia Institute of Technology(免费)
3-D虚拟化学图书馆
ACD pKa, LogP, LogD, Solubility
ACD/I-Lab (NMR谱预测、物性预测、化合物系统命名自动生成)
Advanced Petroleum-Based Fuels' Fuel Property Database(石油、天然气为主的燃料化学性质, 美国能源部运输技术办公室提供)
AntiBase (微生物、高等真菌)
AQUASOL dATAbASE of Aqueous Solubility (水溶液溶解度数据)
Atomic Line List (原子吸收、发射性能数据)(免费)
Beilstein手册索引的物性数据总量有多少?
Binding Database (基于实验数据的非共价键化合物数据库)
Bordwell pKa Table (Acidity in DMSO)(免费)
Chapman & Hall/CRC Dictionary of Commonly Cited Compounds (被CA引用最多的25000化合物)
ChemFinder(免费)
Chemical Elements.com (元素周期表)(免费)
Chemical Properties Handbook
ChemSage (无机物相图计算)
COMe-the bioinorganic motif database (生物无机模体数据库)(免费)
CRC Handb
ook of Chemistry and Physics (Web版)
CRC Handbook of Chemistry and Physics, 71 - 79卷中被删除/改名或重新安排的数据表
David Ripin 和 David A.Evans 收集的pKa数据
DETHERM (热物性数据库)
DIPPR (物性数据)
DIPPR混合物(相平衡)实验数据项目
DOCK (分子对接软件和结果数据库, 美国加利福尼亚大学旧金山分校制药化学系Kuntz 教授的研究小组开发)(免费)
Electron Binding Energies (电子结合能)(免费)
Electron Interactions with Plasma Processing Gases (半导体设备等离子处理所用气体的电子碰撞数据)(免费)
Electronic Encyclopedia of Reagents for Organic Synthesis (有机合成试剂百科全书e-EROS)
Elemental Data Index (元素的物理数据)(免费)
Engineering material properties (常见工程材料性质表)(免费)
EPI Suite(与环境有关的物性估算程序包)(免费)
ERMS:欧洲海洋生物物种库
FYDAT (物理性质数据库)
Goodfellow (金属与材料)
Handbook of Ternary Alloy Phase Diagrams (10 Volume Set)
Infortherm (纯物质、混合物物性数据)(部分免费)
International Chemical Safety Cards (国际化学品安全卡ICSCs)(免费)
International Data Series, Selected Data on Mixtures, Series A (有机化合物混合物数据)
IUPAC Stability Constants Database (SC-Database金属配合物稳定常数数据库)
IVC-SEP Data Bank for Electrolyte Solutions (电解质溶液IVC-SEP数据库)
Key to Metals (有色金属数据库)
Klotho: Biochemical Compounds Declarative Database(免费)
LIPIDAT (脂类数据库)
LIPIDBANK for Web (脂类数据库)
Magnesium mechanical and physical databases (镁的机械和物理性质)(免费)
Marinlit (海洋天然产物文献数据库)
Molecular Knowledge Systems, Inc. (物性估算)
NIST和IUPAC金属配合物稳定常数数据库比较
Norgwyn Montgomery (化学软件公司)
Perry化学工程师手册Perry's Chemical Engineers' Handbook (7th Edition)
Pesticide Active Ingredient Information at Cornell University (农药活性成分信息数据库)(免费)
Pesticide Fact File (PFF, 农药事实文件数据库)
Pesticide Properties Database (334种农药的化学与物理性质数据库PPD)(免费)
pKa Data (Harvard University)(免费)
PLASPEC
[url=http://www.crcpress.com/us/product.asp?sk!![/url]谢绝广告帖!再发封ID!C1055&dept_id=1&MSCSSID=]Polymers - A Property Database[/url]
Polymers - A Property Database
PPP Handbook (高分子物性手册电子版)
Properties of popular NMR solvents (常用核磁共振NMR溶剂的性质)
Rare Earth Elements On The Net
Solid and Liquid Heat Capacity Data Collection, C1 - C33 Compounds (固体和液体热容)
Spectra Heap (光谱分析数据库软件)
Spectrum Laboratories Inc (环保:污染物实验分析及化学品性质)
The Rock Magnetic Bestiary (矿物岩石磁性数据)(免费)
Thermo Explorer (600多种化合物)
Thermo-Calc So
ftware (热力学计算、合金体系扩散控制计算)
Thermochemical Data of Elements and Compounds (元素和化合物热化学数据,主要为无机物)
TRC出版的化学化工数据手册
TRC热力学数据表:非烃类(TRC Thermodynamic Tables - Non-Hydrocarbon)
TRC热力学数据表:烃类(TRC Thermodynamic Tables - Hydrocarbons)
侧重于放射化学的化学性质数据库(免费)
常见分子收集 (包括两千多个个分子、原子和元素三维图像)
常用化学数据表(Senior Chemistry Data Tables)
纯物质热力学性质数据表(Molar Thermodynamic Properties of Pure Substance)
电解质溶液数据库(ELYS :- Electrolyte Solutions Database)
电离能数据表(免费)
锇Os同位素数据库(免费)
放射性同位素核衰变数据查询(免费)
氟化物与有机氟化物农药(免费)
高温材料热力学数据库(免费)
亨利常数Henry's Law Constants (Solubilities)(免费)
化学平衡计算程序EQS4WIN
几十个有机化合物的蒸气压数据(免费)
计算化学对比与基准数据库(CCCBDB, 美国标准与技术研究院NIST提供)(免费)
剑桥簇数据库
金属合金物性数据库 (Principal Metals, Inc.提供)(免费)
绝热材料和建筑材料的热传递性质(美国标准与技术研究院NIST提供)(免费)
美国NIST的标准参考数据产品(Standard Reference Data Products, NIST)
美国国家农药信息检索系统 (NPIRS)
美国华盛顿州立大学化学系:无机化学教学资源
模拟大气同温层(臭氧层)的化学动力学、光化学数据(Chemical Kinetics and Photochemical Data for Stratospheric Modeling)(免费)
农药与环境数据库 (1057种)(免费)
气体的临界性质Properties of Various Gases
溶度参数Internet资源导航
溶剂选择数据库(免费)
溶解度(溶度)数据源Solubility Resources, Caltech
瑞士芬美意香精香料公司Firmenich
杀虫剂毒性库EXTOXNET(免费)
水溶液反应库及平衡计算Joint Expert Speciation Syetem (JESS)(免费)
水溶液热力学数据表(Molar Thermodynamic Properties of Aqueous Solute)(免费)
碳纳米管的物理性质 (Physical Properties of Carbon Nanotubes by Thomas A. Adams II)
陶瓷材料参考指南, Reference Guide Index(免费)
物理、化学数据源介绍(Indiana University)
物性数据库PHYSPROP
相图计算软件MTDATA
一些物质的熔点、冰点等
应用化学数据库(免费)
英国化学数据服务中心CDS (Chemical Database Service)
油水分配系数LogP库演示版本(免费)
有机化合物数据库Organic Compounds Database, Virginia Tech
预测LogP和LogW(免费)
元素的电离能、电子亲和性、电负性数据表
原油性质数据库(Oil Properties Database)(免费)
CCD (Chapman & Hall/CRC Combined Chemical Dictionary)(部分免费)
Landolt-Bornstein Online
Four knovel Chemical References Free to Academe(2003-01-24)
-
Posted: 2007-06-16 10:57
| [楼 主]
快速跳至 >> 论坛导航 |- 论坛公告栏 |- 书园制度版 |- 新手学园 >> 友情求助区 |- 专家找书 |- 期刊论文求助 |- 悬赏求助 |- 你问我答 >> 检索讨论区 |- 检索方法探索 |- 文献资源销售专区 |- 中文文献资源 |- 外文文献资源 >> 资源共享区 |- FTP联盟 |- BT资源专区 |- 网络资源 >> 专业交流与互助 |- 计算机技术 |- 大型专业软件交流 |- 读书软件交流 |- 外语学习 |- 网络经管 |- 法律之窗 |- 书园法律援助中心 |- 生命科学 |- 教学相长 >> 读书交流 |- 学术妙笔 |- 众趋堂 |- 读书参考 |- 文学原创 |- 学苑书林 >> 社区交流 |- 书园茶社 |- 转贴 |- 抗震救灾,众志成城 |- 多媒体空间 |- 北京2008 |- 书园风云录 >> 站务管理 |- 网站建设 |- 项目活动组 |- 认证会员申请与考察区 >> 会员认证区 |- 初级认证区 |- 中级认证区 |- 群英会 >> 博客区 |- 强国梦 |- 空山 |- 秋爽斋 |- 淡泊草 |- 水清木华 |- 书园旧梦
网上读书园地论坛 ? 网络资源
快速发帖 顶端
内容
HTML 代码不可用
Wind Code Open
[img] - Open
[flash] - Close
匿名帖
隐藏此帖
出售此帖
加密此帖
使用签名 Wind Code自动转换 字数检查 恢复数据
按 Ctrl+Enter 直接提交 表情
[更多]
ASPEN中NIST数据库的使用即物性数据查寻。
ASPEN 中 NIST 数据库的使用
ASPEN 中的 NIST 数据库可以查询二元物性参数,也可以查询纯物质参数,二院物性参数的查询论 Step1 输入组分
Step2 选择物性方法
Step3 执行物性估算
Step4 点击 NIST
Step5 选择 pure ,二元估算选择 Binary mixture
Step6 点击 evaluate NOW
Step7 查看结果,图中 TPT 即为苯的三相点
所查寻的数据英文可以一起全部复制和百度翻译。
数据库 step1
step2
step4
Step5
Step7
Name Description OMEGA Pitzer acentric factor
ZC Critical compressibility factor VC Critical volume
TC Critical temperature
DNLEXSAT TDE expansion for liquid molar density
MUP Dipole moment
HFUS Heat of fusion
DHVLTDEW TDE Watson equation for heat of vaporization DGFORM Gibbs energy of formation (ideal gas)
CPSTMLPO ThermoML polynomials for solid Cp
CPIALEE TDE Aly-Lee ideal gas Cp
CPLTMLPO ThermoML polynomials for liquid Cp
DHFORM Heat of formation (ideal gas)
MW Molecular weight
TB Normal boiling point
FREEZEPT Freeze point temperature
DELTA Solubility parameter @ 25 C
SG Specific gravity
VLSTD API standard liquid molar volume
SIGTDEW TDE Watson equation for liquid-gas surface tension KVTMLPO ThermoML polynomials for vapor thermal conductivity KLTMLPO ThermoML polynomials for liquid thermal conductivity TPT Triple point temperature
PSTDEPOL TDE polynomials for solid vapor pressure
WAGNER25 TDE Wagner 25 liquid vapor pressure
MUVTMLPO ThermoML polynomials for vapor viscosity
MULNVE TDE equation for liquid viscosity
FAMILY Compound family name
SUB FAMILY Compound sub family name
OMEGA Pitzer acentric factor
欧米茄 Pitzer 偏心因子
ZC Critical compressibility factor
ZC 临界压缩因子
VC Critical volume
VC 临界体积
TC Critical temperature
超导临界温度
DNLEXSAT TDE expansion for liquid molar density
液体的摩尔密度 dnlexsat TDE膨胀
MUP Dipole moment
MUP 的偶极矩
HFUS Heat of fusion
超声热融合
DHVLTDEW TDE Watson equation for heat of vaporization dhvltdew TDE沃森方程的汽化热
DGFORM Gibbs energy of formation (ideal gas)
dgform 生成吉布斯能(理想气体)
CPSTMLPO ThermoML polynomials for solid Cp
cpstmlpo ThermoML的多项式的固态 CP
CPIALEE TDE Aly-Lee ideal gas Cp
cpialee TDE阿里李理想气体的 CP
CPLTMLPO ThermoML polynomials for liquid Cp
cpltmlpo ThermoML液体 CP 多项式
DHFORM Heat of formation (ideal gas)
形成 DhForm 热(理想气体)
MW Molecular weight
MW 分子量
TB Normal boiling point
结核病的正常沸点
FREEZEPT Freeze point temperature
freezept 冻结点温度
DELTA Solubility parameter @ 25 C
三角洲 “25 C的溶解度参数
SG Specific gravity
比重
VLSTD API standard liquid molar volume
vlstd API标准液的摩尔体积
SIGTDEW TDE Watson equation for liquid-gas surface tension sigtdew TDE沃森方程的液 -气表面张力
KVTMLPO ThermoML polynomials for vapor thermal conductivity kvtmlpo ThermoML的多项式的蒸气导热系数
KLTMLPO ThermoML polynomials for liquid thermal conductivity
kltmlpo ThermoML的多项式液体导热系数
TPT Triple point temperature
TPT 三相点温度
PSTDEPOL TDE polynomials for solid vapor pressure pstdepol TDE多项式的固体的蒸气压
WAGNER25 TDE Wagner 25 liquid vapor pressure wagner25 TDE瓦格纳 25液体的蒸气压
MUVTMLPO ThermoML polynomials for vapor viscosity muvtmlpo ThermoML的多项式的气相粘度
MULNVE TDE equation for liquid viscosity
液体的粘度 mulnve TDE方程
FAMILY Compound family name
族化合物的姓
SUB FAMILY Compound sub family name
亚族化合物亚家族的名字
基于VB6.0和Access数据库的物性数据查询软件
第28卷 第2期 2011年2月28日
计算机与应用化学
Computers and Applied Chemisny
Vbl.28.No.2 Febma吼2011
基于VB6.0和Access数据库的物性数据查询软件
杨金杯,余美琼,陈玉成,陈秀宇,陈文韬
(福建师范大学福清分校生物与化学工程系,福建,福州,350300)
摘要:化工计算中经常用到大量的物性数据,这些数据一般通过手工查询物性手册的方法得到,具有费时耗力的缺点。为解决 这一问题,本文利用vB6.O和Access数据库开发了可准确查询1692种物质的物性参数的软件。可查询的物性参数包括常规性 质,如英文名、cAS号、结构简式、分子量、熔点和沸点等,以及多种随温度变化的数据,如饱和蒸气压、液体热容、理想气 体热容、液体粘度、气体粘度、液体导热系数、气体导热系数、汽化焓、液体密度、表面张力和第二维里系数等。经与《石油 化工基础数据手册》对比,证明软件所提供的数据准确可靠。本文详细介绍了随温度变化的数据的温度关联式、软件设计结构 和软件窗体界面等。本软件界面友好,使用方便,可移植性强。通过http:,/iask.sina.com.cnMl204072750/ish提供下载交流。 关键词:物性数据:软件;Ⅶ6.O:Access数据库
中图分类号:TQ013.1;06.39文献标识码:B 文章编号:100l-4160(2011)02.249.252
1引言
化工实验及实际化工过程中都涉及到大量的计算, 计算中需用到许多组分多个参数的物性数据,如不同温 度下的导热系数、饱和蒸气压、汽化焓、热容、密度、 表面张力和粘度等,这些物性数据一般是通过人工查询 各种物性数据手册【l弓】的方法得到,随温度变化的物性参 数还需查阅图表,存在工作量大、花费时间长和人工读 图误差大等缺点。虽然现在可以通过一些化工流程模拟 软件进行查询,如Aspcn的Aspen Pr叩enies Database MaIlager、Pro II的Thenno Data Manager等,但这些软件 价格昂贵且需通过培训才能进行操作。为此,本文利用 vB6.0和Access数据库开发出可查询1692种物质各种物 性数据的软件。可查询的物性数据包括常规性质和多种 随温度变化的物性数据,如饱和蒸气压、液体热容、理 想气体热容、液体粘度、气体粘度、液体导热系数、气 体导热系数、汽化焓、液体密度、表面张力和第二维里 系数等。本软件通过安装程序制作软件Wise Installation System v9.02制成安装软件包,安装后可脱离Ⅶ环境运 行,查询方便,结果准确。
2物性参数关联式简介
本软件物质总数是1692种,可查询常规性质,还可 查询各种常用随温度变化的物性参数。这些物性参数与 温度的关联式如下所示。
(1】饱和蒸气压的关联式
D
y=exp(4+导+clIl(r)+JD丁5) (1) 式中,K饱和蒸汽压,Pa;扎温度,K;彳,晟是系数。 (2)液体热容的关联式
】,=彳+曰丁+Cr2+D丁3+Er4(2) 式中,K液体热容,J/(kmol?K):乃温度,K;爿,E是 系数。
(3)理想气体热容
】,=爿+曰
C
r
sinh里
丁
+JD
E
r
cosh鱼
r
或式(2)所示。
式中,y.理想气体热容,J/(kln01?K):r:温度,K;4, E是系数。
注:同一个物性参数有2个关联式是由于不同的物 质使用的关联式不同,下同。
(4)液体粘度的关联式
表达式如(1)所示。
式中,K液体粘度,Pa?s;乃温度,K;彳,E是系数。 (5)气体粘度的关联式
y一
生三:
。
J+里+里 (4) Z’ Z’
式中,y:液体粘度,Pa?s;乃温度,K:彳,E是系数。 (6)液体导热系数的关联式
表达式如(2)所示。
式中,K液体导热系数,W/(m?K);兀温度,K:彳,E 是系数。
收稿日期:20lO一05.1l:修回日期:20lO.08-17
基金项目:福建省教育厅科研资助项目(JBl0202);校科研资助项目(1(Y2叭0015).
作者简介:杨金杯(1984一),男,福建人,硕士,助教,化学工程专业,主要从事传质与分离方面研究,E-mail:y蛐giinbei@yalIoo.com.∞. 陈文韬(1969一),男,福建人,在职博士,教授级高工,生物化工专业,主要从事生化分离方面研究.
万方数据
(7)气体导热系数∞关联式
寝选止如H1所示。
式巾.r气体导热系数,wHm K1;T:温崖.k』.E 是系数。
f81汽化焙的戈联式
y=』(I.‘)。吡‘。Fm’ (5) 式巾.n汽化持,JmmoI r:埘比温度;L=Ⅳ野;^. F足系数。
(9)液体密度的咒联武
月
”了可 ‘6) 口 ‘
式中.y:滴休鬻鹰.kmoI^一:L:埘比溢度.‘=”矗: d.D是系数。
c101表面张打的盖联式
表达式如(51所m。
式-h y:表丽张山.N,m;L:对比温度:L=”n:』, £是系数:
(111毓=维嚷系数的*鞋式
一+;+;+导+事 ∽ 式中.y:第维里系敦.秆mmoI r:温度.K H.E 足系数。
3软件设计
3.1编程工具简介
Ⅵs岫l跏s”6O(简称vB60)””址微软Jr发的1种简十易学的缩程』具.采用面向埘象的群序设计.辅 wlndow界面蝙程的复杂什封粘起来.%c、Fon扭n等 语。j相比.可u_f;:挫、释茹地编写wlndow摊忤甲台r 的应州科序.崮此得到J泛应用”“;程序应用者H坚在 n』桃化舯宙体r琏择操作娄型兢可得到结果。
32软件主要内窖
率软件数据库中音宵1692仲物质,町盘询多种物质 参数,包括常规性质鲫英立辐、c^s号、结构简式、分 于最,熔点、沸点、临界爪力、临界渝鹰、临抖体积、 偏心凼r、临界睢缔【N r、偶擞&+、“、推蛄、n¨}焓、 绝对墒,溶解参数、折光串和等张比释等.迁tⅡ^询各 种常用的辅温度变化的数槲.如饱和蘸气压、液体热锌、 理息气体热存、渣体粘度、q体拈度、渣体导热系数、 ’t傩导热系致、K化蚺、泄体楫度、表面张力和第j维 ‘H系数等
33软件构造
戟¨足由后台存储物州数据的Access敬据库和前台 川vB6O编q的请啪拌删2踯分nl城的,通过vB6O的 AD0(Acn坩DmaoblccI眦)数据访¨对象业矗虐绥关 系,堙取后台数据输送缭前台。物性数拊阼内再种物质 的物性.经1』《石油化I’基础数姗f册》等下册对比. 证明参数准确可菲”“。
3.4软件主要特点
(1)物性数据准确可靠:(2)软件安装后可脱离vB 环境盘wmdows{t何版奉F运行;(3)界面友好.姊]’ 操作:(4)多种榆索片式.舟咖疗但.(5)呵旺意设择各 种物性参数啦位,井儿打记忆功能(6)可将物他参数输 lI{葶word、Excd.数据穆植rk强。
4软件窗体介绍
41软件主窿体
丰戟什k宙件如Ig I所示,窗体琐部的荣单拦有“文 件”、“编辑”、“^询”,“瞪挂”和“帮助”s项.提供 了一些常丌J的指令.如物性参数的导化.坦}}!软件、商 询方式的选样、肌值设揽、界而设援、帮助等。柴单栏 F晰足}个快挺进定物质曲Ji具r!.可使川”F扎袋单快 速选择持商询的物质.町“接牲受’|文车框中输入待查 询的中文名进行A啕.也可{±用按钮组合切换副第1个、 前1个、后l十和最后1个序号时麻的物质.存文本椎 中输入物质序廿叫乍后亦-¨前往。]‘搀栏F面是含有12个选项#的容器,需要矗嘲粜1个参数时d接点击相应 的选项#即可。“常规性质”内的结构简式前盟_^击弹m 另外1个宙体进ff蠢看.如图2所求。
*-●■■&侧H蚓=::■●70,,:i 霹罩晕囊睡譬蜀誊葛望警黪馨摹 }■■■■“■j~。■■■■盈;_g—n I■■《;;誓, 。 ’,■■■甲一o… I--■g哆,一≯、二■—_孵。::t划 [■■●■■畸。二 i●■■■■;■
}曩哆go孽“_一‘■舅瞄幕s!19宝l l■■■女蔓#?Z。。∥曼■同型咧 I■■■■嗣{■畴,一’■■●■j¥1蚓 『■■—■*孵 ’z舅■■■¥铡,l I、。■舅寰晦—孵o,÷勇■舅曼嘲
卜■■■-一■_孵≯。■■■o舁,jj瑚 l■■■■尊■■i二'■■■‘群耘Ⅻ
r{91Maml…f 3afI—
mI#“11#Ⅲ
42物质榱索窗体
点击软¨l窗休的“乔询”菜单,任选1种奇啕方 式即可进^物质椅索宙体.如斟3所4c,戟忭提供的查 询方式有4种.竹刺足“中文检索”、‘英主检索i“cAs 号腧索”和“化学,℃椅索”冉精确和模档2补匹配方式。 各种奇询厅式郝有历生逆采,可点击下}t描钮^箭。这 样对于墓蚌缔常存询的物质町直接点击F柑集中快速选 择.而小刚艰艇输^.“f提商A掏述度.冉艇操作.肖 软件使用时间较长历史记录较多.t,】A。
万方数据
20lI 28(2) *☆*m*J:vB60#^瞄,&镕*∞#nAW☆Ⅻ#” 25搜索让?女”拄目I进行浦窄
“82船簇::::畿r“”。
“…黼。渊嚣瓣…““
J 3单位设量窗体
点击轼件t窗体的“醴盟”蔡叽.垃择“衅他改霄” 矧cⅡ进^单恤啦霄谢体.如圉4所di。通过该窗体nf以 设髓再种物
Flg』F口m O“n…lng
cⅥ4nn&Wm镕
44界面设置窗体
点山软f{l慵休的“设截”萍单.选择“弹面改越” 即”r进入羿而设疆宙体.如I*5所示。通过该宙体可l:l 主设咒备宙仲的顿色以及所有拄件的觑邑,^。b“戡认 觏色“*4恢艇午默认的颤色。
FⅢ5F…rⅢcrke col“
Ⅲ5¨☆%&口*
45查询窗体
点ai戟件主窗体中陆溢鹰变化的选蹦p.如“饱和 燕7“E’.则iU现物性参数的关联式以肚系数的值.点.h 进项*中“舟询”按钮.唧一d避入查询宙休.如雕6所 示。州ril f鼎足物州咎敏。'温瞳的曲线阿,n:宙件A r 部删噍他料输^待卉温度+即“n1.尊砌性窜数的仳。温 度厦物性参数的啦能?,r颅先n“竹能殴性”甜体巾设矬, 帆可n此世任意巫改,数蛆可自动变化.便十蛮际应川. 4j软件下载
奉转n的游代讲世迎过w啪InsⅢIm嗍svstcm v902制成的童装软件包可免费F载(下拽地址: htl口“J“k sl响…c““l 204钾2750船h).洪牛州夸学+仆砍迎批计指正。
5结沧
“86点喘嚣并;:F““
小立丌麓的这敏物性数掘☆咖软件其仃咀下特点: (11利用nr规化语÷ivB60.采用^r)o数批访M埘 蒙和l“向埘致的编群技术所编q的物什数据什询软“. Jlfr抖☆1度奸.撵n。靠地.蛮川rE强和运¨稳定等优^。 12'通过安装枉』F制作软件w∽lns训a¨on sysIcm 帅02%4成立装轼什包.轼忭宣馥后-,r脱离vB环境运仃. 《3)软仆可推确卉询1692种物质的物悱数据.乜赫 常规rE质和多种随温地盘化的物性数据。”f打蚀、准确 地为化I:If辟提供再剥一物惟敬擗.
万方数据
252计算机与应用化学 2011,28(2)
Refbrences:
l Lu Hu孤吐ang.Handbook of Fulld锄en诅l Data for Pe仃ochemical Engineering.Be司ing:Ch锄ical lndus移Press,l 982.
2Ma Peisheng.Handbook of Fundamemal Data fIor pe廿DchemicaI Engineering(Seque【).Beijing:Chemical Industy Press,1993. 3w{mg Songhall.HaIldboOk of Pe仃och锄ical Engine谢ng Design (First
vol啪e Fund锄ental Data for Pe昀chemical Engineerin曲. Beiiing:ChemicalIndusty Press,2002.
4Jiang Fangshuai.Whole Smltegy Guide Book ofⅥslIal Basic 6.O. Be巧ing:chjnese water conservaIlcy锄d Hydroelecmc Power Press.2000.
5zh肌g zhilong.Dat{山器e Program 0f Visual B髓ic 6.O.Hefei:The China Science Indus咄
6Hu锄g shihuang,Ru舭Qi aIld Ye Challgshen.The study aIld 印plication courseware.Computers and Applied Chemis%2003, 20(1):94—96.
7Qiu Ting,Whg Lianen,Ma Peisheng,et a1.Development of the softwaI_e of LLE correlation and prediction usingⅥsual Basic. Con巾uter3and Applied Chemisty'2002,19(3):263—266. 中文参考文献
1卢焕章.石油化工基础数据手册[M】.北京:化学工业出版社, 1982.
2马沛生.石油化工基础数据手册(续编)[M1.北京:化学工业出 版社,1993.
3王松汉.石油化工设计手册(第1卷石油化工基础数据)【M】.北 京:化学工业出版社,2002.
4蒋方帅.visual Basic 6.0全攻略宝典【M】.北京:中国水利水电 出版社,2000.
5张志龙.Ⅵsual Basic 6.0实用数据库编程【M】.合肥:中国科学 技术出版社.1999.
6黄诗煌,阮奇,叶长桑.化工原理课程优化设计多媒体CAI课 件的开发与应用【J].计算机与应用化学,2003,20(1):94—96. 7邱挺,王良恩,马沛生.用Visual B髂ic 6.O开发液.液相平衡关 联与预测计算软件[J】.计算机与应用化学,2002,19(3): 263.266.
DeVelopment of the software lIor inquiring physical property data with VB6.0 and access database
、陀ng Jinbei,Yu MeiqiOng,Chen Yucheng,Chen Xiuyu and Chen WentaO
(D印arnIlem 0fBiolo西cal a11d Chemical Engine嘶ng,Fuqing Branch ofFujian No啪al uniVersi吼F、l吐ou,350300,Fuji锄,China) Abstract:In me pmcess ofch洲cal engineering related calculation,la唱e啪olHlt ofphysical property data is usually needed.The tmditional way to find tllese data is checkinE f如m chemical h锄dbook,which is of course time consuIrIing.In order to cmck mis hard nut,me sofhvare for inquiring physical pmpertv data of l 692dif诧rent compounds was developed witll VB6.O and Access database.Th.ough mis soRware,user c锄inquire not only cOnventional properties but also propenies which are dependent on ternperan鹏.The conven廿onal properties related are English n锄e,CAS number' shon fornl,molecular wei曲t,melting point,boiling poim,and so on,while山e tempemture dependent pmpenies include Vapor pressure,liquid heat c印aci吼ideal gas heat capaci以liquid viscosi吼g弱viscosi吼liquid mernlal conductivi吼gas memal conductiVi吼heat of Vaporization,liquid density’surface tension and second v浦al coefficient.The infonIlation is proved to be accurate and reliable when cor玎【pared wi血,z口丹d60D七D, 凡l竹出m£九缸,眈缸向r Pef,.Dc^P小fc口,E睫鲥一Per拥2.The soRware has衔endly interfaces and is convenient and portable.It can be downloaded行om ht七D://iasI£.sina.com.cIl/u,1204072750/ish.
Keywords:Dhysical proper哆data,sonware,VB6.O,Access database
(Received:2010一05—1l;ReVised:2010一08一17) 万方数据
数据库SQL试题
一、选择
1.设有订单表order(其中包含字段:订单号,客户号,职员号,签订日期,金额),删除2002
年1 月1 日以前签订的订单记录,正确的SQL 命令是(c ) A)DELETE TABLE order WHERE 签订日期<{^2002-1-1} b)delete="" table="" order="" while="">{^2002-1-1}><{^2002-1-1} c)delete="" from="" order="" where="">{^2002-1-1}><{^2002-1-1} d)delete="" from="" order="" while="">{^2002-1-1}><{^2002-1-1}>{^2002-1-1}>
题使用该表。 下表是用list 命令显示的“运动员”表的内容和结构,2~4
2. 为“运动员”表增加一个字段“得分 n(3)”的SQL 语句 Alter table 运动员 add 得分 n(3)
3. 计算每名运动员的“得分”(2题增加的字段)的正确SQL 语句是( ) Updata 运动员 set 得分=2*2分球+3*3分球+罚球
4. 检索“投中3 分球”小于等于5 个的运动员中“得分”最高的运动员的“得分”,正确的
SQL 语句是( )
Select max(得分) from 运动员;
Where 投中3分<=5>=5>
6. 已知:选课.DBF:学号(C,8),课程号(C,3),成绩(N,5,1) 查询选修课程号为“10101”的课程得分最高的同学的学号,正确的SQL 语句是( ) Select 学号 from 选课
Where 课程号=‘10101’and
成绩=;
(select max(成绩) from 选课
Where 课程号=‘10101’)
第二种方法 ,,,
Select top 1 学号 from 成绩
Where =10101 课程号‘’
Order by desc 期末
注:要求 order by 需要出现在 select 里面
7. 设有学生表S(学号,姓名,性别,年龄),查询所有年龄小于等于18 岁的女同学,并按年龄进行降序排序,生成新的表WS,正确的SQL 语句是
Select *from s;
Where = and <=18>=18>
Order by 年龄 desc;
Into table ws
8. 设有学生选课表SC(学号,课程号,成绩),用SQL检索 同时选修课程号为“C1”和“C5”的学生学号的正确命令是
Select 学号 from sc;
Where 课程号=‘c1 ’and 学号 in
(select 学号 from sc ;
Where 课程号=‘c5’)
9. 设有学生表S(学号,姓名,性别,年龄)、课程表C(课程号,课程名,学分)和学生选课表SC(学号,课程号,成绩),检索学号、姓名和学生所选课程的课程名和成绩,正确的SQL 语句是 Select 学号,姓名,课程名,成绩;
From 学生表S, 课程表C, 学生选课表SC;
Where 学生表S.学号=学生选课表SC.学号 and (课程表C.课程号=学生选课表SC.课程号)
已知当前盘当前目录下有数据库“大奖赛.dbc”,其中有数据库表 歌手(歌手号 c(3),姓名c(8)) 及 评分(歌手号c(3),分数n(6,2),评委号c(3))”
10.为“歌手”表增加一个字段“最后得分 n(6,2)”的SQL 语句是( ) Alter table 歌手 add 最后得分 n(6,2)
10.插入一条记录到“评分”表中,歌手号、分数和评委号分别是“101”、9.9 和“105”,正确的SQL 语句是( )
Insert into 评分(歌手号,分数,评委号)values(‘101’,9.9,’105’)
11. 假设每个歌手的“最后得分”的计算方法是:去掉一个最高分和一个最低分,取剩下分数的平均分。根据“评分”表求每个歌手的“最后得分”,并存储于表TEMP 中,表TEMP 中有两个字段:“歌手号”和“最后得分”,并且按最后得分降序排列,生成表TEMP 的SQL
语句是( )
Select 歌手号,(sum(分数)-min(分数)-max(分数))/(count(*)-2));
From 评分;
Group by 歌手号;
Order by 最后得分 desc;
Into table temp
12. 为“评分”表的“分数”字段添加有效性规则:“分数必须大于等于0 并且小于等于10”,正确的SQL 语句是( )
(1)Alter table 评分 alter 分数 n(6,2) check 分数>=0 and ;
分数<=10>=10>
13. 根据“歌手”表建立视图myview,视图中含有“歌手号”左边第一位是“1”的所有记录,正确的SQL 语句是
Create view myview as ;
Select * from 歌手 where 歌手号 like ‘1%’
14. 删除视图myview 的命令是
Drop view myview
15. 为“成绩”表中“总分”字段增加有效性规则:“总分必须大于等于0并且小于等于750”,正确的SQL语句是:
Alter TABLE成绩ALTER总分 set check 总分>=0 AND总分<>
二、综合
1,2题 使用如下关系:
客户(客户号,名称,联系人,邮政编码,电话号码)
产品(产品号,名称,规格说明,单价)
订购单(订单号,客户号,订购日期)
订购单名细(订单号,序号,产品号,数量)
1、查询客户名称中有“网络”二字的客户信息的正确命令是( ) Select * from ; 客户
Where like ‘%%’ 客户名网络
2、查询尚未最后确定订购日期的客户有关信息的正确命令是( ) Select 客户号,名称,联系人,邮政编码,电话号码;
From 客户,订单号;
Where 客户.客户号=订单.订单号 and 订单.订单号 is not in; (select distinct 订单号 from 订购单名细)
3、已知有三个数据库表,结构如下所示:
职员.dbf:职员号C(3),姓名C(6),性别C(2),组号N(1),职务C(10) 客户.dbf:客户号C(4),客户名C(36),地址C(36),所在城市C(36) 订单.dbf:订单号C(4),客户号C(4),职员号C(3),签订日期D,金额N(6.2) (1) 查询姓”张”的职员的职员号,姓名,性别及职务
(2) 查询订单数在3 个以上、订单的平均金额在200元以上的职员号
(3) 查询2005年1月1日后签订的订单,显示订单的订单号、客户名以及签订日期 Select 职员号 from 订单;
Group by 职员号;
Having count(*)>3 and avg(金额)>200;
And 签订日期>={^2005-1-1}
(4) 查询没有签订任何订单的职员信息(职员号和姓名),并按职员号降序排序 Select 职员号,姓名 from 职员;
Where 职员号 not in
select distinct from (职员号订单)order by desc 职员号
1.以下关于“查询”的正确描述是(D ) A)查询文件的扩展名为prg B)查询保存在数据库文件中
C)查询保存在表文件中
D)查询保存在查询文件中
2.在Visual FoxPro 中视图可以分为本地视图和 视图。
3. 视图不能单独存在,它必须依赖于(B ) A、视图 B、数据库 C、数据库表 D、查询
4. 关于视图和查询,以下叙述正确的是( C) A)视图和查询都只能在数据库中建立 B)视图和查询都不能在数据库中建立 C)视图只能在数据库中建立
D)查询只能在数据库中建立
数据库事务
数据库事务
一、事务的概念
事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 例如:A ——B 转帐,对应于如下两条sql 语句
update from account set money=money+100 where name='B'; update from account set money=money-100 where name='A'; 二、MySQL 数据库中操作事务命令 1、编写测试SQL 脚本,如下:
1 /*创建账户表*/ 2 create table account(
3 id int
primary key auto_increment, 4 name varchar (40), 5 money float 6 ); 7
8 /*插入测试数据*/
9 insert into account(name,money ) values ('A' , 1000); 10 insert into account(name,money ) values ('B' , 1000); 11 insert into account(name,money ) values ('C' , 1000);
下面我们在MySQL 数据库中模拟A ——B 转帐这个业务场景 2.1、开启事务(start transaction)
使用"start transaction"开启MySQL 数据库的事务,如下所示:
1 / 14
我们首先在数据库中模拟转账失败的场景,首先执行update 语句让A 用户的money 减少100块钱,如下图所示:
然后我们关闭当前操作的dos 命令行窗口,这样就导致了刚才执行的update 语句的数据库的事务没有被提交,那么我们对A 用户的修改就不算是是真正的修改了,下次在查询A 用户的money 时,依然还是之前的1000,如下图所示:
2.2、提交事务(commit)
下面我们在数据库模拟A ——B 转账成功的场景
2 / 14
我们手动提交(commit)数据库事务之后,A ——B 转账100块钱的这个业务操作算是真正成功了,A 账户中少了100,B 账户中多了100。 2.3、回滚事务(rollback)
3 / 14
通过手动回滚事务,让所有的操作都失效,这样数据就会回到最初的初始状态! 三、JDBC 中使用事务
当Jdbc 程序向数据库获得一个Connection 对象时,默认情况下这个Connection 对象会自动向数据库提交在它上面发送的SQL 语句。若想关闭这种默认提交方式,让多条SQL 在一个事务中执行,可使用下列的JDBC 控制事务语句
? ? ?
Connection.setAutoCommit(false);//开启事务(start transaction) Connection.rollback();//回滚事务(rollback) Connection.commit();//提交事务(commit)
4 / 14
3.1、JDBC 使用事务范例
在JDBC 代码中演示银行转帐案例,使如下转帐操作在同一事务中执行 "update account set money=money-100 where name='A'" update account set money=money+100 where name='B' 代码如下:
1 package me.gacl.demo; 2
3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import me.gacl.utils.JdbcUtils; 8 import org.junit.Test; 9 10 /**
11 * @ClassName: TransactionDemo1 12 * @Description:
13 * JDBC中使用事务来模似转帐 14 create table account(
15 id int primary key auto_increment, 16 name varchar(40), 17 money float 18 );
19 insert into account(name,money) values('A',1000); 20 insert into account(name,money) values('B',1000); 21 insert into account(name,money) values('C',1000); 22 * @author: admin
23 * @date: 2014-9-22 下午11:16:17 24 * 25 */
26 public class TransactionDemo1 { 27 28 /**
29 * @Method: testTransaction1
30 * @Description: 模拟转账成功时的业务场景 31 * @Anthor:admin 32 * 33 */
5 / 14
34 @Test
35 public void testTransaction1(){ 36 Connection conn = null ; 37 PreparedStatement st = null ; 38 ResultSet rs = null ; 39 40 try {
41 conn = JdbcUtils.getConnection();
42 conn.setAutoCommit(false ); //通知数据库开启事务(start transaction) 43 String sql1 = "update account set money=money-100 where name='A'"; 44 st = conn.prepareStatement(sql1); 45 st.executeUpdate();
46 String sql2 = "update account set money=money+100 where name='B'"; 47 st = conn.prepareStatement(sql2); 48 st.executeUpdate();
49 conn.commit();//上面的两条SQL 执行Update 语句成功之后就通知数据库提交事务(commit) 50 System.out.println("成功!!!"); //log4j 51 }catch (Exception e) { 52 e.printStackTrace(); 53 }finally {
54 JdbcUtils.release(conn, st, rs); 55 } 56 } 57 58 /**
59 * @Method: testTransaction1
60 * @Description: 模拟转账过程中出现异常导致有一部分SQL 执行失败后让数据库自动回滚事务 61 * @Anthor:admin 62 * 63 */ 64 @Test
65 public void testTransaction2(){ 66 Connection conn = null ; 67 PreparedStatement st = null ; 68 ResultSet rs = null ; 69 70 try {
71 conn = JdbcUtils.getConnection();
72 conn.setAutoCommit(false ); //通知数据库开启事务(start transaction) 73 String sql1 = "update account set money=money-100 where name='A'"; 74 st = conn.prepareStatement(sql1);
6 / 14
75 st.executeUpdate();
76 //用这句代码模拟执行完SQL1之后程序出现了异常而导致后面的SQL 无法正常执行,事务也无法正常提交,此时数据库会自动执行回滚操作 77 int x = 1/0;
78 String sql2 = "update account set money=money+100 where name='B'"; 79 st = conn.prepareStatement(sql2); 80 st.executeUpdate();
81 conn.commit();//上面的两条SQL 执行Update 语句成功之后就通知数据库提交事务(commit) 82 System.out.println("成功!!!"); 83 }catch (Exception e) { 84 e.printStackTrace(); 85 }finally {
86 JdbcUtils.release(conn, st, rs); 87 } 88 } 89 90 /**
91 * @Method: testTransaction1
92 * @Description: 模拟转账过程中出现异常导致有一部分SQL 执行失败时手动通知数据库回滚事务 93 * @Anthor:admin 94 * 95 */ 96 @Test
97 public void testTransaction3(){ 98 Connection conn = null ; 99 PreparedStatement st = null ; 100 ResultSet rs = null ; 101 102 try {
103 conn = JdbcUtils.getConnection();
104 conn.setAutoCommit(false ); //通知数据库开启事务(start transaction) 105 String sql1 = "update account set money=money-100 where name='A'"; 106 st = conn.prepareStatement(sql1); 107 st.executeUpdate();
108 //用这句代码模拟执行完SQL1之后程序出现了异常而导致后面的SQL 无法正常执行,事务也无法正常提交
109 int x = 1/0;
110 String sql2 = "update account set money=money+100 where name='B'"; 111 st = conn.prepareStatement(sql2); 112 st.executeUpdate();
113 conn.commit();//上面的两条SQL 执行Update 语句成功之后就通知数据库提交事务(commit)
7 / 14
114
System.out.println("成功!!!"); 115 }catch
(Exception e) { 116 try {
117 //捕获到异常之后手动通知数据库执行回滚事务的操作 118 conn.rollback(); 119 } catch (SQLException e1) { 120 e1.printStackTrace(); 121 }
122 e.printStackTrace(); 123 }finally {
124 JdbcUtils.release(conn, st, rs); 125 } 126 } 127 }
3.2、设置事务回滚点
在开发中,有时候可能需要手动设置事务的回滚点,在JDBC 中使用如下的语句设置事务回滚点 Savepoint sp = conn.setSavepoint(); Conn.rollback(sp);
Conn.commit();//回滚后必须通知数据库提交事务 设置事务回滚点范例:
1 package me.gacl.demo; 2
3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Savepoint; 8
9 import me.gacl.utils.JdbcUtils; 10 import org.junit.Test; 11 12 /**
13 * @ClassName: TransactionDemo1 14 * @Description:
15 * JDBC中使用事务来模似转帐 16 create table account(
17 id int primary key auto_increment,
8 / 14
18 name varchar(40), 19 money float 20 );
21 insert into account(name,money) values('A',1000); 22 insert into account(name,money) values('B',1000); 23 insert into account(name,money) values('C',1000); 24 * @author: admin
25 * @date: 2014-9-22 下午11:16:17 26 * 27 */
28 public class TransactionDemo2 { 29 30 /**
31 * @Method: testTransaction1
32 * @Description: 模拟转账成功时的业务场景 33 * @Anthor:admin 34 * 35 */ 36 @Test
37 public void testTransaction1(){ 38 Connection conn = null ; 39 PreparedStatement st = null ; 40 ResultSet rs = null ; 41 Savepoint sp = null ; 42 43 try {
44 conn = JdbcUtils.getConnection();
45 conn.setAutoCommit(false ); //通知数据库开启事务(start transaction) 46
47 String sql1 = "update account set money=money-100 where name='A'"; 48 st = conn.prepareStatement(sql1); 49 st.executeUpdate(); 50
51 //设置事务回滚点
52 sp = conn.setSavepoint(); 53
54 String sql2 = "update account set money=money+100 where name='B'"; 55 st = conn.prepareStatement(sql2); 56 st.executeUpdate(); 57
58 //程序执行到这里出现异常,后面的sql3语句执行将会中断
9 / 14
59 int x = 1/0; 60
61 String sql3 = "update account set money=money+100 where name='C'"; 62 st = conn.prepareStatement(sql3); 63 st.executeUpdate(); 64
65 conn.commit(); 66
67 }catch (Exception e) { 68 try { 69 /**
70 * 我们在上面向数据库发送了3条update 语句,
71 * sql3语句由于程序出现异常导致无法正常执行,数据库事务而已无法正常提交, 72 * 由于设置的事务回滚点是在sql1语句正常执行完成之后,sql2语句正常执行之前, 73 * 那么通知数据库回滚事务时,不会回滚sql1执行的update 操作
74 * 只会回滚到sql2执行的update 操作,也就是说,上面的三条update 语句中,sql1这条语句的修改操作起作用了
75 * sql2的修改操作由于事务回滚没有起作用,sql3由于程序异常没有机会执行 76 */
77 conn.rollback(sp);//回滚到设置的事务回滚点 78 //回滚了要记得通知数据库提交事务 79 conn.commit(); 80 } catch (SQLException e1) { 81 e1.printStackTrace(); 82 }
83 e.printStackTrace(); 84 }finally {
85 JdbcUtils.release(conn, st, rs); 86 } 87 } 88 }
四、事务的四大特性(ACID) 4.1、原子性(Atomicity )
原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的SQL 语句,要么全部执行成功,要么全部执行失败
10 / 14
4.2、一致性(Consistency )
官网上事务一致性的概念是:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。以转账为例子,A 向B 转账,假设转账之前这两个用户的钱加起来总共是2000,那么A 向B 转账之后,不管这两个账户怎么转,A 用户的钱和B 用户的钱加起来的总额还是2000,这个就是事务的一致性。
4.3、隔离性(Isolation )
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
4.4、持久性(Durability )
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
事务的四大特性中最麻烦的是隔离性,下面重点介绍一下事务的隔离级别
五、事务的隔离级别
多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。
5.1、事务不考虑隔离性可能会引发的问题
如果事务不考虑隔离性,可能会引发如下问题:
1、脏读
脏读指一个事务读取了另外一个事务未提交的数据。
这是非常危险的,假设A向B转帐100元,对应sql 语句如下所示
1.update account set money=money+100 where name='B';
2.update account set money=money-100 where name='A';
当第1条sql 执行完,第2条还没执行(A未提交时) ,如果此时B查询自己的帐户,就会发现自己多了100元钱。如果A 等B 走后再回滚,B 就会损失100元。
2、不可重复读
不可重复读指在一个事务内读取表中的某一行数据,多次读取结果不同。
例如银行想查询A 帐户余额,第一次查询A 帐户为200元,此时A 向帐户内存了100元并提交了,银行接着又进行了一次查询,此时A 帐户为300元了。银行两次查询不一致,可能就会很困惑,不知道哪次查询是准的。
不可重复读和脏读的区别是,脏读是读取前一事务未提交的脏数据,不可重复读是重新读取了前一事务已提交的数据。 很多人认为这种情况就对了,无须困惑,当然是后面的为准。我们可以考虑这样一种情况,比如银行程序需要将查询结果分别输出到电脑屏幕和写到文件中,结果在一个事务中针对输出的目的地,进行的两次查询不一致,导致文件和屏幕中的结果不一致,银行工作人员就不知道以哪个为准了。
3、虚读(幻读)
虚读(幻读) 是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。
如丙存款100元未提交,这时银行做报表统计account 表中所有用户的总额为500元,然后丙提交了,这时银行再统计发现帐户为600元了,造成虚读同样会使银行不知所措,到底以哪个为准。
5.2、事务隔离性的设置语句
MySQL 数据库共定义了四种隔离级别:
1. Serializable(串行化) :可避免脏读、不可重复读、虚读情况的发生。
2. Repeatable read(可重复读) :可避免脏读、不可重复读情况的发生。
3. Read committed(读已提交) :可避免脏读情况发生。
4. Read uncommitted(读未提交) :最低级别,以上情况均无法保证。
mysql 数据库查询当前事务隔离级别:select @@tx_isolation
例如:
重复读) mysql 数据库默认的事务隔离级别是:Repeatable read(可
mysql 数据库设置事务隔离级别:set transaction isolation level 隔离级别名
例如:
5.3、使用MySQL 数据库演示不同隔离级别下的并发问题
同时打开两个窗口模拟2个用户并发访问数据库
1、当把事务的隔离级别设置为read uncommitted时,会引发脏读、不可重复读和虚读
A 窗口
set transaction isolation level read uncommitted;--设置A 用户的数据库隔离级别为Read uncommitted(读未提交)
start transaction;--开启事务
select * from account;--查询A 账户中现有的钱,转到B 窗口进行操作
select * from account--发现a 多了100元,这时候A 读到了B 未提交的数据(脏读)
B 窗口
start transaction;--开启事务
update account set money=money+100 where name='A';--不要提交,转到A 窗口查询
2、当把事务的隔离级别设置为read committed时,会引发不可重复读和虚读,但避免了脏读
A 窗口
set transaction isolation level read committed;
start transaction;
select * from account;--发现a 帐户是1000元,转到b 窗口
select * from account;--发现a 帐户多了100, 这时候,a 读到了别的事务提交的数据,两次读取a 帐户读到的是不同的结果(不可重复读)
B 窗口
start transaction;
update account set money=money+100 where name='aaa';
commit;--转到a 窗口
3、当把事务的隔离级别设置为repeatable read(mysql默认级别) 时,会引发虚读,但避免了脏读、不可重复读 A 窗口
set transaction isolation level repeatable read;
start transaction;
select * from account;--发现表有4个记录,转到b 窗口
select * from account;--可能发现表有5条记录,这时候发生了a 读取到另外一个事务插入的数据(虚读) B 窗口
start transaction;
insert into account(name,money) values('ggg',1000);
commit;--转到a 窗口
4、当把事务的隔离级别设置为Serializable 时,会避免所有问题
A 窗口
set transaction isolation level Serializable;
start transaction;
select * from account;--转到b 窗口
B 窗口
start transaction;
insert into account(name,money) values('ggg',1000);--发现不能插入,只能等待a 结束事务才能插入 本文作者:xdp-gacl