Trong PostgreSQL, schema là một khái niệm quan trọng để tổ chức và quản lý các đối tượng cơ sở dữ liệu. Schema cung cấp một cách để phân chia và sắp xếp các đối tượng cơ sở dữ liệu như bảng (tables), chỉ mục (indexes), view, hàm (functions), và trình kích hoạt (triggers) thành các nhóm logic. Điều này giúp dễ dàng quản lý và kiểm soát quyền truy cập hơn.
Đặc điểm của Schema
- Tách biệt không gian tên (namespace): Schema cung cấp một không gian tên riêng biệt cho các đối tượng. Điều này có nghĩa là bạn có thể có nhiều đối tượng có cùng tên trong cùng một cơ sở dữ liệu miễn là chúng nằm trong các schema khác nhau.
- Quản lý quyền truy cập: Bạn có thể kiểm soát quyền truy cập đến các đối tượng trong schema bằng cách cấp quyền cụ thể cho người dùng hoặc nhóm người dùng.
- Tổ chức logic: Schema giúp tổ chức các đối tượng cơ sở dữ liệu theo cách logic. Ví dụ, bạn có thể tạo các schema khác nhau cho các mô-đun khác nhau của ứng dụng.
Truy cập vào Schema:
schema_name.object_name
public.staff
Nếu trong câu select mà không chỉ rõ table nằm trong schema nào => postgresql sẽ tự động tìm schema khớp và hiển thị kết quả đầu tiên trong schema hiện tại, nếu không tồn tại table, hoặc table nằm trong 1 schema khác không phải hiện tại thì hệ thống sẽ trả về lỗi.
## lệnh xem schema đang kết nối hiện tại:
SELECT current_schema();
Cách tạo Schema
Bạn có thể tạo một schema mới bằng lệnh CREATE SCHEMA trong PostgreSQL:
CREATE SCHEMA ten_schema;
CREATE SCHEMA my_schema;
Sử dụng Schema
Khi bạn tạo một đối tượng trong cơ sở dữ liệu, bạn có thể chỉ định schema mà đối tượng đó sẽ nằm trong:
CREATE TABLE my_schema.my_table ( id SERIAL PRIMARY KEY, name VARCHAR(100) );
Chuyển đổi giữa các Schema
Bạn có thể thay đổi schema hiện tại của phiên làm việc bằng cách sử dụng lệnh SET search_path:
SET search_path TO ten_schema;
Ví dụ
Tạo Schema và Bảng
##Tạo một schema mới:
CREATE SCHEMA sales;
##Tạo một bảng trong schema sales:
CREATE TABLE sales.customers ( customer_id SERIAL PRIMARY KEY, customer_name VARCHAR(100), contact_email VARCHAR(100) );
Truy cập Bảng trong Schema
Bạn có thể truy cập bảng trong schema bằng cách chỉ định tên schema trước tên bảng:
SELECT * FROM sales.customers;
Hoặc thay đổi search_path để truy cập trực tiếp mà không cần chỉ định schema:
SET search_path TO sales; SELECT * FROM customers;
Quản lý Quyền Truy cập
Bạn có thể cấp quyền truy cập cho người dùng hoặc nhóm người dùng cho các đối tượng trong schema:
GRANT USAGE ON SCHEMA sales TO user_name;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA sales TO user_name;
ALTER SCHEMA:
1. Đổi tên schema
ALTER SCHEMA old_schema_name RENAME TO new_schema_name;
ALTER SCHEMA sales RENAME TO marketing;
2. Đổi chủ sở hữu của schema
ALTER SCHEMA schema_name OWNER TO new_owner;
ALTER SCHEMA marketing OWNER TO new_user;
3. Thay đổi tìm kiếm đường dẫn (search path)
SET search_path TO schema1, schema2, …;
SET search_path TO marketing, public;
4. Thay đổi thuộc tính của các đối tượng trong schema
Để thay đổi các thuộc tính của các đối tượng trong schema, bạn có thể cần phải sử dụng các lệnh ALTER tương ứng cho từng loại đối tượng. Ví dụ, để đổi tên một bảng trong một schema:
ALTER TABLE schema_name.table_name RENAME TO new_table_name;
ALTER TABLE marketing.customers RENAME TO clients;
5. Di chuyển các đối tượng giữa các schema
Để di chuyển một bảng từ schema này sang schema khác, bạn có thể sử dụng lệnh ALTER TABLE … SET SCHEMA …:
ALTER TABLE schema_name.table_name SET SCHEMA new_schema_name;
ALTER TABLE marketing.clients SET SCHEMA public;
Tương tự, bạn có thể di chuyển các loại đối tượng khác (như views, indexes, sequences, etc.) bằng cách thay đổi cú pháp phù hợp:
##Di chuyển view:
ALTER VIEW schema_name.view_name SET SCHEMA new_schema_name;
##Di chuyển sequence:
ALTER SEQUENCE schema_name.sequence_name SET SCHEMA new_schema_name;
##Di chuyển index:
ALTER INDEX schema_name.index_name SET SCHEMA new_schema_name;
DROP SCHEMA:
Trong PostgreSQL, lệnh DROP SCHEMA được sử dụng để xóa một schema cùng với tất cả các đối tượng bên trong nó (như bảng, chỉ mục, view, hàm, và các đối tượng khác).
Cú pháp cơ bản
DROP SCHEMA schema_name [CASCADE | RESTRICT];
- schema_name: Tên của schema bạn muốn xóa.
- CASCADE: Tùy chọn này sẽ xóa schema cùng với tất cả các đối tượng phụ thuộc vào nó.
- RESTRICT: Tùy chọn này sẽ ngăn không cho schema bị xóa nếu có bất kỳ đối tượng nào phụ thuộc vào nó. Đây là tùy chọn mặc định.
Ví dụ
Xóa một schema không có đối tượng phụ thuộc
DROP SCHEMA temp_schema;
Nếu temp_schema không chứa bất kỳ đối tượng nào hoặc không có bất kỳ đối tượng nào phụ thuộc vào nó, lệnh này sẽ thực thi thành công.
Xóa một schema cùng với tất cả các đối tượng bên trong nó
DROP SCHEMA temp_schema CASCADE;
Lệnh này sẽ xóa temp_schema và tất cả các đối tượng bên trong nó.
Ngăn chặn việc xóa schema nếu có đối tượng phụ thuộc
Nếu bạn sử dụng tùy chọn RESTRICT, lệnh sẽ ngăn chặn việc xóa schema nếu có bất kỳ đối tượng nào phụ thuộc vào nó:
DROP SCHEMA temp_schema RESTRICT;
Nếu temp_schema có các đối tượng phụ thuộc, lệnh này sẽ không thực thi và PostgreSQL sẽ báo lỗi.
XEM THÊM:
https://www.blogger.com/blog/post/edit/4187204636885547533/634059851093453789
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
cở sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty