فهرست مطالب
- ایجاد و درج پرس و جو
- SQL ساده Query را انتخاب کنید
- توابع جمعی و اسکالر
- تابع تاریخ
- دیگر عملکرد را انتخاب کنید
- جایی که
- گروه BY و داشتن بند
- پرس و جو فرعی
- می پیوندد
- UNION و UNION ALL.
- عبارات جدول رایج (CTE) - با
- چشم انداز
- محور
- رویه ذخیره شده (SP)
- کارکرد
- استانداردهای کدنویسی SQL Server
- چند نمونه کار شده
1. ایجاد و درج پرس و جو
قبل از شروع، ابتدا یک جدول ایجاد می کنیم و نمونه ای از داده ها را در آن قرار می دهیم تا بتوانیم از این جداول در کلاس انتخابی خود استفاده کنیم. من می خواهم طراحی جدول را با داده های واقعی توضیح دهم زیرا به خواننده کمک می کند تا این موضوع را با جزئیات درک کند.
در طراحی پایگاه داده مرحله مهم ایجاد جدولی با نرمال سازی مناسب با روابط کلید اولیه و خارجی است.
اکنون در این مثال فرض می کنیم که باید جداول مدیریت سفارش رستوران را با روابط ایجاد کنیم.
برای این کار به یک Order Master، یک Order Detail و یک Item Master به عنوان جداول اصلی نیاز داریم. در این مقاله از این 3 جدول استفاده خواهیم کرد. ابتدا بیایید با ایجاد جداول شروع کنیم. همانطور که گفتم، ما از 3 جدول در اینجا در این مقاله استفاده خواهیم کرد، بنابراین با ایجاد آیتم Master به عنوان اولین جدول شروع می کنیم. همانطور که از نام آن پیداست از این جدول برای ذخیره اقلام استفاده می شود.
Create Table
Item Master: در اینجا یک ItemMaster با فیلدهای لازم ایجاد کرده ایم. همانطور که قبلاً گفتم، ما باید در مورد پروژه خود برنامه ریزی کنیم. تمام جداول لازم برای ایجاد پروژه را لیست کنید و تمام فیلدهایی که برای هر جدول ایجاد می شود را توصیف و فهرست کنید. در اینجا از Item_Code به عنوان فیلد کلید اصلی استفاده کردم که در جدول دیگری برای ارجاع به این جدول اصلی استفاده خواهد شد.
- CREATE TABLE [dbo].[ItemMasters](
- [Item_Code] [varchar](20) NOT NULL,
- [Item_Name] [varchar](100) NOT NULL,
- [Price] Int NOT NULL,
- [TAX1] Int NOT NULL,
- [Discount] Int NOT NULL,
- [Description] [varchar](200) NOT NULL,
- [IN_DATE] [datetime] NOT NULL,
- [IN_USR_ID] [varchar](20) NOT NULL,
- [UP_DATE] [datetime] NOT NULL,
- [UP_USR_ID] [varchar](20) NOT NULL,
- CONSTRAINT [PK_ItemMasters] PRIMARY KEY CLUSTERED
- (
- [Item_Code] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
درج آیتم Master
- INSERT INTO [ItemMasters] ([Item_Code],[Item_Name],[Price],[TAX1],[Discount],[Description],[IN_DATE]
- ,[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('Item001','Coke',55,1,0,'Coke which need to be cold',GETDATE(),'SHANU'
- ,GETDATE(),'SHANU')
- INSERT INTO [ItemMasters] ([Item_Code],[Item_Name],[Price],[TAX1],[Discount],[Description],[IN_DATE]
- ,[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('Item002','Coffee',40,0,2,'Coffe Might be Hot or Cold user choice',GETDATE(),'SHANU'
- ,GETDATE(),'SHANU')
- INSERT INTO [ItemMasters] ([Item_Code],[Item_Name],[Price],[TAX1],[Discount],[Description],[IN_DATE]
- ,[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('Item003','Chiken Burger',125,2,5,'Spicy',GETDATE(),'SHANU'
- ,GETDATE(),'SHANU')
- INSERT INTO [ItemMasters] ([Item_Code],[Item_Name],[Price],[TAX1],[Discount],[Description],[IN_DATE]
- ,[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('Item004','Potato Fry',15,0,0,'No Comments',GETDATE(),'SHANU'
- ,GETDATE(),'SHANU')
Order Master : از آنجایی که این یک جدول اصلی است، یک رکورد اصلی خواهیم داشت و تمام رکوردهای مرتبط بعدی در جدول جزئیات سفارش ذخیره می شوند.
توجه: ابتدا لطفاً معنی Master and Detail را درک کنید. اگر متوجه نشدید استاد و جزئیات چیست، ابتدا آن را توضیح خواهم داد. استاد یعنی یک رکورد اصلی وجود دارد و در جزئیات همه جزئیات رکورد اصلی را داریم.
مثلاً بگویید ما یک رستوران داریم و یک عدد کوکاکولا، یک برگر و یک سیب زمینی سرخ کرده سفارش داده ایم. یعنی من با 3 مورد از گارسون سفارش دادم. بنابراین Order_No برای مثال می تواند "Ord0001" باشد و این Order_No دارای 3 مورد است، بنابراین ابتدا Order Master را ایجاد می کنیم.
- CREATE TABLE [dbo].[OrderMasters](
- [Order_No] [varchar](20) NOT NULL,
- [Table_ID] [varchar](20) NOT NULL,
- [Description] [varchar](200) NOT NULL,
- [IN_DATE] [datetime] NOT NULL,
- [IN_USR_ID] [varchar](20) NOT NULL,
- [UP_DATE] [datetime] NOT NULL,
- [UP_USR_ID] [varchar](20) NOT NULL,
- CONSTRAINT [PK_OrderMasters] PRIMARY KEY CLUSTERED
- (
- [Order_No] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
Order Master را درج کنید
- INSERT INTO [OrderMasters]
- ([Order_No],[Table_ID] ,[Description],[IN_DATE],[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('Ord_001','T1','',GETDATE(),'SHANU' ,GETDATE(),'SHANU')
- INSERT INTO [OrderMasters]
- ([Order_No],[Table_ID] ,[Description],[IN_DATE],[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('Ord_002','T2','',GETDATE(),'Mak' ,GETDATE(),'MAK')
- INSERT INTO [OrderMasters]
- ([Order_No],[Table_ID] ,[Description],[IN_DATE],[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('Ord_003','T3','',GETDATE(),'RAJ' ,GETDATE(),'RAJ')
جزئیات سفارش: همانطور که از نام جدول پیداست، این جزئیات یک سفارش را در خود دارد، بنابراین به عنوان مثال، سفارش نمونه قبلی من را با 3 مورد در نظر می گیریم. ابتدا یک جدول جزئیات سفارش ایجاد می کنیم.
- CREATE TABLE [dbo].[OrderDetails](
- [Order_Detail_No] [varchar](20) NOT NULL,
- [Order_No] [varchar](20) CONSTRAINT fk_OrderMasters FOREIGN KEY REFERENCES OrderMasters(Order_No),
- [Item_Code] [varchar](20) CONSTRAINT fk_ItemMasters FOREIGN KEY REFERENCES ItemMasters(Item_Code),
- [Notes] [varchar](200) NOT NULL,
- [QTY] INT NOT NULL,
- [IN_DATE] [datetime] NOT NULL,
- [IN_USR_ID] [varchar](20) NOT NULL,
- [UP_DATE] [datetime] NOT NULL,
- [UP_USR_ID] [varchar](20) NOT NULL,
- CONSTRAINT [PK_OrderDetails] PRIMARY KEY CLUSTERED
- (
- [Order_Detail_No] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
- ) ON [PRIMARY]
- --Now let’s insert the 3 items for the above Order No 'Ord_001'.
- INSERT INTO [OrderDetails]
- ([Order_Detail_No],[Order_No],[Item_Code],[Notes],[QTY]
- ,[IN_DATE],[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('OR_Dt_001','Ord_001','Item001','Need very Cold',3
- ,GETDATE(),'SHANU' ,GETDATE(),'SHANU')
- INSERT INTO [OrderDetails]
- ([Order_Detail_No],[Order_No],[Item_Code],[Notes],[QTY]
- ,[IN_DATE],[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('OR_Dt_002','Ord_001','Item004','very Hot ',2
- ,GETDATE(),'SHANU' ,GETDATE(),'SHANU')
- INSERT INTO [OrderDetails]
- ([Order_Detail_No],[Order_No],[Item_Code],[Notes],[QTY]
- ,[IN_DATE],[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('OR_Dt_003','Ord_001','Item003','Very Spicy',4
- ,GETDATE(),'SHANU' ,GETDATE(),'SHANU')
در اینجا می توانیم همان ordre_No را برای 3 جزئیات مختلف با آیتم های مختلف ببینیم. برای جزئیات نام مورد به آیتم Master مراجعه کنید. در این مقاله با جزئیات خواهیم دید که پرس و جو انتخاب از موارد زیر استفاده می کند. اکنون جزئیات Order Master دیگری را در جداول Detail وارد می کنیم.
- INSERT INTO [OrderDetails]
- ([Order_Detail_No],[Order_No],[Item_Code],[Notes],[QTY]
- ,[IN_DATE],[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('OR_Dt_004','Ord_002','Item002','Need very Hot',2
- ,GETDATE(),'SHANU' ,GETDATE(),'SHANU')
- INSERT INTO [OrderDetails]
- ([Order_Detail_No],[Order_No],[Item_Code],[Notes],[QTY]
- ,[IN_DATE],[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('OR_Dt_005','Ord_002','Item003','very Hot ',2
- ,GETDATE(),'SHANU' ,GETDATE(),'SHANU')
- INSERT INTO [OrderDetails]
- ([Order_Detail_No],[Order_No],[Item_Code],[Notes],[QTY]
- ,[IN_DATE],[IN_USR_ID],[UP_DATE],[UP_USR_ID])
- VALUES
- ('OR_Dt_006','Ord_003','Item003','Very Spicy',4
- ,GETDATE(),'SHANU' ,GETDATE(),'SHANU')
2. Simple SQL Select Query
آیا کسی می تواند به من بگوید انتخاب Query در SQL چیست؟ Select یکی از اساسی ترین و مهم ترین دستورات DML SQL است. بنابراین DML در SQL چیست؟ DML مخفف Data Manipulation Language است. این بدان معناست که این عبارات برای دستکاری داده هایی که از قبل وجود دارد استفاده می شود. همانطور که از نام پیداست دستور SELECT یک یا چند ستون با یک یا چند داده را برای نمایش از DB با فیلترهای اختیاری ما انتخاب می کند.