设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 服务器 > 系统 > 正文

mysql操作管理问题汇总(基础篇)

发布时间:2017-01-02 08:25 所属栏目:52 来源:网络 佚名
导读:如何获得表的字段信息?答: #!/usr/bin/perl# connect to dbmy $dbh = DBIconnect(bla..bla..bla);my $sql_q = SHOW COLUMNS FROM $table ;my $sth = $dbhprepare($sql_q);$sthexecute;while (@row = $sthfetchrow_array) 如何添加一个超级用户 ?答: 你可以用

  【服务器学院】   如何获得表的字段信息?
答:
#!/usr/bin/perl
# connect to db
my $dbh = DBI->connect(bla..bla..bla);
my $sql_q = "SHOW COLUMNS FROM $table";
my $sth = $dbh->prepare($sql_q);
$sth->execute;

while (@row = $sth->fetchrow_array){
print"Field Type Null Key Default Extran";
print"---------------------------------------------------------------n";
print"$row[0] $row[1] $row[2] $row[3] $row[4] $row[5]n";
}

    如何添加一个超级用户 ?
答: 你可以用GRANT语句:
shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY ''something'' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
IDENTIFIED BY ''something'' WITH GRANT OPTION;

超级用户可以从任何地方连接服务器,但必须使用一个密码(''something'').
请注意我们同时对monty@localhost和monty@"%"用了GRANT语句。如果不加上
localhost,当我们(超级用户)从本机上连接时,localhost上mysql_install_db创
建的匿名用户会取得更高的优先权,因为它有更特别的Host字段值,使得在用户列
表中占据靠前的位置.


   如何知道mysql服务器中所有可供使用的数据库?
答: 用data_sources($driver_name)方法,这个方法返回SQL服务器中数据库名字列表
例: $db_names = DBI->data_sources("mysql");


   如何连接SQL服务器?
答:
#!/usr/bin/perl
use DBI;
my $database_name = "db_name";
my $location = "localhost";
my $port_num = "3306"; # 这是mysql的缺省值

# 定义SQL服务器的位置.
my $database = "DBI:mysql:$database_name:$location:$port_num";
my $db_user = "user_name";
my $db_password = "user_password";

# 连接.
my $dbh = DBI->connect($database,$db_user,$db_password);

# 做你要做的事情.. ... ...
$dbh->disconnect;
$exit;


   如何从SQL服务器上获取记录数据?
答: 从SQL服务器上获取记录数据,必须先连接服务器,然后提交SQL查询语句,服务器则返回结果

#!/usr/bin/perl
# 连接服务器 (见22)
my $sql_statement = "SELECT first_name,last_name FROM $table ORDER BY first_name";
my $sth = $dbh->prepare($sql_statement);
my ($first, $last);

# 结果保存在$sth中 $sth->execute() or die "无法执行SQL语句:
$dbh->errstr"; $sth->bind_columns(undef, $first, $last);
my $row; while ($row = $sth->fetchrow_arrayref) {
print "$first $lastn";
# 或者
print "$row->[0] $row[1]n";
}

以上的程序将列出结果中的每一行,打印出first name和last name。 这是最快的
提取数据的方法之一。

   如何从服务器随机地提取记录?
答: 用mysql的LIMIT函数.
$Query = "SELECT * FROM Table";
$sth = $dbh->prepare($Query);
$numrows = $sth->execute;
$randomrow = int(rand($numrows));
$sth = $dbh->prepare("$Query LIMIT $randomrow,1");
$sth->execute;
@arr = $sth->fetchrow;


   插入记录后,如何获得自动增加的主键值?
答: insertid方法是mysql特有的,也许不能在其它SQL server上工作

#!/usr/bin/perl
# 连接数据库 ....
my $sql_statement = "INSERT INTO $table (field1,field2) VALUES($value1,$value2)";
my $sth = $dbh->prepare($sql_statement);
$sth->execute or die "无法添加数据 :
$dbh->errstr";

# 现在我们可以取回刚刚插入后生成的主键.
my $table_key = $sth->{insertid};
# 也可以用这种方法(标准的DBI方法)
my $table_key = $dbh->{''mysql_insertid''};
$sth->finish;

    执行SELECT查询以后,如何获得记录行数?
答: 有好几种方法可以做到。这是其中的一种:

# 文档中说这种方法不行,但对我来说却可以,你或许也行.
my $mysql_q = "SELECT field1,field2 FROM $table WHERE field1=$value1";
my $sth = $dbh->prepare($mysql_q);
my $found = $sth->execute or die "无法执行 :
$dbh->errstr";
$sth->finish;

# 这是一种较慢的方法,而且做SELECT查询时还不太可靠.
my $sql = q(select * from $table where field = ? );
my $sth = $dbh->prepare($sql);
$sth->execute(''$value'');
my $rows = $sth->rows;
$sth->finish;

# 这是一种较快的方法.
my $sql = q(select count(*) from $table where field = ? );
my $sth = $dbh->prepare($sql); $sth->execute(''$value'');
my $rows = $sth->fetchrow_arrayref->[0];
$sth->finish;

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读