摘要 在这一章,我们将集中学习如何使用结构化查询语言(sql)在mysql数据库中工作。 (2002-08-29 14:11:10) ——————————————————————————– by wing, 出处:linuxaid 第二章: mysql入门 欢迎回到这个教程!在上一章,我们学习了安装和配置php和mysql这两个软件。在这一章,我们将集中学习如果使用结构化查询语言(sql)在mysql数据库中工作。 数据库入门 上一章简要说明的那样,php是一个服务器端的脚本语言,通过这个语言你可以在你的web页面中添加指令,这样你的web服务软件(可能是apache,personal web server或其他任何软件)会在向发出请求的浏览器发送这些页面前首先执行它。在那个简单的例子中,我展示了如何每次在接受请求的web页面中插入当前的日期。 都很清楚了,但是如果在其中添加一个数据库会真正引起我们的兴趣。一个数据库服务器(我们这里是mysql)是一个使用一定格式存储大量信息的程序,通过这个程序你可以很简单地使用象php这样的脚本语言来访问数据。例如,你可以使用php在数据库中获得一个笑话的列表并将其显示到你的web站点。 子中,笑话被完全存储在数据库中。这样做有两个好处。首先,你不再需要为你的每个笑话写一个html文件,你只需要写一个php文件来从数据库中引出任何的笑话并显示它;其次,要添加笑话到你的web站点中,也仅仅是添加笑话到数据库中。php代码在新笑话包含在列表中时可以自动显示新的笑话。 们通过这个例子来看看数据是如何在数据库中存储的。一个数据库包含一个或几个数据表(table),每一个数据表包含了一个事物的列表。对于我们的笑话数据库来说,我们一开始可能需要一个名为“jokes”的数据表,这个数据表包含了一个笑话列表。数据库中每个数据表包含一个或几个数据列(column)或数据域(field)。回到我们的例子中来,我们的“jokes”数据表可能有这样的两列:笑话的正文以及笑话添加到数据库中的日期。每个存储在数据表中的笑话我们称之为一行。要了解这儿提到的所有术语,你可以看下面这张图: 在笑话正文(“joketext”)和添加日期(“jokedate”)这两个数据列之外,我还增加了一个叫做“id”的数据列。这个数据列的作用是给每个笑话分配一个唯一的号码,这样我们可以很容易地查阅并区分这些笑话。 习一下,上面的数据表中有三个数据列、两行。每一行包含了一个笑话的id、它的正文以及它的添加日期。掌握了这些基本术语后,我们将开始使用mysql。 登录mysql sql数据库的标准界面是连接到mysql服务软件(在第一章内安装)并同时输入命令。要连接上服务器,我们需要使用mysql客户端程序。如果你自己安装了mysql服务软件,不管你是在windows下安装的,还是在一些unix的版本下安装的,你应该已经在安装服务程序的同一地点安装了这个客户端程序。在linux,这个程序被称之为mysql,其位置默认是/usr/local/mysql/bin 目录。在windows下,这个程序被称之为mysql.exe,其位置默认是c:mysqlin目录。 是自己安装的mysql服务器(例如,你是在你的web主机提供商的mysql服务器上工作),那么有两个方法连接到mysql服务器,第一个方法是使用telnet登录到你的web主机的服务器上,然后在那儿运行mysql。第二种方法是从http://www.mysql.com/(for windows和for linux的都可以免费获得) 下载并安装mysql客户端程序。这两种方法都可以很好地工作,你的web主机可能支持其中的一种,或者两种都支持(你需要去问清楚)。 择了哪种方法,不管你使用的是哪种系统,你最终都应该在一个命令行执行mysql客户端程序去连接你的mysql服务器,你需要输入下面的命令: mysql -h -u -p 换成你的mysql服务器正在其上运行的计算机的主机名或ip地址。如果你在运行服务的同一台计算机上运行客户端程序,你可以不使用-h 而且直接使用-h localhost。应该是你的mysql用户名。如果你是自己安装的mysql服务器,这应该就是root。如果你是使用的你的web主机提供商的mysql服务,这应该是他们为你指定的mysql用户。 参数告诉程序提示你输入你的口令,这将在你输入上面的命令后立即显示。如果你是自己安装的mysql,你的口令就是你在第一章内选择的root的口令。如果你是使用的你的web主机提供商的mysql服务,这应该是他们给你的mysql口令。 切都输入好了,mysql客户端程序会连接上mysql服务器并返回给你一个mysql的命令行: mysql> ysql服务器实际上是连接了好几个数据库(这使得一个web主机可以为几个用户设置同一个mysql服务器)。所以你的下一步应该是选择一个工作的数据库。首先,获得当前服务器上的数据库列表。输入下面的命令(不要忘了分号!),然后打回车。 mysql> show databases; l会显示给你服务器上的数据库列表。如果这是一个新安装的服务器(也就是说,这是你在第一章里自己安装的)。这个列表将会是这样: +———-+ | database | +———-+ | mysql | | test | +———-+ 2 rows in set (0.11 sec) l服务器使用第一个被称之为mysql的数据库来管理用户及其口令和权限。现在我们暂时不会关心这个数据库,在以后的章节中,我们会讨论它。第二个叫test是一个数据模块。你可以删除这个数据库,在我们的教程中不会使用到它(我们会自己建立一些数据库)。删除什么东西在mysql中被称之为“dropping”,要删除test数据库,其正确的命令应该是: mysql> drop database test; 入了这个命令,并打了回车,mysql会删除这个数据库,并返回query ok。注意,并不会提示你诸如“这是否确定”这样的信息。所以你在mysql输入命令必须十分小心。就象我们在这儿看到的,你可以完全删除数据库–包含它其中的所有信息–仅仅只用一个命令! 入下一步之前,让我们先来看看mysql命令行的连接。正如我们已经注意到的,在mysql中的所有命令都必须以分号(;)结束。如果你忘记了这个分号,mysql会认为你还没有结束输入你的命令,并会让你这下一行中继续录入: mysql> show -> databases; l在等待你输入命令中的剩余部分时,提示符会从mysql>改变为->。对于一个长命令,这是很有用的,你可以将你的命令分几行输入。 途发现你的命令出错了,你可以完全取消当前的命令(译者注:是指尚未执行的命令)并从头来过。要完成这个工作,你只需要输入c并按回车: mysql> drop databasecmysql> l会完全忽略你刚才输入的命令,并返回到提示符等待你的下一个命令。 你要退出mysql客户端程序时,你只需要输入quit或者exit (这两个命令是完全一样的)。这是唯一不用以分号结尾就可以执行的命令。 mysql> quitbye 什么是sql? 程中我们用来告诉mysql去做什么的命令其实是一个叫结构化查询语言(sql)的规范的一部分。sql中的命令也被称之为查询(在这篇教程中,我们会交替地采用这两种称呼)。 实现与绝大多数的数据库的交互的标准语言,所以即使你将来不再使用mysql,转而使用microsoft sql server,你会发现绝大多数命令是相同的。你必须理解sql和mysql的区别。mysql是你正在使用的数据库服务软件。sql是你用来实现和数据库的交互的语言。 建立一个数据库 web主机提供商已经为你分配了一个用来工作的数据库。你先耐心地等待一下,等一下我们会和你继续讨论下面的问题。如果你是在自己安装的mysql服务器上工作。执行下面的命令,很容易地你就可以建立一个数据库了: mysql> create database jokes; 库的名字是jokes,这是为了与我们工作的例子一致。其实你可以给你的数据库起任何你自己喜欢的名字。不过,如果你是在web主机提供商的mysql服务器上工作,它们可能已经为你建立了一个数据库,你就没法选择数据库的名字了。 已经有了一个数据库,我们需要告诉mysql我们想要使用这个数据库。下面这个命令应该也不太难记: mysql> use jokes; 以开始使用你的数据库了。在你在其中添加数据表之前,这个数据库将是空的,我们的第一步工作应该是建立一个数据表来保存我们的笑话。 建立一个数据表 遇到的sql命令都是非常简单的,但是因为数据表是比较灵活的,相应地建立它们的命令就要复杂得多了。建立数据表的基本格式是这样的: mysql> create table ( -> , -> , -> … -> ); 现在回到我们的例子“jokes”表。这个表有三个数据列:id(一个数字)、joketext(笑话的正文)和jokedate(加入的日期)。建立这个表的命令应该是这样的: mysql> create table jokes ( -> id int not null auto_increment primary key, -> joketext text, -> jokedate date not null -> ); 看上去很复杂,是吧?让我们将它分解一下: 第一行是比较简单的;它说明我们想要建立一个新的名为jokes的数据表。 第二行说明我们需要一个数据列叫id,这个列的类型应该是一个整数(int)。这一行还定义了这个数据列的其他一些信息。首先,这一行不允许为空(not null)。第二,如果你没有为一列指定一个值,mysql会选择使用一个比当前最大值大的值(auto_increment)。最后,这个数据列还是这数据表的唯一的标识符,所以这个数据列中的所有值都应该是不重复的(primary key)。 第三行是非常简单的;这说明我们需要一个数据列叫joketext,这个列的类型应该是一个文本(text)。 第四行定义了我们的最后一列,列名是jokedate,这个列的类型是日期型(date)这个列也不能为空(not null)。 请注意,我们在输入sql命令时,大小写是完全自由的,但是在一个unix-based系统下运行的mysql服务,因为我们必须与mysql数据目录下的目录和文件一致,当遇到数据库名和表名时,我们必须区分大小写。否则,mysql是完全对大小写不敏感的,只有一种情况例外,在同一命令中多次出现的表名、列名以及其他名字必须在拼写上完全一致
http://www.bkjia.com/phpjc/532244.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/532244.htmltecharticle摘要 在这一章,我们将集中学习如何使用结构化查询语言(sql)在mysql数据库中工作。 (2002-08-29 14:11:10) ——————————————-…