• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/55

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

55 Cards in this Set

  • Front
  • Back
  • 3rd side (hint)

Date

Select GETDATE()

فاصله زمانی

Select DATEDIFF(interval, datetime 1,datetime 2)


که interval میتواند dd, mm, yy و... باشد

Convert and cast

Select cast(customerKey as nvarchar)


Select convert(nvarchar, customerKey)



*cast


تو همه ورژنهای sql


وجود داره ولی


Convert نه

Alias and 2 parted

پیدا کردن system functions

Programmatically => functions =>system functions

Distinct و top

Select DISTINCT city from...


Select TOP 1000 city(or *) from....

Distinct


Top 1000


هردو یه حا و قبل ستونها میشینند

Xml

Select * from table


For xml auto - - atribute centric


یا


For xml auto, elements - - element centric

Case end: when in then in.. Else end

*سلکتِ کیسند*،


ون این دن این


الز اند

توی کالم لیست تو سلکت بکار میاد بقیه حالتهاش مسخره است مثل تو where یا اردر بای و...

In

Select *


From....


Where name = 'amir' OR name ='gholi' or...



معادل


Select * from...


Wherr name IN ('amir', 'gholi')


بدرد از excel کپی کردن خیلی میخوره

برای جستجو روی فیلدهای nvarchar و nchar که unicode ازجمله زبان فارسی رو میپذیرند

حتما حتما برای فیلتر کردن از prefix N قبل رشته هات استفاده کن یعنی


Select * from...


Where name = N'امیر'

وقتی مساوی داری

Select top 1 (percent ) with ties [columns]


From...


Order by.. Asc/desc

Inner join

Matching

Outer join

Matching and non matching


Left matching and non matching from the left

Inner join

یا


Join خالی

Left outer join

یا


Left join


خالی

Select into from کاربرد

به این کار می آید که مثلا دیتاهای یک table که میخای کار کنی روش رو بریزی تو یه تیبل دیگه و روش تستی کار کنی و دیتاههی اصلیت دست نخورند


یا مثلا وقتی sql ات پیچیده میشه مرحله به مرحله و بعنوان staging table بریزی تو این temporary table ها و ببینی نتیجه رو

نکته در رابطه با جداول select into from

این table ها نه کلید نه index نه trigger و... از تیبل یا تیبلهایی که ازشون ساخته میشن رو ندارند و خالی خالی هستن

Select into from انواع table های ایجاد شده با

Permanent اگر اسم table # نداشته باشه


Local temporary: اول اسم تیبل یه دونه #


Global temporary :اول اسم تیبل دوتا #

اجتماع اشتراک متمم

Union a U b


Interest اشتراک a اشتراک b


Except a-b


Select


From


Union/except/intersect


Select


from


بین هردوتا select ای میشه استفاده کرد فقط باید تعداد ستون و type شون عین هم باشد

Join vs unio

Join put tables together horizontally based on primary to foreign key relationship


Union append tables and put them together vertically


Where vs having

A WHERE clause is used is filter records from a result. The filter occurs before any groupings are made.A HAVING clause is used to filter values from a group.

Joins

Left و right


میتونن پدر یا فرزند باشند فرقی نداره


Left matching o non matching from Left


Inner matching from left o right

Inner join count

In general with an inner join the number of records is equal to the number of records in the table with the most records

Count(*) vs count (column Name)

Count (*) will count all rows


Count (columnName) will count all rows except those rows where columnName is null

Atomic data

نه ستون childrenمثلا interests داشته باشیم و توش دونه دونه فرزندها رو با کاما جدا کنیم. نه دو یا چندتا تا ستون child1 intesrest1 وinterset 2 child2 و... داشته باشیم


****نه children نه child 1 و ۲


بلکه فقط child


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


این children یا interests رو ببری تو یه تیبل دیگر


هرکی تعدادی از طرف مقابل داره کلیدش رو بعنوان foreign key میده بهش...

Design table

ابتدا برای هر نیاز کاربر (userview) یک مجموعه table تعریف میکنیم به اين صورت که برای هر entity یک table میگیریم و نرمال بودنشان را رعایت میکنیم:


برای نرمال 1:هرکی که هرسطرش تعدادی از چیزی رو داره اوندچیز رو میبره تو یه تیبل دیگه و کلیدخودش رو بعنوان foreign key میده به تیبل جدید(one to. Many ) اگه اون چیز خودش تیبل داشت فقط کلیدش رو بعنوان foreign key میده به تیبل اون یکی. حالا اگر طرف مقابل هم تعدادی از table مون داشت کافیست junction table درست کنیم و طرف مقابل هم مثل ما کلیدش رو بعنوان foreign key میده به junction table(many to. Many)


