×
 

缘起---闲逛博客园

前几天的时候,在某一QQ群看到一条消息“XXX酒店开房XXXBTXX迅雷BT下载”,当时是一目十行的心态浏览,目光掠过时,

第一反应我想多了~以为是XX种子(你懂的~),但并不感兴趣。

直到又回到博客园逛时,看到一篇最多评论的文章:

看看多线程的效率有多差劲! - 张浩华 - 博客园

http://www.cnblogs.com/zhhh/p/3385751.html

于是点击进去了。这时,我才回想起来,当时是自己邪想多了......

原来是2000w条开房数据记录的数据库,浏览了文章后,我表示对这2000w感兴趣了!于是,就催生了此文。

结缘---搜索引擎来牵线

看了上面提到的那文章,我决定也要玩一玩,不过那园友有点儿“懒”了,没有提供数据库以及Demo下载。好吧,这时候我们要发挥搜索本领了,几经搜索,最后是Google帮上的忙(百度搜索到的链接很多都已经被和谐了~)。 (温馨提示:近来上级严查水表,各位传播东西需小心~)。

一个小时过去了,1.7GB的压缩文件终于下载完成:

  1. C:\[fuliba.net]某酒店2000W数据(解压密码:sjisauisa是就数据8很舒适好sjjss).rar
  2. 文件大小:1834815332字节
  3. 创建日期:20131024 15:38:55
  4. 哈希值(MD5):091AAC2B45D76CE1CD4248E7FFF1C00E

解压后,约8GB多。

小巫见大巫

面对这千万条数据级别的数据库文件,先来看一看我的本机配置信息:

  1. 操作系统名称 Microsoft Windows Ultimate
  2. 操作系统核心(Kernel)类型 Multiprocessor Free (-bit)
  3.  
  4. Microsoft SQL Server 2008R2
  5. Microsoft SQL Server Management Studio 10.50.1600.1
  6. Microsoft Analysis Services Client Tools 10.50.1600.1
  7. Microsoft Data Access Components (MDAC) 6.1.7601.17514
  8. Microsoft MSXML 3.0 5.0 6.0
  9. Microsoft Internet Explorer 9.10.9200.16686
  10. Microsoft .NET Framework 2.0.50727.5472
  11. Operating System
  12.  
  13. 硬件概要
  14.  
  15. CPU: 英特尔 Core i3-380M (双核)
  16. 主板: 方正 R410CP (英特尔 HM55 (IbexPeak-M DH))
  17. 内存: GBytes
  18. 显卡: ATI (PARK PRO/XT GL)
  19. 硬盘: 东芝 MK3265GSX
  20.  
  21. 处理器信息
  22.  
  23. 处理器: Intel(R) Core(TM) i3 CPU M @ .53GHz
  24. 运行速度: 2533.3 MHz
  25. 核心/线程: 双核, 四线程
  26. 核心代号: Arrandale SV
  27. 功耗: 25.0 W
  28. 插座: Socket G1 (rPGA988A)
  29. 一级缓存: 指令: x KB, 数据: x KBytes
  30. 二级缓存: 集成: x KB
  31. 三级缓存: MB
  32. 特性: MMX SSE SSE SSE SSSE SSE4. SSE4. EMT64 VT EIST TM1 TM2
  33.  
  34. 主板信息
  35.  
  36. 主板厂商: 方正
  37. 主板型号: 方正 R410CP
  38. 芯片组: 英特尔 HM55 (IbexPeak-M DH)
  39. 主板插槽: 2xPCI Express x1, 6xPCI Express x2, 1xPCI Express x16
  40. USB支持: v2.
  41. PCI
  42. BIOS版本: V1.
  43. BIOS日期:
  44.  
  45. 内存信息(总计: GBytes)
  46.  
  47. 内存条1
  48. 内存大小: MB
  49. 内存类型: DDR3 SDRAM
  50. 制造商: 三星
  51. 制造日期: 2010年第39
  52.  
  53. 内存条2
  54. 内存大小: MB
  55. 内存类型: DDR3 SDRAM
  56. 制造商: 三星
  57. 制造日期: 2012年第1
  58.  
  59. 显卡信息
  60.  
  61. 显卡芯片: ATI (PARK PRO/XT GL)
  62. 显存大小: MB of DDR3 SDRAM
  63. 显卡型号: ATI (PARK PRO/XT GL) [宏碁]
  64. 显卡BIOS版本:
  65. 频率: 157.0 MHz
  66.  
  67. 存储信息
  68.  
  69. 存储器1
  70. 控制器: Serial ATA 3Gb/s
  71. 型号: 东芝 MK3265GSX
  72. 容量: , MB ( GB)
  73. 转速: RPM
  74. 缓存: KB
  75. NCQ功能: 支持,
  76. S.M.A.R.T.: 存在, 开启
  77. 48bit LBA: 支持, 开启
  78. 工作时间: 7088小时

