Làm cách nào để tìm cột nào là khóa chính của bảng bằng cách sử dụng truy vấn?Truy vấn SQL để tìm khóa chính của bảng?
Trả lời
Đối với Oracle, bạn có thể tra cứu nó trong ALL_CONSTRAINTS
bảng:
SELECT a.COLUMN_NAME
FROM all_cons_columns a INNER JOIN all_constraints c
ON a.constraint_name = c.constraint_name
WHERE c.table_name = 'TBL'
AND c.constraint_type = 'P';
DEMO.
Đối với SQL Server, nó đã được trả lời here và để kiểm tra MySQL @ajon's answer.
Đây là một bản sao question:
tín dụng để Lukmdo cho câu trả lời này:
Nó có thể không được khuyến cáo nhưng chỉ hoạt động tốt:
show index from TABLE where Key_name = 'PRIMARY' ;
Cách rắn là sử dụng information_schema:
SELECT k.COLUMN_NAME
FROM information_schema.table_constraints t
LEFT JOIN information_schema.key_column_usage k
USING(constraint_name,table_schema,table_name)
WHERE t.constraint_type='PRIMARY KEY'
AND t.table_schema=DATABASE()
AND t.table_name='owalog';
Tại sao bạn cho rằng đó là MySQL? –
Đúng, điều này áp dụng ít nhất cho MySQL – ajon
Hãy thử truy vấn này trong SQL server:
SELECT X.NAME AS INDEXNAME,
COL_NAME(IC.OBJECT_ID,IC.COLUMN_ID) AS COLUMNNAME
FROM SYS.INDEXES X
INNER JOIN SYS.INDEX_COLUMNS IC
ON X.OBJECT_ID = IC.OBJECT_ID
AND X.INDEX_ID = IC.INDEX_ID
WHERE X.IS_PRIMARY_KEY = 1
AND OBJECT_NAME(IC.OBJECT_ID)='YOUR_TABLE'
Các truy vấn sau đây cung cấp cho các danh sách tất cả các từ khóa chính trong cơ sở dữ liệu nhất định.
SELECT DISTINCT TABLE_NAME ,column_name
FROM INFORMATION_SCHEMA.key_column_usage
WHERE TABLE_SCHEMA IN ('*your_db_name*');
Không hoàn toàn đúng, nó sẽ trả về tất cả các khóa duy nhất, không chỉ các –
Đối với MySQL:
SELECT GROUP_CONCAT(COLUMN_NAME), TABLE_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
TABLE_SCHEMA = '**database name**'
AND CONSTRAINT_NAME='PRIMARY'
GROUP BY TABLE_NAME;
Cảnh báo một khóa chính với hai cột sẽ phải họ tách ra bởi tình trạng hôn mê (,
)
- 1. SQL Server: Nhận khóa chính bảng sử dụng truy vấn sql
- 2. Truy vấn Sql để tìm bảng Temp trong DB
- 3. Truy vấn để tìm khóa ngoài
- 4. SQL Nối bảng truy vấn
- 5. Thêm cột khóa chính trong bảng SQL
- 6. Truy vấn SQL để tìm kiếm lược đồ của tất cả các bảng
- 7. Truy vấn Setezza Sql
- 8. Lấy khóa chính của bảng?
- 9. Truy vấn SQL để tìm số Kevin Bacon số 2
- 10. SQL: Nhiều bảng và truy vấn
- 11. Truy vấn SQL JOIN với Bảng
- 12. Tìm bảng đã khóa trong SQL Server
- 13. Tìm hiểu lịch sử truy vấn SQL
- 14. Truy vấn ngày tạo bảng SQL Server
- 15. Truy vấn để chỉ mục lại khóa chính của cơ sở dữ liệu MySQL
- 16. truy vấn SQL trả về giá trị dựa trên tìm kiếm của id trong bảng khác
- 17. Tìm đầu ra SQL của truy vấn được tham số
- 18. Chọn Truy vấn từ 3 bảng có khóa ngoài
- 19. Truy vấn SQL chuẩn để truy xuất giao điểm của bảng là gì?
- 20. Cách tạo truy vấn tìm kiếm sql mạnh mẽ hơn?
- 21. Câu hỏi SQL nhanh: Cú pháp chính xác để tạo bảng có khóa chính trong H2?
- 22. LINQ to SQL bất kỳ truy vấn tìm kiếm từ khóa
- 23. Làm thế nào để tìm một Khóa Ngoại của một bảng thông qua T-SQL?
- 24. Truy vấn SQL để tìm mức lương cao nhất Nth từ bảng lương
- 25. Oracle: Truy vấn SQL để tìm tất cả các trình kích hoạt thuộc về các bảng?
- 26. Truy vấn SQL để tìm các giá trị khác biệt trong hai bảng?
- 27. h2 sql, tạo bảng có khóa chính nhiều cột?
- 28. Tự động tăng khóa chính trong bảng SQL
- 29. SQL, Cách truy vấn với nhiều khóa ngoài trong một bảng?
- 30. truy vấn sql để tìm các bản ghi trùng lặp
Những cơ sở dữ liệu bạn đang sử dụng? –
@ JoãoSilva - oracle, máy chủ sql, mysql. –
Bạn chắc chắn nên cung cấp thêm chi tiết trong trường hợp có thêm câu hỏi và sử dụng các thẻ thích hợp để thêm một số ngữ cảnh cho câu hỏi. Trong câu hỏi này, ví dụ, câu trả lời có thể rất khác nhau, tùy thuộc vào cơ sở dữ liệu cụ thể mà bạn đang sử dụng. –