Fitter Happier

fond but not in love

Subscribe to RSS feed

Posts tagged with "mysql"

MYSQL 基础 命令(转)

, ,

一、连接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是一个文本文件,文件名任取,打开看看你会有新发现。

导入脚本语言命令:source c:\\school.sql;

转自: http://tieba.baidu.com/f?kz=294154058

php+mysql中文乱码的解决

, ,

学会了怎么用php+mysql来创建到态页面,今天才真正的用了一下。不过在用的时候却又来的新的问题,在php中提交的数据,在mysql中显示的全都是乱码。于是就google了一下,在PHP与MySQL开发中页面乱码的产生与解决这篇文章中看到要在连接数据库以后,再加一句
mysql_query("SET NAMES UTF8"); 
来设定php与mysql间数据传输的编码,不过这样设置了以后还是不行,乱码变成了一个个的小“?”,直接用phpMyAdmin创建了一个包含中文的项,发现也是乱码,于是知道了问题不是出在了php中。经过了一段检查发现,我创建的表的字符集是latin1,不过我也不知道怎么把它改成utf8的,就直接在phpMyAdmin里面创建了一个,phpMyAdmin显示所使用的query是
CREATE DATABASE $dbname DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
这种格式的,所以明白了是在创建数据库的时候要把数据库的碥码也设置好,而之后在创建表,项的时候就不用指定了,因为它们会从上一级继承。

php+mysql简介(三)

, ,

在前两篇简介中以经介绍了怎么用php和mysql数据库交互,不过那些在实际应用中还是不够的,下面就继续介绍一些新的东西。 有时我们在选择数据库中的数据时并不想把所有的都选择出来,比如在我们前面建立的contacts表中,如果只想选出first name为john的联系人,就可以用这个语句:
SELECT * FROM contacts WHERE first='john'
更有趣的是,我们甚至可以用一个变量来代替john,这也就是说我们可以在网站中让用户来选择想要查看的内容来进行选择。 同时,我们还可能对输出的顺序有一定的要求,比如想让我们的联系人按照last name的升序排列,就可以这样:
SELECT * FROM contacts ORDER BY last ASC
其中的ASC是Ascending(升序)的缩写,如果想用降序排列,可以把ASC换成DESC(Descending) 。 有时候,我们需要对数据库中的内容进行一些更新,比如我们的朋友换了电话,在我们的contacts表中就要更新他的电话号码,当然,这可以交给他自己去做,他想改的不一定只是电话号码(可能他已经搬家了也说不定)。这可以做成一个页面,由用户去修改内容并提交:
<form action="updated.php" method="post">
<input type="hidden" name="ud_id" value="<? echo $id; ?>">
First Name: <input type="text" name="ud_first" value="<? echo $first; ?>"><br>
Last Name: <input type="text" name="ud_last" value="<? echo $last; ?>"><br>
Phone Number: <input type="text" name="ud_phone" value="<? echo $phone; ?>"><br>
Mobile Number: <input type="text" name="ud_mobile" value="<? echo $mobile; ?>"><br>
Fax Number: <input type="text" name="ud_fax" value="<? echo $fax; ?>"><br>
E-mail Address: <input type="text" name="ud_email" value="<? echo $email; ?>"><br>
Web Address: <input type="text" name="ud_web" value="<? echo $web; ?>"><br>
<input type="Submit" value="Update">
</form>
当然,这只是网页,真正起做用的还是我们的php,update.php可以写成这样:
$ud_id=$_POST['ud_id'];
$ud_first=$_POST['ud_first'];
$ud_last=$_POST['ud_last'];
$ud_phone=$_POST['ud_phone'];
$ud_mobile=$_POST['ud_mobile'];
$ud_fax=$_POST['ud_fax'];
$ud_email=$_POST['ud_email'];
$ud_web=$_POST['ud_web'];

$username="username";
$password="password";
$database="your_database";
mysql_connect(localhost,$username,$password);


$query="UPDATE contacts SET first='$ud_first', last='$ud_last', phone='$ud_phone', mobile='$ud_mobile', fax='$ud_fax', email='$ud_email', web='$ud_web' WHERE id='$ud_id'";
mysql_query($query);
echo "Record Updated";
mysql_close();
这其中最关键的一句就是这个:
$query = "UPDATE contacts SET first = '$ud_first', last = '$ud_last', phone = '$ud_phone', mobile = '$ud_mobile', fax = '$ud_fax', email = '$ud_email', web = '$ud_web' WHERE id = '$ud_id'";
这是实际修改的语句,从此可以看出更新的语法是这样的:
UPDATE tablename SET ...
还有时候,我们想删除掉数据库的内容,就可以通过下面的语句来实现:
DELETE FROM contacts WHERE id='$id'
这句可以删除id是$id的联系人。 当我们的数据库非常庞大时,搜索是必不可少的功能,这也是可以通过php+mysql来实现。它的语法是这样的:
SELECT * FROM tablename WHERE fieldname LIKE '%$string%'
其中%是通配符,上面的%$string%就是搜索fieldname中包含$string的记录,而$string%则表示以$string开头,%$string以$string结尾。 以上的东西已经把php+mysql来制作动态网页的基本内容都介绍了,相信读过的朋友应该可以开始动手建站了。我也是第一次接触这些内容,所以难免有不正确的地方,所以希望能抽出宝贵时间读这些小文章的朋友发现问题及时指出,我们可以共同进步。我也要开始去动手了。 本文参考了 Part 5 - More Outputs Part 6 - Single Records & Error Trapping Part 7 - Updating & Deleting Part 8 - Finishing The Script

php+mysql简介(二)

, ,

前一阵子写了php+mysql简介(一),之后一阵子就有些忙了,一直没有时间写以后的东西。现在在帮同学做一个网站,正好也需要这一方面的内容,所以就抽个空把这个写完吧,当再复习一遍。下面言归正传。

当我们创建了表以后,下一步要做的就是往里面添加内容了。这可以通过插入操作来完成。当我们要向一个名叫tablename的表里面添加一个记录,它的格式就是这样的:
INSERT INTO tablename VALUES

举个具体的例子,要向上一篇中创建的那个表contacts里面添加一个联系人,就可以用下面这个query
$query = "INSERT INTO contacts VALUES ('','John','Smith','01234 567890','00112 334455','01234 567891','johnsmith@gowansnet.com','http://www.gowansnet.com')";

注意这里的一个问题,contacts里面记录的第一项id,我们在创建时用了一个参数是Auto Increment,也就是说我们在插入一个记录时不用指定这一项的值,而mysql会自动选择下一个可以使用的值,就所以这个query里面第一个参数只是用了个''。

在插入了一定的信息后,我们就可以在我们的php页面上来输出数据库中的内容了。这个操作可以按以下步骤来实现。
首先,需要把表中的内容读出来,放到一个变量里面,比如我们要选取表tablename中的所有信息就可以这样:
SELECT * FROM contacts

还是用那个contacts的例子,我们从contacts表中读出数据并把它们存入result变量中,可以这样:
$query="SELECT * FROM contacts";
$result=mysql_query($query);

而这样只是存到了result变量,它是不能直接输出的,要想得到数据,还要继续,就是先要知道一个选择了多少行。
$num=mysql_numrows($result);

这样,就把行数存到了num变量中。
下面我们就可以得到每一个数据了。这可以用一个循环来实现:
$i=0;
while ($i < $num) {

$first=mysql_result($result,$i,"first");
$last=mysql_result($result,$i,"last");
$phone=mysql_result($result,$i,"phone");
$mobile=mysql_result($result,$i,"mobile");
$fax=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"email");
$web=mysql_result($result,$i,"web");

$i++;
}

这里的语法是这样的,要把第i个记录的fieldname字段的内容存到variable,可以这样
$variable=mysql_result($result,$i,"fieldname");


最后,当我们执行完对数据库的操作后,还要断开与数据库的连接:
mysql_close();


本段参考了文章
Part 3 - Inserting Information
Part 4 - Displaying Data[/CODE]

php+mysql简介 (一)

, , ,

众所周知,php语言一个很大的特点就是可以连接数据库并且进行数据库的操作。而这里最合适的数据库非开源的mysql莫属。这是我在今天的学习过程中所总结的认为重要的东西。

要想使用php进行mysql的数据库操作,首先需要与数据库连接,这里php中的语句是

mysql_connect(host,user,password);


这里的host就是指数据库所在的位置,通常来说我们都是将mysql和apache安装在同一台机器上的,所以这里的host也通常就是localhost;user则是用来登录数据库的用户名,password就当然是密码了。举个例子,比如在用一个叫a的用户名,他的密码是b来登录服务器上的mysql数据库,所用的语句应该是

mysql_connect(localhost,a,b);


连接好数据库系统以后,我们先要创建我们需要的数据库。在php中,一般对mysql进行操作都是通过mysql_query(query)进行的。这里的query(请求)不同,所进行的操作也就不同了。创建数据库的query是这样的:

$query="CREATE DATABASE dbname"

其中的dbname就是我们要创建的数据库的名字。

当我们有了要进行操作数据库后,还要先选择它,它是通过这个语句来完成的

@mysql_select_db(database) or die( "Unable to select database");


database是我们要选择的数据库,die( "Unable to select database")则是用来说明,如果选择不成功,就退出并反馈信息Unable to select database。

当选择好数据库以后,我们要做的第一件事当然就是新建一个表了(否则我们的数据存在哪里呀)。对于表中的字段,有几种常用的类型,下面分别介绍一下:

TININT      比较小的整数
SMALLINT          比较小的整数
MEDIUMINT         整数
INT               整数
VARCHAR           文本(不超过256个英文字母)
TEXT              文本



创建数据库的query的格式是这样的

CREATE TABLE tablename (

Fields

)


tablename就是要创建的表的名称,Fields就是所包含的字段,它是这样定义的:

fieldname type(length) extra info


这里fieldname就是名称,type是上面提到的类型,length则是这个field的长度,extra info就是其它信息,一般情况如查没有附加信息的话就可以写NOT NULL,还有一种比较特殊的信息是这样的auto_increment,它表示在向表中添加信息的里候,这个field可以不填,而是自动选取下一个可用的值。举个例子

$query="CREATE TABLE contacts (id int(6) NOT NULL auto_increment,first varchar(15) NOT NULL,last varchar(15) NOT NULL,phone varchar(20) NOT NULL,mobile varchar(20) NOT NULL,fax varchar(20) NOT NULL,email varchar(30) NOT NULL,web varchar(30) NOT NULL,PRIMARY KEY (id),UNIQUE id (id),KEY id_2 (id))";


就是把这个创建表的query放到变量query中,以便在之后的程序中使用。

本文参考了
PHP/MySQL Tutorial Part 2 - Setting Up The Database
Connect to MySQL Database
两篇文章。由于本人没有正规地学过数据库方面的知识,如有术语使用不正确或者有其它错误,请留言指出,谢谢。
February 2012
M T W T F S S
January 2012March 2012
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29