测试机配置信息

应该还算可以吧?有点别扭的是在32位系统上硬是要它使用(破解--映射方式)6GBytes的内存,呵呵,会不会有什么后患呢?


之前学习使用的数据库文件多为MDF格式的,直接附加就能使用,但现在这个解压后是.bak格式的,是备份出来的,所以不能以附加的方式进行附加,

而是用【还原】的方式,如图:

也可以尝试用命令的方式还原bak文件并建立到一个新的数据库,(仅供参考,没实践过)

  1. /*
  2. 备份数据DB 到.bak文件。然后利用此bak文件恢复一个新的数据库DBTest。
  3. */
  4. USE master
  5. BACKUP DATABASE DB
  6. TO DISK = 'g:\DBBack0930.bak'
  7. RESTORE FILELISTONLY
  8. FROM DISK = 'g:\DBBack0930.bak'
  9. RESTORE DATABASE DBTest
  10. FROM DISK = 'g:\DBBack0930.bak'
  11. WITH MOVE 'DBTest' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DBTest.mdf',
  12. MOVE 'DBTest_log' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DBTest_log.ldf'
  13. GO

OK!我们就开始还原吧,点击确定之后,我呆住了,机器也似乎呆住了,那还原的状态进度一直(2分钟内)是0,

鼠标光标变成了圆圈忙碌状态,系统瞬间变得很卡,(汗~~在校生,没见过什么大场面,被这还原进度惊呆了,各位不要见笑哦!),

又过了一分钟,终于有反应了,状态的百分比显示20%+,以步进6%左右递增,不会处于“卡死”状态了,

又过了几分钟,终于完成了。以前,课堂练习的附加,还原文件几乎都在秒级完成,几乎没有什么时间等待的概念,

这次可谓见识了什么叫海量(不过,但各位老鸟中,2000w,可能还只是沧海一粟(sù))数据。


还原成功!于是心急着马上查一查心中的她,是否榜上有名了。不加思索,就来了一条SQL语句:

  1. select * from dbo.cdsgus where Name='女神'

噢,又一次惊呆了!在此先省略......字,

慢,别想多了,不是找到了女神的名单,而是电脑再次进入了呆住了的状态,只是查询还在在执行中,一开始,我还以为是内存太小,

CPU太差了,Ctrl+Alt+Del呼唤了任务管理器出来:

上图告诉我,不是CPU,内存的错,也就在这时,一个闪闪的红星引起了我的注意~~

对,你猜对了!就是硬盘的读写状态提示灯,它在飞快的闪烁,平时,它只会偶尔闪闪。于是,我再次从任务管理中调出【资源监视器】来观察情况,

“卡住”的原因找到了,跃然上图,不多说了。以前,很少会关注硬盘IO问题,毕竟经常性地Copy大文件的机会不多。而这次,我才真正关注起硬盘IO问题,在这给自己和各位对IO陌生的朋友补充一下:

读写IO(Read/Write IO)操作

磁盘是用来给我们存取数据用的,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据时候对应的是写IO操作,取数据的时候对应的是是读IO操作。

