mysql里面查某个数据库的所有表名,语句该怎么写?不要什么show tables,因为那样会把视图也查出来!

作者&投稿:城言 (若有异议请与网页底部的电邮联系)
查询mysql数据库中所有表名~

查询数据库中所有表名有两种方法:1、select table_name from information_schema.tables where table_schema='当前数据库';
2、show tables;
其中,information_schema这张数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。
再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在information_schema表里面。

扩展资料:
Mysql的INFORMATION_SCHEMA数据库包含了一些表和视图,提供了访问数据库元数据的方式。
元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。
下面对一些重要的数据字典表做一些说明:
SCHEMATA表:提供了关于数据库的信息。
TABLES表:给出了关于数据库中的表的信息。
COLUMNS表:给出了表中的列信息。
STATISTICS表:给出了关于表索引的信息。
USER_PRIVILEGES表:给出了关于全程权限的信息。该信息源自mysql.user授权表。
SCHEMA_PRIVILEGES表:给出了关于方案(数据库)权限的信息。该信息来自mysql.db授权表。
TABLE_PRIVILEGES表:给出了关于表权限的信息。该信息源自mysql.tables_priv授权表。
COLUMN_PRIVILEGES表:给出了关于列权限的信息。该信息源自mysql.columns_priv授权表。
CHARACTER_SETS表:提供了关于可用字符集的信息。
COLLATIONS表:提供了关于各字符集的对照信息。
COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。
TABLE_CONSTRAINTS表:描述了存在约束的表。
KEY_COLUMN_USAGE表:描述了具有约束的键列。
ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。此时,ROUTINES表不包含自定义函数(UDF)。
VIEWS表:给出了关于数据库中的视图的信息。
TRIGGERS表:提供了关于触发程序的信息。

查询MySQL数据库所有表名的SQL命令:
show tables;


查询MySQL数据库有表结构的SQL命令:
show create table tblName;
例如:show create table students;

CREATE TABLE `students` (
`sid` char(10) NOT NULL,
`sname` varchar(50) NOT NULL,
`sex` char(1) NOT NULL,
`dob` date NOT NULL,
`phone` varchar(30) DEFAULT NULL,
PRIMARY KEY (`sid`),
KEY `index_tbl1_url` (`phone`(20))
) ENGINE=InnoDB DEFAULT CHARSET=gb2312

TABLE 语句

具体语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
其实从语法上看,可以排序,也可以过滤记录集,不过比较简单,没有 SELECT 那么强大。

示例 1

简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录

  • mysql-(ytt/3305)->create table t1 (r1 int,r2 int);

  • Query OK, 0 rows affected (0.02 sec)

  • mysql-(ytt/3305)->insert into t1

  • with recursive aa(a,b) as (

  • select 1,1

  • union all

  • select a+1,ceil(rand()*20) from aa where a < 10

  • ) select * from aa;

  • Query OK, 10 rows affected (0.00 sec)

  • Records: 10  Duplicates: 0  Warnings: 0

  • 简单全表扫描mysql-(ytt/3305)->select * from t1;+------+------+| r1   | r2   |+------+------+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+------+------+10 rows in set (0.00 sec)

  • TABLE 结果mysql-(ytt/3305)->table t1;+------+------+| r1   | r2   |+------+------+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+------+------+10 rows in set (0.00 sec)

  • 看下 table 的执行计划mysql-(ytt/3305)->explain table t1 order by r1 limit 2\G*************************** 1. row ***************************           id: 1  select_type: SIMPLE        table: t1   partitions: NULL         type: ALLpossible_keys: NULL          key: NULL      key_len: NULL          ref: NULL         rows: 10     filtered: 100.00        Extra: Using filesort1 row in set, 1 warning (0.00 sec)

  • 其实可以看到 TABLE 内部被 MySQL 转换为 SELECT 了。mysql-(ytt/3305)->show warnings\G*************************** 1. row ***************************  Level: Note   Code: 1003Message: /* select#1 */ select `ytt`.`t1`.`r1` AS `r1`,`ytt`.`t1`.`r2` AS `r2` from `ytt`.`t1` order by `ytt`.`t1`.`r1` limit 21 row in set (0.00 sec)

  • 那其实从上面简单的例子可以看到 TABLE 在内部被转成了普通的 SELECT 来处理。示例 2应用于子查询里的子表。这里要注意,内表的字段数量必须和外表过滤的字段数量一致。克隆表 t1 结构mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (0.02 sec)

  • 克隆表 t1 数据mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (0.00 sec)Records: 10  Duplicates: 0  Warnings: 0

  • table t1 被当做内表,表 t1 有两个字段,必须同时满足 t2 检索时过滤的字段也是两个。mysql-(ytt/3305)->select * from t2 where (r1,r2) in (table t1);+------+------+| r1   | r2   |+------+------+|    1 |    1 ||    2 |    9 ||    3 |    9 ||    4 |   17 ||    5 |   17 ||    6 |   16 ||    7 |    6 ||    8 |    1 ||    9 |   10 ||   10 |    3 |+------+------+10 rows in set (0.00 sec)

  • 注意:这里如果过滤的字段数量和子表数量不一致,则会报错。


select name from systemobjects where xtype='U' ,xtype的值有:是S、TF、TR、U、V、X等
S 表示:系统表
TF 表示:表函数
TR 表示:触发器
U 表示:用户表
V 表示:视图
X 表示:扩展存储过程

show tables:可以的到所有的表信息。

另外:describe tname:可以得到表的字段信息

SELECT TABLE_NAME FROM information_schema.TABLES WHERE table_type = 'BASE TABLE' AND table_schema = DATABASE();

SHOW full tables where Table_type = 'BASE TABLE';mysql测试时可以的


