پرس و جوهای نوشتن سرور Ms sql. اجرای پرس و جوهای SQL در مدیریت استودیو. اضافه کردن یک فیلد میانگین محاسبه شده

عبارات جدولپرس و جوهایی فرعی نامیده می شوند که در جایی استفاده می شوند که انتظار وجود یک جدول وجود دارد. دو نوع عبارت جدول وجود دارد:

    جداول مشتق شده;

    عبارات جدول تعمیم یافته

این دو شکل از عبارات جدول در زیر بخش های زیر مورد بحث قرار می گیرند.

جداول مشتق شده

جدول مشتق شدهعبارت جدولی است که در عبارت FROM یک پرس و جو گنجانده شده است. جداول مشتق شده را می توان در مواردی استفاده کرد که استفاده از نام مستعار ستونی امکان پذیر نیست زیرا مترجم SQL دستور دیگری را قبل از شناخته شدن نام مستعار پردازش می کند. مثال زیر تلاش برای استفاده از نام مستعار ستونی را در شرایطی نشان می‌دهد که قبل از شناخته شدن نام مستعار، عبارت دیگری در حال پردازش است:

از SampleDb استفاده کنید. MONTH(EnterDate) را به عنوان enter_month از Works_on GROUP BY enter_month انتخاب کنید.

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

پیام 207، سطح 16، وضعیت 1، خط 5 نام ستون نامعتبر "enter_month". (پیام 207: سطح 16، وضعیت 1، خط 5 نام ستون نامعتبر enter_month)

دلیل خطا این است که بند GROUP BY قبل از پردازش لیست مربوطه دستور SELECT پردازش می شود و نام مستعار ستون enter_month هنگام پردازش گروه ناشناخته است.

این مشکل را می توان با استفاده از یک جدول مشتق شده که حاوی پرس و جوی قبلی است (بدون عبارت GROUP BY) حل کرد زیرا عبارت FROM قبل از عبارت GROUP BY اجرا می شود:

از SampleDb استفاده کنید. SELECT enter_month FROM (SELECT MONTH(EnterDate) as enter_month FROM Works_on) AS m GROUP BY enter_month;

نتیجه این پرس و جو به این صورت خواهد بود:

به طور معمول، یک عبارت جدول را می توان در هر جایی از عبارت SELECT قرار داد که ممکن است نام جدول ظاهر شود. (نتیجه عبارت جدول همیشه یک جدول یا در موارد خاص یک عبارت است.) مثال زیر استفاده از عبارت جدول را در لیست انتخاب دستور SELECT نشان می دهد:

نتیجه این پرس و جو:

عبارات جدول عمومی

بیان جدول مشترک (OTB)یک عبارت جدول نامگذاری شده است که توسط زبان Transact-SQL پشتیبانی می شود. عبارات جدول رایج در دو نوع پرس و جو زیر استفاده می شود:

    غیر بازگشتی؛

    بازگشتی

این دو نوع درخواست در بخش های بعدی مورد بحث قرار می گیرند.

OTB و پرس و جوهای غیر بازگشتی

شکل غیر بازگشتی OTB می تواند به عنوان جایگزینی برای جداول و نماهای مشتق شده استفاده شود. به طور معمول OTB توسط با بندهاییو یک پرس و جو اضافی که به نام استفاده شده در عبارت WITH اشاره می کند. در Transact-SQL معنای کلمه کلیدی WITH مبهم است. برای جلوگیری از ابهام، دستور قبل از دستور WITH باید با نقطه ویرگول خاتمه یابد.

از AdventureWorks2012 استفاده کنید. SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") AND Freight > (SELECT AVG(TotalDue)HederORE) FROM 2005 ")/2.5;

پرس و جو در این مثال سفارش هایی را انتخاب می کند که مجموع مالیات آنها (TotalDue) بیشتر از میانگین همه مالیات ها و هزینه های حمل و نقل آنها (Freight) بیشتر از 40٪ از میانگین مالیات است. ویژگی اصلی این پرس و جو طول آن است، زیرا درخواست فرعی باید دو بار نوشته شود. یکی از راه های ممکنبرای کاهش اندازه ساختار پرس و جو ایجاد یک نمای حاوی یک پرس و جو فرعی است. اما این راه حل کمی پیچیده است زیرا نیاز به ایجاد یک نمای و سپس حذف آن پس از اتمام اجرای کوئری دارد. یک رویکرد بهتر ایجاد یک OTB خواهد بود. مثال زیر استفاده از OTB غیر بازگشتی را نشان می دهد که تعریف پرس و جو در بالا را کوتاه می کند:

از AdventureWorks2012 استفاده کنید. WITH price_calc(year_2005) AS (انتخاب AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalMDue >SELECTRO205c از قیمت _ calc ) /2.5;

نحو عبارت WITH در پرس و جوهای غیر بازگشتی به شرح زیر است:

پارامتر cte_name نشان دهنده نام OTB است که جدول حاصل را تعریف می کند و پارامتر column_list لیست ستون های عبارت جدول را نشان می دهد. (در مثال بالا، OTB Price_calc نامیده می شود و دارای یک ستون، year_2005 است.) پارامتر inner_query یک عبارت SELECT را نشان می دهد که مجموعه نتایج عبارت جدول مربوطه را مشخص می کند. سپس عبارت جدول تعریف شده را می توان در outer_query استفاده کرد. (کوئری بیرونی در مثال بالا از OTB price_calc و ستون year_2005 آن برای ساده کردن پرس و جوی دوتایی تو در تو استفاده می کند.)

OTB و پرس و جوهای بازگشتی

در این بخش مطالبی با پیچیدگی افزایش یافته ارائه می شود. بنابراین توصیه می‌شود هنگام خواندن برای اولین بار از آن صرفنظر کنید و بعداً به آن بازگردید. OTB ها را می توان برای پیاده سازی بازگشت استفاده کرد زیرا OTB ها می توانند ارجاعاتی به خودشان داشته باشند. نحو اصلی OTB برای یک پرس و جو بازگشتی به این صورت است:

پارامترهای cte_name و column_list همان معنایی را دارند که در OTB برای جستارهای غیر بازگشتی وجود دارد. بدنه یک عبارت WITH از دو کوئری تشکیل شده است که توسط عملگر ترکیب شده اند اتحاد همه. اولین کوئری فقط یک بار فراخوانی می شود و شروع به جمع آوری نتیجه بازگشت می کند. اولین عملوند عملگر UNION ALL به OTB اشاره نمی کند. به این پرس و جو کوئری یا منبع مرجع می گویند.

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

اپراتور UNION ALL انباشته را متصل می کند این لحظهردیف‌ها و همچنین ردیف‌های اضافی اضافه شده توسط تماس فعلی به عضو بازگشتی. (وجود عملگر UNION ALL به این معنی است که ردیف های تکراری از نتیجه حذف نمی شوند.)

در نهایت، پارامتر outer_query کوئری بیرونی را مشخص می‌کند که OTB برای بازیابی همه تماس‌های پیوستن هر دو عضو استفاده می‌کند.

برای نشان دادن فرم بازگشتی OTB، از جدول Airplane تعریف شده و پر شده با کد نشان داده شده در مثال زیر استفاده می کنیم:

از SampleDb استفاده کنید. CREATE TABLE Airplane(ContainingAssembly VARCHAR(10)، ContainedAssembly VARCHAR(10)، QuantityContained INT، UnitCost DECIMAL(6،2)); INSERT INTO VALUES هواپیما ("Airplane"، "Fuselage"، 1، 10); INSERT INTO VALUES هواپیما ("Airplane"، "Wings"، 1، 11); INSERT INTO Airplane VALUES ("Airplane"، "Tail"، 1، 12); INSERT INTO VALUES هواپیما ("بدنه"، "سالن"، 1، 13)؛ INSERT INTO VALUES هواپیما ("بدنه"، "کاکپیت"، 1، 14)؛ INSERT INTO VALUES هواپیما ("بدنه"، "دماغه"، 1، 15)؛ درج در مقادیر هواپیما ("کابین"، NULL، 1،13)؛ درج در مقادیر هواپیما ("کاکپیت"، NULL، 1، 14)؛ درج در مقادیر هواپیما ("Nose"، NULL، 1، 15)؛ درج در مقادیر هواپیما ("بال"، NULL، 2، 11). درج در مقادیر هواپیما ("Tail"، NULL، 1، 12);

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

