برنامه نویسی

روز 38 – کلید اصلی ، کلید خارجی در بانک اطلاعاتی ، انواع زبانهای SQL

کلید اصلی:

یک کلید اصلی یک ستون (یا مجموعه ای از ستون ها) در یک جدول پایگاه داده است که به طور منحصر به فرد هر رکورد را در آن جدول مشخص می کند.

*باید منحصر به فرد باشد (بدون مقادیر تکراری).
*نمی تواند مقادیر تهی داشته باشد.
*هر جدول می تواند فقط یک کلید اصلی داشته باشد.

یک جدول برای ذخیره اطلاعات کتاب با استفاده از کلید اصلی ایجاد کنید:

movie=# create table book 
(book_id integer PRIMARY KEY, name text, author text);
CREATE TABLE
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک جدول برای شهروندان با اطلاعات Aadhar و PAN به عنوان یک کلید اصلی ایجاد کنید:

movie=# create table citizens(aadhar_no integer, pan_no text, name text, primary key(aadhar_no, pan_no));
CREATE TABLE
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک رکورد جدید شهروند را در جدول شهروندان وارد کنید:

movie=# insert into citizens values(123412,'g1234t','pritha');
INSERT 0 1
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

همیشه به عنوان هویت تولید می شود:

برای ایجاد یک ستون تقویت کننده خودکار در SQL ، از بند هویت استفاده می شود ، که هر زمان که یک ردیف جدید در جدول وارد شود ، به طور خودکار یک مقدار منحصر به فرد برای ستون ایجاد می کند.

یک جدول مشتری با شناسه مشتری تقویت کننده خودکار ایجاد کنید:

movie=# create table customers(customer_id int GENERATED ALWAYS AS IDENTITY, customer_name text not null, primary key(customer_id));
CREATE TABLE
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چندین سوابق مشتری را در جدول مشتریان وارد کنید:

movie=# insert into customers(customer_name) values('guru'),('pritha'),('pritha'),('muthu');
INSERT 0 4

movie=# select * from customers;
 customer_id | customer_name 
-------------+---------------
           1 | guru
           2 | pritha
           3 | pritha
           4 | muthu
(4 rows)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

کلید خارجی:

یک کلید خارجی یک ستون یا مجموعه ای از ستون ها است که با مراجعه به کلید اصلی جدول دیگر ، بین دو جدول رابطه برقرار می کند.

ایجاد یک جدول مخاطبین مرتبط با مشتریان:

movie=# CREATE TABLE contacts
(contact_id int GENERATED ALWAYS AS IDENTITY, 
customer_id int, 
contact_name text not null, 
mobile int, 
email text, 
PRIMARY KEY (contact_id), 
CONSTRAINT fk_customer  FOREIGN KEY(customer_id) REFERENCES customers(CUSTOMER_ID) 
on DELETE CASCADE
);
CREATE TABLE
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

کلید خارجی (Customer_ID): هر مخاطب را به یک مشتری خاص از جدول مشتریان پیوند می دهد. این رابطه بین دو جدول برقرار می کند.

در Delete Cascade:اگر یک رکورد در جدول مشتریان حذف شود ، تمام سوابق مربوطه در جدول مخاطبین نیز به طور خودکار حذف می شوند.

درج سوابق تماس مرتبط با مشتریان:

movie=# insert into contacts(customer_id, contact_name, mobile, email) values (1,'Guru', 1234, 'guru@guru.com'), (2, 'Pritha', 2345, 'lakshmi@pritha.com');
INSERT 0 2

movie=# select * from customers;
 customer_id | customer_name 
-------------+---------------
           1 | guru
           2 | pritha
           3 | pritha
           4 | muthu
(4 rows)

movie=# select * from contacts;
 contact_id | customer_id | contact_name | mobile |       email        
------------+-------------+--------------+--------+--------------------
          1 |           1 | Guru         |   1234 | guru@guru.com
          2 |           2 | Pritha       |   2345 | lakshmi@pritha.com
(2 rows)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک رکورد مشتری و مخاطبین مرتبط را حذف کنید:

movie=# delete from customers where customer_id=1;
DELETE 1

movie=# select * from contacts;
 contact_id | customer_id | contact_name | mobile |       email        
------------+-------------+--------------+--------+--------------------
          2 |           2 | Pritha       |   2345 | lakshmi@pritha.com
(1 row)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

با شناسه دانشجویی که در حال افزایش خودکار است ، یک جدول دانش آموزان ایجاد کنید:

movie=# create table students_2
(student_id SERIAL primary key, 
name varchar(20) not null, 
class int);
CREATE TABLE
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سریال: ستون student_id به عنوان یک نوع داده سریال تنظیم شده است که به طور خودکار با هر ردیف جدید افزایش می یابد. مانند یک ستون عدد صحیح به صورت خودکار رفتار می کند.

یک جدول دوره هایی با یک کلید خارجی برای دانشجویان ایجاد کنید:

