使用mysql_fetch_field
成都创新互联主要从事网站建设、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务乌苏,十年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
以下是例子.
mysql_fetch_field() 可以用来从某个查询结果中取得字段的信息。如果没有指定字段偏移量,则下一个尚未被 mysql_fetch_field() 取得的字段被提取。
对象的属性为:
name - 列名
table - 该列所在的表名
max_length - 该列最大长度
not_null - 1,如果该列不能为 NULL
primary_key - 1,如果该列是 primary key
unique_key - 1,如果该列是 unique key
multiple_key - 1,如果该列是 non-unique key
numeric - 1,如果该列是 numeric
blob - 1,如果该列是 BLOB
type - 该列的类型
unsigned - 1,如果该列是无符号数
zerofill - 1,如果该列是 zero-filled
=========
?php
mysql_connect('localhost:3306', $user, $password)
or die("Could not connect: " . mysql_error());
mysql_select_db("database");
$result = mysql_query("select * from table")
or die("Query failed: " . mysql_error());
/* get column metadata */
$i = 0;
while ($i mysql_num_fields($result)) {
echo "Information for column $i:br /\n";
$meta = mysql_fetch_field($result);
if (!$meta) {
echo "No information availablebr /\n";
}
echo "pre
blob: $meta-blob
max_length: $meta-max_length
multiple_key: $meta-multiple_key
name: $meta-name
not_null: $meta-not_null
numeric: $meta-numeric
primary_key: $meta-primary_key
table: $meta-table
type: $meta-type
unique_key: $meta-unique_key
unsigned: $meta-unsigned
zerofill: $meta-zerofill
/pre";
$i++;
}
mysql_free_result($result);
?
要分页,需要两个条件:
1、当前页记录的开始位置、数量
2、记录总数
因此,需要两条sql语句。
1、select 字段1,字段2,from news where type='news1' limit 0,10
2、select count(*) from news where type='news1' limit 0,10
此外,不建议使用楼上的嵌套查询,嵌套查询在数据量大时会造成数据库性能急剧下降。通常写sql语句的准则是拆繁就简,执行两条简单sql语句的效率比执行一条复杂sql语句的效率高很多。
有了记录总数和当前页内容可以算出一共多少页。
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。
使用方法,在select语句前加上explain就可以了,如:
explain select * from statuses_status where id=11;
explain列的解释
table:显示这一行的数据是关于哪张表的
type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和all
possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从where语句中选择一个合适的语句
key: 实际使用的索引。如果为null,则没有使用索引。很少的情况下,mysql会选择优化不足的索引。这种情况下,可以在select语句中使用use index(indexname)来强制使用一个索引或者用ignore index(indexname)来强制mysql忽略索引
key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好
ref:显示索引的哪一列被使用了,如果可能的话,是一个常数
rows:mysql认为必须检查的用来返回请求数据的行数
extra:关于mysql如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是using temporary和using filesort,意思mysql根本不能使用索引,结果是检索会很慢
show full tables from 数据库名 [like 'pattern']
"[]"表示可选的, like后面跟的是表名的模糊查询,.
举例:
一个视图的名字叫v_user, SQL语句可以写为show full tables from 数据库名 like '%v_user%';
MySQL查询视图
SHOW INDEX FROM tbl_name [FROM db_name]
例如,
mysql SHOW INDEX FROM mytable FROM mydb;
mysql SHOW INDEX FROM mydb.mytable;
SHOW KEYS是SHOW INDEX的同义词。您也可以使用mysqlshow -k db_name tbl_name命令列举一个表的索引。
SHOW INNODB STATUS语法
SHOW INNODB STATUS
SHOW INDEX会返回表索引信息。其格式与ODBC中的SQLStatistics调用相似。
SHOW INDEX会返回以下字段:
· Table
表的名称。
· Non_unique
如果索引不能包括重复词,则为0。如果可以,则为1。
· Key_name
索引的名称。
· Seq_in_index
索引中的列序列号,从1开始。
· Column_name
列名称。
· Collation
列以什么方式存储在索引中。在MySQL中,有值‘A’(升序)或NULL(无分类)。
· Cardinality
索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。
· Sub_part
如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则为NULL。
· Packed
指示关键字如何被压缩。如果没有被压缩,则为NULL。
· Null
如果列含有NULL,则含有YES。如果没有,则该列含有NO。
· Index_type
用过的索引方法(BTREE, FULLTEXT, HASH, RTREE)。
· Comment
多种评注。
查汉字类的,最好不要使用sql来实现。即,我们可以交给php,jsp来统计,如php中,查出总行再减去空行、数字或字母,即可解之。