Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Managing Table-Level Permissions in PostgreSQL
📖 Scenario: You are a database administrator for a small company. You need to control who can see and change data in the employees table to keep information safe.
🎯 Goal: Learn how to create a table and set up permissions so only certain users can read or modify the data.
📋 What You'll Learn
Create a table called employees with specific columns
Create a role called hr_staff
Grant SELECT permission on employees to hr_staff
Grant INSERT permission on employees to hr_staff
💡 Why This Matters
🌍 Real World
Companies often need to control who can see or change data in their databases to protect sensitive information.
💼 Career
Database administrators and developers use table-level permissions to secure data and comply with company policies.
Progress0 / 4 steps
1
Create the employees table
Write a SQL statement to create a table called employees with these columns: id as integer primary key, name as text, and position as text.
PostgreSQL
Hint
Use CREATE TABLE followed by the table name and define each column with its type.
2
Create the role hr_staff
Write a SQL statement to create a role called hr_staff without login permission.
PostgreSQL
Hint
Use CREATE ROLE followed by the role name and NOLOGIN to prevent login.
3
Grant SELECT permission on employees to hr_staff
Write a SQL statement to grant SELECT permission on the employees table to the role hr_staff.
PostgreSQL
Hint
Use GRANT SELECT ON employees TO hr_staff; to allow reading the table.
4
Grant INSERT permission on employees to hr_staff
Write a SQL statement to grant INSERT permission on the employees table to the role hr_staff.
PostgreSQL
Hint
Use GRANT INSERT ON employees TO hr_staff; to allow adding new rows.
Practice
(1/5)
1. What does the GRANT SELECT ON table_name TO user_name; command do in PostgreSQL?
easy
A. Removes all permissions from the user on the specified table.
B. Allows the user to delete data from the specified table.
C. Creates a new table with the given name.
D. Allows the user to read data from the specified table.
Solution
Step 1: Understand the GRANT command
The GRANT command is used to give specific permissions to users on database objects like tables.
Step 2: Identify the permission type SELECT
SELECT permission allows reading data from the table but not modifying it.
Final Answer:
Allows the user to read data from the specified table. -> Option D
Quick Check:
GRANT SELECT = read permission [OK]
Hint: GRANT SELECT means read access only [OK]
Common Mistakes:
Confusing SELECT with DELETE permission
Thinking GRANT creates tables
Mixing GRANT with REVOKE commands
2. Which of the following is the correct syntax to revoke INSERT permission on a table named employees from user john?
easy
A. REVOKE INSERT TO john ON employees;
B. REVOKE ON employees INSERT FROM john;
C. REVOKE INSERT ON employees FROM john;
D. REVOKE INSERT FROM john ON employees;
Solution
Step 1: Recall REVOKE syntax
The correct syntax is REVOKE permission ON table FROM user;
Step 2: Match syntax with options
REVOKE INSERT ON employees FROM john; matches the correct order: REVOKE INSERT ON employees FROM john;
Final Answer:
REVOKE INSERT ON employees FROM john; -> Option C
Quick Check:
REVOKE permission ON table FROM user [OK]
Hint: REVOKE syntax: REVOKE permission ON table FROM user [OK]
Common Mistakes:
Swapping ON and FROM keywords
Using TO instead of FROM
Incorrect order of clauses
3. Given the commands:
GRANT SELECT ON orders TO alice;
GRANT INSERT ON orders TO bob;
REVOKE SELECT ON orders FROM alice;
Which of the following is true about user permissions on the orders table?
medium
A. Alice cannot read data; Bob can insert data.
B. Alice can read and insert data; Bob can only insert data.
C. Alice can read data; Bob cannot insert data.
D. Both Alice and Bob have no permissions on the table.
Solution
Step 1: Analyze granted permissions
Alice was granted SELECT (read) permission, Bob was granted INSERT permission.
Step 2: Analyze revoked permissions
Alice's SELECT permission was revoked, so she no longer can read data.
Final Answer:
Alice cannot read data; Bob can insert data. -> Option A
Quick Check:
Revoked SELECT removes read access [OK]
Hint: Revoking removes permission even if previously granted [OK]
Common Mistakes:
Assuming revoked permission still applies
Confusing INSERT with SELECT
Thinking REVOKE affects other users
4. Consider this command:
GRANT UPDATE ON customers TO ;
What is the error in this command?
medium
A. Missing user name after TO keyword.
B. UPDATE is not a valid permission.
C. Table name is missing after ON keyword.
D. GRANT cannot be used for UPDATE permission.
Solution
Step 1: Check syntax completeness
The command ends with TO but does not specify a user or role name.
Step 2: Validate permission and table name
UPDATE is a valid permission and customers is the table name, so those parts are correct.
Final Answer:
Missing user name after TO keyword. -> Option A
Quick Check:
GRANT requires user after TO [OK]
Hint: Always specify user after TO in GRANT [OK]
Common Mistakes:
Leaving user name blank after TO
Confusing permission names
Omitting table name
5. You want to allow user carol to read and insert data into the products table but prevent her from deleting or updating any data. Which commands should you use?
hard
A. GRANT ALL ON products TO carol;
REVOKE DELETE, UPDATE ON products FROM carol;
B. GRANT SELECT, INSERT ON products TO carol;
REVOKE DELETE, UPDATE ON products FROM carol;
C. GRANT SELECT, INSERT, DELETE ON products TO carol;
D. GRANT SELECT ON products TO carol;
GRANT INSERT ON products TO carol;
Solution
Step 1: Grant only SELECT and INSERT permissions
To allow reading and inserting, grant SELECT and INSERT on products to carol.
Step 2: Revoke DELETE and UPDATE permissions
To prevent deleting or updating, explicitly revoke DELETE and UPDATE permissions if previously granted.
Final Answer:
GRANT SELECT, INSERT ON products TO carol;
REVOKE DELETE, UPDATE ON products FROM carol; -> Option B
Quick Check:
Grant needed permissions, revoke unwanted ones [OK]
Hint: Grant needed permissions, revoke unwanted explicitly [OK]