SQL UNIQUE

unique در دستورات SQL باعث می شود که فیلد مورد نظر در database یکتا شناخته شود.

primary key  و unique در واقع تضمین یکتا بودن فیلد مورد نظر در جدول پایگاه داده است.

در یک primary key  به طور خودکار دستور  unique  وجود دارد.

نکته:

در یک جدول پایگاه داده ای شما می توانید چندین فیلد unique داشته باشید اما فقط یک  primary key  می توانید داشته باشید.

دستور unique  در جدول زیر باعث یکتا شدن مقدار “P_Id” میشود.

MySQL:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

برای نام گذاری یک محدودیت UNIQUE و یا برای معین کردن UNIQUE های موجود در یک جدول می توان از دستور زیر استفاده نمود.

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)

ترکیب دستور های ALTER TABLE و UNIQUE یعنی UNIQUE کردن یک مقدار برای جدول ساخته شده.

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons
ADD UNIQUE (P_Id)

DROP کردن فیلد UNIQE :

MySQL:

ALTER TABLE Persons
DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

مترجم: علیرضا مسگری

SQL NOT NULL

عبارت not null  موجب می شود تا ستون مورد نظر نتواند مقدار null  را بپذیرد.

not null  باعث میشود تا فیلد مورد نظر همیشه دارای مقدار بوده به این معنا که شما نمی توانید یک record جدید بدون value یا یک record موجود را بدون مقدار(value) ,  به روز کنید(update).

عبارت SQL زیر موجب میشود تا ستون های “P_Id” و “LastName” مقدار null را نپذیرند(یعنی نمیتوانیم این دو فیلد را خالی بگذاریم).

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)


مترجم: علیرضا مسگری

SQL Constraints

Constraints برای محدود ساختن آن داده هایی که می توانند در جدول ذخیره شوند استفاده میشود

میتواند زمانی که یک جدول ساخته میشود و یا بعد از ساخته شدن آن ( همراه دستور ALTER TABLE که بعدا توضیح خواهیم داد) مشخص شود.
ما بر روی CONSTRAINTS های زیر تمرکز میکنیم.

    *  NOT NULL
    * UNIQUE
    * PRIMARY KEY
    * FOREIGN KEY
    * CHECK
    * DEFAULT

در قسمت بعدی بیشتر توضیح خواهیم داد

مترجم : علیرضا مسگری

SQL CREATE TABLE

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

دستور CREATE TABLE:

CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
....
)

در جدول ما انواع داده ها میتواند ذخیره شود.

مثال برای CREATE TABLE:
حالا ما میخواهیم جدولی به نام “Persons” بسازیم که دارای 5 ستون با نامهای P_Id, LastName, FirstName, Address, and City میباشد.
از دستور زیر استفاده میکنیم :