单个IO操作 当控制磁盘的控制器接到操作系统的读IO操作指令的时候,控制器就会给磁盘发出一个读数据的指令,并同时将要读取的数据块的地址传递给磁盘,

然后磁盘会将读取到的数据传给控制器,并由控制器返回给操作系统,完成一个写IO的操作;

同样的,一个写IO的操作也类似, 控制器接到写的IO操作的指令和要写入的数据,并将其传递给磁盘,磁盘在数据写入完成之后将操作结果传递回控制器,

再由控制器返回给操作系统,完成一个写IO的操作。单个IO操作指的就是完成一个写IO或者是读IO的操作。

 对于经常做网络,服务器的来说,I/O不好反映到网站上就是网站页面加载慢、卡、读取数据库慢,

甚至导致网页打开超时显现。

关于IO瓶颈处理的推荐文章:
Understanding Disk I/O - when should you be worried?
http://blog.scoutapp.com/articles/2011/02/10/understanding-disk-i-o-when-should-you-be-worried

贝塔中的DBA » IO系统性能之一:衡量性能的几个指标
http://www.dbabeta.com/2009/io-performence-01_several-concepts.html

等待了200多s,终于有结果了:

呵呵,终究没有出现女神的名字。

面对这2000w,一条select * from XXX就把我汗颜了,我在想着下一个要查谁的时候,内心一个念头把我拉住了。

不能这样折腾硬盘,伤不起.....


给在校生的练耙场---可以实践检验平时学习的理论知识

【背景】

平时课堂练习的项目,数量都是几十条为主,也不想无聊去自己建立上万条非真实数据去测试。

【实战】

查询一条数据就要等待200多s,你有这样的时间浪费吗?也就在这时,平时学习的理论知识要派上用场了-----【索引】

【四两拨千斤---索引来支招】

上面提到提到了,执行语句:  select * from dbo.cdsgus where Name='女神'  花了200多秒,

假如结果只有一条,各位猜一猜执行:

select top 1 * from dbo.cdsgus where Name='女神'  要花多长时间呢?  --留给各位实践一下。

好吧,为了快速地找到那个她,我们为字段名Name建立索引:

  1. Create Index Index_ByName on dbo.cdsgus(Name) --由于记录多,建立索引的时间很慢,耗时:03:49

上面注释提到建立索引就花了209秒,那它在背后究竟做了什么呢?建立索引后再次查询,为什么会让我再次惊呆呢?

这时,再去查询执行同样的查询,大家猜一下这一次所花的时间,与刚才的耗时对比,又一次让我惊呆了。

平时课堂练习的项目几乎体会不到索引对于检索速度的影响,这次可谓实践,领会了!

天下没有免费的午餐,索引能为我们的检索速度起到了四两拨千斤作用,那么,肯定也是要付出代价的。你知道有何代价么?

在课堂中,关于索引的缺点只有理论的提到几句:

  1. 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
  2. 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
  3. 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

很少试实践证明,即使实践了,由于是几十,百条数据的项目,感受不到。

这次可谓实践了。

针对以上缺点,

第一条,209s 耗费时间这个深有体会了。

第二条,需要占用物理空间,请看以下数据对比:

  1. 未为字段Birthday建立索引前的文件大小:
  2. : ,,, shifenzheng.mdf
  3. : ,, shifenzheng_1.LDF
  4.  
  5. 建立索引后的文件大小:
  6. : ,,, shifenzheng.mdf
  7. : ,, shifenzheng_1.LDF

对于第三条,这里就不实践了,毕竟这个数据库是用来查数据的用的,从第一,二条缺点也可以推断出第三条了。

对于经常用来查询的字段,建立索引的利大于弊,复习一下:

  1. 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
  2. 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
  3. 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
  4. 第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
  5. 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

有了索引后,我们查询就方便多了,大家想不想知道我们的DuDu是否入围呢? 大伙来围观:

  1. select * from dbo.cdsgus where Name='杜勇'
  2. --耗时 4s
  3. --(393 row(s) affected)