جدول هواپیما از 11 ردیف زیر تشکیل شده است:

مثال زیر از عبارت WITH برای تعریف پرس و جوی استفاده می کند که هزینه کل هر ساخت را محاسبه می کند:

از SampleDb استفاده کنید. WITH list_of_parts (assembly1, quantity, cost) AS (انتخاب حاوی مونتاژ، مقدار حاوی، UnitCost FROM Airplane WHERE ContainedAssembly IS NULL UNION ALL SELECT a.ContainingAssembly، a.Quantity*ContainedContained(2ASAL) ) FROM list_of_parts l, Airplane a WHERE l.assembly1 = a.ContainedAssembly) SELECT assembly1 "Part"، مقدار "Quantity"، هزینه "Price" FROM list_of_parts;

بند WITH یک لیست OTB به نام list_of_parts تعریف می کند که از سه ستون تشکیل شده است: assembly1، مقدار و هزینه. اولین دستور SELECT در مثال فقط یک بار برای ذخیره نتایج مرحله اول فرآیند بازگشت فراخوانی می شود. دستور SELECT در خط آخر مثال نتیجه زیر را نشان می دهد.

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

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

راه اندازی پایگاه داده برای مثال

یک پایگاه داده برای نشان دادن نحوه کار تیم ها ایجاد کنید. برای کار، باید دو فایل DLL.sql و InsertStatements.sql را دانلود کنید. پس از آن، یک ترمینال را باز کنید و با استفاده از دستور زیر وارد کنسول MySQL شوید (مقاله فرض می کند که MySQL قبلاً روی سیستم نصب شده است):

Mysql -u root -p

سپس رمز عبور خود را وارد کنید.

دستور زیر را اجرا کنید. بیایید پایگاه داده را "دانشگاه" بنامیم:

ایجاد پایگاه داده دانشگاه؛ دانشگاه USE; منبع ; منبع

دستورات کار با پایگاه داده

1. مشاهده پایگاه های داده موجود

نمایش پایگاه های داده؛

2. یک پایگاه داده جدید ایجاد کنید

ایجاد پایگاه داده؛

3. انتخاب یک پایگاه داده برای استفاده

استفاده کنید ;

4. دستورات SQL را از یک فایل .sql وارد کنید

منبع ;

5. دیتابیس را حذف کنید

رها کردن پایگاه داده ;

کار با جداول

6. جداول موجود در پایگاه داده را مشاهده کنید

نمایش جداول.

7. یک جدول جدید ایجاد کنید

ایجاد جدول ( , , کلید اولیه ( )، کلید خارجی ( ) منابع ());

محدودیت های یکپارچگی هنگام استفاده از CREATE TABLE

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

  • یک سلول جدول نمی تواند مقدار NULL داشته باشد.
  • کلید اصلی - کلید اصلی (col_name1, col_name2, ...) ;
  • کلید خارجی - کلید خارجی (col_namex1، ...، col_namexn) منابع جدول_نام (col_namex1، …، col_namexn) .

شما می توانید بیش از یک کلید اصلی را مشخص کنید. در این صورت، یک کلید اولیه ترکیبی دریافت خواهید کرد.

مثال

یک جدول "معلم" ایجاد کنید:

CREATE TABLE instructor (ID CHAR(5)، نام VARCHAR(20) NOT NULL، dept_name VARCHAR(20)، حقوق NUMERIC(8،2)، PRIMARY KEY (ID)، FOREIGN KEY (dept_name) REFERENCES Department(dept_name));

8. اطلاعات جدول

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

توصیف کردن ;

9. افزودن داده ها به جدول

درج کنید (, , ، ...) ارزش های ( , , , …);

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

درج کنید ارزش های ( , , , …);

10. به روز رسانی داده های جدول

به روز رسانی تنظیم = , = ، ... جایی که ;

11. حذف تمام داده ها از جدول

حذف از ;

12. یک جدول را حذف کنید

میز رها کردن ;

دستورات ایجاد پرس و جو

13. انتخاب کنید

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

انتخاب کنید , ، … از جانب ;

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

انتخاب * از ;

14. SELECT DISTINCT

ستون های جدول ممکن است حاوی داده های تکراری باشند. از SELECT DISTINCT فقط برای بازیابی داده های غیر تکراری استفاده کنید.

متمایز را انتخاب کنید , ، … از جانب ;

15. کجا

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

انتخاب کنید , ، … از جانب جایی که ;

شرایط زیر را می توان در درخواست مشخص کرد:

  • مقایسه متن;
  • مقایسه مقادیر عددی؛
  • عملگرهای منطقی AND (and)، OR (یا) و NOT (نفی).

مثال

دستورات زیر را امتحان کنید. به شرایط مشخص شده در WHERE توجه کنید:

انتخاب * از دوره آموزشی WHERE dept_name='Comp. علمی.'; SELECT * FROM course WHERE واحدهای>3; SELECT * FROM course WHERE dept_name="Comp. Sci." و اعتبار>3;

16. گروه توسط

عملگر GROUP BY اغلب با استفاده می شود توابع جمعمانند COUNT، MAX، MIN، SUM و AVG برای گروه بندی مقادیر خروجی.

انتخاب کنید , ، … از جانب دسته بندی بر اساس ;

مثال

بیایید تعداد دروس هر دانشکده را نمایش دهیم:

COUNT(course_id)، dept_name FROM دوره GROUP BY dept_name را انتخاب کنید.

17. داشتن

کلمه کلیدی HAVING به SQL اضافه شد زیرا WHERE نمی تواند برای کار با توابع جمع استفاده شود.

انتخاب کنید , ، ... از جانب دسته بندی بر اساس داشتن

مثال

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

COUNT(course_id)، dept_name FROM course GROUP BY dept_name HAVING COUNT(course_id)>1;

18. سفارش توسط

ORDER BY برای مرتب سازی نتایج پرس و جو به ترتیب نزولی یا صعودی استفاده می شود. ORDER BY به ترتیب صعودی مرتب می شود مگر اینکه ASC یا DESC مشخص شده باشد.

انتخاب کنید , ، … از جانب سفارش توسط , , ...ASC|DESC;

مثال

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

انتخاب * از دوره ترتیب بر اساس واحد. SELECT * FROM دوره ترتیب بر اساس واحد DESC.

19. بین

BETWEEN برای انتخاب مقادیر داده از یک محدوده خاص استفاده می شود. عددی و مقادیر متنیو همچنین تاریخ ها.

انتخاب کنید , ، … از جانب جایی که بین و ;

مثال

بیایید لیستی از مربیانی که حقوق آنها بیش از 50000، اما کمتر از 100000 است را نمایش دهیم:

انتخاب * از مربی که در آن حقوق بین 50000 و 100000;

20. لایک کنید

عملگر LIKE در WHERE برای تعیین الگوی جستجو برای مقدار مشابه استفاده می شود.

دو عملگر رایگان وجود دارد که در LIKE استفاده می شود:

  • % (هیچ، یک یا چند کاراکتر)؛
  • _ (یک شخصیت).
انتخاب کنید , ، … از جانب جایی که پسندیدن ;

مثال

بیایید لیستی از دوره هایی که نام آنها حاوی "to" است و لیستی از دوره هایی که نام آنها با "CS-" شروع می شود را نمایش دهیم:

انتخاب * از دوره آموزشی WHERE عنوان LIKE '%to%'; SELECT * FROM course WHERE course_id LIKE "CS-___";

21. در

با استفاده از IN می توانید چندین مقدار را برای عبارت WHERE مشخص کنید:

انتخاب کنید , ، … از جانب جایی که که در ( , , …);

مثال

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

SELECT * FROM student WHERE dept_name IN ('Comp. Sci.', 'Physics', 'Elec. Eng.');

22. بپیوندید

JOIN برای پیوند دادن دو یا چند جدول با استفاده از ویژگی های رایج در آنها استفاده می شود. تصویر زیر نشان می دهد راه های مختلفبه SQL می پیوندد. به تفاوت بین اتصال بیرونی چپ و اتصال بیرونی راست توجه کنید:

