LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1094|回复: 2

MYSQL的常用命令--zt

[复制链接]
发表于 2003-7-16 09:10:15 | 显示全部楼层 |阅读模式
一、连接MYSQL。

格式: mysql -h主机地址 -u用户名 -p用户密码

1、例1:连接到本机上的MYSQL。

首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>

2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123

(注:u与root可以不用加空格,其它也一样)

3、退出MYSQL命令: exit (回车)

二、修改密码。

格式:mysqladmin -u用户名 -p旧密码 password 新密码

1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令

mysqladmin -uroot -password ab12

注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2、例2:再将root的密码改为djg345。

mysqladmin -uroot -pab12 password djg345

三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)

格式:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"

例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:

grant select,insert,update,delete on *.* to test1@\"%\" Identified by \"abc\";

但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。

例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

grant select,insert,update,delete on mydb.* to test2@localhost identified by \"abc\";

如果你不想test2有密码,可以再打一个命令将密码消掉。

grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";

在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。

一、操作技巧

1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。

2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。

二、显示命令

1、显示数据库列表。

show databases;

刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。

2、显示库中的数据表:

use mysql; //打开库,学过FOXBASE的一定不会陌生吧

show tables;

3、显示数据表的结构:

describe 表名;

4、建库:

create database 库名;

5、建表:

use 库名;

create table 表名 (字段设定列表);

6、删库和删表:

drop database 库名;

drop table 表名;

7、将表中记录清空:

delete from 表名;

8、显示表中的记录:

select * from 表名;

三、一个建库和建表以及插入数据的实例

drop database if exists school; //如果存在SCHOOL则删除

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(

id int(3) auto_increment not null primary key,

name char(10) not null,

address varchar(50) default '深圳',

year date

); //建表结束

//以下为插入字段

insert into teacher values('','glchengang','深圳一中','1976-10-10');

insert into teacher values('','jack','深圳一中','1975-12-23');

