คราวนี้จะไม่เขียนเรื่อง Algorithm แต่จะเขียนเรื่องการ Query ใน Sql server เนื่องจากผมต้องการเขียนเก็บไว้เป็นความรู้ เป็นความทรงจำจะได้ไม่ต้อง พิมพ์ถาม Google ในเวลาที่จำไม่ได้
Select
การ Select ทุก column
SELECT * FROM table_name;
การ Select บาง column
SELECT column_name,column_name
FROM table_name;
การ Select บาง column แบบมีเงื่อนไข
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
การ Select แบบเรียงลำดับ
SELECT column_name, column_name
FROM table_name
ORDER BY column_name ASC|DESC, column_name ASC|DESC;
Group by
การ Select โดยใช้ Group by
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name, column_name,... ;
การ Select โดยใช้ Group by แบบ มีเงื่อนไข
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name, column_name,...
HAVING aggregate_function(column_name) operator value;
Insert
การ Insert ข้อมูลทุก Column
INSERT INTO table_name
VALUES (value1,value2,value3,...);
การ Insert ข้อมูลบาง Column
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
Update
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
Delete
การ Delete Row
DELETE FROM table_name
WHERE some_column=some_value;
Join inner join
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
left join
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
right join
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
full join
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
Union
Union คือการนำเอาข้อมูลในตาราง 2 ตารางมาต่อข้างใต้ Table เรื่อยๆ
การ Union เฉพาะค่าข้อมูลที่ไม่ซ้ำกัน
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
การ Union โดยไม่สนใจว่าข้อมูลซ้ำหรือไม่
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
Select Into
Select Into คือการ select ข้อมูลจาก Table แล้วไป insert ใส่ Table ใหม่ (จะสร้าง Table ใหม่เอง)
SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1;
WHERE column_name operator value;
Insert Into Select
Insert Into Select คือการ select ข้อมูลจาก Table แล้วไป insert Table อีก Table หนึ่งที่มีการสร้างไว้อยู่แล้ว
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
WHERE column_name operator value;
Insert ด้วยเงื่อนไข
INSERT INTO EmailsRecebidos (De, Assunto, Data)
VALUES (@_DE, @_ASSUNTO, @_DATA)
WHERE NOT EXISTS ( SELECT * FROM EmailsRecebidos
WHERE De = @_DE
AND Assunto = @_ASSUNTO
AND Data = @_DATA);
Function
GETDATE()
คือการเอาเวลาปัจจุบัน จาก Sql server
Substring(start,count)
คือการเอาข้อความจากตำแหน่ง Start จำนวน count ตัวอักษร (ใน Sql server ตำแหน่ง Start จะเริ่มต้นด้วย 0)
AVG(column_name)
คือการเฉลี่ยค่าใน Column ที่กำหนด
SUM(column_name)
คือการรวมค่าใน Column ที่กำหนด
ROUND(column_name,decimals)
คือการปัดเศษทศนิยม ถ้าน้อย กว่า 5 ให้ปัดลง มากกว่าเท่ากับ 5 ให้ปัดขึ้น
column_name คือ column ที่ต้องการปัดเศษ
decimals คือ จำนวนทศนิยมที่จะ return ถ้าใส่ค่าเป็น 0 จะ return เป็นจำนวนเต็ม ,ถ้าเป็น 1 จะ return เป็นทศนิยม 1 ตำแหน่ง , 2 เป็น 2 ตำแหน่ง, 3 เป็น 3 ตำแหน่ง,...
update from multi Table
ถ้าเรามี 2 table แล้วต้องเอาค่าอีก table1 มา update ใส่ table2 เราจะช้คำสั่งดังนี้
update t1 set t1.column_name = value1, t1.column_name = value
FROM table_name1 t1
LEFT JOIN table_name2 t2
ON t1.key = t2.key
Case
คือ การมีเงื่อนไขคล้ายๆ ใช้ else if ใน sql จะใช้คำสั่งดังนี้
update table_name set column_name = case
When
column_name operator value then new_value
When
column_name operator value then new_value
When
column_name operator value then new_value
When
column_name operator value then new_value
...
else
new_value
end
WHERE some_column=some_value;
ถ้าเงื่อนไขใน When เป็นจริง ค่าใหม่เป็น new_value
ถ้าไม่เข้าเงื่อนไขใดเลย(คือไม่เข้า When ใดเลย) จะใช้ค่าใน else แทน
While
DECLARE @cnt INT = 0;
WHILE @cnt < 24
BEGIN
SET
@cnt = @cnt + 1;
END;
decrae
คือ การประกาศตัวแปร ซึงเป็น Table จะใช้คำสั่งดังนี้
declare @table_name TABLE(
column_name column_type,
column_name column_typr,
...
)
Example
declare @TEMP_TMC_FEED TABLE(
TMC nvarchar(9),
COLOR float
)
Store procedure
use TrafficSpatial
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE procedure_name
AS
BEGIN
SET NOCOUNT OFF;
END
GO
การ Reset Auto Number ให้เริ่มค่า 1 ใหม่
DBCC CHECKIDENT (mytable, RESEED, 0)
เทคนิค การ Clear Connection แล้วทำการแก้ไขชื่อ Table
ALTER DATABASE [LOG_HISTORICAL]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_rename 'LogAuthen', 'LogAuthenOLD';
GO
ALTER DATABASE [LOG_HISTORICAL]
SET MULTI_USER WITH ROLLBACK IMMEDIATE;
คำสั่ง Sql การสร้าง Table
CREATE TABLE [
tablename](
[No] [int] IDENTITY(1,1) NOT NULL,
[CustomerName] [nvarchar](50) NULL,
[Area] [nvarchar](50) NULL,
[SALARY] [int] NULL,
) ON [PRIMARY]
การ Drop Table
DROP TABLE [
schema].[
tablename]
การ Drop หลาย Table
USE [
databasename]
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += '
DROP TABLE '
+ QUOTENAME(s.name)
+ '.' + QUOTENAME(t.name) + ';'
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
WHERE t.name LIKE '2018_07_1%';
PRINT @sql;
EXEC sp_executesql @sql;
reference
http://www.w3schools.com/sql/default.asp