movie=# create table courses
(course_id SERIAL primary key, 
student_id int, 
course_name text, 
FOREIGN KEY (student_id) REFERENCES students_2(student_id) on DELETE CASCADE);
CREATE TABLE
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چندین سوابق دانشجویی را در جدول دانش آموزان وارد کنید:

movie=# insert into students_2 values(101,'guru',4),(102,'pritha',5),(103,'kuhan',3);
INSERT 0 3

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سوابق دوره های مختلف را در جدول دوره ها وارد کنید:

movie=# insert into courses(student_id, course_name) values(101, 'Karate'), (102,'Kung fu'), (103,'Yoga');
INSERT 0 3
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سابقه دانشجویی را از جدول دانش آموزان حذف کنید:

movie=# delete from students_2 where student_id = 102;
DELETE 1

movie=# select * from courses;
 course_id | student_id | course_name 
-----------+------------+-------------
         4 |        101 | Karate
         6 |        103 | Yoga
(2 rows)

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک رکورد دوره را از جدول دوره ها حذف کنید:

movie=# delete from courses where course_id = 4;
DELETE 1

movie=# select * from courses;
 course_id | student_id | course_name 
-----------+------------+-------------
         4 |        101 | Karate
         6 |        103 | Yoga
(2 rows)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک میز کارمند با جزئیات کارمند ایجاد کنید:

movie=# create table emp(empno numeric, empname text, joining_date date, dept_no numeric);
CREATE TABLE
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پرونده کارمندان را در جدول کارمندان قرار دهید:

movie=# insert into emp values(101, 'Raja', '26-Feb-2025', 1);
INSERT 0 1

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

یک ستون حقوق و دستمزد را به جدول کارمند اضافه کنید:

movie=# alter table emp add salary int;
ALTER TABLE

movie=# select * from emp;
 empno | empname | joining_date | dept_no | salary 
-------+---------+--------------+---------+--------
   101 | Raja    | 2025-02-26   |       1 |       
(1 row)

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ستون شماره بخش را از جدول کارمند رها کنید:

movie=# alter table emp drop column dept_no;
ALTER TABLE

movie=# select * from emp;
 empno | empname | joining_date | salary 
-------+---------+--------------+--------
   101 | Raja    | 2025-02-26   |       
(1 row)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تغییر نوع داده ستون برای نام کارمندان در جدول کارمندان:

movie=# alter table emp alter column empname TYPE varchar(30);
ALTER TABLE

movie=# select * from emp;
 empno | empname | joining_date | salary 
-------+---------+--------------+--------
   101 | Raja    | 2025-02-26   |       
(1 row)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حقوق کارمندان را در جدول کارمندان به روز کنید:

movie=# update emp set salary = 25000 where empno = 101;
UPDATE 1

movie=# select * from emp;
 empno | empname | joining_date | salary 
-------+---------+--------------+--------
   101 | Raja    | 2025-02-26   |  25000
(1 row)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تمام سوابق را از جدول کارمند حذف کنید:

movie=# truncate table emp;
TRUNCATE TABLE

movie=# select * from emp;
 empno | empname | joining_date | salary 
-------+---------+--------------+--------
(0 rows)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

جدول کارمند را از پایگاه داده رها کنید:

movie=# drop table emp;
DROP TABLE

movie=# select * from emp;
ERROR:  relation "emp" does not exist
LINE 1: select * from emp;
                      ^
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مشاهده:

نمای در SQL یک جدول مجازی است که بر اساس نتیجه یک پرس و جو ساخته شده است. این شامل ردیف ها و ستون ها دقیقاً مانند یک جدول واقعی است ، اما داده ها را از نظر جسمی ذخیره نمی کند.

در عوض ، داده ها به صورت پویا هنگام دسترسی به نمای ، بر اساس پرس و جو که با آن تعریف شده است ، تولید می شوند.

movie=# create view emp_view as 
select * from student_2;
CREATE VIEW

movie=# select * from student_2;
 student_id | name | class  
------------+------+--------
        101 | abcd |  23132
        102 | sds  |  32443
        103 | fff  | 234334
(3 rows)

movie=# drop view emp_view;
DROP VIEW

movie=# select * from student_2;
 student_id | name | class  
------------+------+--------
        101 | abcd |  23132
        102 | sds  |  32443
        103 | fff  | 234334
(3 rows)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

توضیح دهید:

از بیانیه توضیح در SQL برای به دست آوردن اطلاعات در مورد نحوه اجرای موتور پایگاه داده استفاده می شود.

این یک تفکیک دقیق از برنامه اجرای ، از جمله نحوه دسترسی به جداول ، استفاده از فهرست ها ، و ترتیب عملیات انجام شده توسط برنامه ریز پرس و جو را ارائه می دهد.

movie=# explain select * from student_2;
                         QUERY PLAN                          
-------------------------------------------------------------
 Seq Scan on student_2  (cost=0.00..18.60 rows=860 width=66)