注:在建表中(1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key(2)将NAME设为长度为10的字符字段(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。(4)将YEAR设为日期字段。

如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录\\mysql\\bin,然后键入以下命令:

mysql -uroot -p密码 < c:\\school.sql

如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

四、将文本数据转到数据库中

1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\\n来代替.

例:

3 rose 深圳二中 1976-10-10

4 mike 深圳一中 1975-12-23

2、数据传入命令 load data local infile \"文件名\" into table 表名;

注意:你最好将文件复制到\\mysql\\bin目录下,并且要先用use命令打表所在的库。

五、备份数据库:(命令在DOS的\\mysql\\bin目录下执行)

mysqldump --opt school>school.bbb

注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。

后记:其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异,您最好找本将SQL的书看看。我在这里只介绍一些基本的,其实我也就只懂这些了,呵呵。最好的MYSQL教程还是"晏子"译的"MYSQL中文参考手册"不仅免费每个相关网站都有下载,而且它是最权威的。可惜不是象\"HP4中文手册\"那样是chm的格式,在查找函数命令的时候不太方便。
 楼主| 发表于 2003-7-16 09:13:56 | 显示全部楼层
导出要用到MySQL的mysqldump工具,基本用法是:
  shell> mysqldump [OPTIONS] database [tables]

如果你不给定任何表,整个数据库将被导出。
   通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。
   注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。

mysqldump支持下列选项:
  --add-locks
   在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
  --add-drop-table
   在每个create语句之前增加一个drop table。
  --allow-keywords
   允许创建是关键词的列名字。这由表名前缀于每个列名做到。
  -c, --complete-insert
   使用完整的insert语句(用列名字)。
  -C, --compress
   如果客户和服务器均支持压缩,压缩两者间所有的信息。
  --delayed
   用INSERT DELAYED命令插入行。
  -e, --extended-insert
   使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
  -#, --debug[=option_string]
   跟踪程序的使用(为了调试)。
  --help
   显示一条帮助消息并且退出。
  --fields-terminated-by=... 
  --fields-enclosed-by=...  
  --fields-optionally-enclosed-by=...  
  --fields-escaped-by=...  
  --fields-terminated-by=...
   这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
  LOAD DATA INFILE语法。
  -F, --flush-logs
   在开始导出前,洗掉在MySQL服务器中的日志文件。
  -f, --force,
   即使我们在一个表导出期间得到一个SQL错误,继续。
  -h, --host=..
   从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
  -l, --lock-tables.
   为开始导出锁定所有表。
  -t, --no-create-info
   不写入表创建信息(CREATE TABLE语句)
  -d, --no-data
   不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!
  --opt
  同--quick --add-drop-table --add-locks --extended-insert --lock-tables。
   应该给你为读入一个MySQL服务器的尽可能最快的导出。
  -pyour_pass, --password[=your_pass]
   与服务器连接时使用的口令。如果你不指定"=your_pass"部分,mysqldump需要来自终端的口令。
(1) int mysql_affected_rows([int link_id]);
  在给定的连接中,返回由最近的DELETE、INSERT、REPLACE或者UPDATE语句所作用的行数。如果没有行被修改,则mysql_affected_rows()返回0,如果出现错误,则返回-1。
  在SELECT查询之后,mysql_affected_rows()返回所选择的行数。但一般是与SELECT语句一道使用
  mysql_num_rows().
  使用范例:
  <?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("samp_db") or die("Could not select database");
  $query="INSERT INTO member(last_name,first_name,expiration)"."VALUES('Brown','Marcia','2002-6-3')";
  $result=mysql_query($query) or die("Query failed");
  printf("%d row%s insertedn",mysql_affected_rows(),mysql_affected_rows()==1?" ":"s");
  ?>

(2) int mysql_close(int[link_id]);
  关闭由link_id标识的与MySQL服务器的连接。如果没有指定连接,则mysql_close()关闭最近打开的连接。如果成功,则mysql_close()返回真,失败则返回假。对由mysql_pconnect()打开的永久连接,mysql_close()忽略相应的关闭请求,只是返回值。如果要关闭一个连接,就应该用mysql_connect()而不是mysql_pconnect()来打开它。

使用范例:
  <?php
  $link=mysql_connect("localhost","sunsoft","suixiang") or die("Could not connect");
  print("Connected successfully");
  mysql_close($link);
  ?>

(3) int mysql_connect(string [hostname] [:port], string [username], string [password]);
  本函式建立与 MySQL 伺服器的连线。其中所有的参数都可省略。当使用本函式却不加任何参数时,参数 hostname 的内定值为 localhost、参数 username 的内定值为 PHP 执行行程的拥有者、参数 password 则为空字串 (即没有密码)。而参数 hostname 后面可以加冒号与埠号,代表使用那个埠与 MySQL 连接。当然在使用资料库时,早点使用 mysql_close() 将连线关掉可以节省资源。

使用范例

这是一位未具名网友提供的范例 (18-Feb-1999)
  <?php
  $dbh = mysql_connect('localhost:3306','mcclain','standard');
  mysql_select_db('admreqs');
  $query = "insert into requests(date, request, email, priority,status) values

(NOW(),'$description', '$email', '$priority', 'NEW')";
  $res = mysql_query($query, $dbh);
  $query = "select max(id) from requests";
  $res = mysql_query($query, $dbh);
  $err = mysql_error();
  if($err){
  echo "发生错误,请通知<a href=mailto:webmaster@my.site>站长</a>";
  }
  $row = mysql_fetch_row($res);
  echo "未来您使用的号码为: ".$row[0];
  ?>

(4) int mysql_create_db(string db_name [, int link_id]);
  告诉由link_id标识的MySQL服务器用给定的名称来创建数据库。如果数据库创建成功,则返回真;如果出现错误,则返回假。必须在数据库有创建它的CREATE权限。
  可能利用mysql_query()较利用mysql_create_db()发布CREATE DATABASE 语句更为适合。
  <?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang"); or die("Could not connect");
  if(mysql_create_db("my_db"))
  print("Database created successfullyn");
  else
  print("Error creating database:%sn",mysql_error());
  ?>
  (5) int mysql_data_seek(int result_id, int row_num);

由SELECT查询返回的每个结果集都有一个行游标,指示下一个提取行的函数(mysql_fetch_array()、mysql_fetch_object()或者mysql_fetch_row())调用将返回哪一行。mysql_data_seek()将给定结果集的指针设置到给定的行。行号的范围为0到mysql_num_rows()-1。如果行号合法,则mysql_data_seek()返回真,否则返回假。
  <?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("samp_db") or die("Could not select database");
  $query="SELECT last_name,first_name FROM president");
  $result=mysql_query($query) or die("Query failed");
  for($i=mysql_num_rows($result)-1;$i>=0;$i-)
  {
  if(!mysql_data_seek($result,$i);
  {
  printf("Cannot seek to row %dn",$i);
  continue;
  }
  if(!$row=mysql_fetch_object($result)))
  continue;
  printf("%d %s<BR>n",$row->last_name,$row->first_name);
  }
  mysql_free_result($result);
  ?>


  (6) int mysql_db_query(string db_name, string query [, int link_id]);
  mysql_db_query()除了提取一个额外的数据库名称参数,并在执行查询之前使它成为缺省的数据库为,与mysql_query()类似。

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  print("Connected successfully");
  $query="SELECT * FROM president";
  $result=mysql_db_query("samp_db",$query) or die("Query failed");
  ?>


  (7) int mysql_drop_db(string db_name, int [link_id]);
  告诉由link_id标识的MySQL服务器用给定的名称来删除数据库。如果数据库删除成功,则返回真;如果出现错误,则返回假。必须有对数据库进行删除的DROP权限。
  要小心这个函数;如果删除数据库,它就不存在了,且不能恢复。
  使用mysql_query()较使用mysql_drop_db()发布DROP DATABASE 语句更为适合。
  <?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  if(mysql_drop_db("my_db"))
  print("Database dropped successfullyn");
  else
  printf("Error dropping database:%sn",mysql_error());
  ?>


  ( int mysql_errno(int [link_id]);

对于给定的连接,返回含有最近返回状态的与MySQL相关的函数的错误号。零值意味着未出现错误。
  使用范例

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  print("Connected successfully");
  $query="SELECT * FROM president";
  $result=mysql_query($query) or die("Query failed,error code=".mysql_errno());
  ?>
  (9) string mysql_error(int [link_id]);
  对于给定的连接,返回含有最近返回状态的与MySQL相关的函数的错误消息字符串。空值意味着未出现错误。

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  print("Connected successfully");
  $query="SELECT * FROM president";
  $result=mysql_query($query) or die("query failed,error message=".mysql_error());
  ?>

(10)array mysql_fetch_array(int result, int [result_typ]);
  本函式用来将查询结果 result 拆到阵列变数中。若 result 没有资料,则传回 false 值。而本函式可以说是 mysql_fetch_row() 的加强函式,除可以将传回列及数字索引放入阵列之外,还可以将文字索引放入阵列中。若是好几个传回栏位都是相同的文字名称,则最后一个置入的栏位有效,解决方法是使用数字索引或者为这些同名的栏位 (column) 取别名 (alias)。值得注意的是使用本函式的处理速度其实不会比mysql_fetch_row() 函式慢,要用哪个函式还是看使用的需求决定。参数 result_typ 是一个常数值,有以下几种常数 MYSQL_ASSOC、MYSQL_NUM 与 MYSQL_BOTH。
  使用范例

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db") or die("Could not select database");
  $query="SELECT last_name,first_name FROM president";
  $result=mysql_query($query) or die("Query failed");
  while($row=mysql_fetch_array($result))
  {
  printf("%s %s<BR>
  ",$row[0],$row[1]);
  printf("%s %s<BR>
  ",$row["last_name"],$row["first_name"]);
  }
  mysql_free_result($result);
  ?>

(11) object mysql_fetch_field(int result [,int col_num]);
  返回结果集中给定列的相关元数据信息,如果没有这样的列,则返回假。如果省略col_num,则对mysql_fetch_field()的后继调用返回结果集后续列的信息。如果不再有剩余的列。则返回值为假。如果指定了col_num,则其取值范围为0到mysql_num_fields()-1。在此情况下,mysql_num_fields()返回给定列的相关信息,如果col_num超出范围,返回假。
  <?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db") or die("Could not select database");
  $query="SELECT * FROM president";
  $result=mysql_query($query) or die("Query failed");
  for($i=0;$i<mysql_num_fields($result);$i++)
  {
  printf("information for column %d:<BR>
  ",$i);
  $meta=mysql_fetch_field($result);
  if(!$meta)
  {
  print("No information available<BR>
  ");
  continue;
  }
  print("<RE>
  ");
  printf("blob: %s
  ",$meta->blob);
  printf("max_length: %s
  ",$meta->max_length);
  printf("multiple_key: %s
  ",$meta->multiple_key);
  printf("name: %s
  ",$meta->name);
  printf("not_null: %s
  ",$meta->not_null);
  printf("numeric: %s
  ",$meta->numeric);
  printf("primary_key: %s
  ",$meta->primary_key);
  printf("table: %s
  ",$meta->table);
  printf("type: %s
  ",$meta->type);
  printf("unique_key: %s
  ",$meta->unique_key);
  printf("unsigned: %s
  ",$meta->unsigned);
  printf("zerofill: %s
  ",$meta->zerofill);
  print("</PRE>
  ");
  }
  ?>

(12) array mysql_fetch_lengths(int result);
  本函式将 mysql_fetch_row() 处理过的最后一列资料的各栏位资料最大长度放在阵列变数之中。若执行失败则传回 false 值。传回阵列的第一笔资料索引值是 0。

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db") or die("Could not select database");
  $query="SELECT * FROM president" or die("Query failed");
  $row_num=0;
  while(mysql_fetch_row($result))
  {
  ++$row_num;
  printf("Lengths of values in row %d:<BR>
  ",$row_num);
  $len=mysql_fetch_lengths($result);
  if(!$len)
  {
  print("No information available<BR>
  ");
  break;
  }
  print("<RE>
  ");
  for($i=0;$i<mysql_num_fields($result);$i++)
  printf("Column %d: %s
  ",$i,$len[$i]);
  print("</PRE>
  ");
  }
  ?>
  (13) object mysql_fetch_object(int result_id [, int result_typ]);
  本函式用来将查询结果 result 拆到物件变数中。使用方法和 mysql_fetch_array() 几乎相同,不同的地方在于本函式传回资料是物件而不是阵列。若 result 没有资料,则传回 false 值。另外值得注意的地方是,取回的物件资料的索引只能是文字而不能用数字,这是因为物件的特性。物件资料的特性中所有的属性(property) 名称都不能是数字,因此只好乖乖使用文字字串当索引了。参数 result_typ是一个常数值,有以下几种常数 MYSQL_ASSOC、MYSQL_NUM 与 MYSQL_BOTH。关于速度方面,本函式的处理速度几乎和mysql_fetch_row() 及 mysql_fetch_array() 二函式差不多,要用哪个函式还是看使用的需求决定。

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db") or die("Could not select database");
  $query="SELECT last_name,first_name FROM president";
  $result=mysql_query($query) or die("Query failed");
  while($row=mysql_fetch_object($result))
  printf("%s %s<BR>
  ",$row->last_name,$row->first_name);
  mysql_free_result($result);
  ?>

(14) array mysql_fetch_row(int result);
  作为一个数组返回给定结果集的下一行,如果没有更多的行,则返回假。列值可作为数组元素访问,在0到mysql_num_fields()-1范围内使用列索引。

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db") or die("Could not select database");
  $query="SELECT last_name,first_name FROM president";
  $result=mysql_query($query) or die("Query failed");
  while($row=mysql_fetch_row($result))
  printf("%s %s<BR>
  ",$row[0],$row[1]);
  mysql_free_result($result);
  ?>

(15) string mysql_field_name(int result, int field_index);
  返回结果集的给定列的名称。
  col_num 的范围为0到mysql_num_fields()-1.

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db") or die("Could not select database");
  $query="SELECT * FROM president";
  $result=mysql_query($query) or die("Query failed");
  for($i=0;$i<mysql_num_fields($result);$i++)
  {
  printf("Name of column %d:",$i);
  $name=mysql_field_name($result,$i);
  if(!$name)
  print("No name available<BR>
  ");
  else
  print("$name<BR>
  ");
  }
  ?>

(16) int mysql_field_seek(int result, int field_offset);
  为随后的mysql_fetch_field()调用设置索引。发布没有明确列号的mysql_fetch_field()的下一次调用,将返回列col_num的信息。如果搜索成功,返回真,否则返回假。
  col_num的范围为0到mysql_num_fields()-1.

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db") or die("Could not select database");
  $query="SELECT * FROM president";
  $result=mysql_query($query) or die("Query failed");
  for($i=0;$i<mysql_num_fields($result);$i++)
  {
  printf("Information for column %d:<BR>
  ",$i);
  if(!mysql_field_seek($result,$i))
  {
  print("Cannot seek to colum<BR>
  ");
  continue;
  }
  $meta=mysql_fetch_field($result,$i);
  if(!$meta)
  {
  print("No information available<BR>
  ");
  continue;
  }
  print("<RE>
  ");
  printf("blob: %s
  ",$meta->blob);
  printf("max_length: %s
  ",$meta->max_length);
  printf("multiple_key: %s
  ",$meta->multiple_key);
  printf("name: %s
  ",$meta->name);
  printf("not_null: %s
  ",$meta->not_null);
  printf("numeric: %s
  ",$meta->numeric);
  printf("primary_key: %s
  ",$meta->primary_key);
  printf("table: %s
  ",$meta->table);
  printf("type: %s
  ",$meta->type);
  printf("unique_key: %s
  ",$meta->unique_key);
  printf("unsigned: %s
  ",$meta->unsigned);
  printf("zerofill: %s
  ",$meta->zerofill);
  print("</PRE>
  ");
  }
  ?>

(17) string mysql_field_table(int result_id, int col_num);
  返回结果集给定列的表名。对于计算列,此名为空。
  col_num的范围为0到mysql_num_fields()-1.

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db");
  $query="SELECT * FROM president";
  $result=mysql_query($query) or die("Query failed");
  for($i=0;$i<mysql_num_fields($result);$i++)
  {
  print("column $d:",$i);
  printf("Name %s
  ",mysql_field_name($result,$i));
  printf("Table %s
  ",mysql_field_nmae($result,$i));
  print"<BR>
  ";
  ?>


  (1 string mysql_field_type(int result_id, int col_num);
  返回结果集给定列的类型名。类型名敬请等待参考本人的另外"MySQL列类型参考"。
  col_num的范围为0到mysql_num_fields()-1.

<?php
  $link=pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db");
  $query="SELECT * FROM president";
  $result=mysql_query($query) or die("Query failed");
  for($i=0;$i<mysql_num_fields($result);$i++)
  {
  printf("colum %d:",$i);
  printf("Name %s,
  ",mysql_field_name($result,$i));
  printf("Type %s
  ",mysql_field_type($result,$i));
  }
  ?>


  (19) string mysql_field_flags(int result_id, int col_num);
  作为字符串返回结果集中给定列的相关元数据信息,如果出现错误,则返回假。这个字符串由以空格分开的词组成,说明哪个列的标记值为真。对于假的标记,在字符串中给出相应的词。
  col_num的范围为0到mysql_num_fields()-1.

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db");
  $query="SELECT * FORM member";
  $result=mysql_query($query) or die("Query failed");
  for($i=0;$i<mysql_num_fields($result);$i++)
  {
  printf("column %d:",$i);
  printf("Name %s,
  ",mysql_fields_name($result,$i));
  printf("Flags %s
  ",mysql_fields_flags($result,$i));
  }
  ?>

(20) int mysql_field_len(int result, int field_offset);
  返回结果集给定列中值可能的最大长度。
  col_num的范围为0到mysql_num_fields()-1.

<?php
  $link=mysql_pconnect("localhost","sunsoft","suixiang") or die("Could not connect");
  mysql_select_db("stamp_db");
  $query="SELECT * FROM member";
  $result=mysql_query($query) or die("Query failed");
  for($i=0;$i<mysql_num_fields($result);$i++)
  {
  printf("Column %d:",$i);
  printf("Name %s,
  ",mysql_field_name($result,$i));
  printf("Len %d
  ",mysql_field_len($result,$i));
  print"<BR>
  ";
  }
  ?>

原作:不详 来源:不详

打印本页 收藏本页 推荐给朋友 我还有疑问


上篇文章:Windows2000下安装Apache PHP4 MySQL

下篇文章:MySQL中各种字段的取值范围


文章搜索 文章标题 文章内容


快捷通道* Access (3)篇
* SQLServer (篇
* MySQL (11)篇
* Oracle (3)篇


本类热门* phpMyAdmin 2.x.x - 文档(安装及配置) [203]
* 安装MySQL图形界面管理器phpMyAdmin [173]
* phpMyAdmin怎么安装,如何使用 [171]
* MySQL中各种字段的取值范围 [160]
* MySQL数据的导出和导入 [110]
TINYINT 
  -128 - 127 
  TINYINT UNSIGNED 
  0 - 255 
  SMALLINT 
  -32768 - 32767 
  SMALLINT UNSIGNED 
  0 - 65535 
  MEDIUMINT 
  -8388608 - 8388607 
  MEDIUMINT UNSIGNED 
  0 - 16777215 
  INT 或 INTEGER 
  -2147483648 - 2147483647 
  INT UNSIGNED 或 INTEGER UNSIGNED 
  0 - 4294967295 
  BIGINT 
  -9223372036854775808 - 9223372036854775807 
  BIGINT UNSIGNED 
  0 - 18446744073709551615 
  FLOAT 
  -3.402823466E+38 - -1.175494351E-38 
  0 
  1.175494351E-38 - 3.402823466E+38 
  DOUBLE 或 DOUBLE PRECISION 或 REAL 
  -1.7976931348623157E+308 - -2.2250738585072014E-308 
  0 
  2.2250738585072014E-308 - 1.7976931348623157E+308 
  DECIMAL[(M,[D])] 或 NUMERIC(M,D) 
  由M(整个数字的长度,包括小数点,小数点左边的位数,小数点右边的位数,但不包括负号)和 
  D(小数点右边的位数)来决定,M缺省为10,D缺省为0 
  DATE 
  1000-01-01 - 9999-12-31 
  DATETIME 
  1000-01-01 00:00:00 - 9999-12-31 23:59:59 
  TIMESTAMP 
  1970-01-01 00:00:00 - 2037年的某天(具体是哪天我也不知道,呵呵) 
  TIME 
  -838:59:59' to 838:59:59 
  YEAR[(2|4)] 
  缺省为4位格式,4位格式取值范围为1901 - 2155,0000,2位格式取值范围为70-69(1970-2069) 
  CHAR(M) [BINARY] 或 NCHAR(M) [BINARY] 
  M的范围为1 - 255,如果没有BINARY项,则不分大小写,NCHAR表示使用缺省的字符集.在数据库 
  中以空格补足,但在取出来时末尾的空格将自动去掉. 
  [NATIONAL] VARCHAR(M) [BINARY] 
  M的范围为1 - 255.在数据库中末尾的空格将自动去掉. 
  TINYBLOB 或 TINYTEXT 
  255(2^8-1)个字符 
  BLOB 或 TEXT 
  65535(2^16-1)个字符 
  MEDIUMBLOB 或 MEDIUMTEXT 
  16777215 (2^24-1)个字符 
  LONGBLOB 或 LONGTEXT 
  4294967295 (2^32-1)个字符 
  ENUM('value1','value2',...) 
  可以总共有65535个不同的值 
  SET('value1','value2',...) 
  最多有64个成员
首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的,
  所以一般用户无法更改密码,除非请求管理员。

方法一
  使用phpmyadmin,这是最简单的了,修改mysql库的user表,
  不过别忘了使用PASSWORD函数。

方法二
  使用mysqladmin,这是前面声明的一个特例。
  mysqladmin -u root -p password mypasswd
  输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。
  把命令里的root改为你的用户名,你就可以改你自己的密码了。
  当然如果你的mysqladmin连接不上mysql server,或者你没有办法执行mysqladmin,
  那么这种方法就是无效的。
  而且mysqladmin无法把密码清空。

下面的方法都在mysql提示符下使用,且必须有mysql的root权限:
  方法三
  mysql> INSERT INTO mysql.user (Host,User,Password)
  VALUES('%','jeffrey',PASSWORD('biscuit'));
  mysql> FLUSH PRIVILEGES
  确切地说这是在增加一个用户,用户名为jeffrey,密码为biscuit。
  在《mysql中文参考手册》里有这个例子,所以我也就写出来了。
  注意要使用PASSWORD函数,然后还要使用FLUSH PRIVILEGES。

方法四
  和方法三一样,只是使用了REPLACE语句
  mysql> REPLACE INTO mysql.user (Host,User,Password)
  VALUES('%','jeffrey',PASSWORD('biscuit'));
  mysql> FLUSH PRIVILEGES

方法五
  使用SET PASSWORD语句,
  mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
  你也必须使用PASSWORD()函数,
  但是不需要使用FLUSH PRIVILEGES。

方法六
  使用GRANT ... IDENTIFIED BY语句
  mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
  这里PASSWORD()函数是不必要的,也不需要使用FLUSH PRIVILEGES。

注意: PASSWORD() [不是]以在Unix口令加密的同样方法施行口令加密。
发表于 2003-7-16 20:43:46 | 显示全部楼层
不错,我来顶一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表