四时宝库

程序员的知识宝库

数据库简单使用语句(十二)(数据库怎样使用)

Today is Wednesday, The BeiJing’s weather is changing bad。

让我们继续学习MySql内容:

MYSQL元数据:

我们可能想通过mysql了解如下的信息:

  • 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数。

  • 数据库和数据表的信息: 包含了数据库及数据表的结构信息。

  • MySQL服务器信息: 包含了数据库服务器的当前状态,版本号等。

在MySQL的命令提示符中,我们可以很容易的获取以上服务器信息。 但如果使用Perl或PHP等脚本语言,你就需要调用特定的接口函数来获取。 接下来我们会详细介绍。也就是说这个mysql元数据只要介绍的就是使用上面的语言获取的方法,这个我就把文档说明的例子贴出来吧,不做过多的讲解。

获取查询语句影响的记录数

PERL 实例

在 DBI 脚本中, 语句影响的记录数通过函数 do( ) 或 execute( )返回:

# 方法 1

# 使用do( ) 执行 $query

my $count = $dbh->do ($query);

# 如果发生错误会输出 0

printf "%d 条数据被影响\n", (defined ($count) ? $count : 0);

# 方法 2

# 使用prepare( ) 及 execute( ) 执行 $query

my $sth = $dbh->prepare ($query);

my $count = $sth->execute ( );

printf "%d 条数据被影响\n", (defined ($count) ? $count : 0);

PHP 实例

在PHP中,你可以使用 mysqli_affected_rows( ) 函数来获取查询语句影响的记录数。

$result_id = mysqli_query ($conn_id, $query);

# 如果查询失败返回

$count = ($result_id ? mysqli_affected_rows ($conn_id) : 0);

print ("$count 条数据被影响\n");

数据库和数据表列表

你可以很容易的在MySQL服务器中获取数据库和数据表列表。 如果你没有足够的权限,结果将返回 null。

你也可以使用 SHOW TABLES 或 SHOW DATABASES 语句来获取数据库和数据表列表。

PERL 实例

# 获取当前数据库中所有可用的表。

my @tables = $dbh->tables ( );

foreach $table (@tables ){

print "表名 $table\n";

}

PHP 实例

以下实例输出 MySQL 服务器上的所有数据库:

查看所有数据库

<?php

$dbhost = 'localhost:3306'; // mysql服务器主机地址

$dbuser = 'root'; // mysql用户名

$dbpass = '123456'; // mysql用户名密码

$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

if(! $conn )

{

die('连接失败: ' . mysqli_error($conn));

}

// 设置编码,防止中文乱码

$db_list = mysqli_query($conn, 'SHOW DATABASES');

while ($db = mysqli_fetch_object($db_list))

{

echo $db->Database . "<br />";

}

mysqli_close($conn);

?>

获取服务器元数据

以下命令语句可以在 MySQL 的命令提示符使用,也可以在脚本中 使用,如PHP脚本。

命令描述
SELECT VERSION( )服务器版本信息
SELECT DATABASE( )当前数据库名 (或者返回空)
SELECT USER( )当前用户名
SHOW STATUS服务器状态
SHOW VARIABLES服务器配置变量

上面就是mysql的元数据接下来介绍其他的内容


MySQL 序列使用

MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。

本章我们将介绍如何使用MySQL的序列。

使用AUTO_INCREMENT

MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列。

示例:

以下实例中创建了数据表jrtt_insect, jrtt_insect中id无需指定值可实现自动增长。

CREATE TABLE jrtt_insect

(

id INT UNSIGNED NOT NULL AUTO_INCREMENT,

PRIMARY KEY (id),

name VARCHAR(30) NOT NULL, # type of insect

date DATE NOT NULL, # date collected

origin VARCHAR(30) NOT NULL # where collected

);

----------------------------------------------------------------------

INSERT INTO jrtt_insect (id,name,date,origin) VALUES

(NULL,'housefly','2001-09-10','kitchen'),

(NULL,'millipede','2001-09-10','driveway'),

(NULL,'grasshopper','2001-09-10','front yard');

-----------------------------------------------------------------

select * from jrtt_insect order by id;

请在MySQL的客户端中你可以使用 SQL中的LAST_INSERT_ID( ) 函数来获取最后的插入表中的自增列的值。

select LAST_INSERT_ID();

重置序列

如果你删除了数据表中的多条记录,并希望对剩下数据的AUTO_INCREMENT列进行重新排列,那么你可以通过删除自增的列,然后重新添加来实现。 不过该操作要非常小心,如果在删除的同时又有新记录添加,有可能会出现数据混乱。操作如下所示:

alter table jrtt_insect drop id;

alter table jrtt_insect

add id INT unsigned not null auto_increment first,

add primary key(id);

设置序列的开始值

一般情况下序列的开始值为1,但如果你需要指定一个开始值100,那我们可以通过以下语句来实现:

可以在表创建成功后,通过以下语句来实现:比如在jrtt_insect 中设置自增的值100

ALTER TABLE jrtt_insect AUTO_INCREMENT = 100;

然后我们在插入一条,看看结果

或者在创建表的时候就指定自增从100开始,如下语句

CREATE TABLE insect

(

id INT UNSIGNED NOT NULL AUTO_INCREMENT,

PRIMARY KEY (id),

name VARCHAR(30) NOT NULL,

date DATE NOT NULL,

origin VARCHAR(30) NOT NULL

)engine=innodb auto_increment=100 charset=utf8;

--------------------------------------------

INSERT INTO insect (id,name,date,origin) VALUES

(NULL,'housefly','2001-09-10','kitchen'),

(NULL,'millipede','2001-09-10','driveway'),

(NULL,'grasshopper','2001-09-10','front yard');

今天就学习这些吧,喜欢就关注我吧!

2017.12.27 10:31

头条新手:不懂世事的庸人

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接