MySQL连接、删除、创建与调优

MySQL与Perl,C,C++,Java和PHP不同的编程语言的组合运行相当不错。出了这些语言,PHP由于其Web应用程序开发最流行的一种。

本教程特别注重在PHP环境中使用MySQL。如果有兴趣使用MySQL+PERL,那么可以看看 PERL + MySQL教程.

PHP提供了各种功能来访问MySQL数据库和操作MySQL数据库的数据记录。需要调用PHP函数,以同样的方式调用任何其它的 PHP 函数。

使用PHP函数连接MySQL具有以下一般格式为:

mysql_function(value,value,...);

函数名的第二部分是特定的功能,通常描述函数做什么的一个词语。以下是两个函数,这是在我们教程中使用的:

mysqli_connect($connect);
mysqli_query($connect,"SQL statement");

下面的例子显示PHP调用任何MySQL函数的通用语法。

<html>
<head>
<title>PHP with MySQL</title>
</head>
<body>
<?php
   $retval = mysql_function(value, [value,...]);
   if( !$retval )
   {
       die ( "Error: a related error message" );
   }
   // Otherwise MySQL  or PHP Statements
?>
</body>
</html>

从下一章开始,将学习所有重要的MySQL以及PHP功能。



连接:

使用MySQL二进制连接MySQL



可以使用MySQL二进制在命令提示符下建立MySQL数据库的连接。

示例:



下面是一个简单的例子,从命令提示符连接MySQL服务器:

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p
Enter password:

注意,这里密码为空,直接回车就就进入mysql>命令提示符下,能够执行任何SQL命令。以下是上述命令的结果:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may 
be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

在上面的例子中,我们使用 root 用户,但可以使用任何其他用户。任何用户将能够执行所有的SQL操作(前提这个用户有对应执行SQL权限)。

任何时候使用exit命令在mysql>提示符下,从MySQL数据库断开。

mysql> exit
Bye

使用PHP脚本连接MySQL



PHP提供mysql_connect()函数打开一个数据库连接。这个函数有五个参数,返回成功一个MySQL连接标识符,失败返回FALSE。

语法:





connection mysql_connect(server,user,passwd,new_link,client_flag);
参数 描述
server 可选 - 运行数据库服务器的主机名。如果不指定,则缺省值为localhost:3036.
user 可选 - 访问数据库的用户名。如果未指定,则默认是拥有该服务器进程的用户的名称。
passwd 可选 - 访问数据库的用户的密码。如果没有指定,则默认为空口令。
new_link 可选 - 如果第二个调用让mysql_connect()使用相同的参数,没有新的连接将被建立; 已经打开的连接标识符将被返回。
client_flags 可选 - 以下常量的组合:
  • MYSQL_CLIENT_SSL - 使用SSL加密

  • MYSQL_CLIENT_COMPRESS - 使用压缩协议

  • MYSQL_CLIENT_IGNORE_SPACE - 允许在函数名后使用空格

  • MYSQL_CLIENT_INTERACTIVE - 关闭连接之前允许的闲置超时互动秒数

可以使用另一个PHP函数:mysql_close() 随时断开从MySQL数据库的连接。这个函数有一个参数,它是由mysql_connect()函数返回一个连接。

语法:





bool mysql_close ( resource $link_identifier );

如果没有指定的资源,那么最后一个打开的数据库关闭。如果关闭连接成功该函数返回true,否则返回false。

示例:



试试下面的例子连接一个MySQL服务器:

<html>
<head>
<title>Connecting MySQL Server</title>
</head>
<body>
<?php
   $dbhost = 'localhost';
   $dbuser = 'root';
   $dbpass = '123456';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn )
   {
     die('Could not connect: ' . mysql_error());
   }
   echo 'Connected successfully';
   mysql_close($conn);
?>
</body>
</html>


PHP提供 mysql_select_db() 函数来选择一个数据库。它成功时则返回TRUE,或者失败返回FALSE。

语法:





bool mysql_select_db( db_name, connection );
 
参数 描述
db_name 必需 - 要选择MySQL数据库的名称
connection 可选 - 如果没有指定,则是最后一个通过mysql_connect打开的连接将被使用。

示例:



这里是显示如何选择数据库的实例。

