mysql里面查某个数据库的所有表名,语句该怎么写?不要什么show tables,因为那样会把视图也查出来!
查询数据库中所有表名有两种方法: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'虽然可以通过这种写法查询出来,不过我必须得说有这种需求通常说明你的表设计有问题
潜莎头孢: 貌似 只能查那个数据库里的所有表.例:数据库 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]--通过上...