篇幅有限,也防和谐,就不在这公布具体数据,嘻嘻!大家想一想,同名的人在国内还是挺多的嘛!

由于我们在这里都是直接对数据库查询,也就不提供应用层的界面了,如Winform,WebFromt等,如果做那些,

要考虑到储存过程,高效分页查询等,所以下文继续只是用SQL语句演示。


疱丁解牛---分析表结构设计

上面从实用主义出发,走的是:下载---》还原---》查询结果,这样的路线,根本没有从底层,结构上的东西去想一想。

嗯,那现们静下心来,看一看这个表设计如何,

  1. Column_name Type Computed Length Prec Scale Nullable TrimTrailingBlanks FixedLenNullInSource Collation
  2. Name yes (n/a) (n/a) Chinese_PRC_CI_AS
  3. CardNo yes (n/a) (n/a) Chinese_PRC_CI_AS
  4. Descriot yes (n/a) (n/a) Chinese_PRC_CI_AS
  5. CtfTp yes (n/a) (n/a) Chinese_PRC_CI_AS
  6. CtfId yes (n/a) (n/a) Chinese_PRC_CI_AS
  7. Gender yes (n/a) (n/a) Chinese_PRC_CI_AS
  8. Birthday yes (n/a) (n/a) Chinese_PRC_CI_AS
  9. Address yes (n/a) (n/a) Chinese_PRC_CI_AS
  10. Zip yes (n/a) (n/a) Chinese_PRC_CI_AS
  11. Dirty yes (n/a) (n/a) Chinese_PRC_CI_AS
  12. District1 yes (n/a) (n/a) Chinese_PRC_CI_AS
  13. District2 yes (n/a) (n/a) Chinese_PRC_CI_AS
  14. District3 yes (n/a) (n/a) Chinese_PRC_CI_AS
  15. District4 yes (n/a) (n/a) Chinese_PRC_CI_AS
  16. District5 yes (n/a) (n/a) Chinese_PRC_CI_AS
  17. District6 yes (n/a) (n/a) Chinese_PRC_CI_AS
  18. FirstNm yes (n/a) (n/a) Chinese_PRC_CI_AS
  19. LastNm yes (n/a) (n/a) Chinese_PRC_CI_AS
  20. Duty yes (n/a) (n/a) Chinese_PRC_CI_AS
  21. Mobile yes (n/a) (n/a) Chinese_PRC_CI_AS
  22. Tel yes (n/a) (n/a) Chinese_PRC_CI_AS
  23. Fax yes (n/a) (n/a) Chinese_PRC_CI_AS
  24. EMail yes (n/a) (n/a) Chinese_PRC_CI_AS
  25. Nation yes (n/a) (n/a) Chinese_PRC_CI_AS
  26. Taste yes (n/a) (n/a) Chinese_PRC_CI_AS
  27. Education yes (n/a) (n/a) Chinese_PRC_CI_AS
  28. Company yes (n/a) (n/a) Chinese_PRC_CI_AS
  29. CTel yes (n/a) (n/a) Chinese_PRC_CI_AS
  30. CAddress yes (n/a) (n/a) Chinese_PRC_CI_AS
  31. CZip yes (n/a) (n/a) Chinese_PRC_CI_AS
  32. Family yes (n/a) (n/a) Chinese_PRC_CI_AS
  33. Version yes (n/a) (n/a) Chinese_PRC_CI_AS
  34. id no (n/a) (n/a) NULL

可以看得出作者很懒,除了主键id,其它字段一律用 nvarchar,长度4000应付,其实看到这里的时候,我有点怀疑这些数据的真实性(是否随意生成)的。

  1. , 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零

验证数据真实性(希望更多朋友提供准确的方式)

带着疑问出发,我用了这个语句来查询:

  1. select * from dbo.cdsgus where Address like 'XX省XXx市XX镇XX村%' --X代表地点名称