<html>
<head>
<title>MySQL选择数据库示例</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'guest';
$dbpass = 'guest123';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_select_db( 'test' );
mysql_close($conn);
?>
</body>
</html>


删除:

1、使用mysqladmin删除数据库



需要特殊权限来创建或删除一个MySQL数据库。因此,假如你有机会获得root用户来登录,可以用mysql中mysqladmin二进制来创建任何数据库。

在删除任何数据库时要注意,因为删除数据库时所有的数据在数据库中。

下面是一个例子,用来删除前面的章节中所创建的数据库:

[root@host]# mysqladmin -u root -p drop yiibai
Enter password:******
这会给出一个警告,它会确认你是否真的要删除这个数据库或不删除。
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'yiibai' database [y/N] y
Database "yiibai" dropped
或使用:
mysql> drop database yiibai;
Query OK, 0 rows affected (0.01 sec)
使用下面命令看删除后,数据库的列表情况:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| yiibai             |
+--------------------+
6 rows in set (0.00 sec)

2、使用PHP脚本删除数据库




PHP使用mysql_query()函数来创建或删除MySQL数据库。该函数有两个参数,成功返回TRUE或失败返回FALSE。

语法:




bool mysql_query( sql, connection );
 
参数 描述
sql 必需 - SQL查询来创建或删除一个MySQL数据库
connection 可选 - 如果没有指定,则最后一个通过mysql_connect打开的连接将被使用。

示例:




试试下面的例子用于删除MySQL数据库:
<html>
<head>
<title>删除MySQL数据库</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully<br />';
$sql = 'DROP DATABASE yiibai';
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not delete database: ' . mysql_error());
}
echo "Database YIIBAI deleted successfully\n";
mysql_close($conn);
?>
</body>
</html>
注意:  在使用上面PHP脚本删除数据库,它不会提示输入任何确认。 所以,在删除MySQL数据库时要小心,它执行后将直接删除数库,数据库的一切信息将被删除无法恢复。



创建:

使用 mysqladmin创建数据库



需要特殊权限创建或删除一个MySQL数据库。因此,假如有权使用 root 用户,就可以用mysql中的mysqladmin来创建数据库。

示例:



下面是一个简单的例子,创建名为 yiibai_tutorials1 的数据库。

D:\software\mysql-5.6.25-winx64\bin> mysqladmin -u root -p create yiibai
Enter password:<回车>

D:\software\mysql-5.6.25-winx64\bin> mysql -u root -p
Enter password:
mysql>create database yiibai;

这将创建一个MySQL数据库:yiibai_tutorials1   和 yiibai_tutorials2

使用PHP脚本来创建数据库



PHP使用mysql_query()函数来创建或删除MySQL数据库。该函数有两个参数,成功返回TRUE或失败返回FALSE。

语法:




bool mysql_query( sql, connection );
参数 描述
sql 必需 - SQL查询用来创建或删除一个MySQL数据库
connection 可选 - 如果没有指定,则最后一个通过mysql_connect打开的连接将被使用。

示例:



试试下面的例子来创建数据库:

<html>
<head>
<title>创建MySQL数据库</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully<br />';
$sql = 'CREATE DATABASE yiibai';
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not create database: ' . mysql_error());
}
echo "Database yiibai created successfully\n";
mysql_close($conn);
?>
</body>
</html>

正确地定义的表中的字段在数据库的整体优化是非常重要的。我们应该只使用真正需要使用类型和字段的大小; 如果知道只使用2个字符,就不使用10个字符宽定义一个字段。这些类型的字段(或列),也被称为数据类型,数据存储这些字段之中。

MySQL使用许多不同的数据类型,总体上分为三类:数字,日期,时间和字符串类型。

数字数据类型