انتخاب کنید , ، … از جانب پیوستن بر = ;

مثال 1

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

SELECT * FROM دوره به بخش عضویت در course.dept_name=department.dept_name;

مثال 2

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

SELECT prereq.course_id, title, dept_name, credits, prereq_id FROM prereq LEFT OUTER JOIN دوره ON prereq.course_id=course.course_id;

مثال 3

ما لیستی از تمام دوره ها را، صرف نظر از اینکه آنها مورد نیاز هستند یا نه، نمایش خواهیم داد:

SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq RIGHT OUTER JOIN course ON prereq.course_id=course.course_id;

23. مشاهده کنید

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

ایجاد

ایجاد نمای AS SELECT , ، … از جانب جایی که ;

حذف

نمایش رها کردن ;

مثال

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

24. توابع جمع

این توابع برای به دست آوردن یک نتیجه کل مربوط به داده های مورد نظر استفاده می شوند. توابع زیر معمولاً مورد استفاده قرار می گیرند:

  • COUNT (col_name) - تعداد ردیف ها را برمی گرداند.
  • SUM (col_name) - مجموع مقادیر موجود در این ستون را برمی گرداند.
  • AVG (col_name) - مقدار متوسط ​​یک ستون معین را برمی گرداند.
  • MIN (col_name) - کوچکترین مقدار یک ستون معین را برمی گرداند.
  • MAX (col_name) - بزرگترین مقدار یک ستون معین را برمی‌گرداند.

25. سوالات فرعی تو در تو

پرسش‌های فرعی تودرتو، عبارت‌های جستجوی SQL هستند که شامل عبارت‌های SELECT، FROM، و WHERE هستند که در داخل کوئری دیگری تودرتو هستند.

مثال

بیایید دوره هایی را پیدا کنیم که در پاییز 2009 و بهار 2010 تدریس شدند:

SELECT DISTINCT course_id FROM section WHERE semester = 'Fall' AND year= 2009 AND course_id IN (SELECT course_id FROM section WHERE semester = 'Spring' AND year= 2010);

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

پارتیشن بندی SQL:


DDL
(زبان تعریف داده) - به اصطلاح Schema Description Language در ANSI شامل دستوراتی است که اشیاء (جدول، نمایه ها، نماها و غیره) را در پایگاه داده ایجاد می کند.
DML(زبان دستکاری داده ها) مجموعه ای از دستورات است که تعیین می کند چه مقادیری در هر زمان معین در جداول نمایش داده می شوند.
DCD(زبان مدیریت داده ها) متشکل از امکاناتی است که تعیین می کند آیا به کاربر اجازه انجام اقدامات خاصی را بدهد یا خیر. آنها بخشی از ANSI DDL هستند. این اسامی را فراموش نکنید این ها زبان های متفاوتی نیستند، بلکه بخش هایی از دستورات SQL هستند که بر اساس توابع آنها گروه بندی شده اند.

انواع داده ها:

SQL Server - انواع داده

شرح

bigint (int 8)

bigint (int 8)

دودویی(ن)

دودویی(ن) یا تصویر

شخصیت
(مترادف کاراکتر)

ملی شخصیتیا ntext

شخصیت متفاوت است(مترادف char متغیر varchar)

شخصیت ملی متفاوت استیا ntext

زمان قرار

زمان قرار

اعشاری

موسوم به عددی

دقت دو برابر

دقت دو برابر

عدد صحیح (int 4) (مترادف: بین المللی)

عدد صحیح (int 4)

شخصیت ملی(مترادف: شخصیت ملی, nchar)

شخصیت ملی

عددی(مترادف: اعشاری, دسامبر)

شخصیت ملی متفاوت است(مترادف: شخصیت ملی متفاوت است, nvarchar)

شخصیت ملی متفاوت است

زمان کوچک

زمان قرار

کوچک (int 2)

کوچک (int 2)

پول کوچک

sql_variant

دیگر پشتیبانی نمی شود

متن بعدی
با شروع با SQL Server 2005، برای استفاده توصیه نمی شود.

مهر زمان

پشتیبانی نشده

کوچک (int 1)

کوچک (int 1)

شناسه یکتا

شناسه یکتا

واریزه(ن)

واریزه(ن) یا تصویر

smalldatetime

زمان قرار

کوچک (int 2)

کوچک (int 2)

پول کوچک

sql_variant

پشتیبانی نشده

مهر زمانی

پشتیبانی نشده

کوچک (int 1)

کوچک (int 1)

شناسه یکتا

شناسه یکتا

واریزه(ن)

واریزه(ن) یا تصویر

جدول نوع داده در SQL Server 2000

درخواست چیست؟

درخواستدستوری است که به برنامه پایگاه داده خود می دهید. کوئری ها بخشی از زبان DML هستند. تمام پرس و جوهای SQL از یک دستور تشکیل شده اند. ساختار این دستور به طرز فریبنده ای ساده است زیرا باید آن را برای انجام ارزیابی های بسیار پیچیده و دستکاری داده ها گسترش دهید.

دستور SELECT:

انتخاب کنید"Select" پرکاربردترین دستوری است که برای انتخاب داده ها از جدول استفاده می شود.
نوع پرس و جو با استفاده از SELECT:

SELECT id، user_name، شهر، birthday_day FROM users_base.

چنین پرس و جوی از جدول users_base تمام مقادیر ستون های مشخص شده را که با کاما از هم جدا شده اند نمایش می دهد. دستورات SELECT. همچنین، می توانید تمام ستون ها را با یک کاراکتر نمایش دهید، * i.e. SELECT * FROM users_base ; - چنین پرس و جوی تمام داده های جدول را نمایش می دهد.

ساختار فرمان SELECT:

SELECT (نام ستون ها با کاما از هم جدا شده اند که باید در پرس و جو نمایش داده شوند) FROM (نام جدول در پایگاه داده)
- این ساده ترین نوع درخواست است. دستورات اضافی برای بازیابی راحت داده ها وجود دارد (به «توابع» زیر مراجعه کنید)

دستورات DML:

مقادیر را می توان با استفاده از سه دستور DML (زبان دستکاری داده ها) قرار داد و از فیلدها حذف کرد:
درج کنید(درج)
به روز رسانی(به روز رسانی، اصلاح)،
حذف(حذف)

دستور INSERT:

INSERT INTO users_base (user_name، شهر، تولد_روز) VALUES ('Alexander', 'Rostov', '06/20/1991');

دستور INSERT با پیشوند INTO (in to) می آید، سپس در براکت ها نام ستون هایی وجود دارد که باید داده ها را در آنها وارد کنیم، سپس دستور VALUES (مقادیر) و در براکت ها مقادیر به نوبه خود می آیند (این است برای رعایت ترتیب مقادیر با ستون ها لازم است، مقادیر باید به همان ترتیب ستون هایی باشد که شما مشخص کرده اید).

دستور UPDATE:

UPDATE users_base SET user_name = 'Alexey';

دستور UPDATE مقادیر را در یک جدول به روز می کند. ابتدا خود دستور UPDATE می آید، سپس نام جدول، بعد از دستور SET (set)، سپس نام ستون و مقدار آن در گیومه (نقل قول ها اگر مقدار در قالب رشته باشد، اگر مقدار عددی باشد و ستون قرار می گیرد. به نوع داده vchar یا هر نوع رشته دیگری گره نمی خورد، نقل قول ها معنایی ندارند.)

دستور DELETE:

DELETE FROM users_base WHERE user_name = 'Vasily';

دستور DELETE کل ردیف را حذف می کند و با معیار WHERE ردیف را شناسایی می کند. در این مورد، این پرس و جو تمام ردیف هایی را که در آنها مقدار ستون user_name Vasily بود حذف می کند. کمی بعد در مورد معیار WHERE و موارد دیگر صحبت خواهیم کرد.

معیارها، توابع، شرایط و غیره چه چیزی در SQL به ما کمک می کند:

عبارت WHERE عبارتی از دستور SELECT و سایر دستورات DML است که به شما امکان می دهد گزاره هایی را تنظیم کنید که شرایط آنها می تواند برای هر ردیفی از جدول درست یا نادرست باشد. این دستور تنها ردیف هایی را از جدول بازیابی می کند که این عبارت برای آنها صادق است.
مثال:
شناسه، شهر، روز تولد را انتخاب کنید FROM users_base WHERE user_name = 'Alexey';- چنین پرس و جوی فقط ردیف هایی را نشان می دهد که با شرط WHERE مطابقت دارند، یعنی تمام ردیف هایی که ستون user_name دارای مقدار Alexey هستند.

ORDER BY - شرط برای مرتب سازی ردیف های انتخاب شده. دارای 2 معیار ASC و DESC. ASC (مرتب سازی از A به Z یا از 0 تا 9)

DESC (مقابل ASC).
مثال:
شناسه، شهر، تولد_روز از طریق users_base ORDER BY user_name ASC را انتخاب کنید. - چنین پرس و جو مقادیر مرتب شده توسط ستون user_name را از A تا Z نمایش می دهد (A-Z؛ 0-9)

این شرط را می توان همراه با عبارت WHERE نیز استفاده کرد.
مثال:
شناسه، شهر، روز تولد را انتخاب کنید FROM users_base WHERE user_name = 'Alexey' ORDER BY id ASC;

DISTINCT آرگومانی است که راهی برای حذف مقادیر دوگانه از عبارت SELECT در اختیار شما قرار می دهد. آن ها اگر مقادیر تکراری در یک ستون دارید، فرض کنید user_name، سپس DISTINCT فقط یک مقدار را به شما نشان می دهد، به عنوان مثال، شما 2 نفر به نام Alexey در پایگاه داده خود دارید، سپس یک پرس و جو با استفاده از تابع DISTINCT تنها 1 مقدار را به شما نشان می دهد. که ابتدا با آن مواجه می شود ...
مثال:
نام کاربری متمایز را از user_base انتخاب کنید.- چنین پرس و جوی مقادیر تمام رکوردهای ستون user_name را به ما نشان می دهد، اما آنها تکرار نخواهند شد، یعنی. اگر تعداد نامتناهی مقادیر تکرار شونده داشته باشید، آنها نشان داده نمی شوند...

AND - دو بولی (به شکل A و B) را به عنوان آرگومان می گیرد و آنها را در برابر حقیقت ارزیابی می کند که آیا هر دو درست هستند یا خیر.
مثال:
SELECT * FROM users_base WHERE city = 'Rostov' AND user_name = 'Alexander';- تمام مقادیر را از جدولی که در آن نام شهر در یک خط ظاهر می شود (در این مورد Rostov و نام کاربری Alexander) نمایش داده می شود.

OR - دو بولی (به شکل A OR B) را به عنوان آرگومان می گیرد و درستی یکی از آنها را ارزیابی می کند.

SELECT * FROM users_base WHERE city = 'Rostov' OR user_name = 'Alexander';- تمام مقادیر را از جدولی که نام شهر روستوف یا نام کاربری Alexander در خط ظاهر می شود نمایش می دهد.

NOT - یک Boolean منفرد (به شکل NOT A) را به عنوان آرگومان می گیرد و مقدار آن را از false به true یا true به false تغییر می دهد.
SELECT * FROM users_base WHERE city = 'Rostov' OR NOT user_name = 'Alexander';- تمام مقادیر را از جدول نمایش می دهد که در آن نام شهر روستوف در یک خط ظاهر می شود یا نام کاربری دقیقاً الکساندر نیست.

IN - مجموعه ای از مقادیر را تعریف می کند که ممکن است یک مقدار مشخص در آن گنجانده شود یا نباشد.
SELECT * FROM users_base WHERE city IN ('Vladivostok', 'Rostov');- چنین پرس و جوی تمام مقادیر جدول را که حاوی نام شهرهای مشخص شده در ستون شهر است نمایش می دهد.

Between مشابه عملگر IN است. برخلاف تعریف با اعداد از یک مجموعه، همانطور که IN انجام می دهد، BETWEEN محدوده ای را تعریف می کند که مقادیر آن باید کاهش یابد تا گزاره درست باشد.
SELECT * FROM users_base WHERE ID BETWEEN 1 و 10.- تمام مقادیر جدول را که در بازه 1 تا 10 در ستون id قرار دارند نمایش می دهد.

COUNT - شماره ردیف یا مقادیر غیر NULL فیلدهایی را که پرس و جو انتخاب کرده است تولید می کند.
SELECT COUNT (*) FROM users_base ;- تعداد ردیف های این جدول را نمایش می دهد.
SELECT COUNT (نام کاربری متمایز) FROM users_base ;- تعداد خطوط با نام کاربری را نمایش می دهد (تکرار نمی شود)

SUM - مجموع حسابی تمام مقادیر انتخاب شده برای یک فیلد مشخص را تولید می کند.
SELECT SUM (id) FROM users_base ;- مجموع مقادیر تمام سطرهای ستون id را نمایش می دهد.

AVG - میانگین تمام مقادیر انتخاب شده از این فیلد.
AVG (id) FROM users_base را انتخاب کنید.- میانگین تمام مقادیر انتخاب شده را در ستون id نمایش می دهد

MAX - بزرگترین مقادیر انتخاب شده را برای این فیلد تولید می کند.

MIN - کوچکترین مقدار از تمام مقادیر انتخاب شده را برای این فیلد تولید می کند.

ایجاد جداول:

CREATE TABLE users_base (شماره صحیح شناسه، متن نام کاربری، متن شهر، تاریخ تولد_روز).- اجرای چنین دستوری منجر به ایجاد جدولی می شود که برای آن مثال زدم... همه چیز در اینجا ساده است، دستور CREATE TABLE را می نویسیم و به دنبال آن نام جدولی که می خواهیم ایجاد کنیم، سپس در پرانتز، با کاما، نام ستون ها و نوع داده آنها از هم جدا شده است. این روش استاندارد برای ایجاد جدول در SQL است. اکنون مثالی از ایجاد جداول در SQL Server 2005 می‌آورم:

ANSI_NULLS را روشن کنید
برو
QUOTED_IDENTIFIER را روشن کنید
برو
اگر وجود ندارد (انتخاب * از sys.objects WHERE object_id = OBJECT_ID(N."") و (N"U") را تایپ کنید)
شروع
ایجاد جدول .(

تهی نیست،
تهی نیست،
تهی نیست،
کلید اولیه خوشه ای
A.S.C.


پایان
برو
ANSI_NULLS را روشن کنید
برو
QUOTED_IDENTIFIER را روشن کنید
برو
اگر وجود ندارد (انتخاب * از sys.objects WHERE object_id = OBJECT_ID(N."") و (N"U") را تایپ کنید)
شروع
ایجاد جدول .(
IDENTITY(1,1) NOT NULL،
خالی،
خالی،
کلید اولیه خوشه ای
A.S.C.
)WITH (IGNORE_DUP_KEY = OFF) روشن
) در TEXTIMAGE_ON
پایان
برو
ANSI_NULLS را روشن کنید
برو
QUOTED_IDENTIFIER را روشن کنید
برو
اگر وجود ندارد (انتخاب * از sys.objects WHERE object_id = OBJECT_ID(N."") و (N"U") را تایپ کنید)
شروع
ایجاد جدول .(
IDENTITY(1,1) NOT NULL،
خالی،
خالی،
کلید اولیه خوشه ای
A.S.C.
)WITH (IGNORE_DUP_KEY = OFF) روشن
) بر
پایان

Syntax در SQL Server 2005 یک موضوع دیگر است، فقط می خواستم نشان دهم که اصول برنامه نویسی SQL را توضیح دادم، شما می توانید با دانستن اصول اولیه به اوج برسید.

اگر سوالی در این زمینه دارید، لطفا برای من بنویسید

برنامه‌ای توسعه دهید که عملیات‌های اساسی روی داده‌ها را در پایگاه داده‌ای مانند MS SQL Server نشان دهد، یعنی:

  • اتصال پایگاه داده به برنامه؛
  • نمایش جداول پایگاه داده در فرم.
  • علاوه بر این ورودی جدیدبه پایگاه داده؛
  • ویرایش یک رکورد؛
  • حذف یک ورودی

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

شکل 1 ساختار پایگاه داده Education.dbo را نشان می دهد. همانطور که از شکل مشخص است، پایگاه داده به نام:

sasha-pc\sqlexpress.Education.dbo

در اینجا "sasha-pc" شناسه کامپیوتر در شبکه است، "sqlexpress" نام سرور پایگاه داده، "Education.dbo" نام پایگاه داده است.

برنج. 1. پایگاه داده Education.dbo

پایگاه داده شامل دو جدول است: Student و Session. ساختار جداول به شرح زیر است.

میز دانش آموزی.

میز جلسه.

کارایی

1. ایجاد کنید پروژه جدیددر MS Visual Studio به عنوان Windows Forms Application.

یک پروژه جدید از نوع Windows Forms Application ایجاد کنید. نمونه ای از ایجاد یک پروژه جدید به تفصیل شرح داده شده است

2. یک نمای جدید برای نمایش داده ها از جدول Student ایجاد کنید.

برای نمایش داده ها از جداول پایگاه داده می توانید استفاده کنید راه های مختلف. یکی از آنها ایجاد نماهایی است که با استفاده از MS Visual Studio تولید می شوند.

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

برای ایجاد نما، باید دستور «افزودن نمای جدید» را از منوی زمینه فراخوانی کنید که با کلیک راست بر روی عنصر «Views» پایگاه داده Education.dbo فراخوانی می شود (شکل 2).

برنج. 2. فراخوانی دستور برای افزودن نمای جدید

در نتیجه، پنجره "افزودن جدول" باز می شود (شکل 3). در پنجره باید جداولی را که به نما اضافه شده اند انتخاب کنید.

برنج. 3. انتخاب جداولی که نمای جدید بر اساس آنها خواهد بود

در مورد ما، جدول Student را انتخاب کرده و با کلیک بر روی دکمه Add، انتخاب خود را تایید کنید. مرحله بعدی بستن پنجره با انتخاب دکمه Close است.

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

وقتی فیلدها را انتخاب می کنید، فیلدهای جدول Student در بالای ناحیه کاری نمایش داده می شوند. با استفاده از ماوس می توانید فیلدهای مورد نظر را برای ارائه انتخاب کنید.

بر این اساس، ناحیه میانی پنجره نام فیلدهای انتخاب شده، جدولی که در آن وجود دارد (نگاه کنید به شکل 4)، قابلیت مرتب سازی، فیلتر کردن و غیره را نمایش می دهد.

پایین ناحیه متن پرس و جوی SQL مربوطه را نشان می دهد که برای ایجاد نمای استفاده می شود.

برنج. 4. انتخاب فیلدهای جدول دانشجویی برای نمایش در نمای

بعد از انتخاب تیم

File->Save All File->Save View1

پنجره ای باز می شود که در آن باید نام نما را مشخص کنید. نام "View Student" را تنظیم کنید (شکل 5).

برنج. 5. تعیین نام برای view

پس از تکمیل مراحل، پنجره ارائه مانند شکل 6 خواهد بود.

برنج. 6. نمایش دانش آموز در پایگاه داده را مشاهده کنید

اکنون می توانید یک کنترل DataGridView را میزبانی کنید و آن را با یک view مرتبط کنید.

3. کنترل DataGridView را قرار داده و اتصال با پایگاه داده را پیکربندی کنید.

قبل از قرار دادن کنترل DataGridView، باید به حالت طراحی فرم "Form1.cs" بروید.

عنصر DataGridView جدولی است که می تواند داده ها را نمایش دهد. این کنترل در پنل ToolBox قرار دارد. ابتدا اندازه فرم را کمی تنظیم می کنیم و سپس کنترل DataGridView را روی آن قرار می دهیم (شکل 7). این یک نمونه شی با نام dataGridView1 به طور پیش فرض ایجاد می کند.

برنج. 7. کنترل DataGridView و پنجره انتخاب منبع داده

پس از قرار دادن کنترل DataGridView روی فرم، در گوشه سمت راست بالا می توانید پیکربندی منبع داده را انتخاب کنید. بر این اساس، پنجره "DataGridView Tasks" باز می شود. در این پنجره باید منوی پاپ آپ «انتخاب منبع داده» را انتخاب کنید.

در منوی باز شده دستور «Add Project Data Source...» را انتخاب کنید (شکل 7). پس از این، یک پنجره جادوگر باز می شود که در آن منبع داده به ترتیب انتخاب می شود.

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

برنج. 8. انتخاب نوع منبع داده

در پنجره بعدی (شکل 9) مدل منبع داده انتخاب می شود. باید DataSet را انتخاب کنید.

برنج. 9. انتخاب مدل منبع داده

در پنجره نشان داده شده در شکل 10، باید اتصال داده ای را که می خواهید برای اتصال به پایگاه داده استفاده کنید، مشخص کنید. در مورد ما، ما باید پایگاه داده را انتخاب کنیم " sasha-pc\sqlexpress\Education.dbo«.

برنج. 10. انتخاب یک اتصال داده

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

برنج. 11. پیشنهاد برای ذخیره رشته اتصال پایگاه داده Connection String در فایل پیکربندی برنامه

پس از ایجاد اتصال پایگاه داده، انواع مختلفی از اشیاء پایگاه داده نمایش داده می شوند (شکل 12). در مورد ما، باید نمای "View Student" و تمام فیلدها را از آن انتخاب کنیم. فیلدهای علامت زده در مؤلفه نوع DataGridView نمایش داده می شوند.

برنج. 12. انتخاب اشیاء پایگاه داده برای نمایش در DataGridView

پس از انتخاب دکمه Finish، اشیاء انتخاب شده (View Student view) پایگاه Education.dbo نمایش داده می شود (شکل 13).

برنج. 13. کنترل DataGridView با فیلدهای انتخاب شده View Student

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

4. تنظیم ظاهر کنترل DataGridView.

اگر برنامه را اجرا کنید، داده هایی را از نمای View Student دریافت خواهید کرد که مربوط به جدول Student در پایگاه داده است (شکل 14).

برنج. 14. راه اندازی برنامه برای اجرا

همانطور که در شکل 14 مشاهده می کنید، داده های جدول dataGridView1 به طور معمول نمایش داده می شوند، اما طراحی قابل تنظیم است.

یک کنترل از نوع DataGridView به شما امکان می دهد ظاهر فیلدهایی را که نمایش داده می شوند تنظیم کنید.

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

منوی متنوعی دارد دستورات مفید، که به شما امکان می دهد ظاهر و عملکرد DataGridView را کنترل کنید:

  • دستور مسدود کردن کنترل (Lock Controls)؛
  • دستور ویرایش فیلدهایی که در نمای نمایش داده می شوند (Edit Columns...);
  • دستور اضافه کردن فیلدهای جدید، به عنوان مثال فیلدهای محاسبه شده (افزودن ستون).

در مورد ما، شما باید دستور "Edit Columns..." را انتخاب کنید (شکل 15).

برنج. 15. از منوی زمینه دستور "Edit Columns..." را صادر کنید

در نتیجه، پنجره "Edit Columns" باز می شود که در آن می توانید ظاهر فیلدهای ارائه را به دلخواه شخصی سازی کنید (شکل 16).

برنج. 16. پنجره ای برای تنظیم نمای فیلدها در نمای "مشاهده دانشجو".

در پنجره شکل 16، برای هر فیلدی می توانید نام، تراز، عرض، قابلیت ویرایش داده ها و غیره را پیکربندی کنید.

5. رشته اتصال

برای ایجاد تغییرات در پایگاه داده، باید یک رشته اتصال به پایگاه داده Connection String دریافت کنید.

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

برنج. 17. تعریف رشته اتصال

برای ذخیره رشته در برنامه، یک متغیر داخلی از نوع رشته. با استفاده از کلیپ بورد، Connection String را در متغیر رشته توصیف شده کپی کنید.

در متن فایل "Form1.cs" در ابتدای توضیحات کلاس Form1، باید متغیر را توضیح دهید:

رشته conn_string = ;

در حال حاضر متن کلاس Form1 به شرح زیر است:

کلاس جزئی عمومی Form1 : Form { رشته conn_string = @"منبع داده=(محلی)\SQLEXPRESS;Initial Catalog=Education;Integrated Security=True;Pooling=False"; عمومی فرم1() { InitializeComponent(); } Private void Form1_Load (فرستنده شی، EventArgs e) { // TODO: این خط کد داده ها را در جدول "educationDataSet.View_Student" بارگذاری می کند. تو می توانیدر صورت نیاز آن را جابجا کنید یا حذف کنید. } }

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

برای اینکه بتوانید داده های رکورد فعلی را پردازش کنید، باید یک فرم جدید ایجاد کنید. روند ایجاد فرم جدید در MS Visual Studio - C# به تفصیل شرح داده شده است.

افزودن فرم جدید با دستور زیر انجام می شود:

پروژه -> افزودن فرم ویندوز...

در پنجره "مورد جدید" که باز می شود، باید عنصر "Windows Form" را انتخاب کنید.

نام فایل فرم جدید را به عنوان پیش فرض "Form2.cs" بگذارید.

شکل 18 نمایی از فرم جدید را نشان می دهد.

ما انواع کنترل های زیر را روی فرم قرار می دهیم:

  • دو دکمه کنترل (دکمه های OK و Cancel). بر این اساس، دو شی با نام های button1 و button2 دریافت می شود.
  • چهار کنترل برچسب برای ایجاد پیام های اطلاعاتی.
  • چهار کنترل از نوع TextBox برای وارد کردن داده ها در فیلدهای Num_book، Name، Group، Year.

شما باید ویژگی های زیر کنترل ها را پیکربندی کنید:

  • در کنترل دکمه1 ویژگی Text = "OK ";
  • در ویژگی کنترل button2 Text = “Cancel”;
  • در ویژگی کنترل button1 DialogResult = "OK ";
  • در ویژگی کنترل button2 DialogResult = "Cancel";
  • در ویژگی کنترل label1 Text = "Num_book";
  • در ویژگی کنترل label2 Text = "Name";
  • در ویژگی کنترل label3 Text = "Group";
  • در label4 ویژگی Text = "Year" را کنترل کنید.

ما همچنین قابلیت مشاهده کنترل‌های TextBox را پیکربندی می‌کنیم. برای انجام این کار، در تمام کنترل های textBox1، textBox2، textBox3، textBox4، مقدار ویژگی Modifiers = "public" است.

برنج. 18. نمای فرم جدید ایجاد شده

7. افزودن دکمه هایی برای فراخوانی دستورات برای دستکاری داده ها از جدول Student.

برای کار بیشتر، باید از ماوس استفاده کنید تا به فرم اصلی Form1 بروید.

سه دکمه (Button) را به فرم اصلی اپلیکیشن Form1 اضافه کنید. سه متغیر شی به طور خودکار با نام های button1، button2، button3 ایجاد می شود. در هر یک از این دکمه ها تنظیمات زیر را انجام می دهیم (پنجره Properties):

  • در دکمه دکمه1 ویژگی متن = "درج ..." (درج رکورد);
  • در ویژگی دکمه button2 Text = "Edit…" (تغییر ورودی);
  • در دکمه button3 ویژگی متن = "حذف".

در نتیجه تغییرات ایجاد شده، فرم اصلی مانند شکل 19 خواهد بود.

برنج. 19. فرم اصلی درخواست

8. برنامه ریزی یک رویداد کلیک بر روی دکمه "درج...".

کنترل کننده رویداد کلیک روی دکمه "Insert..." به شکل زیر است:

دکمه خلاء خصوصی1_Click_1(فرستنده شی، EventArgs e) { رشته cmd_text; Form2 f2 = new Form2(); if (f2.ShowDialog() == DialogResult .OK) { cmd_text = "درج در ارزش های دانشجویی (" + """ + f2.textBox1.Text + "" , "" + f2.textBox2.Text + "" , "" + f2.textBox3.Text + "" , " + f2.textBox4.Text + ")" ; // یک اتصال به پایگاه داده ایجاد کنید SqlConnection sql_conn = جدید SqlConnection(conn_string); // یک دستور را ایجاد کنید زبان SQL SqlCommand sql_comm = SqlCommand جدید (cmd_text, sql_conn); sql_conn.Open(); // اتصال را باز کنید sql_comm.ExecuteNonQuery(); // اجرای دستور به زبان SQL sql_conn.Close(); // اتصال را ببندید این .view_StudentTableAdapter.Fill(this .educationDataSet.View_Student); } }

ابتدا فرم 2 نامیده می شود. پس از دریافت نتیجه "OK" (فشردن دکمه مربوطه)، در Form2 فیلدهای پر شده در عناصر از نوع TextBox در رشته پرس و جو SQL گنجانده می شود. پرس و جوی SQL برای افزودن یک ردیف جدید به این صورت است:

درج در دانش آموز VALUES (value1، value2، value3، value4)

جایی که مقدار 1 مربوط به شماره دفترچه نمره است. value2 - نام خانوادگی دانش آموز؛ value3 - گروهی که دانشجو در آن تحصیل می کند. ارزش 4 - سال ورود

رشته اتصال پایگاه داده Connection String در متغیر conn_string توضیح داده شده است (بند 5 را ببینید). شی کلاس SqlConnection برنامه را به منابع داده متصل می کند. علاوه بر این، کلاس Connection احراز هویت کاربر، شبکه سازی، شناسایی پایگاه داده، بافر اتصال و پردازش تراکنش را مدیریت می کند.

دستور SQL که رکوردی را به جدول اضافه می کند در کلاس SqlCommand کپسوله می شود. سازنده کلاس SqlCommand دو پارامتر را می گیرد: یک رشته کوئری SQL (متغیر cmd_text) و یک شی از کلاس SqlConnection.

متد ExecuteNonQuery() در رابط IDBCommand پیاده سازی شده است. این روش دستورات SQL را اجرا می کند که داده ها را بر نمی گرداند. چنین دستوراتی شامل دستورات INSERT، DELETE، UPDATE و همچنین رویه های ذخیره شده ای است که داده ها را بر نمی گرداند. متد ExecuteNonQuery() تعداد رکوردهای درگیر را برمی گرداند.

9. برنامه ریزی یک رویداد کلیک بر روی دکمه "ویرایش...".

کنترل‌کننده رویداد کلیک روی دکمه «ویرایش...» به شکل زیر است:

private void button2_Click(فرستنده شی، EventArgs e) ( رشته cmd_text؛ Form2 f2 = New Form2 (؛ Int index؛ string num_book؛ index = dataGridView1.CurrentRow.Index؛ num_book = Convert.ToString(da.ValtextBox1)؛1. .Text = num_book; = "به روز رسانی مجموعه دانشجویی Num_book = ""+ f2.textBox1.Text + ""، " + " = "" + f2.textBox2.Text + ""، " + " = "" + f2.textBox3.Text + ""، " + "سال = " + f2 .textBox4.Text + "WHERE Num_book = "" + num_book + """ sqlConnection = new SqlConnection (conn_string.Close( this .View. )

این کنترلر یک دستور UPDATE SQL را اجرا می کند که مقدار فعلی رکورد فعال را تغییر می دهد.

10. برنامه ریزی یک رویداد کلیک بر روی دکمه "حذف".

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

private void button3_Click(object sender, EventArgs e) ( string cmd_text = "DELETE FROM Student" ; int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert.ToString=dataGridView1.Vt. "Delete FROM Student WHERE . = ""+ num_book + """؛ SqlConnection sql_conn = جدید SqlConnection (conn_string)؛ SqlCommand sql_comm = جدید SqlCommand (cmd_text، sql_conn); sql_conn.Open(); sqlxeery view_StudentTableAdapter. پر کنید (this.educationDataSet.View_Student);

این کنترلر دستور SQL DELETE را برای حذف یک رکورد اجرا می کند.

مطالب مرتبط

  • خروجی جدول پایگاه داده مایکروسافت اکسس

SQL Server Management Studio ابزار کاملی برای ایجاد انواع کوئری ها ارائه می دهد. با کمک آن می توانید پرس و جوها را ایجاد، ذخیره، بارگیری و ویرایش کنید. علاوه بر این، می توانید بدون اتصال به هیچ سروری، روی پرس و جوها کار کنید. این ابزار همچنین امکان توسعه پرس و جو برای پروژه های مختلف را فراهم می کند.

می توانید با استفاده از Query Editor یا Solution Explorer با پرس و جوها کار کنید. این مقاله هر دوی این ابزارها را پوشش می دهد. علاوه بر این دو جزء SQL Server Management Studio، ما به اشکال زدایی کد SQL با استفاده از دیباگر داخلی نگاه خواهیم کرد.

ویرایشگر پرس و جو

برای باز کردن پنل Query Editor ویرایشگر پرس و جو، در نوار ابزار SQL Server Management Studio، روی دکمه New Query کلیک کنید. این پانل را می توان برای نمایش دکمه هایی برای ایجاد تمام پرس و جوهای ممکن، نه فقط جستجوهای موتور پایگاه داده، گسترش داد. به طور پیش فرض ایجاد می شود درخواست جدیدجزء موتور پایگاه داده، اما با کلیک بر روی دکمه مربوطه در نوار ابزار، می توانید پرس و جوهای MDX، XMLA و غیره را نیز ایجاد کنید.

نوار وضعیت در پایین پنل Query Editor وضعیت اتصال ویرایشگر به سرور را نشان می دهد. اگر به طور خودکار به سرور متصل نمی‌شوید، هنگام راه‌اندازی Query Editor، کادر محاوره‌ای اتصال به سرور ظاهر می‌شود که به شما امکان می‌دهد سرور مورد نظر برای اتصال و حالت احراز هویت را انتخاب کنید.

ویرایش درخواست‌ها به‌صورت آفلاین انعطاف‌پذیری بیشتری نسبت به زمانی که به سرور متصل می‌شود، فراهم می‌کند. برای ویرایش کوئری ها نیازی به اتصال به سرور نیست و می توان پنجره ویرایشگر پرس و جو را از یک سرور جدا کرد (با استفاده از دستور منو Query --> Connection --> Disconnect) و بدون باز کردن پنجره ویرایشگر دیگری به دیگری متصل شد. برای انتخاب حالت ویرایش آفلاین، از گفتگوی اتصال به سرور استفاده کنید که با راه اندازی ویرایشگر باز می شود. نوع خاصدرخواست، به سادگی بر روی دکمه لغو کلیک کنید.

می توانید از ویرایشگر Query برای انجام کارهای زیر استفاده کنید:

    ایجاد و اجرای دستورات Transact-SQL.

    ذخیره عبارات زبان Transact-SQL ایجاد شده در یک فایل.

    ایجاد و تجزیه و تحلیل طرح های اجرایی برای پرس و جوهای رایج؛

    به صورت گرافیکی طرح اجرای پرس و جو انتخاب شده را نشان می دهد.

ویرایشگر پرس و جو شامل یک داخلی است ویرایشگر متنو یک نوار ابزار با مجموعه ای از دکمه ها برای اقدامات مختلف. پنجره اصلی ویرایشگر پرس و جو به صورت افقی به یک پانل پرس و جو (در بالا) و یک پانل نتایج (در پایین) تقسیم می شود. عبارات Transact-SQL (یعنی پرس و جوها) که باید اجرا شوند در قسمت بالایی وارد می شوند و نتایج پردازش سیستم از آن کوئری ها در قسمت پایین نمایش داده می شود. شکل زیر نمونه ای از وارد کردن یک پرس و جو در ویرایشگر پرس و جو و نتایج اجرای آن پرس و جو را نشان می دهد:

اولین دستور USE درخواست استفاده از پایگاه داده SampleDb را به عنوان پایگاه داده فعلی مشخص می کند. دستور دوم، SELECT، تمام سطرها را از جدول Employee بازیابی می کند. برای اجرای این کوئری و نمایش نتایج، در نوار ابزار Query Editor، روی دکمه Execute کلیک کنید یا F5 را فشار دهید.

می توانید چندین پنجره Query Editor را باز کنید، به عنوان مثال. چندین اتصال را به یک یا چند نمونه از موتور پایگاه داده ایجاد کنید. با کلیک بر روی دکمه New Query در نوار ابزار SQL Server Management Studio یک اتصال جدید ایجاد می شود.

نوار وضعیت در پایین پنجره Query Editor اطلاعات زیر را در رابطه با اجرای دستورات پرس و جو نمایش می دهد:

    وضعیت عملیات جاری (به عنوان مثال، "درخواست با موفقیت انجام شد")؛

    نام سرور پایگاه داده؛

    نام کاربری فعلی و شناسه فرآیند سرور؛

    نام پایگاه داده فعلی؛

    زمان صرف شده برای اجرای آخرین درخواست؛

    تعداد خطوط پیدا شده

یکی از مزیت های اصلی SQL Server Management Studio سهولت استفاده از آن است که در مورد ویرایشگر Query نیز صدق می کند. ویرایشگر Query ویژگی‌های بسیاری را برای تسهیل کدنویسی دستورات Transact-SQL فراهم می‌کند. به طور خاص، از برجسته سازی نحو برای بهبود خوانایی عبارات Transact-SQL استفاده می کند. تمام کلمات رزرو شده با رنگ آبی، متغیرها با رنگ مشکی، رشته ها با رنگ قرمز و نظرات به رنگ سبز نشان داده شده اند.

علاوه بر این، ویرایشگر پرس و جو به کمک حساس به متن مجهز است کمک پویا، که از طریق آن می توانید اطلاعات مربوط به یک دستورالعمل خاص را به دست آورید. اگر سینتکس یک دستورالعمل را نمی دانید، آن را در ویرایشگر انتخاب کنید و سپس کلید F1 را فشار دهید. همچنین می‌توانید پارامترهای عبارت‌های Transact-SQL مختلف را برجسته کنید تا از Books Online درباره آنها کمک بگیرید.

SQL Management Studio از SQL Intellisense که نوعی ابزار تکمیل خودکار است، پشتیبانی می کند. به عبارت دیگر، این ماژول محتمل ترین تکمیل عناصر بیانیه Transact-SQL را پیشنهاد می کند.

کاوشگر شی نیز می تواند به شما در ویرایش کوئری ها کمک کند. به عنوان مثال، اگر می خواهید بدانید که چگونه یک عبارت CREATE TABLE برای جدول Employee ایجاد کنید، بر روی جدول در Object Explorer کلیک راست کنید و نتیجه حاصل شود. منوی زمینه Script Table As --> CREATE to --> New Query Editor Window را انتخاب کنید. پنجره Query Editor حاوی دستور CREATE TABLE ایجاد شده به این روش در شکل زیر نشان داده شده است. این ویژگی برای اشیاء دیگر مانند رویه ها و توابع ذخیره شده نیز اعمال می شود.

مرورگر Object برای نمایش گرافیکی طرح اجرای یک کوئری خاص بسیار مفید است. طرح اجرای پرس و جو گزینه اجرایی است که توسط بهینه ساز پرس و جو از بین چندین گزینه انتخاب شده است گزینه های ممکنانجام یک درخواست خاص پرس و جوی مورد نیاز را در پانل بالای ویرایشگر وارد کنید، دنباله ای از دستورات را از منوی Query --> Display Estimated Execution Plan انتخاب کنید و طرح اجرای این پرس و جو در پانل پایین پنجره ویرایشگر نشان داده می شود.

کاوشگر راه حل

ویرایش Query در SQL Server Management Studio بر اساس روش Solutions است. اگر با استفاده از دکمه New Query یک پرس و جو خالی ایجاد کنید، بر اساس یک راه حل خالی خواهد بود. شما می توانید این را با اجرای یک سری دستورات از منوی View --> Solution Explorer بلافاصله پس از باز کردن یک پرس و جو خالی مشاهده کنید.

تصمیم ممکن است به هیچ یک، یک یا چند پروژه مربوط باشد. یک راه حل خالی که با هیچ پروژه ای مرتبط نیست. برای مرتبط کردن یک پروژه با یک راه حل، راه حل خالی، Solution Explorer و Query Editor را ببندید و با اجرای File --> New --> Project یک پروژه جدید ایجاد کنید. در پنجره New Project که باز می شود، گزینه SQL Server Scripts را در قسمت میانی انتخاب کنید. پروژه راهی برای سازماندهی فایل ها در یک مکان خاص است. می توانید یک نام به پروژه اختصاص دهید و یک مکان روی دیسک برای مکان آن انتخاب کنید. هنگامی که یک پروژه جدید ایجاد می کنید، یک راه حل جدید به طور خودکار راه اندازی می شود. پروژه را می توان به آن اضافه کرد راه حل موجودبا استفاده از Solution Explorer

برای هر پروژه ایجاد شده، Solution Explorer پوشه های Connections، Queries و Miscellaneous را نمایش می دهد. برای باز کردن یک پنجره جدید Query Editor برای یک پروژه خاص، روی پوشه Queries آن راست کلیک کرده و New Query را از منوی زمینه انتخاب کنید.

اشکال زدایی SQL Server

SQL Server، که با SQL Server 2008 شروع می شود، دارای کد دیباگر داخلی است. برای شروع یک جلسه اشکال زدایی، Debug --> Start Debugging را از منوی اصلی SQL Server Management Studio انتخاب کنید. ما با استفاده از یک مثال با استفاده از دسته ای از دستورات به نحوه عملکرد دیباگر خواهیم پرداخت. دسته‌ای یک دنباله منطقی از دستورات SQL و پسوندهای رویه‌ای است که به موتور پایگاه داده فرستاده می‌شود تا تمام عبارات موجود را اجرا کند.

شکل زیر بسته‌ای را نشان می‌دهد که تعداد کارکنانی را که روی پروژه p1 کار می‌کنند، شمارش می‌کند. اگر این عدد 4 یا بیشتر باشد، پیام مربوطه نمایش داده می شود. در غیر این صورت نام و نام خانوادگی کارکنان نمایش داده می شود.

برای متوقف کردن اجرای یک بسته در یک دستورالعمل خاص، می توانید نقاط شکست را همانطور که در شکل نشان داده شده است تعیین کنید. برای انجام این کار، در سمت چپ خطی که می خواهید روی آن توقف کنید، کلیک کنید. هنگامی که اشکال زدایی شروع می شود، اجرا در اولین خط کد که با فلش زرد مشخص شده است متوقف می شود. برای ادامه اجرا و رفع اشکال، دستور Debug --> Continue منو را انتخاب کنید. دستورالعمل های دسته ای تا اولین نقطه شکست به اجرا ادامه می دهند و فلش زرد در آن نقطه متوقف می شود.

اطلاعات مربوط به فرآیند اشکال زدایی در دو پنل در پایین پنجره Query Editor نمایش داده می شود. اطلاعاتی درباره انواع متفاوتاطلاعات اشکال زدایی در این پانل ها در چندین تب گروه بندی می شود. پنجره سمت چپ شامل برگه Autos، برگه Locals و حداکثر پنج برگه Watch است. صفحه سمت راست شامل Call Stack، Threads، Breakpoints، Command Window، Immediate Window و Output است. برگه Locals مقادیر متغیر را نمایش می دهد، تب Call Stack مقادیر پشته تماس را نشان می دهد و برگه Breakpoints اطلاعات نقطه شکست را نمایش می دهد.

برای پایان دادن به فرآیند اشکال زدایی، دنباله ای از دستورات را از منوی اصلی Debug --> Stop Debugging اجرا کنید یا روی دکمه آبی در نوار ابزار دیباگر کلیک کنید.

SQL Server 2012 چندین ویژگی جدید را به دیباگر داخلی در SQL Server Management Studio اضافه می کند. اکنون می توانید تعدادی از عملیات زیر را در آن انجام دهید:

    یک شرط نقطه شکست را مشخص کنید. وضعیت نقطه شکستیک عبارت SQL است که مقدار ارزیابی شده آن تعیین می کند که آیا اجرای کد در یک نقطه معین متوقف می شود یا خیر. برای تعیین یک شرط نقطه شکست، روی نماد نقطه شکست قرمز کلیک راست کرده و Condition را از منوی زمینه انتخاب کنید. کادر گفتگوی Breakpoint Condition باز می شود و به شما امکان می دهد عبارت بولی مورد نیاز را وارد کنید. علاوه بر این، اگر باید اجرا را متوقف کنید اگر عبارت درست باشد، باید سوئیچ Is True را تنظیم کنید. اگر در صورت تغییر عبارت، اجرا باید متوقف شود، باید سوئیچ When Changed را تنظیم کنید.

    تعداد ضربه ها را در نقطه شکست مشخص کنید. تعداد ضربه شرط توقف اجرا در یک نقطه معین بر اساس تعداد دفعاتی است که آن نقطه شکست در طول اجرا ضربه خورده است. وقتی به تعداد مشخص شده گذرها و هر شرط دیگری که برای یک نقطه انفصال مشخص شده است رسید، دیباگر عمل مشخص شده را انجام می دهد. شرط توقف اجرا بر اساس تعداد ضربه ها می تواند یکی از موارد زیر باشد:

    1. بدون قید و شرط (عمل پیش فرض) (همیشه شکسته);

      اگر تعداد بازدیدها برابر با مقدار مشخص شده باشد (زمانی که تعداد او برابر با مقدار مشخص شده باشد شکسته شود).

      اگر تعداد بازدیدها مضربی از یک مقدار مشخص شده باشد (زمانی که تعداد ضربه برابر با مضربی از یک مقدار مشخص شده باشد شکسته شود).

      زمانی که تعداد او بزرگتر یا مساوی با مقدار مشخص شده باشد شکسته شود.

    برای تنظیم تعداد بازدیدها در حین اشکال زدایی، روی نماد نقطه شکست مورد نیاز در برگه Breakpoints کلیک راست کنید، تعداد ضربه را از منوی زمینه انتخاب کنید، سپس یکی از شرایط را در کادر محاوره ای Breakpoint Hit Count که از لیست قبلی باز می شود، انتخاب کنید. برای گزینه هایی که نیاز به مقدار دارند، آن را در کادر متنی سمت راست لیست کشویی شرایط وارد کنید. برای ذخیره شرایط مشخص شده، روی OK کلیک کنید.

    فیلتر نقطه شکست را مشخص کنید. یک فیلتر نقطه شکست، عملیات نقطه شکست را فقط به کامپیوترها، فرآیندها یا رشته‌های مشخص محدود می‌کند. برای تنظیم یک فیلتر نقطه شکست، روی نقطه شکست مورد نظر خود کلیک راست کرده و فیلتر را از منوی زمینه انتخاب کنید. سپس در کادر محاوره‌ای Breakpoint Filters که باز می‌شود، منابعی را که می‌خواهید اجرای این نقطه شکست را محدود کنید، مشخص کنید. برای ذخیره شرایط مشخص شده، روی OK کلیک کنید.

    یک عمل را در نقطه شکست مشخص کنید. شرط When Hit عملی را مشخص می کند که هنگام اجرای دسته ای به نقطه شکست معینی برسد. به‌طور پیش‌فرض، زمانی که هم شرط تعداد ضربه و هم شرط توقف برآورده شد، اجرا متوقف می‌شود. همچنین می توان یک پیام از پیش تعیین شده نمایش داد.

    برای تعیین اینکه در هنگام ضربه به نقطه شکست چه کاری انجام دهید، روی نماد قرمز نقطه شکست کلیک راست کرده و از منوی زمینه گزینه When Hit را انتخاب کنید. در کادر گفتگوی When Breakpoint is Hit که باز می شود، اقدامی را که می خواهید انجام دهید انتخاب کنید. برای ذخیره شرایط مشخص شده، روی OK کلیک کنید.

    از پنجره Quick Watch استفاده کنید. می توانید مقدار یک عبارت Transact-SQL را در پنجره QuickWatch مشاهده کنید و سپس عبارت را در پنجره Watch ذخیره کنید. برای باز کردن پنجره Quick Watch، از منوی Debug گزینه Quick Watch را انتخاب کنید. عبارت موجود در این پنجره می تواند از لیست کشویی Expression انتخاب شود یا در این قسمت وارد شود.

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




بالا