呵呵,还真找到了几个熟悉的小伙伴,尚且当它是真的吧。又或者原数据库被人加工、整理过之后,随便建立了一个表保存起来的之后再备份出来放在网上的。

(我就纳闷了,整个备份文件还原之后仅只有一个表~)

说回正题,我们再看看:

  1. Name Owner Type Created_datetime
  2. cdsgus dbo user table   

作者是夜猫子,看一看创建日期: ::21.120。

ID自动增涨列:

  1. Identity Seed Increment Not For Replication
  2. id
  1. index_name index_description index_keys
  2. Index_Birthday nonclustered located on PRIMARY Birthday
  3. Index_ByAddress nonclustered located on PRIMARY Address
  4. Index_ByName nonclustered located on PRIMARY Name
  5. PK_cdsgus clustered, unique, primary key located on PRIMARY id

原本只有id默认主键索引,Name,Address,Birthday是我后来加上的。

  1. constraint_type constraint_name delete_action update_action status_enabled
  2. PRIMARY KEY (clustered) PK_cdsgus (n/a) (n/a) (n/a) (n/a) id

ok!表字段结构我们看完了,尽管这这个数据库只有一个表,表中只设置了一个id主键。但从结果显示中,

我们可以看出,其实有几个字段是作外键使用的,

如下图中的:District1--6,family,id等。

既然了了外键,那么应该还有其它的数据表,希望哪位可以提供上来,呵呵。


天马行空---数据挖掘、分析、利用

数据有了,除了用来练习几个select 语句还能有什么用呢?

这个时候,该发挥我们的天马行空思想了,看一看,想一想里面都有什么了?

由于里面的数据有其真实性,且有了身份证号码,邮箱地址,手机号码......嘿嘿,想到了吧?不要用来做坏事哦!

  • 骗子们得到数据后,可能会用来群发敲诈短信;
  • 广告诉们可能会用来传广告;
  • 数据挖掘专家可能会用来了解各地酒店人口入住人数,年龄阶段,分布时间范围等。
  • ......

我们也来学着分析一下,(在园子里的应该都接触过sql语句,下面直接取样分析)

地区分布:(以北,上,广为例)

  1. select count(*) as '北京' from dbo.cdsgus where Address like '北京%'
  2. select count(*) as '上海' from dbo.cdsgus where Address like '上海%'
  3. select count(*) as '广东' from dbo.cdsgus where Address like '广东%'

结论:留给大家思考......


年龄分布:

  1. select count(*) as '00后' from dbo.cdsgus where Birthday like '20%'
  2. select count(*) as '1990后' from dbo.cdsgus where Birthday like '199%'
  3. select count(*) as '1980后' from dbo.cdsgus where Birthday like '198%'
  4. select count(*) as '1970后' from dbo.cdsgus where Birthday like '197%'
  5. select count(*) as '1960后' from dbo.cdsgus where Birthday like '196%'
  6. select count(*) as '1950后' from dbo.cdsgus where Birthday like '195%'
  7. select count(*) as '1940后' from dbo.cdsgus where Birthday like '194%'
  8. select count(*) as '1930后' from dbo.cdsgus where Birthday like '193%'
  9. select count(*) as '1920后' from dbo.cdsgus where Birthday like '192%'
  10. select count(*) as '1910后' from dbo.cdsgus where Birthday like '191%'
  11. select count(*) as '1900后' from dbo.cdsgus where Birthday like '190%'
  12. select count(*) as '1800后' from dbo.cdsgus where Birthday like '180%'

结果:80后作为主力军,你是否在其中呢?

类似的模糊查询,大家可以灵活变通,如查询客户是移动的用户还是联通的多(根据手机号码前N位),邮箱域名等。

更形象的建模数据挖掘,分析,推荐大家看:

对网上盛传的两千万泄漏数据的简单分析 - 深蓝 - 博客园
http://www.cnblogs.com/studyzy/p/3388887.html
在这,借用一些数据:

年龄阶段分布

省份分布