CREATE TABLE Persons
(
P_Id int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

ستونP_Id حاوی دادده با نوع INT میباشد و ستون های دیگر حاوی داده ها با نوع varchar میباشند که ماکزیمم طول آنها 255 کاراکتر میباشد.

P_Id LastName FirstName Address City

این جدول با دستور SELECT INTO پر خواهد شد.

مترجم : علیرضا مسگری

SQL CREATE DATABASE

   ساختن پایگاه داده  CREATE DATABASE

برای ساختن یک پایگاه داده از این عبارت استفاده میکنیم
دستور آن به صورت زیر است:

CREATE DATABASE database_name

مثال از CREATE DATABASE:

حالا م میخواهیم که پایگاه داده ای با نام “my_db” بسازیم.
از دستور بالا به این صورت استفاده میکنیم

CREATE DATABASE my_db

مترجم : علیرضا مسگری

SQL SELECT INTO

عبارت SELECT INTO در SQL برای انتخاب اطلاعات یک جدول و وارد کردن این اطلاعات در جدول دیگر میباشد.
این عبارت برای داشتن یک کپی از اطلاعات به عنوان پشتیبان میباشد
دستور SELECT INTO :

SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename

این عبارت تمامی اطلاعات را وارد جدول جدید میکند.

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

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename

مثال از SELECT INTO :
حالا ما میخواهیم یک کپی کامل از جدول PERSON را داشته باشیم .
از دستور زیر استفاده میکنیم :

SELECT *
INTO Persons_Backup
FROM Persons

همچنین با استفاده از عبارت IN میتوانیم اطلاعات را در پایگاه داده دیگری کپی میکنیم.

SELECT *
INTO Persons_Backup IN 'Backup.mdb'
FROM Persons

همچنین ما میتوانیم مقدار کمی از اطلاعات که میخواهیم را کپی کنیم.

SELECT LastName,FirstName
INTO Persons_Backup
FROM Persons

 SELECT INTO با استفاده از عبارت WHERE:

با دستور زیر ما یک کپی از جدول PERSON آن هم فقط از افرادی که در شهر “Sandnes” زندگی میکنند را بدست می آوریم

SELECT LastName,Firstname
INTO Persons_Backup
FROM Persons
WHERE City='Sandnes'

 SELECT INTO همراه با JOINED:

ما میتوانیم از دو جدول یا بیشتر هم کپی برداری کنیم
عبارت زیر یک جدول پشتیبان با نام “Persons_Order_Backup” میسازد و سپس اطلاعات را از جدول “Persons” و “Orders” داخل آن وارد میکند

SELECT Persons.LastName,Orders.OrderNo
INTO Persons_Order_Backup
FROM Persons
INNER JOIN Orders
ON Persons.P_Id=Orders.P_Id

مترجم :علیرضا مسگری

SQL UNION

عملگر UNION در SQL دو یا چند عبارت SLELECT را با هم ترکیب میکند.
نکته اینکه هر عبارت SELECT داخل عملگر UNION باید حتما دارای تعداد یکسان ستون وستون ها نیز دارای اطلاعات یکسان و تعداد داده ها در هر ستون باید یکسان باشد
دستور UNION :

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

مثال از UNION :
جدول “Employees_Norway”:

E_ID E_Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari

جدول “Employees_USA”:

E_ID E_Name
01 Turner, Sally
02 Kent, Clark
03 Svendson, Stephen
04 Scott, Stephen

حالا ما میخواهیم اسامی تمام کارمندان در نوروژ و آمریکا را به صورت لیست در آوریم.
از عبارت SELECT به صورت زیر استفاده میکنیم.

SELECT E_Name FROM Employees_Norway
UNION
SELECT E_Name FROM Employees_USA

و نتیجه مانند جدول زیر میشود.

E_Name
Hansen, Ola
Svendson, Tove
Svendson, Stephen
Pettersen, Kari
Turner, Sally
Kent, Clark
Scott, Stephen

نکته :توجه کنید که این دستور نمیتواند تمام کارمندان را درنوروژ و آمریکا به صورت لیست در آورد همانطور که مشاهده میکنید ما در دو جدول بالا دو کارمند با نام های یکسان داریم اما هنگام لیست شدن فقط نام یکی از آنها نوشته شد این بدان معناست که عملگر UNION به صورت(DISTINCT) عمل میکند .(برای درک بهتر به قسمت DISTINCTدر بخش SQL مراجعه کنید)

حال برای رفع این مشکل باید از دستور زیر استفاده کنیم

SELECT E_Name FROM Employees_Norway
UNION ALL
SELECT E_Name FROM Employees_USA

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

E_Name
Hansen, Ola
Svendson, Tove
Svendson, Stephen
Pettersen, Kari
Turner, Sally
Kent, Clark
Svendson, Stephen
Scott, Stephen

مترجم :علیرضا مسگری

SQL FULL JOIN

عبارت کلیدی FULL JOIN تمام ردیف های موجود در جداول را با وجود حتی یک همخوانی میان جداول بر میگرداند .

دستور FULL JOIN در SQL

SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

مثال از FULL JOIN:

جدول “PERSON”:

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

جدول “ORDER”:

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

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

از عبارت زیر استفاده میکنیم

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

نتیجه به شکل زیر میباشد

LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Svendson Tove
34764

FUULL JOIN تمام ردیف ها از جدول PERSON و همچنین تمام ردیف ها از جدول ORDER را برمیگرداند حتی اگر هیچ همخوانی بین آنها موجود نباشد در هر صورت اطلاعات بین دو جدول به صورت فهرست در خواهد آمد

مترجم :علیرضا مسگری

SQL RIGHT JOIN

این دستور ردیف های خوانده شده را از جدول شماره 2 یعنی جدول سمت راست برمیگرداند حتی اگر هیچ همخوانی با جدول شماره 1 یعنی جدول سمت چپ نداشته باشد.
به دستور زیر دقت کنید

SELECT column_name(s)
FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

این دستور در برخی از پایگاه داده ها به صورت RIGHT OUTER JOIN استفاده میشود.
مثال : جدول” PERSON”

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

جدول”ORDER”

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

حالا ما دو جدول بالا را به هم مرتبط میکنیم و با توجه به ترتیبشان در جدول دیگر مینویسیم.
از عبارت زیر بهره میگیریم:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
RIGHT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

و نتیجه:

LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
34764

مترجم :علیرضا مسگری

SQL LEFT JOIN

این دستور ردیف های خوانده شده را از جدول شماره 1 یعنی جدول سمت چپ برمیگرداند حتی اگر هیچ همخوانی با جدول شماره 2 یعنی جدول سمت راست نداشته باشد.
به دستور زیر دقت کنید

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

این دستور در برخی از پایگاه داده ها به صورت LEFT OUTER JOIN استفاده میشود.
مثال : “PERSON”

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

جدول “ORDER”

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15

حالا ما دو جدول بالا را به هم مرتبط میکنیم و با توجه به ترتیبشان در جدول دیگر مینویسیم.
از عبارت زیر بهره میگیریم:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

و نتیجه:

LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
Svendson Tove

مترجم :علیرضا مسگری