پیدا کردن یک ستون در کل جدول های دیتابیس
ما قصد داریم یک ستون از دیتابیس را در کل جدول های دیتابیس جستجو کرده و نام جدول هایی که این ستون به کار رفته است را پیدا کنیم.
برای این کار از کدهای دستوری زیر استفاده میکنیم
SELECT c.name AS ColName, t.name AS TableName
FROM sys.columns c
JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%ShiftId%'
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید
نحوه ی نوشتن یک StoreProcedure با شرط های مختلف مانند دستورات Ado
EXECUTE sp_executesql
N'select * from htreatment.TbLimitGroup
WHERE statuscode = @level',
N'@level tinyint',
@level = 1;
کاهی اوقات در sql server هنگام نوشتن sp لازم است که برخی شرط ها حذف شود و اصلا در sp نادیده گرفته شود با استفاده از روش بالا این کار به سادگی قابل انجام می باشد.
نحوه پیدا کردن فیلد یا عباراتی در کل دیتابیس در Sql Server
ما در این مثال قصد داریم که فیلدی از یک جدول در دیتابیس را در کل پایگاه داده sql server جستجو کنیم و ببینیم در چه جداولی از sql فیلد مورد نظر ما وجود دارد. برای این کار از دستورات زیر استفاده می کنیم.
-- Search in All Objects
SELECT OBJECT_NAME(OBJECT_ID),
definition
FROM sys.sql_modules
WHERE definition LIKE '%' + 'BusinessEntityID' + '%'
GO
در دستورات بالا باعث می شود که در تمامی آبجکت های اسکویل سرور را اعم از sp یا view یا table به دنبال فیلد مورد نظر من بگردد و در هر جا که استفاده شده باشد پیدا می کند. و نمایش می دهد.
تابع Lead و Lag در Sql Server چست و چه کاربردی دارد؟
در زمان طراحی کوئری، خیلی از مواقع نیاز است که به سطرهای قبل یا بعد از سطر جاری دسترسی داشته باشیم. یکی از روش های موجود استفاده از تابع Row number بود که از نسخه 2005 اس کیو ال به بعد پشتیبانی می شود. اما از نسخه 2012 دو تابع مفید Lead وLag قابل استفاده هستند.
تابع LAG : دستیابی به مقدار یک فیلد در سطرها قبل از سطر جاری
LAG (value_expression [,offset] [,
default
]) OVER ([query_partition_clause] order_by_clause)
تابع LEAD : دستیابی به مقدار یک فیلد در سطرها بعد از سطر جار
LEAD (value_expression [,offset] [,
default
]) OVER ([query_partition_clause] order_by_clause)
پارامترهای موجود در هر تابع به صورت زیر هستند:
value_expression : نام ستون مورد نظر
Offset: تعداد سطر بعد/قبل از سطر جاری
Default: مقدار پیش فرض در صورت خارج از رنج بودن Offset
query_partition_clause: گروهبندی روی ستون خاص
روش استفاده از تابع Lead را با یک مثال شرح خواهیم داد در این مثال قصد داریم کارمندان یک روز به تاریخ شروع پروژه بعدی را اضافه کنیم.
SELECT
*,
DATEADD(
DAY
, -1, LEAD(Emp_Startdate, 1,
'01-Jan-2100'
)
--کسر کردن یک روز از تاریخ رکورد بعدی
OVER (PARTITION
BY
Emp_Name
ORDER
BY
Emp_Startdate
ASC
))
AS
EndDate
FROM
Employee
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید
نحوه استفاده از Pivot در Sql Server
Pivot table ها در واقع همانند سایر Table های دیگر می باشند فقط با این تفاوت که در نمایش ردیف و ستون های آنها مقداری تفاوت وجود دارد .
دستور pivot جزو دستوراتی از Sql server می باشد که ممکن است در بیشتر پروژه هایمان برای نمایش گزارشات مختلف به استفاده از آن نیاز داشته باشیم . کاربرد دستور pivot تقریبا تبدیل نمایش خروجی یک کوئری از حالت ردیفی به ستونی می باشد . به صورت خیلی خلاصه بخواهیم نحوه کارکرد این دستور را بیان کنیم ، کار آن یک چرخش 90 درجه جداول می باشد ، یعنی جای ستون و ردیف ها را با هم جابه جا کنیم .
در این مثال قصد داریم مجموع ورودی و خروجی های یک جدول خاص از انبار را استخراج کنیم.
SELECT
*
FROM
(
SELECT
[type]
FROM
stock
WHERE
[type]
IN
(
's'
,
'i'
)
) t
PIVOT (
COUNT
(t.[type])
FOR
[type]
IN
(s ,i)
) p
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید
کار با Cursor در SQL با یک مثال ساده
در این مثال سعی کردیم که ساختار Cursor را نمایش دهیم و اطلاعاتی را از جدولی از دیتابیس به نمایش در آوریم
DECLARE @id1 INT;
DECLARE @n1 NVARCHAR(50);
DECLARE @cur CURSOR
SET @cur=CURSOR FOR SELECT RangeId,RangeName FROM dbo.Range
OPEN @cur;
FETCH NEXT FROM @cur INTO @id1,@n1;
WHILE @@FETCH_STATUS=0
BEGIN
PRINT CAST(@id1 AS NVARCHAR(50))+' '+@n1
FETCH NEXT FROM @cur INTO @id1,@n1
END
CLOSE @cur
DEALLOCATE @cur
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید
نحوه نوشتن Curser بر روی دیتابیس
در این مثال قصد داریم که بر روی یک جدول از دیتابیس یک کرسر قرار دهیم که لیستی از فیلد هایی که مقدار دارند تعداد آنها را برای ما برگرداند و اسم فیلد مورد نظر را نمایش دهد.
--declare @table as table(name nvarchar(256),valuetable nvarchar(256), countValue int)
declare @name as nvarchar(256)
declare cur cursor for
select name from sys.columns where OBJECT_NAME(object_id)='Name Table' and
name not in (
'Fild1',
'Fild2',
'Fild3',
'Fild4'
)
order by name
open cur
fetch next from cur into @name
while(@@FETCH_STATUS=0)
begin
declare @str as nvarchar(4000) =' select '''+@name+''','+@name +', COUNT(*) from Name Table group by '+@name
print @str
exec(@str)
fetch next from cur into @name
end
close cur
deallocate cur
SQL Prompt یک add in برای SQL Server Management و Visual Studio می باشد که intellisense قوی و سبک را برای نوشتن کدهای اسکریپت SQL فراهم می کند
5 روشی که SQL Prompt برای برنامه نویسی سریع تر استفاده می کند :
1. جدید! سابقه تب ها - ذخیره، جستجو، و بازیابی زبانه ها در SSMS
2. استفاده از IntelliSense در تکمیل کد
3. قالب بندی کد های SQL برای خوانایی بیشتر
4. استفاده از بریده کدها code snippets
5. Refactor کد SQL
به همراه آموزش نحوه کرک و فعال سازی آن
حجم فایل : ۷.۸۴ مگابایت
نحوه گذاشتن یک محدودیت بروی جدولی از دیتابیس در Sql Server
برای گذاشتن محدودیت یا constraints بر روی یک فیلد از جدولی در دیتابیس می توانیم راه های مختلفی استفاده کنیم
که داری چند نوع می باشد.
نوع اول
یکتایی مقدار در یک فیلد از جدول از کد زیر استفاده می کنیم.
alter table Table_1
add unique(a1)
نوع دوم
برای اینکه یک فیلد را محدود کنیم که این فیلد باید داده ای بین یک رنج خاصی را دریافت کند
یا داده های این فیلد از یک عدد مشخصی بیشتر نباشد.
alter table Table_1
add check(a1>15)
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید
نحوه ساخت یک کاربر در Sql Server و ورود کاربر به سیستم
و مشخص کنیم به چه دیتابیس هایی دسترسی داشته باشد.
ابتدا در روت دیتابیس ها به منو Security رفته و سپس در Login رفته و بروی آن راست کلیک می کنیم و NewLogin را انتخاب می کنیم
Security>Login>RightClik>NewLogin
در کادر محاوره ای باز شده ابتدا یک نام مناسب برای کاربر مورد نظر وارد می کنیم
سپس پسورد آن را نیز مشخص می کنیم.
اگر هنگام ورود به سستم با خطا روبرو شدین باید باید روی سرور اصلی راست کلیک کنید و سپس Propertise را بزنید و سپس به زبانه Security و بعد از آن روی گزینه
sql server and windows Authentication mod
کلیک میکنیم
و بعد اوکی میکنیم و نهایتن اسکویل سرور را ریستارت می کنیم
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید