1-فیلد Identity که با منفی شروع می شود:
بر خلاف تصور خیلی ها می توان یک Identity را با صفر یا منفی شروع کرد .گرچه کار درستی نیست.CREATE TABLE PersonIdentityNegative ( ID INT NOT NULL IDENTITY (-50, -1), FName VARCHAR(100) NULL, LName VARCHAR(100) NULL )
2-مشاهده مقدار آخرین Identity تولید شده در بانک:
تابع Identity@@ یکی از توابع سیستمی است که خروجی آن آخرین مقدار Identity تولید شده در بانک اطلاعاتی مشخصی است.توجه کنید دستوراتی که باعث افزایش رکورد Identity در جداول می شوند به شرح زیر هستند:
- Insert
- Select Into
- Bulk Copy
SELECT @@Identity
3-مشاهده مقدار آخرین Identity در یک جدول :
تابع Ident_Current همانند تابع Identity@@ از توابع سیستمی است .این تابع نام یک جدول را به عنوان ورودی می پزیرد و مقدار آخرین Identity تولید شده در یک جدول مشخص را به عنوان خروجی تولید می کند.SELECT Ident_Current('Your Table Name')
برای این منظور تابع دیگری وجود دارد به نام Scope_Identity که فقط در Scope حال، آخرین مقدار Identity را بر می گرداند
SELECT * FROM Person SELECT Scope_Identity()
توجه کنید که دو تابع Ident_Current و Scope_Identity نیازی به @@ ندارند.
4-تعداد ردیف های afect شده در Command قبلی:
تابع ROWCOUNT@@ تعداد ردیف های که آخرین Command روی آنها تاثیر داشته را به عنوان خروجی تولید می کند.SELECT * FROM Person SELECT @@ROWCOUNT
5- (*)Count یا (1)Count کدام یک سریع تر است:
با بررسی های که انجام دادم به این نتیجه رسیدم که هردو در یک حد عمل می کنند ولی با بررسی جزئی تر فهمیدم که (1)Count فقط یک اجرا بیشتر از (*)Count دارد ،یعنی فقط در همان یک اجرا ،تبدیل به (*)Count می شود و بقیه اجرا ها یکسان است.6- محاسبه تاریخ تولد در SQL Server:
برای این منظور یک گوئری تهیه شده که می تونید ازش استفاده کنید :declare @birth_day datetime set @birth_day ='19660527 12:34:22' select years, months, case when day(@birth_day)>day(getdate()) then day(getdate())+ datediff(day,@birth_day,dateadd(month,datediff(month,0,@birth_day)+1,0))-1 else day(getdate())-day(@birth_day) end as days, datepart(hour,convert(varchar(10),dateadd(minute,minutes,0),108)) as hours, datepart(minute,convert(varchar(10),dateadd(minute,minutes,0),108)) as minutes from ( select years, datediff(month,dateadd(year,years,@birth_day),getdate())+ case when day(getdate())>=day(@birth_day) then 0 else -1 end as months, datediff(minute,convert(varchar(8),@birth_day,108), convert(varchar(8),getdate(),108)) as minutes from ( select datediff(year,@birth_day,getdate()) + case when month(getdate())>=month(@birth_day) then 0 else -1 end as years ) as t ) as t
7-فیلد Identity با ترکیبی از حروف و عدد :
برای این کار می تونید از روش زیر استفاده کنید ،بدون شرح :)DECLARE Person TABLE ( ProID as 'Pro-' + RIGHT('0000' + CONVERT(varchar, SimpleID ),5), SimpleID int IDENTITY(1,1), FName varchar(10) ) INSERT INTO Person VALUES ('Ali') INSERT INTO @Person VALUES ('Hossein') SELECT * FROM Person
8-پیدا کردن جداولی که کلید اصلی ندارند:
بدون شرح :)SELECT name as [TableName] FROM sys.objects WHERE type = 'U' AND OBJECTPROPERTY([object_id], 'TableHasPrimaryKey') = 0;
9-پیدا کردن کلیدهای اصلی :
USE Northwind go SELECT ISKC.TABLE_SCHEMA, ISKC.TABLE_NAME, ISKC.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS ISTC INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS ISKC ON ISTC.CONSTRAINT_TYPE = 'PRIMARY KEY' AND ISTC.CONSTRAINT_NAME = ISKC.CONSTRAINT_NAME WHERE ISKC.TABLE_NAME = 'Employees' ORDER BY ISKC.TABLE_NAME, ISKC.ORDINAL_POSITION
10-مشاهده پیاده سازی View :
برای این عمل از طریق کد SQL دو روش وجود دارد :روش اول : پیاده سازی یک View مشخص را به نمایش در می آورد
EXEC sp_helptext 'Your View Name'
روش دوم :پیاده سازی تمامی View ها را به همراه نام آنها نمایش می دهد
SELECT TABLE_NAME as ViewName, VIEW_DEFINITION as ViewDefinition FROM INFORMATION_SCHEMA.Views
وبلاگ شما در بخش وبلاگ های برنامه نویسی ثبت شد.
پاسخحذفموفق باشید
http://persianweblog.ir/weblogs/?cat=7
ممنون. مفيد بود.
پاسخحذفسلام دوست عزیز
پاسخحذفاز شما دعوت میکنیم لینکهای روزانه خود را در سایت مفیدترین ( شبکه برتر انتشار لینک فارسی از نظر نقدنیوز) منتشر کنید مفیدترین در بازه زمانی محدود اقدام به عضوگیری بدون دعوتنامه میکند لطفا برای انتشار لینکهای خود سریعتر اقدام فرمائید.
با تشکر
مفیدترین دات کام
www.mofidtarin.com
سلام
پاسخحذفممنون. جالب و مفید بود.