省份 酒店排行 人口排行 上升名次
江苏 1 5 4
上海 2 24 22
北京 3 26 23
山东 4 2 -2
广东 5 1 -4
浙江 6 10 4
河南 7 3 -4
湖北 8 9 1
辽宁 9 14 5
陕西 10 16 6
河北 11 6 -5
福建 12 17 5
山西 13 18 5
安徽 14 8 -6
黑龙 15 15 0
天津 16 27 11
四川 17 4 -13
江西 18 13 -5
湖南 19 7 -12
吉林 20 21 1
内蒙 21 23 2
重庆 22 20 -2
广西 23 11 -12
甘肃 24 22 -2
贵州 25 19 -6
新疆 26 25 -1
云南 27 12 -15
海南 28 28 0
宁夏 29 29 0
青海 30 30 0
西藏 31 31 0

手机号段分布

139 1399857
138 1230530
135 782764
136 778188
137 683742
186 581451
159 456526
158 434760
133 356135
150 324798

前10大邮箱域名排名:

@qq.com 611842
@163.com 594392
@126.com 274512
@hotmail.com 203237
@sina.com 151798
@yahoo.com.cn 101692
@gmail.com 96346
@139.com 67565
@sohu.com 50179
@yahoo.cn 31274

建议

查询示例到此告一段落,现在网上也有不少人把这数据库作为数据源,可以通过Web页面进行查询了,

但我用了几个都很不理想,速度慢得可怜,有时候真怀疑他有没有建立相应的索引了,最大的局限性是:仅能通过身份证,姓名去查。

对于作为程序员的你,你接受这样的低权限吗?

所以,建议大家有空还是应该找到这文件,在本地测试,推荐给所有在校生,可以用来练习一下多数据查询,优化问题。

当然,如果哪位朋友有资源的话,建立一个Web页面,可以直接输入sql命令来查询的那就更好了。


最后来一张关于数据价值转化的图:

我们现在得到数据库了,直接到达了加工车间这一层,至于怎样去发掘,那就要看你们的创意了。


总结

自从在学校交了210元的费用考了个所谓的的数据库工程师资格证(学校要求必须要考,但没什么技术含量),

之后比较少接触SqlServer数据库了,转眼,10月底了,再过一段时间就要准备实习了,目前还是在校生。

这次藉由这个2000w来温习了一下相关的基础知识,

磁盘IO性能问题,数据备份,恢复,索引,模糊查询,函数调用,大数据分析,挖掘,利用等。

抛砖引玉---期待亮点评论

此文,仅仅代表一个在校生初试2000w条记录的数据库的浅显实践,泛泛而谈,个中的结论,推断难免轻浮、果断。

不足之处,还望各位资深读者多多指导,斧正本文的错误论点。