mysql怎么查询某个字段里的字符串?
要注意的是:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。用模糊查询,下述为转载:“SELECT column FROM table WHERE column LIKE ';pattern';”。1.表示任意0个或多个字符。如下语句:将会把name为“张三”,“三脚猫”,“唐三藏”等等...

如何使用MySQL查询某个列中相同值的数量统计
1、排序C列的名字,使得相同的名字集中到一起(假设从C1开始都是人名,一直到C100),然后 2、在D1中输入数字:1 3、在D2中输入:=if(C1=C2,D1+1,1)注:即判断是否重名,如果重名就+1,不重名就是新的名字,则重新记1 4、选中D2并双击单元格右下角的小黑点填充D列,得到一个初步的...

MySQL如何查询某个字段长度最大的记录
1、一般查询语句:SELECT `lcontent` FROM `caiji_ym_liuyan`查询数据:2、有些时候需要查询某个字段的长度为多少时候才显示数据:SQL语句:SELECT `lcontent` FROM `caiji_ym_liuyan` where length(lcontent)<=40 PS:在mysql中一个汉字等于3个字节,所以查询的时候需要转换一下 特别要注意的就时候...

怎么在MySQL数据数据库中查询一个字符,马上就得到相关字符的数据信息...
用通配符%,即查询字符串为%s%然后输出此字段。s即为你要查的字符。这些课本上都有讲的,好好看书

mysql中,怎样查询一个表中有多少记录!
利用mysql提供的统计函数实现数量统计 如果要按照某一列统计写法如下 Select count(列名) from 表 如果不忽略null值,写法如下 Select count(*) from 表名

mysql中,怎样查询一个表中有多少记录!
用count函数就可以查看。比如表名叫test,要查询表中一共有多少条记录,select count(*) from test;如果按条件查询的话,就正常使用where条件即可,select count(*) from test where id=1。

mysql中我要查出某个值在查出来的N条数据中是第几条数据,这个怎么...
我假设你原来查出N条数据的代码如下:(你自己替换成你的)select * from tb order by col ;现在你改成这样:SET @row_number =0;select *, @row_number := @row_number+1 AS row_number from tb order by col;--看到了吧 用变量来产生一个序列 --如果你要查询特定值,可以这样 sel...

MYSQL中查询怎么判断一个字段包含英文?
2、方法二:利用mysql 字符串函数 find_in_set();SELECT *FROM usersWHERE find_in_set('aa@email.com', emails);要注意的是:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。3、方法三:多个值模糊查询,使用mysql正则:REGEXP。此方式...

如何使用MySQL查询某个列中相同值的数量统计
可以通过用该字段分组计数获得。例如:select col1,count(col1) as cnt from t1 group by col1;这个查询可返回表t1的字段col1中每个值的重复次数。

mysql怎么查询某行是否存在某个数据
SELECT * FROM tableName WHERE s1 = 'example' OR s2 = 'example' OR s3 = 'example'虽然可以通过这种写法查询出来,不过我必须得说有这种需求通常说明你的表设计有问题

化隆回族自治县13984692357: mysql中如何查询所有的表 -
潜莎头孢: 貌似 只能查那个数据库里的所有表.例:数据库 test use test; --进入数据库 show tables; --显示该数据库里的所有表 如果不知道 有哪些数据库,可以用 show databases; 查看,然后再use进入该数据库

化隆回族自治县13984692357: 查询MySQL中某个数据库中有多少张表 -
潜莎头孢: 例如我们要查看数据库test中的表,可以使用下面的SQL语句:use test; show tables; 命令执行的最后一行就有表的个数.

化隆回族自治县13984692357: 如何查询一个mysql数据库中有多少个表 -
潜莎头孢: 每个表都是三个物理文件,你可以查看数据目录文件数量来计算表数量

化隆回族自治县13984692357: mysql怎么查看数据库中所有的表名 -
潜莎头孢: 登录数据库之后:【show tables;显示所有表名称】;【desc 表名;显示该表结构】

化隆回族自治县13984692357: mysql查看某个数据库中所有表(即有哪些表)的语句是什么呀?谢谢!! -
潜莎头孢: SHOW TABLES

化隆回族自治县13984692357: mysql怎么看一个数据库下的表 -
潜莎头孢: 1. show databases;显示所有的数据库. 2. .进入指定数据库 use 数据库名. 3. show tables;显示数据库里所有的表. 4. 查看指定表的所有数据:select * from 表名;

化隆回族自治县13984692357: mySQL怎么查询所有表的字段呢? -
潜莎头孢: Java的写法String query = "SELECT * FROM " + ITEM_TABLE + " WHERE item_id = 1";rs = st.executeQuery(query); ResultSetMetaData metaData = rs.getMetaData(); HashSet<String> colNames = new HashSet<String>(); for (int j = 1; j <= ...

化隆回族自治县13984692357: mysql 怎么查看创建的数据库和表 -
潜莎头孢: mysql 查看有多少个数据库,有多少个表,方法如下: 1、图形界面直接查看: 2、命令查看:1 2#查看数据库 SHOW DATABASES; 1 2 3#查看表 USE blog; SHOW TABLES; 1 2 3#查看表中的列 SHOW COLUMNS FROMauth_user; DESCRIBE auth_user;注意:describe 表名 是 show columns from 表名 的一种快捷方式.

化隆回族自治县13984692357: 查询出Mysql数据库中一个表的所有字段???? -
潜莎头孢: --通过如下语句得到当前Sql server中所有的数据的名称: use master select [name] from [sysdatabases] order by [name] go-- 查询数据库中的所有用户表 use [DBname] select [id], [name] from [sysobjects] where [type] = 'u' order by [name]--通过上...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网