MySQL使用所有标准的ANSI SQL数字数据类型,所以,如果在学习MySQL之前,有接触过其它不同的数据库系统,那么这些定义看起来很熟悉。下面列出了常见的数字数据类型及其说明:

  • INT - 正常大小的整数,可以带符号。如果是有符号的,它允许的范围是从-2147483648到2147483647。如果是无符号,允许的范围是从0到4294967295。 可以指定多达11位的宽度。

  • TINYINT - 一个非常小的整数,可以带符号。如果是有符号,它允许的范围是从-128到127。如果是无符号,允许的范围是从0到255,可以指定多达4位数的宽度。

  • SMALLINT - 一个小的整数,可以带符号。如果有符号,允许范围为-32768至32767。如果无符号,允许的范围是从0到65535,可以指定最多5位的宽度。

  • MEDIUMINT - 一个中等大小的整数,可以带符号。如果有符号,允许范围为-8388608至8388607。 如果无符号,允许的范围是从0到16777215,可以指定最多9位的宽度。

  • BIGINT - 一个大的整数,可以带符号。如果有符号,允许范围为-9223372036854775808到9223372036854775807。如果无符号,允许的范围是从0到18446744073709551615. 可以指定最多20位的宽度。

  • FLOAT(M,D) - 不能使用无符号的浮点数字。可以定义显示长度(M)和小数位数(D)。这不是必需的,并且默认为10,2。其中2是小数的位数,10是数字(包括小数)的总数。小数精度可以到24个浮点。

  • DOUBLE(M,D) - 不能使用无符号的双精度浮点数。可以定义显示长度(M)和小数位数(D)。 这不是必需的,默认为16,4,其中4是小数的位数。小数精度可以达到53位的DOUBLE。 REAL是DOUBLE同义词。

  • DECIMAL(M,D) - 非压缩浮点数不能是无符号的。在解包小数,每个小数对应于一个字节。定义显示长度(M)和小数(D)的数量是必需的。 NUMERIC是DECIMAL的同义词。

日期和时间类型


















MySQL的日期和时间数据类型包括:

  • DATE - 以YYYY-MM-DD格式的日期,在1000-01-01和9999-12-31之间。 例如,1973年12月30日将被存储为1973-12-30。

  • DATETIME - 日期和时间组合以YYYY-MM-DD HH:MM:SS格式,在1000-01-01 00:00:00 到9999-12-31 23:59:59之间。例如,1973年12月30日下午3:30,会被存储为1973-12-30 15:30:00。

  • TIMESTAMP - 1970年1月1日午夜之间的时间戳,到2037的某个时候。这看起来像前面的DATETIME格式,无需只是数字之间的连字符; 1973年12月30日下午3点30分将被存储为19731230153000(YYYYMMDDHHMMSS)。

  • TIME - 存储时间在HH:MM:SS格式。

  • YEAR(M) - 以2位或4位数字格式来存储年份。如果长度指定为2(例如YEAR(2)),年份就可以为1970至2069(70〜69)。如果长度指定为4,年份范围是1901-2155,默认长度为4。

字符串类型












虽然数字和日期类型比较有意思,但存储大多数数据都可能是字符串格式。 下面列出了在MySQL中常见的字符串数据类型。

  • CHAR(M) - 固定长度的字符串是以长度为1到255之间个字符长度(例如:CHAR(5)),存储右空格填充到指定的长度。 限定长度不是必需的,它会默认为1。

  • VARCHAR(M) - 可变长度的字符串是以长度为1到255之间字符数(高版本的MySQL超过255); 例如: VARCHAR(25). 创建VARCHAR类型字段时,必须定义长度。

  • BLOB 或 TEXT - 字段的最大长度是65535个字符。 BLOB是“二进制大对象”,并用来存储大的二进制数据,如图像或其他类型的文件。定义为TEXT文本字段还持有大量的数据; 两者之间的区别是,排序和比较上存储的数据,BLOB大小写敏感,而TEXT字段不区分大小写。不用指定BLOB或TEXT的长度。

  • TINYBLOB 或 TINYTEXT - BLOB或TEXT列用255个字符的最大长度。不指定TINYBLOB或TINYTEXT的长度。

  • MEDIUMBLOB 或 MEDIUMTEXT - BLOB或TEXT列具有16777215字符的最大长度。不指定MEDIUMBLOB或MEDIUMTEXT的长度。

  • LONGBLOB 或 LONGTEXT -  BLOB或TEXT列具有4294967295字符的最大长度。不指定LONGBLOB或LONGTEXT的长度。

  • ENUM - 枚举,这是一个奇特的术语列表。当定义一个ENUM,要创建它的值的列表,这些是必须用于选择的项(也可以是NULL)。例如,如果想要字段包含“A”或“B”或“C”,那么可以定义为ENUM为 ENUM(“A”,“B”,“C”)也只有这些值(或NULL)才能用来填充这个字段。

























调优:
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值