【数据库】_由2000W多条开房数据引发的思考、实践----给在校生的一个真实【练耙场】,同学们,来开始一次伟大的尝试吧。的更多相关文章

  1. 曲演杂坛--一条DELETE引发的思考

    原文:曲演杂坛--一条DELETE引发的思考 场景介绍: 我们有一张表,专门用来生成自增ID供业务使用,表结构如下: CREATE TABLE TB001 ( ID ,) PRIMARY KEY, D ...

  2. 测试杂谈——一条SQL引发的思考(二)

    在前段时间,曾写过一篇关于SQL问题的文章,测试杂谈--一条SQL引发的思考(一). 今天这篇,算是个问题记录吧,问题并不复杂,但对于测试同学而言,确实是个需要关注的点. 问题分析 最近在日常工作中, ...

  3. 测试杂谈——一条SQL引发的思考

    此篇只是个人记录,相信各位大神早已轻车熟路,不喜勿喷:有错之处,欢迎指正. 有一天收到新人的咨询,是关于sql的问题. 问题1:为什么sql查询的数据与界面展示的不准确: 问题2:为什么sql查询时间 ...

  4. 从SQLSERVER/MYSQL数据库中随机取一条或者N条记录

    从SQLSERVER/MYSQL数据库中随机取一条或者N条记录 很多人都知道使用rand()函数但是怎麽使用可能不是每个人都知道 建立测试表 USE [sss] GO ,NAME ) DEFAULT ...

  5. (转)数据库_不懂数据库索引的底层原理?那是因为你心里没点BTree

    原文地址:https://www.cnblogs.com/sujing/p/11110292.html 要了解数据库索引的底层原理,我们就得先了解一种叫树的数据结构,而树中很经典的一种数据结构就是二叉 ...

  6. TODO:从数据库中随机抽取一条记录

    TODO:从数据库中随机抽取一条记录 1.最直接,最粗暴的方法先计算记录的总数,然后选择一个从0到记录总数之间的随机数n,利用skip跳过n条记录,这是效率低下的的方法,首先的记录总数,在用skip会 ...

  7. Python学习(21)python操作mysql数据库_操作

    目录 数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 删除操作 执行事务 错误处理 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TEST. 在TEST数 ...

  8. OCM_第十八天课程:Section8 —》RAC 数据库 _ RAC DB 搭建/RAC DB 配置使用

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  9. 29_Java_数据库_第29天(JDBC、DBUtils)_讲义

    今日内容介绍 1.JDBC 2.DBUtils 01JDBC概念和数据库驱动程序 * A: JDBC概念和数据库驱动程序 * a: JDBC概述 * JDBC(Java Data Base Conne ...

随机推荐

  1. Windows程序设计_19_测试Windows应用程序加载函数

    /* 本程序测试自定义的WinMainCRTStartup函数 */ #define STRICT #define WIN32_LEAN_AND_MEAN #include <windows.h ...

  2. 设计模式03备忘录(java)

    先贴代码有空来写内容. 备忘录1 //简单的备忘录,只可以记录上一次修改前的状态,实现撤回一次的操作. class Student{ private String name; private Stri ...

  3. Jquery 页面间传值(非QuerryString)

    实现原理: 实现方式不是很复杂,父页面A打开一个子页面 A1,并同时写一个带参数的接收数据函数Receive(result),在A1页面进行逻辑操作,然后调用父页面A的Receive(result)函 ...

  4. Elasticsearch Java 虚拟机配置详解

    Elasticsearch对Java虚拟机进行了预先的配置.通常情况下,因为这些配置的选择还是很谨慎的,所以你不需要太关心,并且你能立刻使用ElasticSearch. 但是,当你监视ElasticS ...

  5. Windows消息机制

    Windows的消息系统是由3个部分组成的: · 消息队列.Windows能够为所有的应用程序维护一个消息队列.应用程序必须从消息队列中获取消息,然后分派给某个窗口.· 消息循环.通过这个循环机制应用 ...

  6. iframe关于滚动条的去除和保留

    iframe嵌入页面后,我们有时需要调整滚动条,例如,去掉全部的滚动条,去掉右边的滚动条且保留底下的滚动条,去掉底下的滚动条且保留右边的滚动条.那么我们应该怎么做呢? 一:去掉全部的滚动条 第一个方法 ...

  7. DarkTrack 4 Alien Version Released RAT 下载地址&视频教程

    不废话,点我下载. 官方论坛:https://forum.darktrack.net 作者脸书:https://www.facebook.com/darktrackrat E安全报道:https:// ...

  8. React Native之 ScrollView介绍和使用

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  9. iOS --SQL的增加、删除、查找、修改

    iOS对于数据库的操作:增加.删除.查找.修改 首先需要创建一个数据库:本程序的数据库是在火狐浏览器里的插件里写的微量型数据库 火狐找查找SQLite Manager的步骤: 第一步:在工具栏找到附加 ...

  10. 获取当前应用的系统路径工具类和java的System.getProperty()方法介绍

    java的System.getProperty()方法可以获取的值,如下: 对于Java程序,无论是未打包的还是打包的JAR或WAR文件,有时候都需要获取它运行所在目录信息,如何做到这一点呢? /** ...