نرمال 2:از طرف دیگه برای اینکه نرمال 2 رو پاس کنیم فقط کافیه برای همه table هامون فقط یک ستون کلید بگذاریم نه ترکیبی


برای نرمال 3:اگه دیدی بعضی از ستونهای یکی از table هات به هم وابسته هستن یعنی entity رو درست نگرفتی و باید اونها جدا شن برن تو یک table دیگه

Design table

*،*هرکی که هر رکوردش تعدادی از یه چیز(ها) ی رو داره یا باهاشون ارتباط داره***


اون چیز(ها) رو میبری تو تیبل دیگه و کلید رو بعنوان foreign key میدی بهش

برای نرمال 2

کافیه نرمال 1 باشه و کلیدش فقط یک ستون باشه(کلید ترکیبی استفاده نشه)

Many to Many

2 (one to many)


Products and orders => many to many


Example:


Each product many orders and each order many products :


Each product many orderdetails


Each order many orderdetails

Alias

استفاده اصلی برای حالت alias table است که برای join استفاده میشه و کار رو راحت میکنهو بهتر اینه که از as استفاده بشه

Cast

کست این as این

Naming convention

Table name:


Customer(s)


PK:


CustomerId


Columms:


FirstName, LastName



از space هم استفاده نشود

Count

Select count(distinct feetype) from...

خلاصه join

اگه کاستمر هایی که اردر ندارن رو هم میخای left join استفاده کن اگه نه کلا inner join

Create view as select

With ctename as parantez select


Create procedure name


@i int


As begin end

Insert

Insert into values


Insert into select


نتیجه


Select into from



فرقشون اینه که تو insert جدول وجود داره از قبل و توش میریزیم. ولی توی نتیجه select into from


نتیجه select رو میریزه تو یه تیبل اکثرا temp که از قبل هم وجود نداره

Insert into select into

اذون مغربش با من

Insert update o delete

اول select اشو بزن (باید به شکل سلکت ستاره دربیاد)

داده های بزرگ( عکس صدا ویدئو و تکست. بزرگ)

Varchar(nlmax) navarchar(max) , varbinary(max)

Sql

ففط if و while داره و for نداره

Reading a record into a set of variables

طراحی جدول

هرکی که تعدادی از دیگری داره کلیدش رو بعنوان foreign key میده و خودش یه لیست نگه میداره(تو سی شارپ) یعنی در عمل تو تیبل هیچ اثری نمیبینی

Dapper

Query<> va executeScalar

Where exists

Where exists


(


Where in.in = un.un


)

Union all is better than union

اوه مطمئنی دوتا کوئری باهم مشترک نیستند بهتره union all استفاده کنی که کار اصافه چک کردن duplicate ها توسط sql تو حالت union رو نداشته باشی

insert

insert into select


insert into values

Insert o update o delete

اول سلکتش رو بزن


برای insert


Inser into..


Selectet


برای delete( دیلیت دی)


Select * from d..


Delete d from d...


برای آپدیت هم (آپدیت دی)

***هرکی که کلیدش رو بعنوان foreign key داده


بعبارتی دیگه هرکه تعدادی از دیگری داره(تعریف بالایی راحتتره)

بذار left


Salesorderheader left join sales orderdetail


Product left join salesorderdetail


پردواکت کلیدش رو بعنوان foreign key داده به orderdetail

اولین تعریف بدرد one to many میخوره مثال اول


دومی بدرد many to many مثال دوم

Seek

**سیک زدن بهتره! انگار که از روی ایندکس های کتاب مستقیم جوابتو بگیری و تو خود کتاب رو نگاه نکنی

Best practices for foreign key

Is that define an index on the foreign keys

حواست به not null باشه

Not in (null tolid nakone)

برای مقایسه performance دوتا query در execution plan

Hover over select


And check


"estimated subtree cost"

Query بهینه تر

Subtree cost o


Logical read


کمتر

set statistics io on;

میتونی باهاش logical read رو بررسی کنی برای performance

Row_number() over(partition by o order by)


اینا کلا این شکلی هستن که انگار یه ستون میچسبونی بغل جدولت

حتی میتونی count و sum این شکلی هم داشته باشی و با جزئیات count و sum بددی


Sum(s.totaldue) over(partition by s. Customerid)