MySQL[转]

上一篇 / 下一篇  2009-03-14 10:36:53

MySQL简介
作者:Rafi Ton



什么是MySQL?

MySQL是一个多用户、多线程的SQL数据库,是一个客户机/服务器结构的应用,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。

SQL (Structured Query Language结构化查询语言)是目前使用最广的并且是标准的数据库语言。SQL语言使得存取或更新信息变得十分容易,你可以直接使用SQL从网站上查询信息。MySQL的快速和灵活性足以满足一个网站的信息管理工作。数据库与用户端之间的接口程序可以使用CGI进行通信。新网xinnet使用的是PHP,使用PHP和MySQL这两样东西加在一起,对于开发数据驱动的网站这项工作而言是最佳组合。PHP是一种用于服务器端执行程序解释的脚本语言。如果你接触过ASP的话,那么您对于在HTML页面中嵌入代码应该是比较熟悉了。PHP代码在服务器一端被解释、执行并转变成普通的HTML页面内容,送给浏览器一端。这种模式使得我们可以用它来完成相当复杂的功能。

为什么用MySQL?

现在每一个人的生活几乎都离不开数据库,如果没有数据库,很多事情都会变得非常棘手,也许根本无法做得到。银行、大学和图书馆就是几个严重依赖数据库系统的地方。在互联网上,使用搜索引擎、在线购物甚至是访问网站地址(http://www...)都离不开数据库。一个数据库通常都安装在称为数据库服务器的计算机上。目前市场上运行最快的 SQL (Structured Query Language结构化查询语言) 数据库之一就是MySQL Server,由瑞典的T.c.X. DataKonsultAB公司开发。MySQL可以从http://www.mysql.com上下载,它提供了其它数据库少有的编程工具,而且MySQL对于商业和个人用户是免费的。如果想用MySQL开发应用软件,必须支付一定的产品使用许可费用,具体情况可以访问MySQL's licensing section

MySQL的功能特点如下:
可以同时处理几乎不限数量的用户;
处理多达50,000,000以上的记录;
命令执行速度快,也许是现今最快的;
简单有效的用户特权系统。

谁在用MySQL?

MySQL在企业中使用非常广泛,其中知名的公司有:

如果这些还不够,你可以在MySQL用户名单上看到更多。

这篇文章主要是向读者对MySQL服务器的基本操作进行简单的介绍,其中包括怎样建立连接,设置服务器进行简单的命令操作。这里介绍的的命令是一些最重要的,因为它们是构成一些高级命令的基础。

MySQL通常对用户来说是一种额外服务,所以在使用之前,请向新网xinnet申请开设MySQL帐户。

MySQL高级命令

更改表内容

MySQL的另一个重要功能就是修改表中已经存在的数据。修改表数据要使用ALTER命令,该命令可以增加、修改、删除列,同时也可以对表进行重命名。

例如: 将表名称由test改为mytest,


mysql> ALTER table test RENAME mytest;

例如: 在表mytest中添加列日期型表列birthday,


mysql> ALTER table mytest ADD birthday DATE;

例如: 将表mytest中的name列改为newname,类型是VARCHAR (25),

mysql> ALTER table mytest CHANGE
mysql>
name newname VARCHAR (25);

例如: 删除表mytest中名为newname的列,


mysql> ALTER table mytest DROP newname;

顺序执行上面的四个命令之后的结果是生成下面的表。


mysql> TABLE mytest (
>
email VARCHAR (25),
>
phone_number INT,
>
ID INT AUTO_INCREMENT,
>
birthday DATE );

在这部教程里,我们只对MySQL的使用进行了简单的介绍。但这些功能都是我们进行编程所必须熟悉的基本操作。最重要的还是多多实践,参考相关技术文档,多参加网上相关技术的讨论。

MySQL中文参考手册

Order By 按序排列


mysql> SELECT * FROM test WHERE
mysql>
(name = "Bugs Bunny") ORDER BY
mysql>
phone_number;

结果:
所有包含名字 "Bugs Bunny" 的记录会显示出来,并以电话号码为排序方式。

查询功能

MySQL为用户提供了粗略搜索和详细搜索的选择。


mysql> SELECT * FROM test WHERE
mysql>
(name LIKE "%gs Bunny");

结果:

显示出来的是所有包含字符"gs Bunny"的记录,下面的字段都符合该条件:"Bugs Bunny", "ags Bunny", "gs Bunny", and "234rtgs Bunny"。请注意这里使用的是"LIKE"而不是等号(=),表示搜索的是和条件相似的记录,而不必是完全一样。百分号 '%'可以放在字符串当中的任何地方,服务器搜索字符串的方式则取决于'%'放在何处。


mysql> SELECT * FROM test WHERE
mysql>
(name LIKE "Bugs Bunny%");

结果:

显示出来的是所有包含字符"gs Bunny"的记录,下面的字段都符合该条件:"Bugs Bunnys", "Bugs Bunnyyyy453", "Bugs Bunnytrtrtrtrtr", 但是 "gs Bunny"则不符合条件。

我们也可以使用等号条件式来搜索:


mysql> SELECT name FROM test WHERE
mysql>
(name = "Bugs Bunny");

结果:

name
Bugs Bunny

逻辑运算

MySQL支持所有的基本逻辑运算。

AND (&&) 与


mysql> SELECT * FROM test WHERE
mysql>
(name = "Bugs Bunny") AND
mysql>
(phone_number = 5554321);

结果:
所有同时包含名字 "Bugs Bunny"电话号码'5554321'的记录会显示出来。

OR ( || ) 或


mysql> SELECT * FROM test WHERE
mysql>
(name = "Bugs Bunny") OR
mysql>
(phone_number = 5554321);

结果:
所有包含名字 "Bugs Bunny" 电话号码'5554321'的记录会显示出来。

NOT ( ! ) 非


mysql> SELECT * FROM test WHERE
mysql>
(name != "Bugs Bunny");

结果:
所有不包含名字 "Bugs Bunny" 的记录会显示出来。

对数据库进行操作


选取内容

如果不能从一个数据库搜索和提取信息,那么这个数据库就没有什么用处。 在MySql里,这一功能是通过SELECT命令来实现。


mysql> SELECT * FROM test
mysql>
WHERE (name = "Bugs Bunny");

结果:

name email phone_number ID   
Bugs Bunny carrots@devshed.com 5554321 1

假设我们已经插入了多个不同的记录,所有记录都有相同的姓名,但有不同的邮件地址和电话号码。那么表test的内容显示如下:

name email phone_number ID   
Bugs Bunny carrots@devshed.com 5554321 1
Bugs Bunny peppers@devshed.com 5554331 2
Bugs Bunny lettuce@devshed.com 5554341 3
Bugs Bunny celery@devshed.com 5554351 4
 

我们可以对数据库进行四种方式的操作:添加、删除、修改和查询(搜索)。请大家注意的是,SQL语言和其它编程语言一样,对命令语句的语法格式很在意,比如一个括号、逗号或分号的错误都会导致命令无法执行。所以一定要熟悉语法格式。

插入记录

这里我们继续使用前面创建过的数据库作为例子:


mysql> CREATE TABLE test (
>
name VARCHAR (15),
>
email VARCHAR (25),
>
phone_number INT,
>
ID INT NOT NULL AUTO_INCREMENT,
>
PRIMARY KEY (ID));

使用INSERT命令插入数据,将数据分别插入姓名、邮件地址、电话和ID号内。


mysql> INSERT INTO test VALUES
mysql>
('Bugs Bunny', 'carrots@devshed.com',
mysql>
5554321, NULL);

结果:


Query OK, 1 row affected (0.02 sec)

mysql>

  • 数据类型VARCHAR的内容必须要用单引号,所有的字符串类型数据(char, varchar, text, blob)都必须使用单引号,否则会出错误信息。
  • 电话号码的内容不用单引号。整数INT类型的数据都不用单引号。
  • NULL空值。为什么要在ID中插入空值? 实际上该数据类型使用了AUTO_INCREMENT选项,在插入空值时数据库会自动将ID的值加1。比如最后一个记录的ID值是2,那么再插入一个记录时,新记录的ID值就是3。如果将空值插入TIMESTAMP类型的记录时,那么新记录的TIMESTAMP值就是当前的时间。

注意: 每次插入新记录时必须保证新记录的值的个数与数据类型的数目一致。上面的命令中如果只有一个值,插入命令就会出错。

例如:  


mysql> insert into test values('doggy');
ERROR 1058: Column count doesn't match value count
mysql>

Records 记录

一组数据类型就构成了记录。一个记录可以只有一个数据类型,也可以根据需要设置很多个。一个或多个记录构成了一个表。

Tables 表

在我们可以对数据库进行操作之前,必须建立一个可以存放数据的表。可以通过如下方法创建:

mysql> CREATE TABLE test (
> name VARCHAR (15),
> email VARCHAR (25),
> phone_number INT,
> ID INT NOT NULL AUTO_INCREMENT,
> PRIMARY KEY (ID));

输出结果:

Query OK, 0 rows affected (0.10 sec)
mysql>

这样你的第一个表就建成了。

所有的数据类型都可以使用下面的选项:

  • 主键值Primary Key。主键值是用来将记录区分开来,因为没有两个记录能使用同一个主键值。在必须要保持记录的唯一性时,使用主键值是非常有用的。
  • Auto_Increment自动增量。使用了这个选项的列在每增加一个记录时,都会自动将记录在该列的值加1。
  • NOT NULL非空变量。表示该列不能被分配为空值。

例:
soc_sec_number INT PRIMARY KEY;
这样soc_sec_number字段就不能有重复的值。

ID_NUMBER INT AUTO_INCREMENT;
从1开始,自动按顺序将后面的值在前面的基础上增加1。

与表相关的命令

我们可以使用一些与表有关的命令:

显示表内容

如果想显示数据库当中存在的所有表,可以使用命令show tables,

mysql> show tables;

显示列 

mysql> show columns from test;

结果:
显示出与表相关的列及数据。

现在你已经对创建表有了一个基本的认识。表是由数据类型构成的,所有的数据类型形成了记录。
FLOAT [(M,D)] 浮点类型

FLOAT代表浮点类型,用来表示更精确的数字类型。
rainfall FLOAT (4,2);
这个变量可以用来表示一年当中的平均降水量,并精确到小数。FLOAT (4,2)表示数值一共可以有4位数字,小数点后有2位数字。请看下面哪些数值可以用上面的变量类型表示:

42.35是合法的
324.45是不合法的,将被修改为324.5
2.2 是合法的数值
34.542 不合法,将被修改为 34.54
注意:由于FLOAT会将数值四舍五入,所以如果不想让数值随意被更改,建议使用DECIMAL

DATE 日期类型

用来存放日期信息,缺省的格式是'YYYY-MM-DD',日期范围可以从'0000-00-00' 到 '9999-12-31'。声明日期型变量the_date

the_date DATE;

TEXT / BLOB 文本和大对象

如果字符串的长度超过了255,或者要将一篇文章保存到数据库中,CHAR和VARCHAR就无法使用了,这里就要用到TEXT和BLOB类型,该类型可以保存的字符串长度在255 - 65535字节内。BLOB是一个能保存二进制数据的的大对象。BLOB和TEXT数据类型是一样的,唯一的区别就是TEXT不区分大小写,而BLOB区分大小写。

SET 固定类型

一个SET是可以有零或多个值的一个字符串对象,其每一个必须从表创建造被指定了的允许值的一张列表中被选择。由多个集合成员组成的SET列通过由由逗号分隔(“,”)的成员被指定。SET类型最多可以64个值。
transport SET ("truck", "wagon") NOT NULL;

经过上面的声明之后,transport可以有下面几个值:

""
"truck"
"wagon"
"truck,wagon"

ENUM 枚举类型

ENUM是与SET属性相同的数据类型,但从中取值时只能取一个值。
transport ENUM ("truck", "wagon") NOT NULL;

经过上面的声明之后,transport可以有下面几个值:

""
"truck"
"wagon"

MySQL基础



数据类型和表 

数据库其实不过是由不同层次的数据结构构成的。MySQL中可以存放块(或记录)信息的结构就是表(table)。而这些记录则由更小的信息格式组成,即数据类型。一个或多个的数据类型组成了记录。由记录组成的表构成了数据库的一部分。数据库的层次可以表示如下:

Database < Table < Record < Datatype

数据类型有不同的形式和大小,这样程序员就可以根据实际应用的需要建立表。选择合适的数据类型对于数据库的运行性能影响致关重要,所以详细了解这些概念是十分重要的。

MySQL Datatypes 数据类型

MySQL支持各种数据类型(即使是编程新手也都基本熟悉)。常用的类型包括:

CHAR (M) 固定长度字符
用来表示固定长度的字符串。字符串的长度范围是1-255。例如:

car_model CHAR(10);

VARCHAR (M) 可变长度字符

VARCHAR是一个具有灵活性的字符数据类型。字符串的长度范围是1-255。 选用VARCHAR通常是比较明智的决定。尽管处理CHAR类型的数据比VARCHAR类型的数据要快,有时会快50%。(CHAR类型存储的数据的长度是声明变量时的固定长度,而不管数据的实际长度。VARCHAR存储的是按数据的实际长度,从而减小了数据文件的大小。)

car_model VARCHAR(10);

INT (M) [Unsigned] 整数类型

INT是整数类型,存储整数的值范围是-2147483648到2147483647。在声明类型时可选用"unsigned",这样值的范围就是0到4294967295。
light_years INT;
合法整数: '-24567',    非法整数: '3000000000'。
light_years INT unsigned;
合法整数: '3000000000',    非法整数: '-24567'。

用户会看见如下结果:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 49 to server version: 3.21.23-beta-log
Type 'help' for help.

mysql>

登录到数据库之后,我们就可以执行各种MySQL的命令,但在对数据库操作之前必须要先调用数据库,也就是与数据库建立连接:


mysql> use devshed;

结果:


Database changed
Mysql>

现在你已经连接到数据库。注意命令后面要加上分号(;),几乎所有的MySQL命令都要加分号。有关管理数据库的命令可以通过键入help, \h 或?列出来。


mysql> help

help (\h) Display this
text ? (\h) Synonym for `help'
clear (\c) Clear command
connect (\r) Reconnect to the server. Optional arguments are db and host
edit (\e) Edit command with $EDITOR
exit (\) Exit mysql. Same as quit
go (\g) Send command to mysql server
print (\p) print current command
quit (\q) Quit mysql
rehash (\#) Rebuild completion hash
status (\s) Get status information from the server
use (\u) Use another database. Takes database name as argument

Connection id: 49 (Can be used with mysqladmin kill)

mysql>


也许这些功能不会都能用上,但应该知道每一个命令都会做什么。象命令status, use, print, connect, clear, 和quit在最开始学习使用时都会十分有用。现在,你应该对连接数据库、选择数据库和运行基本命令都应该有一定的了解。下一步将讲解有关对数据库进行操作的基本概念和方法。

MySQL的环境



MySQL通常用Telnet进行登录(一个非常好的Telnet软件名为Easyterm,可以从 http://www.arachnoid.com下载)。我们向用户推荐使用WinMysql 管理工具,下载网址是http://www.tcx.se/Downloads/Win32/myAdmin1.0.1.0.zip 通过Telnet与web服务器连接后,第二个命令提供MySQL服务器的登录。登录的步骤如下:

1. 连接到服务器。


login: devshed
Password:
********

Last login: Wed Aug 12 09:49:14 from 195.103.124.222
Copyright 1992, 1993, 1994, 1995, 1996 Berkeley Software Design, Inc.
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.

BSDI BSD/OS 2.1 Kernel #12: Mon Feb 23 13:46:27 EST 1998

You have new mail.
www24:mywww/devshed#


2. 登录到MySQL帐户。


www24:mywww/devshed# mysql -u devshed -p

Syntax: mysql -h hostname -u username -p[password]
Or
mysql -h hostname -u username --password=password

用户会被提示输入密码。-p表示输入密码。


Enter password: *******


TAG: MySQL Mysql mysql mySQL MYSQL MySql MYsql

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2011-06-14  
   1234
567891011
12131415161718
19202122232425
2627282930  

我的存档

数据统计

  • 访问量: 215
  • 日志数: 1
  • 建立时间: 2009-03-14
  • 更新时间: 2009-03-14

RSS订阅

Open Toolbar