340 likes | 502 Views
جلسه ششم. SQL (Structured Query Language). آنچه در اين جلسه مي خوانيد:. 1) زبان SQL - انواع داده اي در SQL - انواع دستورات SQL دستورات مربوط به اسکيما ( DDL ) دستورات کار با داده ها ( DML ) دستورات کنترلي ( DCL ). آنچه در اين جلسه مي خوانيد:.
E N D
جلسه ششم SQL (Structured Query Language)
آنچه در اين جلسه مي خوانيد: • 1) زبان SQL • - انواع داده اي درSQL • - انواع دستورات SQL • دستورات مربوط به اسکيما (DDL) • دستورات کار با داده ها (DML) • دستورات کنترلي (DCL)
آنچه در اين جلسه مي خوانيد: • تست دستورات SQL در Query Analyzer
انواع عددي • tinyint : عدد صحيح 1 بايتي مثبت (0 تا 255) • smallint : عدد صحيح 2 بايتي (32768- تا 32767) • int: عدد صحيح 4 بايتي (2147483648- تا 2147483647) • bigint : عدد صحيح 8 بايتي • decimal : اعداد حقيقي از -10^38 - 1 تا 10^38 - 1 • real : اعداد اعشار 4 بايتي با دقت 7 رقم • float : اعداد اعشار 8 بايتي با دقت 15 رقم
انواع کاراکتري • char : رشته تا حداکثر 8000 کاراکتر : ذخيره با طول ثابت • varchar : رشته تا حداکثر 8000 کاراکتر : ذخيره با طول متغير • nchar: رشته تا حداکثر 4000 کاراکتر: ذخيره با طول ثابت و بصورت Unicode • nvarchar : رشته تا حداکثر 4000 کاراکتر: ذخيره با طول متغير و بصورت Unicode
انواع ديگر • bit : مقادير منطقي 0 و 1 • text : متن شامل حداکثر 2147483647 کاراکتر • ntext: متن شامل حداکثر 1073741823کاراکتر: ذخيره Unicode • image : براي ذخيره هر نوع داده با حجم زياد تا 2147483647 بايت. • مثلا براي ذخيره يک فايل يا يک عکس در DB
دستورات کار با اسکيما (DDL)
تعريف جدول جديد • CREATE TABLE "table_name"("column 1“ "data_type","column 2" "data_type",... • ) • Example1: • CREATE TABLEStudents( Idint primary key, Name Nvarchar(15)not null,SurName Nvarchar(20) not null, • Field Nvarchar(10))
Example2: CREATE TABLE TelNums (Id int Identity, TelNum Nvarchar(15), Type Nvarchar(5), SId int, Primary Key (Id), Foreign Key (SId) references Students(Id) )
از بين بردن يک جدول DROP TABLE "table_name" Example: Drop TABLEStudents
تغيير در اسکيماي يک جدول • Alter TABLE "table_name“ • [Drop| Add | Alter] column … • Examples: • Alter TABLEStudents Add BirthDate nvarchar(20) • Alter TABLEStudents Altercolumn name nvarchar(6) null • Alter TABLEStudents Dropcolumn Field افزودن يک فيلد جديد تغيير در تعريف يک فيلد حذف يک فيلد
دستورات کار با داده ها (DML)
1- دستور Select بازيابي داده ها از جداول
ساختار يک دستور ساده Select • SELECTاسامي فيلدهاFROMجدول • WHEREشرط • مثال: ليست شماره و نام تمام دانشجويان. • Select Id,Name from S • مثال: ليست مشخصات تمام دانشجويان رشته هاي کامپيوترو شيمي. • Select * from S where Field=‘Computer’ or Field= ‘Chemistry’ • مثال: ليست اسامي دانشجويان کامپيوتر که شماره آنها کمتر از 84110 است. • Select Name from S where Field=‘Computer’ and Id<84110 رابطه S projection selection
مقادير ممکن بجاي اسامي فيلدها: • يک عدد ثابت • Select Name, 5 from S • 2) يک فرمول • Select Name, Id/10 as NewID from S • 3) ترکيب چند فيلد رشته اي • مثال: ليست نام و نام خ دانشجويان. • Select Name + ‘ ’ + Family as CompleteName from S نام گذاري يک ستون در خروجي
= Null بررسي خالي بودن يک فيلد • SELECTاسامي فيلدهاFROMجدول • WHEREفيلدIS NULL • مثال: ليست شماره و رشته دانشجوياني که رشته آنها وارد شده است. • Select Id,Field from S where not Field Is Null • مثال: ليست شماره دانشجوياني که نه رشته و نه نام خ آنها وارد نشده است. • Select Id from S where Family Is Null and Field is Null رابطه S
عملگر Order By : مرتب کردن نتايج • SELECTاسامي فيلدهاFROMجدول • WHEREشرط • ORDER BYنام فيلدها [desc | asc] • مثال: ليست شماره و نام خ تمام دانشجويان، مرتب شده براساس شماره بطور صعودي. • Select Id, family from S order by Id • مثال: ليست مشخصات تمام دانشجويان مرتب بر اساس نام خ و سپس نام. • Select * from S order by family, name • مثال: ليست اسامي دانشجويان کامپيوتر بترتيب نزولي شماره آنها • Select Name from S where Field=‘Computer’ order by Id desc رابطه S صعودي نزولي
عملگر Between - براي مقادير عددي و تاريخ است. - خود مقادير ابتدا و انتهاي بازه را هم در نظر مي گيرد. مثال: ليست نام خ تمام دانشجويان که شماره آنها بين 84110 و84120 است. Select Id,Name from S where Id>=84110 and Id<=84120 يا Select Id,Name from S where Id between 84110 and 84120 رابطه S
عملگر Like - براي مقادير رشته اي است. - براي يافتن مقاديري که نه الزاما دقيقا يکسان بلکه مشابه کلمه مورد نظر باشند. - منظور از مشابه بودن اين است که کلمه مورد نظر جزئي از آن باشد. مثال: ليست دانشجوياني که نام آنها با A شروع مي شود. Select * from S where name Like ‘A%’ مثال: ليست دانشجوياني که نام خ آنها با i تمام مي شود. Select * from S where family Like ‘%i’ مثال: ليست دانشجوياني که در نام آنها حرف A يا a وجود دارد. Select * from S where name Like ‘%A%’ or name like ‘%a%’ نکته:اگر علامت % را فراموش کنيم، عملگر Like معادل = عمل مي کند. رابطه S
چند مثال ديگر: • مثال: ليست مشخصات تمام دانشجويان رشته کامپيوتر که نام آنها 3 حرفي و حرف مياني آن l است. • Select * from S where Field=‘Computer’ and name Like ‘_l_’ • مثال: ليست مشخصات تمام دانشجويان که نام آنها با A شروع و به i ختم مي شود . • Select * from S where name Like ‘A%i’ • مثال: ليست اسامي دانشجوياني که حرف دوم و چهارم نام آنها aو s است. • Select name from S where name like ‘_a_s%’ رابطه S
بازيابي رکوردهاي تکراري رابطه S - گاهي ممکن است خروجي يک دستور Select شامل رکوردهاي تکراري باشد. - اگر نخواهيم رکورد تکراري بازيابي شود بايد از عملگرDISTINCT استفاده کنيم. - عملگر ALL برعکس DISTINCT عمل مي کند. - اگر هيچکدام نوشته نشود، بطور پيش فرض ALL در نظر گرفته مي شود. مثال: ليستي از تمام رشته هاي دانشگاه. Select Distinct Field from S مثال: ليست نام و نام خ تمام دانشجويان. Select all Name , Family from S يا Select Name , Family from S SELECT [DISTINCT | ALL] اسامي فيلدهاFROMجدول
عملگر UNION و UNION ALL - اجتماع رکوردهاي دو جدول را برمي گرداند. مثال: ليستي از نام خ تمام اساتيد و دانشجويان. Select Family from S UNION Select Family From T Select Family from S UNION ALL Select Family From T دستور اول دقيقا اجتماع است يعني رکورد هاي تکراري يکبار در خروجي مي آيند. اما در دومي تکرار مي شوند. مثال: ليست مشخصات تمام دانشجويان رشته هاي کامپيوترو شيمي. Select * from S where Field=‘Computer’ UNIONSelect * from S whereField= ‘Chemistry’ رابطه S رابطه T
عملگر IN - عضويت يک مقدار را در يک مجموعه بررسي مي کند. حالت اول) مجموعه ثابت و مشخص است. مثال: ليست مشخصات تمام دانشجويان رشته هاي کامپيوتر، رياضي و شيمي. Select * from S where Field IN (‘Computer’ , ’Math’ , ’Chemistry’) رابطه S رابطه STC (جدول نمرات) رابطه T
عملگر IN حالت دوم) مجموعه ثابت و مشخص نيست. (Nested Query) مثال: ليست مشخصات تمام دانشجويان که تاکنون درس گرفته اند. (بايد Id آنها عضومجموعهSId هاي موجود در STC باشد) SELECT* from S where IdIN (SELECT Sid from STC) SELECT* from S where Id IN (SELECT * from STC) رابطه S رابطه STC (جدول نمرات) رابطه T مجموعه SId هاي موجود در STC Nested Query يک روش پاسخ به پرس و جوهايي است که به بيش از يک جدول نياز دارند
يک مثال ديگر مثال: ليست مشخصات دانشجوياني که تاکنون درس 3 واحدي نگرفته اند. (بايد Id آنها عضومجموعهSId هاي موجود در STC که درس 3واحدي گرفتند نباشد) SELECT* from S where IdNOTIN (SELECT Sid from STC Where CID IN (SELECT CId from C Where Units=3) ) رابطه S رابطه STC (جدول نمرات) رابطه C شماره دانشجويانی که تاکنون درس 3 واحدی گرفته اند
تست دستورات SQL در Query Analyzer