วันเสาร์ที่ 11 กุมภาพันธ์ พ.ศ. 2560

Sql Server

            คราวนี้จะไม่เขียนเรื่อง 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_namecolumn_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





ไม่มีความคิดเห็น:

แสดงความคิดเห็น