后记:
其实mysql对数据库的操作与其它SQL类数据库大同小异,您最好找本将SQL书看
看。
这里只介绍一些基本的其实我也就只懂这些了呵呵。
最好的mysql教程还是"晏子"译的"mysql中文参考手册"不只免费,每个相关网站都有
下载,而且它最权威的可惜不象"PHP4中文手册"那样是chm格式,查找函数命令的
时候不太方便。
3.打开数据库:
usdbname
显示所有数据库:
showdatabases;
显示数据库mysql中所有的表:
先usmysql然后showtables;
显示表的列信息:
describuser;显示表mysql数据库中user表的信息)
4.创立一个可以从任何地方连接服务器的一个完全的超级用户,但是必需使用一个口令someth做这个
GRANTALLPRIVILEGESON*.*TOmonty@localhostIDENTIFIEDBY'something'WITHGRANTOPTION;
GRANTALLPRIVILEGESON*.*TOmonty@"%"IDENTIFIEDBY'something'WITHGRANTOPTION;
5.删除授权:
REVOKEALLPRIVILEGESON*.*FROMroot@"%";
USEmysql;
DELETEFROMuserWHEREUser="root"andHost="%";
FLUSHPRIVILEGES;
6.创立一个用户custom特定客户端登录,可访问特定数据库bankaccount
mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROPONbankaccount.*
TO[email]custom@[/email]IDENTIFIEDBY'stupid';
7.重命名表:
ALTERTABLEt1RENAMEt2;
为了改变列a从INTEGER改为TINYINTNOTNULL名字一样)
并且改变列b从CHAR10改为CHAR20同时重命名它从b改为c:
ALTERTABLEt2MODIFYaTINYINTNOTNULL,CHANGEbcCHAR20;
增加一个新TIMESTAMP列,名为d
ALTERTABLEt2ADDdTIMESTAMP;
列d上增加一个索引,并且使列a为主键:
ALTERTABLEt2ADDINDEXd,ADDPRIMARYKEYa;
删除列c
ALTERTABLEt2DROPCOLUMNc;
增加一个新的AUTO_INCREMENT整数列,命名为c
ALTERTABLEt2ADDcINTUNSIGNEDNOTNULLAUTO_INCREMENT,ADDINDEXc;
注意,索引了c因为AUTO_INCREMENT柱必须被索引,并且另外我声明c为NOTNULL
因为索引了列不能是NULL
8.删除记录:
DELETEFROMt1WHEREC>10;
6.改变某几行:
UPDATEt1SETuser=weiqiong,password=weiqiong;
7.使用name列的头10个字符创建一个索引:
CREATEINDEXpart_of_namONcustomname10;
数据导入问题byseseandZjtv
大家一定使用过phpmyadmin里面的数据库导入,导出功能,非常方便。
但是实际应用中,发现如下几个问题:
1数据库超过一定尺寸,比方6M这时使用导出一般没问题,可以正确的保管到本机硬盘上面,但是导入则不行!
原因是一般的PHP.INI里面设置临时文件/上传文件的大小限制为2M而phpmyadmin使用了上传的方式,造成失败。
2导出到硬盘的.SQL文件在导回时,经常呈现由于某些单引号的问题引起失败,造成导入失败,只能用mysql等应用程序导入了
数据库已经超过10M,所以必需解决这个问题。
思路:
导出:
用phpmyadmin保管数据库/表格结构,用脚本读取数据库内容并保存到文件里面!
导入:
用phpmyadmin恢复数据库/表格结构,用脚本读取文件,然后保管到库里面!
导出顺序如下:
调用方法为****.php?
table=tablename
这个简单的顺序目前一次保存一个表格!
每行为一个字段的数据!
if$table==""exit;
mysql_connect"localhost","name","password";
mysql_select_db"database";
$result=mysql_queri"select*from$table";
ifmysql_num_row$result<=0exit;
echo"开始转换数据到文本...
";
$handl=fopen"$table.txt","w";
$numfield=mysql_num_field$result;
fput$handle,$numfields."\r\n";
for$k=0;$k
{
$msg=mysql_fetch_row$result;
for$i=0;$i<$numfields;$i++
{
$msg[$i]=str_replac"\r\n","&&php2000mysqlreturn&&",$msg[$i];
$msg[$i]=str_replac"\n","&&php2000mysqlreturn&&",$msg[$i];
fput$handle,$msg[$i]."\r\n";
}
fput$handle,"-------php2000dumpdataprogramV1.0forMySQL--------\r\n";
}
fclose$handl;
echo"ok";
?
>
导入的顺序如下:
用法同上面!
if$table==""exit;
mysql_connect"localhost","name","password";
mysql_select_db"database";
$messag=file"$table.txt";
echo$numfield=chop$message[0];
for$k=1;$k
{
$value="";
for$i=$k;$i<$k+$numfields-1;$i++
{
$tmp=str_replac"&&php2000mysqlreturn&&","\r\n",chop$message[$i];
$valu.="'".addslash$tmp."',";
}
$tmp=str_replac"&&php2000mysqlreturn&&","\r\n",chop$message[$k+$numfields-1];
$valu.="'".$tmp."'";
$queri="insertinto$tablvalu".$value."";
echomysql_error;
mysql_queri$queri;
echo$k."";
}
echo"ok";
?
>
大家一定使用过phpmyadmin里面的数据库导入,导出功能,非常方便。
但是实际应用中,发现如下几个问题:
1数据库超过一定尺寸,比方6M这时使用导出一般没问题,可以正确的保管到本机硬盘上面,但是导入则不行!
原因是一般的PHP.INI里面设置临时文件/上传文件的大小限制为2M而phpmyadmin使用了上传的方式,造成失败。
2导出到硬盘的.SQL文件在导回时,经常呈现由于某些单引号的问题引起失败,造成导入失败,只能用mysql等应用程序导入了
数据库已经超过10M,所以必需解决这个问题。
思路:
导出:
用phpmyadmin保管数据库/表格结构,用脚本读取数据库内容并保存到文件里面!
导入:
用phpmyadmin恢复数据库/表格结构,用脚本读取文件,然后保管到库里面!
导出顺序如下:
调用方法为****.php?
table=tablename
这个简单的顺序目前一次保存一个表格!
每行为一个字段的数据!
if$table==""exit;
mysql_connect"localhost","name","password";
mysql_select_db"database";
$result=mysql_queri"select*from$table";
ifmysql_num_row$result<=0exit;
echo"开始转换数据到文本...
";
$handl=fopen"$table.txt","w";
$numfield=mysql_num_field$result;
fput$handle,$numfields."\r\n";
for$k=0;$k
{
$msg=mysql_fetch_row$result;
for$i=0;$i<$numfields;$i++
{
$msg[$i]=str_replac"\r\n","&&php2000mysqlreturn&&",$msg[$i];
$msg[$i]=str_replac"\n","&&php2000mysqlreturn&&",$msg[$i];
fput$handle,$msg[$i]."\r\n";
}
fput$handle,"-------php2000dumpdataprogramV1.0forMySQL--------\r\n";
}
fclose$handl;
echo"ok";
?
>
导入的顺序如下:
用法同上面!
if$table==""exit;
mysql_connect"localhost","name","password";
mysql_select_db"database";
$messag=file"$table.txt";
echo$numfield=chop$message[0];
for$k=1;$k
{
$value="";
for$i=$k;$i<$k+$numfields-1;$i++
{
$tmp=str_replac"&&php2000mysqlreturn&&","\r\n",chop$message[$i];
$valu.="'".addslash$tmp."',";
}
$tmp=str_replac"&&php2000mysqlreturn&&","\r\n",chop$message[$k+$numfields-1];
$valu.="'".$tmp."'";
$queri="insertinto$tablvalu".$value."";
echomysql_error;
mysql_queri$queri;
echo$k."";
}
echo"ok";
?
>
1显示数据库列表。
showdatabases;
刚开始时才两个数据库:
mysql和testmysql库很重要它里面有mysql系统信息,
改密码和新增用户,实际上就是用这个库进行操作。
2显示库中的数据表:
usemysql打开库,学过FOXBASE一定不会陌生吧
showtables;
3显示数据表的结构:
describ表名;
4建库:
creatdatabas库名;
5建表:
use库名;
creattabl表名(字段设定列表)
6删库和删表:
dropdatabas库名;
droptabl表名;
7将表中记录清空:
deletfrom表名;
8显示表中的记录:
select*from表名;
三、一个建库和建表以及插入数据的实例
dropdatabasifexistschool;//如果存在SCHOOL则删除
creatdatabasschool;//建立库SCHOOL
useschool;//打开库SCHOOL
creattablteacher//建立表TEACHER
idint3auto_incrnotnullprimarikey,
namchar10notnull,
addressvarchar50default'深圳',
yeardate
;//建表结束
//以下为插入字段
insertintoteachervalu'','glchengang','深圳一中','1976-10-10';
insertintoteachervalu'','jack','深圳一中','1975-12-23';
注:
建表中
1将ID设为长度为3数字字段:
int3并让它每个记录自动加一:
auto_incr
并不能为空:
notnull而且让它成为主字段primarikey
2将NAME设为长度为10字符字段
3将ADDRESS设为长度50字符字段,而且缺省值为深圳。
varchar和char有什么区别
呢,只有等以后的文章再说了
4将YEAR设为日期字段。
如果你mysql提示符键入上面的命令也可以,但不方便调试。
可以将以上命令
原样写入一个文本文件中假设为school.sql然后复制到c:
下,并在DOS状态进入目录
mysqlin然后键入以下命令:
mysql-uroot-p密码school.sql
如果胜利,空出一行无任何显示;如有错误,会有提示。
以上命令已经调试,
只要将//注释去掉即可使用)
四、将文本数据转到数据库中
1文本数据应符合的格式:
字段数据之间用tab键隔开,null值用来代替。
例:
3rose深圳二中1976-10-10
4mike深圳一中1975-12-23
2数据传入命令loaddatalocalinfil"文件名"intotabl表名;
注意:
最好将文件复制到mysqlin目录下,并且要先用us命令选表所在库。
五、导出和导入数据:
命令在DOSmysqlin目录下执行)
导出表
mysqldump--optschool>school.sql
注释:
将数据库school中的表全部备份到school.sql文件,school.sql一个文本文件,
文件