Các cơ sở dữ liệu khác nhau có các dạng xem hoặc danh mục hệ thống khác nhau để liệt kê tất cả các bảng trong cơ sở dữ liệu. Hãy để chúng tôi xem một số cách để kiểm tra điều này trong một vài hệ thống cơ sở dữ liệu
MÁY CHỦ SQL
Trong SQL Server, chúng tôi có bốn cách khác nhau để liệt kê tất cả các bảng trong cơ sở dữ liệu
SELECT table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_type = 'BASE TABLE'
SELECT name
FROM sys.tables
SELECT name
FROM sysobjects
WHERE xtype = 'U'
SELECT name
FROM sys.objects
WHERE type_desc = 'USER_TABLE'
tiên tri
Trong Oracle, chúng tôi có ba cách khác nhau để liệt kê tất cả các bảng trong cơ sở dữ liệu
-- This returns all the tables in the database system.
SELECT table_name
FROM dba_tables
-- This returns all the tables which are accessible to the current user
SELECT table_name
FROM all_tables
-- This returns all the tables which are created by the current user
SELECT table_name
FROM user_tables
mysql
Trong MySQL, chúng ta có thể sử dụng truy vấn bên dưới để liệt kê tất cả các bảng trong máy chủ
-- Lists all the tables in all databases
SELECT table_name
FROM information_schema.tables
WHERE table_type='BASE TABLE'
-- Lists all the tables in a particular database
SELECT table_name
FROM information_schema.tables
WHERE table_type='BASE TABLE'
AND table_schema = 'your_database_name'
Tiếp theo
Đọc Cách chuyển đổi số tháng thành tên tháng trong SQL?
Đôi khi bạn cần lấy danh sách các bảng từ cơ sở dữ liệu của mình. Điều này có thể giúp kiểm tra, để xem những bảng nào tồn tại trước khi bạn tạo hoặc xóa một bảng hoặc một số lý do khác
Nếu bạn quên tên của một bảng cụ thể hoặc quên cách đánh vần một bảng [nó là số nhiều hay số ít? Một hoặc hai từ có dấu gạch dưới?], thì bạn có thể sử dụng các truy vấn này để hiển thị tất cả các bảng trong cơ sở dữ liệu của mình
Mỗi nhà cung cấp cơ sở dữ liệu có cách hiển thị bảng khác nhau. Đôi khi có một lệnh, những người khác có một truy vấn CHỌN từ từ điển dữ liệu
Chúng ta hãy xem một vài cách trong mỗi cơ sở dữ liệu
Hiển thị bảng trong Oracle SQL
Oracle có một số chế độ xem tích hợp khác nhau mà bạn có thể truy vấn để tìm dữ liệu mình cần. Bạn có thể truy vấn bất kỳ chế độ xem nào trong số này để liệt kê tất cả các bảng trong Oracle
Bạn có thể không có đặc quyền để xem từng chế độ xem này, vì vậy nếu một truy vấn không hoạt động, hãy thử một truy vấn khác
Bảng do người dùng sở hữu
Để xem các bảng thuộc sở hữu của người dùng hiện đang đăng nhập, bạn có thể truy vấn chế độ xem user_tables
SELECT table_name
FROM user_tables
ORDER BY table_name ASC;
Điều này chỉ hiển thị các bảng thuộc sở hữu của người dùng hiện tại. Nó không bao gồm các bảng thuộc sở hữu của người dùng khác mà người dùng hiện tại có thể thấy
Bảng người dùng có thể truy cập
Để xem tất cả các bảng mà người dùng hiện tại có thể truy cập, bạn có thể truy vấn chế độ xem all_tables
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
Bạn có thể thêm cột chủ sở hữu vào chế độ xem của mình để xem ai sở hữu bảng
SELECT table_name, owner
FROM all_tables
ORDER BY table_name ASC;
Điều này có thể hiển thị cho bạn rất nhiều kết quả, bao gồm rất nhiều bảng hệ thống. Bạn có thể thêm mệnh đề WHERE cho trường chủ sở hữu để lọc chủ sở hữu
Tất cả các bảng cơ sở dữ liệu
Nếu bạn muốn liệt kê tất cả các bảng trong cơ sở dữ liệu Oracle, bạn có thể truy vấn chế độ xem dba_tables
SELECT table_name
FROM dba_tables
ORDER BY table_name ASC;
Chế độ xem này [và tất cả các chế độ xem khác bắt đầu bằng dba_] dành cho quản trị viên cơ sở dữ liệu. Nếu bạn không có quyền quản trị, bạn sẽ gặp lỗi này
ORA-00942: table or view does not exist.
Để xem chế độ xem này, bạn sẽ cần một trong hai đặc quyền này
- chế độ xem dba_tables
- đặc quyền CHỌN MỌI TỪ ĐIỂN
- vai trò SELECT_CATALOG_ROLE
Nếu bạn không chắc đối tượng mình đang truy vấn là bảng hay dạng xem, bạn cũng có thể truy vấn các đối tượng dba_views, all_views hoặc user_views
Các truy vấn này thực hiện UNION ALL để hiển thị cho bạn danh sách tất cả các bảng và dạng xem trong cơ sở dữ liệu Oracle
DBA_TABLES và DBA_VIEWS
________số 8
ALL_TABLES và ALL_VIEWS
SELECT 'Table' AS object_type, owner, table_name
FROM all_tables
UNION ALL
SELECT 'View', owner, view_name
FROM all_views;
USER_TABLES và USER_VIEWS
-- This returns all the tables in the database system.
SELECT table_name
FROM dba_tables
-- This returns all the tables which are accessible to the current user
SELECT table_name
FROM all_tables
-- This returns all the tables which are created by the current user
SELECT table_name
FROM user_tables
0
Hiển thị bảng trong SQL Server
Có một số cách để liệt kê các bảng trong SQL Server
Tất cả các bảng và dạng xem
Cách dễ nhất để tìm tất cả các bảng trong SQL là truy vấn các dạng xem INFORMATION_SCHEMA
Bạn làm điều này bằng cách chỉ định lược đồ thông tin, sau đó là chế độ xem “bảng”
Đây là một ví dụ
-- This returns all the tables in the database system.
SELECT table_name
FROM dba_tables
-- This returns all the tables which are accessible to the current user
SELECT table_name
FROM all_tables
-- This returns all the tables which are created by the current user
SELECT table_name
FROM user_tables
1Điều này sẽ hiển thị tên của bảng, nó thuộc về lược đồ nào và loại
Loại sẽ là “BASE TABLE” cho bảng hoặc “VIEW” cho dạng xem
Chỉ tất cả các bảng
Để xem danh sách chỉ các bảng chứ không phải dạng xem, bạn có thể lọc trên cột table_type
-- This returns all the tables in the database system.
SELECT table_name
FROM dba_tables
-- This returns all the tables which are accessible to the current user
SELECT table_name
FROM all_tables
-- This returns all the tables which are created by the current user
SELECT table_name
FROM user_tables
2
Máy chủ SQL 2000
Nếu bạn đang chạy SQL Server 2005, bạn có thể sử dụng phương thức information_schema ở trên. Nếu bạn đang sử dụng phiên bản 2000 hoặc sớm hơn thì bạn sẽ cần sử dụng một phương pháp khác
Bạn có thể truy vấn dạng xem SYSOBJECTS để tìm tất cả các bảng trong cơ sở dữ liệu. Điều này hiển thị tất cả các đối tượng, vì vậy để lọc nó thành các bảng, chúng ta có thể lọc trên cột xtype bằng giá trị của “U”, đại diện cho một bảng người dùng
Đây là truy vấn
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
0
Hiển thị bảng trong MySQL
Có một số cách để liệt kê các bảng trong MySQL
Hiển thị lệnh bảng
Bạn có thể chạy lệnh SHOW TABLES khi đã đăng nhập vào cơ sở dữ liệu để xem tất cả các bảng
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
1Đầu ra sẽ hiển thị một danh sách các tên bảng, và đó là tất cả
Hiển thị loại bảng
Bạn có thể sử dụng công cụ sửa đổi FULL tùy chọn cũng hiển thị loại bảng
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
2Thao tác này sẽ hiển thị tên bảng và loại bảng, đó là VIEW hoặc BASE TABLE
Hiển thị bảng trong cơ sở dữ liệu khác
Bạn cũng có thể sử dụng lệnh này để xem danh sách các bảng trong cơ sở dữ liệu khác
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
3
Hiển thị các bảng khớp với một mẫu
Khi chọn từ một dạng xem trong các cơ sở dữ liệu khác, bạn có thể sử dụng LIKE để lọc các bảng khớp với một chuỗi nhất định
Bạn có thể làm tương tự với lệnh SHOW TABLES
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
4Để xem tất cả các bảng bao gồm chữ "người dùng", bạn có thể chạy lệnh này
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
5
Hiển thị bảng trong PostgreSQL
Có một số cách để xem danh sách bảng trong PostgreSQL
Hiển thị bảng
Nếu đang sử dụng dòng lệnh, bạn có thể sử dụng lệnh dt để hiển thị tất cả các bảng
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
6Điều này sẽ không hoạt động trong IDE, nhưng có một phương pháp khác cho điều đó
Hiển thị bảng và mô tả
Nếu đang sử dụng dòng lệnh, bạn có thể sử dụng lệnh dt để hiển thị tất cả các bảng cộng với mô tả bảng
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
7Như trên, có một phương pháp khác nếu bạn không sử dụng dòng lệnh
Chọn từ Danh mục
Nếu bạn muốn một phương pháp khác hoặc nếu bạn đang sử dụng IDE và không thể sử dụng \dt, thì bạn có thể chọn từ lược đồ pg_catalog
Đây là một ví dụ
SELECT table_name
FROM all_tables
ORDER BY table_name ASC;
8Điều này sẽ hiển thị cho bạn thông tin cho tất cả các bảng trong cơ sở dữ liệu. Mệnh đề WHERE lọc ra các bảng hệ thống, nhưng bạn có thể bỏ qua mệnh đề WHERE và xem các bảng đó nếu cần
Sự kết luận
Có một số cách để mỗi nhà cung cấp xem danh sách các bảng trong cơ sở dữ liệu. Một số là lệnh sẵn có và một số khác đang chọn từ chế độ xem cơ sở dữ liệu. Hiển thị danh sách cơ sở dữ liệu được thực hiện theo cách tương tự