تعلم قواعد بيانات SQL Database
1.76K subscribers
75 photos
3 videos
24 files
32 links
تعلم وعلم غيرك في قواعد بيانات SQL Database
تحليل وتصميم قواعد بيانات
وبرمجه مواقع اخبارية
Download Telegram
طيب اذا نريد نحذف الصفوف المكرره ونترك صف واحد من كل صف مكرر
DELETE FROM your_table
WHERE (column1) IN (
SELECT column1
FROM your_table
GROUP BY column1, column2
HAVING COUNT(*) > 1
);
1
SELECT LTRIM(RTRIM(column1)) as column1,column2,column... ,
count(LTRIM(RTRIM(column1)))as cno into #Temp FROM your_table
where st_status=0 and len(LTRIM(RTRIM(column1)))>0
GROUP BY LTRIM(RTRIM(column1)),column2,column... ,
HAVING COUNT(*) > 1
select ROW_NUMBER() OVER (PARTITION BY LTRIM(RTRIM(column1)) ORDER BY LTRIM(RTRIM(column1)) ASC)as SR,*
into #TEmp2
from your_table s where LTRIM(RTRIM(column1)) in(select t.column1 from #Temp t where t.column2=s.column2 and t.column3=s.column3)
order by LTRIM(RTRIM(column1))

delete your_table where ID
in(select t.ID from #TEmp2 t where t.SR<>1 and t.column2=your_table.column2
and t.column3=your_table.column3)

drop table #Temp
drop table #Temp2
2
هذا الكود الخاص بالحذف لابد ان تحفظ البيانات المكرره في جدول وهمي لكي ما تحذف جميع الصفوف
كيف نعمل تحديث لجدول عن طريق الربط باكثر من جدول
التحديث باستخدام العلاقات INNER JOIN
طريقه حلوه وسهله
UPDATE Per
SET
Per.PersonCityName=Addr.City,
Per.PersonPostCode=Addr.PostCode
FROM Persons Per
INNER JOIN
AddressList Addr
ON Per.PersonId = Addr.PersonId
سلام الله عليكم العفوا على التاخير لاكن ان شاء الله نستمر بجهودكم وتفاعلكم من خلال نشر القروب الى اكبر عدد من الطلاب لانه كلما كان المتفاعلين اكثر في النقاش وطرح المقترحات كلما كانت الاستفاده اكثر
1
اليوم فيه معانا درس حلو جدا يحتاجه اغلب المبرمجين الذين ينشئون استرجاعات كبيره عندما يسترجعوا متغيرات من جداول اخرى
declare @id int
declare @RLivel nvarchar(50), @Year int ,@vale decimal(18,2)
قبل التبسيط
set @RLivel= (select top 1 txt from TableName where id=@id)
set @Year= (select top 1 Yea from TableName where id=@id)
set @vale= (select top 1 vale from TableName where id=@id)

select @RLivel,@Year,@vale
1
لاحظ الاسترجاعات الثلاثه ممكن ندمجهم في استعلام واحد ويعطي نفس القيم

select top 1 @RLivel= txt,@Year =Year,@vale=vale from TableName where id=@id
select @RLivel,@Year,@vale
الذي حابب ينظم للقناه الاستفسارات هذا الرابط
https://t.me/c/1696274902/571
👍3
ما هي افضل الطرق لجعل الاسترجاع سريع
ماهي طرق تسريع الاسترجاعات
ممكن مقترحاتكم وارائكم في هذا الموظوع
هناك العديد من الطرق التي يمكن اتباعها لتحسين أداء البروسيجرات في قاعدة بيانات SQL Server.
1-استخدم مؤشرات (Indexes): تأكد من وجود مؤشرات مناسبة على الجداول المستخدمة في البروسيجرات. المؤشرات فوائدها تساعد في تحسين سرعة استعلامات قاعدة البيانات عن طريق تسريع عمليات البحث والفرز.
مثال CREATE INDEX idx_column ON table_name (column_name);
2-تجنب الحلقات المتداخلة (Nested Loops): قم بتجنب استخدام الحلقات المتداخلة في البروسيجرات، خاصة إذا كانت الحلقات تتعامل مع مجموعات كبيرة من البيانات. بدلاً من ذلك، حاول استخدام عمليات الانضمام (Joins) والاستعلامات المجمعة (Aggregates) لتحسين أداء البروسيجرات.
SELECT t1.column1, t2.column2
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id;
تابع طرق تسريع الاسترجاعات والتحسين في الاداء وتجنب البط
3-استخدام الاستعلامات المجمعة (Aggregates) بدلاً من الحلقات المتداخلة (Nested Loops):

SELECT column1, SUM(column2) AS total
FROM table_name
GROUP BY column1;
تذكر أنه يجب تحليل الأداء وتقييم النتائج بعد تنفيذ أي تحسينات لتحديد الأثر الفعلي على أداء البروسيجات. قد تختلف النتائج بناءً على هيكل البيانات وحجمها وتكوين الخادم والحمولة الحالية.
2
مفهوم ترتيب البيانات
في SQL يمكنك ترتيب البيانات التي نجلبها بشكل تصاعدي ( Ascending ) أو تنازلي ( Descending ) سواء كنت تتعامل مع بيانات نصية أو رقمية. فمثلاً تستطيع ترتيب نتيجة الإستعلام نسبة لرواتب الموظفين من الأصغر إلى الأكبر, و ترتيب أسماء الموظفين بشكل أبجدي من الألف إلى الياء . شكل الاستعلام
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
نضع الكلمة ORDER BY في نهاية الإستعلام و نضع بعدها إسم العمود أو الأعمدة التي نريد ترتيب السطور على أساسها.

إفتراضياً الكلمة ORDER BY ترتب السطور بشكل تصاعدي. إذا أردت ترتيب السطور بشكل تنازلي يجب أن تضيف الكلمة DESC في النهاية.
👍1
مثال لو نريد عرض بيانات الموظفي ترتيب الأسطر بشكل تصاعدي
1-سيتم عرض الموظف الذي ينال الراتب الأدنى في الأول, و الموظف الذي ينال الراتب الأعلى في الأخير
SELECT * FROM employees ORDER BY salary
👍1
مثال لو نريد عرض بيانات الموظفي
1-الإستعلام التالي يجلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تنازلي نسبةً لرواتب الموظفين. يبدا من الاكبر

SELECT * FROM employees ORDER BY salary DESC
👍1
يمكن استخدام الترتيب تصاعطي وتنازلي طريقه العمل سوف يبدا بالاول ثم الثاني
SELECT * FROM employees ORDER BY is_married ASC, salary DESC
يمكنك استخدام اكثر من عمود حسب الطلب
👍1
3- جلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً للنص الذي ينتج عن دمج الحقلين first_name و last_name.
أي سيتم عرض إسم الموظف و إسم عائلته في حقل واحد و على أساسه سيتم ترتيب الأسطر.
SELECT id AS 'Id', CONCAT(first_name, ' ', last_name) AS 'Full Name', salary AS 'Salary'
FROM employees
ORDER BY CONCAT(first_name, ' ', last_name) asc
ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العمود Full Name.
واذا نريد العكس نكتب بدل asc نكتب desc
👍1
مراجعه سريعه امر انشاء قاعده بيانات جديده
مثال قم ب
انشاء قاعده بيانات باسم Hotale مستشفى
CREATE DATABASE Hotale;
ملاحضه لا تستطيع إنشاء أكثر من قاعدة بيانات بنفس الإسم.
👍1
لو حاولت تنفذ الامر مره اخرى
CREATE DATABASE Hotale;
سوف تظهر لك رساله
Database 'Hotale' already exists. Choose a different database name.
تعني انك تحاول تنشاء قاعده بيانات باسم Hotale وهذه القاعده موجوده بالفعل
👍1
لكي نتجنب الخطأ لابد من التأكد ان قاعده البيانات غير موجوده
هذا الشرط يختبر اذا كانت قاعده البيانات غير موجوده يضيفها مالم لا يعمل اي شي

IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = 'Hotale')
CREATE DATABASE Hotale;
👍1