mysql使用小记
最近用mysql写了几个复杂的语句,感觉在关系很复杂的时候先理清关系再选择用的查询方法是很重要的,因为同一个需求可能用不同的方法来查出来,但是复杂度,性能都不一样。
下面说一下能实现复杂查询的一些一般方法:
一.with语法(首先说明,好像Mysql不支持这个语法,但是sqlserver是支持的),即with tableA as select .... from table B。相当于在数据库中建立了一个临时表。其实我喜欢这种语法,因为看起来像是面向对象的,结构清晰。
二.建立临时表,即create temporary table{...},其他类似了,但是网上说这种方法开销很大,建议考虑性能的应用慎用。
三.嵌套查询,即select a,b from (select a* as a, b* as b from A*) as A...,这是很常用的方法,也很好用,性能应该也不错。
四.各种连接,即select a ,b,c from A inner join B inner join C, 这种结构上倒是也很清晰,但是最大的缺点就是冗余数据太多,增加系统负担,因为表中的列你都给连接过来了,而实际上是根本用不了这么多的(可能只需要每个表中特定的几列),这样造成连接后的表太庞大了,性能应该很差 。 所以在你确定冗余数据不多时,可以用这种方法。
自己的心得,可能也不完全。其实真正用的时候是几种方法结合起来更好,比如
select a,b from (select a* as a from A*) as A inner join (select b* as b from B*) as B on A.some=B.some where a='hello';
相关文档:
1. 初始化一个连接句柄
MYSQL *mysql_init(MYSQL *);
正确:返回一个指向新分配的链接句柄结构的指针
错误:NULL
注:该函数的传入参数通常为NULL即可。
2. 建立物理连接
MYSQL *mysql_real_connect(MYSQL *connect ......
MySql的时间类型有 Java中与之对应的时间类型
date ......
一般在MYSQL使用中文查询
都是用 set NAMES character
character_set_client ,这是用户告诉MySQL查询是用的什么字符集。
character_set_connection ,MySQL接受到用户查询后,按照character_set_client将其转化为character_set_connection设定的字符集。
character_set_results , MySQL将存储的数据转换成charact ......
MySQL-client-community-5.0.41-0.rhel4.i386.rpm # 客户端
MySQL-devel-community-5.0.82-0.rhel4.i386.rpm   ......
各位高手好。小弟学习JAVA不久,然后再用MYSQL数据库。
由于是用别人的的范例学习,所以出现很多奇怪的问题
我用自己的MYSQL 服务器,然后把别人的数据库导进来。然后出现版本问题。
问题如下
Table './db_librarysys/tb_manager' was created with a different version of MySQL and cannot be read
2010-4-28 22:44 ......