Posted by : Unknown Saturday, July 11, 2015

1. Variable Declaration

អញ្ញាត្តិនៅក្នុង SQL Server ក៏មិនមានអីខុសពីភាសា Programming ផ្សេងៗដែរ គឺយើងត្រូវមាន Keyword ឬ Syntax សម្រាប់បង្កើត ។
Syntax: Declare @Var_Name [as] DataType=Value;
ឧទាហរណ៍
DECLARE @iVariable INT, @vVariable VARCHAR(100), @dDateTime DATETIME
SET @iVariable = 1
SET @vVariable = 'myvar'
SET @dDateTime = GETDATE()
SELECT @iVariable iVar, @vVariable vVar, @dDateTime dDT
GO
ឬ
DECLARE @iVariable INT = 1, @vVariable VARCHAR(100) = 'myvar', @dDateTime DATETIME = GETDATE()
SELECT @iVariable iVar, @vVariable vVar, @dDateTime dDT
GO

2. Operator នៅក្នុង SQL Server

 
Arithmetic Operator
+ បូក
- ដក
* គុណ
/ ចែក
% ចែកយកសំណល់
Assignment Operator (=)
DECLARE @MyCounter INT;
SET @MyCounter = 1; 

Comparison Operator 
 = ស្មើនឹង
 > ធំជាង
 < តូចជាង
 >= ធំជាងឬស្មើ
 <= តូចជាងឬស្មើ
 <> មិនស្មើនឹង
 != មិនស្មើនឹង (not ISO standard)
 !< មិនតូចជាង (not ISO Standard)
 !> មិនធំជាង (not ISO Standard)

Compound Operator
 += សម្រាប់បូកបន្ថែមនឹងខ្លួនឯង
 -= សម្រាប់ដកខ្លួនឯងនឹងតម្លៃផ្សេងទៀត
 *= សម្រាប់គុណបន្ថែមនឹងខ្លួនឯង
 /= សម្រាប់ខ្លួនឯងចែកនឹងតម្លៃផ្សេងទៀត
 %= សម្រាប់ខ្លួនឯងចែកយកសំណល់នឹងតម្លៃផ្សេងទៀត

Logical Operators
 AND សម្រាប់ភ្ជាប់លក្ខខណ្ឌពីរ ឬ ច្រើនបញ្ចូលគ្នា ។
 ANY ៖ ប្រសិនបើ subquery របស់អ្នកផ្តល់មកវិញនូវ Scalar Value, អ្នកប្រើ comparison operator ។
  SELECT e.ID,e.name FROM Employee e
  WHERE e.salary > ANY (SELECT average Salary FROM job)
 BETWEEN .. and ..  សម្រាប់កំណត់ចន្លោះតម្លៃណាមួយ ។
 IN សម្រាប់ប្រៀបធៀបតម្លៃច្រើនវាប្រហាក់ប្រហែលនឹង Or ដែរ ។
 LIKE  សម្រាប់ប្រៀបធៀបទិន្នន័យដែលមានលក្ខខណ្ឌស្រដៀងហើយវាអាស្រ័យទៅតាម Wild Cart Operator ។
 NOT សម្រាប់កំណត់ឱ្យវាផ្ទុយពីលក្ខខណ្ឌដែលយើងចង់ប្រៀបធៀប ។
 OR សម្រាប់ជម្រើសក្នុងការប្រៀបធៀប ។



3. Control Structure 3.1 If Statement ខាងក្រោមនេះជា Syntax របស់ IF Statement IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ] ឧទាហរណ៍៖ Declare @Result float=67 If @Result>=50 Print 'Passed' Else Print 'Fail' 3.2 Case When គេប្រើ Case When សម្រាប់សិក្សាលក្ខខណ្ឌដែរតែវាអាចផ្តល់មកវិញនូវតម្លៃមួយក្នុងចំណោមតម្លៃជាច្រើនដែលយើងបានដាក់លក្ខខណ្ឌ ។ Syntax: - Simple CASE expression:  CASE input_expression      WHEN when_expression THEN result_expression [ ...n ]      [ ELSE else_result_expression ] END - Searched CASE expression: CASE      WHEN Boolean_expression THEN result_expression [ ...n ]      [ ELSE else_result_expression ] END ឧទាហរណ៍ ៖ ប្រើជាមួយ Select Statement SELECT ProductNumber, Name, "Price Range" = CASE WHEN ListPrice = 0 THEN 'Mfg item - not for resale' WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250' WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000' ELSE 'Over $1000' END FROM Production.Product ORDER BY ProductNumber ; ប្រើជាមួយ Order By SELECT BusinessEntityID, SalariedFlag FROM Employee ORDER BY CASE SalariedFlag WHEN 1 THEN BusinessEntityID END DESC ,CASE WHEN SalariedFlag = 0 THEN BusinessEntityID END; 3.3 While Statement នៅក្នុង SQL Server គេប្រើ Loop ដើម្បីឱ្យសកម្មភាពមួយ ឬ Statement មួយធ្វើការដដែល ទៅតាមលក្ខខណ្ឌដែលយើងចង់បាន ។ Syntax: WHILE Boolean_expression       {sql_statement | statement_block | BREAK | CONTINUE} ឧទាហរណ៍ WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300 BEGIN UPDATE Production.Product SET ListPrice = ListPrice * 2 SELECT MAX(ListPrice) FROM Production.Product IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 BREAK ELSE CONTINUE END PRINT 'Too much for the market to bear'; 4. Try … Catch យើងប្រើ Try Catch ដើម្បីធ្វើបង្ហាញការ Error ជា Message ឬ លេខនៃការ Error ហើយទប់ស្កាត់នូវការបង្ហាញនូវ Message ដែលមានភាពរញ៉េរញ៉ៃ ។ Try … Catch BEGIN TRY { sql_statement | statement_block } END TRY BEGIN CATCH [ { sql_statement | statement_block } ] END CATCH [ ; ] ERROR_NUMBER() Returns លេខដែលតំនាងឱ្យការ Error នោះ។ ERROR_SEVERITY() Returns The Severity. ERROR_STATE() Returns លេខដែលតំនាងឱ្យការ Error នោះ។ ERROR_PROCEDURE() Returns ឈ្មោះ Stored Procedure ឬ Trigger ពេលដែលមាន Error ។ ERROR_LINE() Returns ទីតាំងនៃ Line ដែលបណ្តាលឱ្យ Error នោះ។ ERROR_MESSAGE() Returns អត្ថន័យដែល Error នោះ ព្រមទាំងតម្លៃលេខនៃការ Error នោះដែរ ។ 5. Wait For ឧទាហរណ៍៖ ខាងក្រោមនេះជាឧទាហរណ៍ដែលកំណត់ឱ្យ Stored Procedure ធ្វើការនៅម៉ៅង ២២:២០ នាទី ។ USE msdb; EXECUTE sp_add_job @job_name = 'TestJob'; BEGIN WAITFOR TIME '22:20'; EXECUTE sp_update_job @job_name = 'TestJob', @new_name = 'UpdatedJob'; END; ខាងក្រោមនេះជាឧទាហរណ៍ដែលកំនត់ឱ្យ Stored Procedure ធ្វើការនៅ ២ ម៉ោងក្រោយ ។ BEGIN WAITFOR DELAY '02:00'; EXECUTE sp_helpdb; END; 6. Sequence Sequence ជាលក្ខណៈថ្មីមួយរបស់ SQL Server ដែលមាននាទីសម្រាប់ធ្វើការកំណត់នូវ Auto Number ណាមួយដែលអ្នកចង់បាន នៅក្នុង SQL server 2012 អ្នកអាចធ្វើការបង្កើត Sequence បាន តាមទម្រង់ដូចខាងក្រោម ៖ Syntax: CREATE SEQUENCE sequence_name START With -- ជាចំណុចចាប់ផ្តើមរបស់ Sequence INCREMENT by -- សម្រាប់កំណត់ចំនួននៃការកើន MINVALUE -- តម្លៃតូចបំផុតនៃ Sequence MAXVALUE -- តម្លៃធំបំផុតនៃ Sequence CYCLE -- សម្រាប់កំណត់ឱ្យវាត្រឡប់មកសារដើមវិញនៅពេលតម្លៃ នៃ Sequence កើនដល់ Maxvalue CACHE; ឧទាហរណ៍ ៖ ខាងក្រោមនេះជាបង្កើត Sequence ដែលមានឈ្មោះថា CountBy1 ដែលចាប់ផ្តើមពីលេខ 1 និង កើនឡើងម្តងមួយ ។ CREATE SEQUENCE CountBy1 START WITH 1 INCREMENT BY 1 ; ប្រសិនបើអ្នកចង់បង្ហាញព័ត៌មានរបស់ Sequence តាមរយៈ Query ដូចខាងក្រោម SELECT * FROM sys.sequences WHERE name = 'CountBy1‘
ប្រសិនបើអ្នកបង្កើត Sequence ដោយយក Default Value នោះអ្នកនឹងបាន ប្រសិនបើអ្នកបង្កើត Sequence ដោយយក Default Value នោះអ្នកនឹងបាន CREATE SEQUENCE Test.TestSequence ;
សម្រាប់ការហៅ Sequence ដែលយើងបានបង្កើតមកប្រើនៅក្នុង SQL Statement Alter Sequence CountBy1 Restart with 1 DECLARE @myvar1 bigint = NEXT VALUE FOR CountBy1 DECLARE @myvar2 bigint ; DECLARE @myvar3 bigint ; SET @myvar2 = NEXT VALUE FOR CountBy1 ; SELECT @myvar3 = NEXT VALUE FOR CountBy1 ; SELECT @myvar1 AS myvar1, @myvar2 AS myvar2, @myvar3 AS myvar3 ;
ការហៅ Sequence ប្រើនៅក្នុង Table និងបង្កើត Auto Number ជាមួយអក្សរនៅក្នុង SQL Server - បង្កើត Table មួយដែលមាន 2 Fields CREATE TABLE MyTable ( IDColumn nvarchar(25) PRIMARY KEY,name varchar(25) NOT NULL) ; - បង្កើត Seuqence មួយឈ្មោះ CounterSeq CREATE SEQUENCE CounterSeq AS int START WITH 1 INCREMENT BY 1 ; - ធ្វើការកែប្រែ Table ដែលបានបង្កើតខាងលើដោយបន្ថែម Auto Number ទៅលើ Fields IDColumn ។ ALTER TABLE MyTable ADD DEFAULT N'AdvWorks_' + CAST(NEXT VALUE FOR CounterSeq AS NVARCHAR(20)) FOR IDColumn; - ធ្វើការបញ្ចូលទិន្នន័យទៅក្នុង Table MyTable INSERT MyTable (name) VALUES ('Larry') ; - ទាញទិន្នន័យមកបង្ហាញ SELECT * FROM MyTable;
7. OFFSET និង FETCH សម្រាប់ទាញទិន្នន័យចេញពី Database និងបង្ហាញនៅលើ GridView ទៅតាម Current Page ។ OFFSET មាននាទីសម្រាប់កំណត់ចំណុចចាប់ផ្តើមនៃ Record ដែលយើងចង់បង្ហាញ ។ FECTH មាននាទីសម្រាប់កំណត់ចំនួន Records ដែលយើងត្រូវយកមកបង្ហាញ ។ Syntax: SELECT * FROM TableName ORDER BY ID OFFSET Start ROWS FETCH NEXT Count ROWS ONLY; ឧទារហណ៍ ៖ SELECT * FROM tblBodyCompares ORDER BY BodyID OFFSET 0 ROWS FETCH NEXT 15 ROWS ONLY; ខាងក្រោមនេះយើងធ្វើការបង្កើត Variable ចំនួនពីរសម្រាប់ បោះតម្លៃទៅឱ្យ OFFSET និង Fetch Next DECLARE @OffsetRows tinyint = 0, @FetchRows tinyint = 20; SELECT TransactionID, ProductID, TransactionDate, Quantity, ActualCost FROM TransactionHistory ORDER BY TransactionDate DESC OFFSET @OffsetRows ROWS FETCH NEXT @FetchRows ROWS ONLY; 8. ROW_NUMBER() សម្រាប់ធ្វើការ Order នៅលេខរៀងសារជាថ្មីដែល Order ទៅតាម Field ណាមួយ Select ROW_NUMBER() Over(Order by BodyID) as [No],* From tblBodyCompares
សម្រាប់ធ្វើការទាញទិន្នន័យចេញពី Database ទៅតាម Limit Row ដែល User បានកំណត់នៅក្នុងចន្លោះណាមួយ ។ SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY BodyID) AS sequencenumber, * FROM tblBodyCompares) AS TempTable WHERE sequencenumber > 0 and sequencenumber <= 10

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Khmer Knowledge - Skyblue - Powered by Blogger - Designed by Johanes Djogan -