mysql 心得
1.我用的软件为 mysql5.7 和一个开发的mysql query browser,很好用,但是,对于较大的数据,该browser很容易崩溃,no responding.
所以,这个时候,我常常选择mysql cmd。很nice。cmd中sql语句必须以;结尾。
2.设备不能用,登不进去,往往要查看my.ini文件。然后从电脑上的services.msc中看一下mysql服务启动了没。
3.多表查询,用inner join 其实和where差不多,都是笛卡尔乘积。两个表都特别大,查起来速度真的特别慢。
自己实习时做的一个有关数据库的操作。电脑用cmd跑了将近12个小时才好。
心得,在建表时,一定要考虑好结构等等。数据库也是一门艺术。
4.在使用browser时,可以事先把sql语句写成一个script ,后缀为.sql 在browser 中打开即可。必须声明哪个数据库。use 'databasename'
5.随时更新一些语法吧。
A)查找数目
select count(*) from table where ... 其中,表可以用 db.tb 来表示。
B)LIKE 很常用。对于字符串
select...............................where 列 like ("% a % " )
C) 多表查询
select i.id,t.inchina
from test t,ip_data i
where t.id=i.id
group by i.inchina;
select i.id,t.inchina
form test t
left join /inner join/right join
on t.id=i.id
D)结果导出txt文件中
select .......... into outfile "c:/A.txt"; 注意,该地址下的文件必须没有A.txt 否则报错
再注意:今天导出,发现自己在windows系统该文件路径下看不到txt .再来一次,发现error,have existed.文件夹内也显示隐藏文件啊,怎么回事呢?
后来发现自己傻逼了。在windows系统下,路径用\来表示,但是在mysql默认为转义符。这也就是我在error中看到的 c:a.txt已存在(txt名称中没有 \)的原因。路径要用/符号
E)复制表
1 create table a like users; //复制表结构 a为空表。
2 create table b select * from users //数据也复制
F) 清空表数据
TRUNCATE TABLE '表名'
6.数据库优化思路 optimize
当数据量很大的时候,运行速度慢,需要优化
way 1 。多台机器并行,速度几乎成倍提升,此时速度受 数据库服务器的限制,同时做出任务分配的机制。
way 2 。分表。将一张大数据的表按一定方式分成几个小表存储,在小表中进行查询等操作。最后可以汇总结果
way 3 。 索引。INDEX 不太懂 以后补充。mark