在程序中通过sql语句查询来获得某个数据库的所有表名,代码如下:
SELECT
table_name
FROM
information_schematables
WHERE table_schema = 'mydatabasename'
AND table_type = 'base table'
扩展资料
1,利用systables目录视图查询所有表的名字,systables目录视图为每个表对象返回一行 示例语句如下:
select from systables
注意:systables目录视图也只有在SQL SERVER2005及以上的版本中才能使用。
2,利用存储过程sp_tables sp_tables存储过程,可返回可在当前环境中查询的对象列表。这代表可在FROM子句中出现的任何对象。 我们可以执行如下语句:
exec sp_tables
在结果集中筛选出所有TABLE_TYPE等于TABLE的记录就是表信息了。
参考资料:
百度百科 systables
这个非常简单,MySQL数据库的用户信息、数据库信息和登录IP信息通常都保存在系统数据库中,可以直接经过查询得到,下面我简单介绍一下,以MySQL55为例:
用户信息
这个主要保存在mysql数据库的user表中,通常修改用户的密码、删除用户及分配权限等就是在这个表进行,下面我简单介绍一下:
查询所有用户这个直接执行“selectuser,hostfromuser;”语句就行,如下,第一列为用户名,第二列为允许登录的IP,%表示任意IP都可登录,localhost则只允许本地登录:
查询用户权限这个直接执行“showgrantsfor'user'@'host';”命令就行,如下,以root用户为例,则直接执行“showgrantsfor'root'@'localhost';”命令,all表示所有权限,select表示只查权限,update表示只改权限,delete表示只删权限等:
数据库信息
这个主要保存在information_schema数据库中,它通常保存着MySQL数据库所维护的所有数据库信息,包括数据库名,数据表名,表栏的数据类型与访问权限等,下面我简单介绍一下:
查询所有数据库
这个直接执行“showdatabases;”命令就行,如下,会列出当前MySQL数据库中存储的所有数据库,查看某一个数据库下所有数据表的话,执行“showtables;”命令就行:
查看数据库大小
以test数据库为例,计算单位为MB,直接执行“selectconcat(round(sum(data_length)/(10241024),2)+round(sum(index_length)/(10241024),2),'MB')as'DBSize'fromtableswheretable_schema='test';”命令就行,如下:
查看数据库编码
这个直接执行“showvariableslike'character%';”命令就行,如下,character_set_client为客户端编码,character_set_connection为建立连接编码,character_set_database为数据库编码,character_set_results为结果集编码,character_set_server为数据库服务器编码;
登录IP信息
这里通常是查看连接MySQL数据库的IP信息,统计每个IP的连接数,执行“selectSUBSTRING_INDEX(host,':',1)asip,count()frominformation_schemaprocesslistgroupbyip”命令就行,如下,第一列为IP地址,第二列为该IP下的连接数:
至此,我们就完成了查询MySQL数据库的用户信息、数据库信息和登录IP信息。总的来说,整个过程非常简单,只要你有一定的MySQL基础,熟悉一下相关文档和说明,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
下面是一个从 mysql 数据获取用户数据的案例,可以参考一下:
import javasqlConnection;import javasqlDriverManager;
import javasqlResultSet;
import javasqlSQLException;
import javasqlStatement;
import javautilArrayList;
import javautilList;
// 用户类,存储单个用户信息
class User {
private int id;
private String name;
public User(int id, String name) {
thisid = id;
thisname = name;
}
public int getId() {
return id;
}
public void setId(int id) {
thisid = id;
}
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
public class Demo1 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 本例使用 mysql 数据库,演示将数据库 test 的 tb_users 表中的用户信息
// 放到 List 中
// 加载数据驱动
ClassforName("commysqljdbcDriver");
// 数据库连接字符串, 此例数据库为 test
String url = "jdbc:mysql://localhost:3306/test";
String user = "root"; // 数据库用户名
String password = ""; // 数据库密码
// 打开一个数据连接
Connection conn = DriverManagergetConnection(url, user, password);
Statement stmt = conncreateStatement();
// 获取表 tb_users 所有用户信息到结果集中
ResultSet rs = stmtexecuteQuery("SELECT id, name FROM tb_users");
// 定义一个存放用户信息的 List
List<User> users = new ArrayList<>();
// 提取用户信息,并将用户信息放入 List
while (rsnext()) {
// 获取用户ID
int id = rsgetInt(1);
// 获取用户名
String name = rsgetString(2);
usersadd(new User(id, name));
}
rsclose();
stmtclose();
connclose();
// 显示用户信息
for (User u : users) {
Systemoutprintln(u);
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)