(1 row)

movie=# explain select * from student_2 where name="abcd";
                        QUERY PLAN                         
-----------------------------------------------------------
 Seq Scan on student_2  (cost=0.00..20.75 rows=4 width=66)
   Filter: ((name)::text="abcd"::text)
(2 rows)

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

فهرست:

یک شاخص در SQL یک شیء پایگاه داده است که سرعت عملیات بازیابی داده ها را در یک جدول با هزینه فضای اضافی و سربار تعمیر و نگهداری بهبود می بخشد.

movie=# create index name on student_2(name);
CREATE INDEX

movie=# explain select * from student_2 where name="abcd";
                        QUERY PLAN                        
----------------------------------------------------------
 Seq Scan on student_2  (cost=0.00..1.04 rows=1 width=66)
   Filter: ((name)::text="abcd"::text)
(2 rows)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اگر وجود داشته باشد جدول EMP را رها کنید:

movie=# drop table if exists emp;
NOTICE:  table "emp" does not exist, skipping
DROP TABLE
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تغییر نام ستون در جدول student_2:

movie=# alter table student_2 rename column name to Student_name;
ALTER TABLE

movie=# select * from student_2;
 student_id | student_name | class  
------------+--------------+--------
        101 | abcd         |  23132
        102 | sds          |  32443
        103 | fff          | 234334
(3 rows)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در جدول student_2 یک محدودیت چک را در ستون کلاس اضافه کنید:

movie=# alter table student_2 add check(class in (23132,32443,234334));
ALTER TABLE

movie=# insert into student_2 values(104,'frferf',23132);
INSERT 0 1

movie=# insert into student_2 values(105,'rferf',3423132);
ERROR:  new row for relation "student_2" violates check constraint "student_2_class_check"
DETAIL:  Failing row contains (105, rferf, 3423132).
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

SQL:

SQL (زبان پرس و جو ساختاری) زبانی قدرتمند است که برای تعامل با پایگاه داده های رابطه ای استفاده می شود.

این امر را می توان بر اساس عملیات و کارهایی که انجام می دهند ، به انواع مختلف زبانها طبقه بندی کنید.

1. زبان تعریف داده (DDL)

DDL برای تعریف و مدیریت ساختار اشیاء پایگاه داده مانند جداول ، ایندکس و نماها استفاده می شود.

ایجاد: مورد استفاده برای ایجاد اشیاء پایگاه داده (جداول ، ایندکس ، نماها و غیره).
alter: برای اصلاح یک شیء پایگاه داده موجود (به عنوان مثال ، اضافه کردن ، حذف یا تغییر ستون ها) استفاده می شود.
افت: برای حذف یک شیء پایگاه داده (به عنوان مثال ، جدول ، مشاهده) استفاده می شود.
کوتاه کردن: تمام ردیف ها را از یک جدول بدون ورود به سیستم حذف ردیف جداگانه حذف می کند.

2. زبان دستکاری داده (DML)

DML برای دستکاری داده های ذخیره شده در پایگاه داده استفاده می شود. این شامل عملیاتی مانند درج ، به روزرسانی ، حذف و بازیابی داده ها است.

انتخاب کنید: برای بازیابی داده ها از یک یا چند جدول استفاده می شود.
درج: برای اضافه کردن ردیف های جدید به یک جدول استفاده می شود.
به روز رسانی: برای اصلاح داده های موجود در یک جدول استفاده می شود.
حذف: برای حذف ردیف ها از یک میز استفاده می شود.

3. زبان کنترل داده (DCL)

DCL برای کنترل دسترسی به داده ها در پایگاه داده استفاده می شود. این مجوزها را برای کاربران و نقش ها تعریف می کند.

کمک هزینه: برای اختصاص امتیاز به کاربران یا نقش ها استفاده می شود.
لغو: برای حذف امتیازات از کاربران یا نقش ها استفاده می شود.

4. زبان کنترل معامله (TCL)

TCL برای مدیریت معاملات در یک پایگاه داده ، که گروه هایی از عملیات DML هستند استفاده می شود. این یکپارچگی و قوام داده ها را تضمین می کند.

تعهد: تمام تغییرات ایجاد شده در معامله فعلی را ذخیره می کند.
بازگشت: تغییرات ایجاد شده در طول معامله فعلی را خنثی می کند.
SavePoint: نکته ای را در معامله ای تنظیم می کند که می توانید به آن برگردید.
تنظیم معامله: برای پیکربندی خصوصیات معامله استفاده می شود.

5. زبان پرس و جو داده (DQL)

DQL در درجه اول مربوط به پرس و جو و بازیابی داده ها از پایگاه داده است.

انتخاب کنید: برای بازیابی داده ها از یک یا چند جدول استفاده می شود (این دستور نیز بخشی از DML است اما عمدتاً تحت DQL قرار می گیرد زیرا برای داده های پرس و جو استفاده می شود).

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا