数据库学习途径
1.百度
2.官方文档
mysql官网
下载帮助文档
3.建立自己的知识库
4.1
数据冗余
购车订单表:id username carname buy_date buy_price
1 张三 奥迪Q3 2018.3.1 260000
2 王五 别克君威 2018.05.01 300000
3 李四 大众朗逸 2018.10.01 400000
此表问题:
1.用户扩展性问题,用户没有属性
2.可能张三也买了雪佛兰科鲁兹,修改、修改多列
抽象成------> user 表
id user age
好处:重复归到一类、便于修改; 查询连接; 分类汇总时int类要好于字符串,2个字节-----4,6.字节,每行偏移量也不同
数据库三范式:
无重复列、属性完全依赖与主键、属性不依赖于其他非主属性
4.2 csv,json导到数据库
load
首先先看是否有现成的工具,不能直接就去查写代码。先找现成的解决方案,使用工具特性
4.3
先理解笛卡儿积的概念
left join ...
主键,外键,建立索引,提高效率
100*100行-----> 100对100
4.4 原始表统计,同步,
VIEW
4.5 字符串类型:varchar(多步) char(数据空间是对齐的,查找快) text(>255用,要小于。。。)
行存储数据库
4.6 时间类型不能存string,要datetime ,因为时间最原始就是float; 运算时,不变计算,还要去切,统计时就更不便
例如:数据库时,插入数据时,当前时间;更新时当前时间记录
ud date1 date2
date2更新哈偶,date1跟着变
date2更新哈偶,date1不跟着变
建表时,on update current_timestamp
表结构修改---alter----
4.7 由birthday查年龄
有现成的 timestampdiff(year,birth)
4.8 where 和 having
数据过滤
having是对统计后的数据进行过滤
ps:通常用小写,
实体型之间的关系:一对一、一对多
如何检查sql性能-----用explain
sql数据处理问题
定义数据时,计算机拿数据时超过一定字节,就要拿多次,
所以要将数据归类,int,float
字符编码
例如:计算一篇文章的标点符号
处理csv分隔符,如果文本中有,how ,通过不可见字符处理
按标点符号切,
搞清楚编码关系 gbk utf-8 unicode
舆情文本有回车换行符处理
正则表达式
爬虫去重
唯一标识:
url 发帖人 发帖时间
不用遍历去重
计算md5值,32位,唯一的,做主键,查询
网友评论