در دنیای پایگاه دادههای رابطهای، دادهها در قالب جداول ذخیره میشوند و بین این جداول روابط و وابستگیهای منطقی تعریف میشود. هر جدول شامل ستونها و ردیفهایی است که نوع داده و محدودیتهای خاص خود را دارند. مدیریت این ساختارها و دسترسی به دادهها بدون آگاهی از جزئیات فیزیکی ذخیرهسازی، نیازمند یک زبان استاندارد و قدرتمند است.
SQL (Structured Query Language) زبان استاندارد برای تعریف ساختار، مدیریت و پرسوجوی دادهها در پایگاه دادههای رابطهای است. با استفاده از SQL میتوان:
و همهی این کارها را بدون نیاز به دانستن جزئیات فیزیکی ذخیرهسازی انجام داد.
به همین دلیل SQL یکی از پرکاربردترین و حیاتیترین مهارتها در دنیای نرمافزار و مهندسی داده محسوب میشود و یادگیری آن پایهای ضروری برای هر توسعهدهنده یا مهندس داده است.
SQL (Structured Query Language) زبان استاندارد مدیریت و تعامل با پایگاه دادههای رابطهای است.
این زبان امکان تعریف ساختار دادهها، درج، بهروزرسانی، حذف و واکشی دادهها، مدیریت کاربران و امنیت، و کنترل تراکنشها را فراهم میکند.
دستورات SQL معمولاً به چند دسته اصلی تقسیم میشوند که هرکدام هدف مشخصی دارند:
| دسته | نام کامل | هدف | مثال |
|---|---|---|---|
| DQL | Data Query Language | واکشی دادهها | SELECT * FROM employees; |
| DML | Data Manipulation Language | درج، بهروزرسانی و حذف دادهها | INSERT INTO employees(name) VALUES('Ali'); UPDATE employees SET name='Sara' WHERE id=1; DELETE FROM employees WHERE id=2; |
| DDL | Data Definition Language | تعریف و تغییر ساختار پایگاه داده | CREATE TABLE students(id SERIAL PRIMARY KEY, name TEXT); ALTER TABLE students ADD COLUMN age INT; DROP TABLE students; |
| DCL | Data Control Language | مدیریت دسترسی و مجوزها | GRANT SELECT ON employees TO user1; REVOKE INSERT ON employees FROM user2; |
| TCL | Transaction Control Language | کنترل تراکنشها | COMMIT; ROLLBACK; SAVEPOINT sp1; |
فرمت کلی:
CREATE DATABASE db_name
[ OWNER user_name ]
[ TEMPLATE template ]
[ ENCODING 'UTF8' ]
[ LC_COLLATE 'en_US.UTF-8' ]
[ LC_CTYPE 'en_US.UTF-8' ]
[ TABLESPACE tablespace_name ]
[ CONNECTION LIMIT max_connections ];
مثال:
CREATE DATABASE sepahram
OWNER postgres
ENCODING 'UTF8'
LC_COLLATE='en_US.UTF-8'
LC_CTYPE='en_US.UTF-8'
TABLESPACE pg_default
CONNECTION LIMIT 50;
template1)فرمت کلی:
CREATE TABLE table_name (
column_name data_type [constraints],
...
)
[ TABLESPACE tablespace_name ];
مثال:
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
age INT DEFAULT 25,
join_date TIMESTAMP DEFAULT now()
);
اسکیما وسیلهای برای گروهبندی جداول و سایر اشیای پایگاه داده است و کمک میکند تا ساختار دیتابیس منظم و قابل مدیریت باشد.
CREATE SCHEMA schema_name
[ AUTHORIZATION user_name ];
مثال:
CREATE SCHEMA hr AUTHORIZATION postgres;
schema_name.object_nameALTER TABLE employees ADD COLUMN email TEXT;
ALTER TABLE employees RENAME COLUMN name TO full_name;
ALTER TABLE employees SET TABLESPACE new_space;
ALTER SCHEMA hr RENAME TO human_resources;
ALTER SCHEMA hr OWNER TO user1;
ALTER DATABASE sepahram OWNER TO user2;
DROP TABLE table_name [ CASCADE | RESTRICT ];
DROP SCHEMA schema_name [ CASCADE | RESTRICT ];
DROP DATABASE db_name;
مثال:
DROP TABLE employees CASCADE;
DROP SCHEMA hr RESTRICT;
DROP DATABASE sepahram;