怎么用sql语句查看oracle数据库里的所有表

说实话,查看Oracle数据库中的表是相当有趣的。
之前在调优一个电商系统的时候,遇到过权限问题。
当时系统有bug,找不到用户表。
经过检查发现DBA没有授予权限。
那么我们先来说一下检查自己表的SQL:select from user_tables。
这个东西就像你手机里自己的照片一样。
它拥有一切。
您创建的表和更改的视图都一目了然。
记得有一次我加了一个触发器,第二天查表发现多了一个TRG_XXX。
我迷惑了半天,结果发现触发是自动生成的。

查看所有表的SQL:select from all_tables where table_name not in (select table_name from user_tables)。
就像你参加朋友聚会时,你不拿自己的东西,而是把其他人的东西都带进来。
我正在处理跨数据库同步需求并且需要这个。
隔壁图书馆有一个老古董系统,表名包含OLD_。
您可以使用此 SQL 直接过滤出您自己的系统表。
不过需要注意的是,all_tables是一个视图。
Oracle官网文档中有一个案例,某个版本有ALL_TABLES表,后来改成了ALL_TABLES视图。
数据源仍然是USER_TABLES和DBA_TABLES。
因此,在新系统中最好直接使用all_tables。

有趣的是,两个表的时间戳并不相同。
我在测试环境中使用DBMS_OUTPUT.PUT_LINE SYSDATE打印时间,all_tables显示的时间比user_tables慢了3 秒。
当时不太明白原因,后来查了Oracle Metalink,据说是时区设置问题。
因此,如果您遇到不正确的时间,请记得检查 NLS_DATE_FORMAT。

还有一个细节。
使用all_tables查询时,如果表太多,比如老系统有几千张表,查询会很慢。
我有一个电信行业的客户。
他们的表太多了,检查 all_tables 需要十分钟。
后来,他们切换到PL/SQL包并批量检查,每次都带有where Owner = 'XXX'条件。
我记得数据是X秒级别的,不过建议你查一下。

现在使用DB Express或Oracle SQL Developer,只需单击“Tables”部分,您就可以看到自己的用户表,并检查系统表以忽略它们。
不过,你还是要掌握SQL的手动查询。
上次有面试官问到这两个表有什么区别。
说白了,user_tables就是当前用户自己的,all_tables都是可以访问的,包括系统表、其他用户表、共享表空间的表。

mysql中如何查看数据库中所有表

是的,这就是问题所在。
MySQL表查询很简单,使用SHOWTABLES。

要指定库,请添加 FROM,例如 SHOWTABLESFROMmy_database 。

有关更完整的信息,请使用 INFORMATION_SCHEMA、SELECTtable_nameFROMinformation_schema.tablesWHEREtable_schema=&3 9 ;my_database&3 9 ;。

如果要查看结构,可以使用DESCRIBE或SHOWCOLUMNS,例如DESCRIBETable1
创建声明? SHOWCREATE TABLE 1 .
直接使用,无需拐弯抹角。

sql怎么查询数据库中所有的表

MySQL/MariaDB:显示表; (基本查询) PostgreSQL:从 pg_catalog.pg_tables 中选择; (基本查询) SQLite:从 sqlite_master 中选择名称,其中类型='表'; (基本查询) SQLServer:从 information_schema.tables 中选择; (基本查询) Oracle:从 all_tables 中选择表名,其中所有者='YOUR_SCHEMA'; (基本查询)
这是一个陷阱,不要相信长篇大论,只需使用基本命令即可。