วันศุกร์ที่ 26 มกราคม พ.ศ. 2561

Database System - work 3 learn SQL

ศึกษา เกี่ยวกับ SQL จาก


โดย ได้เรียนรู้เพิ่มเติมดังนี้

คำสั่ง


SELECT * FROM  TABLENAME;

* แทน Column ทั้งหมด หรือสามารถระบุเป็นชื่อ Column ก็ได้

ส่วน TABLE NAME เป็นชื่อ table ใน ฐานข้อมูลนั้น

ผลลัพธ์จะ หมายถึง ข้อมูลใน column ทั้งหมดใน ตารางนั้นๆ

..............................................................................

จาก SELECT หากต้องการเลือกหลายๆ Column นั้นทำได้โดยการใช้ '  ,  ' คั่นไว้เช่น
SELECT A, B , C FROM TABLE NAME



SELECT DISTINCT A FROM TABLENAME

DISTINCT จะทำให้เราเลือกเฉพาะ ข้อมูลที่ไม่ซ้ำกันมาเท่านั้น 

SELECT COUNT(DISTINCT Country) FROM Customers;

COUNT( X  ) จะนับข้อมูลที่มีอยู่ใน ( ) แล้วคืนค่าเป็นตัวเลขกลับมา แต่ในตัวอย่างนี้จะได้อยู่ใน Column count(distinct country), row 1

แต่มีวิธีที่ทำให้สามารถ กำหนดชื่อ column ได้ เช่น

SELECT Count(*) AS DistinctCountries
FROM (SELECT DISTINCT Country FROM Customers);

โดยจะทำการกรองข้อมูลมาก่อน แล้วค่อยมานับอีกที จะได้ข้อมูลเหมือนด้านบนแต่ได้ ชื่อ column เป็น DistinctCountries แทน

                           ..............................................................................



SELECT * FROM Customers

WHERE CustomerID=1;


การใช้ WHERE ในการเลือกข้อมูลที่ตรงตามเงื่อนไข โดยในที่นี้กำหนดให้ CustomerID ต้องมีเลขเท่ากับ 1 
และสามารถมีหลายเงื่อนไขได้เช่น


SELECT * FROM Customers

WHERE NOT Country='Germany' AND NOT Country='USA';

                           ..............................................................................


SELECT * FROM Customers

ORDER BY Country ASC, CustomerName DESC;


สามารถกำหนดได้ว่าจะให้ เรียงตามลำดับของ column ไหน รูปแบบไหน ASC จะเรียงตามปกติ น้อยไปมาก ส่วน DESC จะกลับกันคือมากไปน้อย และ ถ้ามีการเรียงหลาย Column จะเรียงจากซ้ายไปขวาก่อน คือเรียง Country ก่อนและจึงมาเรียงด้วย CustomerName อีกที (ภายใน Country เดียวกัน) 

                           ..............................................................................


INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)

VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');

ตัวอย่างการเพิ่มข้อมูลลงใน Table customers โดยจะใช้คำสั่ง INSERT INTO + values โดย ในวงเล็บหลังชื่อ table จะเป็นลำดับของ column และหลัง value จะเป็น ค่าใน column ที่ตรงกัน

                           ..............................................................................
UPDATE Customers
SET ContactName='Juan';

จะทำการอัพเดทค่าใน table customers column contactname ทั้งหมดเป็น Juan

UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

สามารถกำหนดเฉพาะที่ได้โดยใช้ WHERE
                           ..............................................................................


DELETE FROM Customers
WHERE CustomerName='Alfreds Futterkiste';

การลบ ข้อมูล จากตาราง 

หากไม่มี WHERE จะลบทั้งหมด
                           ..............................................................................
SELECT TOP 3 * FROM Customers;
เลือก สูงสุด 3 แถว

SELECT * FROM Customers LIMIT 3;
จำนวนข้อมูลสูงสุด 3

SELECT TOP 50 PERCENT * FROM Customers;
สูงสุด 50% แรก (ข้อมูล ครึ่งนึงด้านบน)
                           ..............................................................................



SELECT MIN(Price) AS SmallestPrice
FROM Products; 

SELECT MAX(Price) AS LargestPrice

FROM Products; 

หาค่าสูงสุดและต่ำสุด

                           ..............................................................................

SELECT COUNT(ProductID)

FROM Products;

SELECT AVG(Price)
FROM Products;

SELECT SUM(Quantity)
FROM OrderDetails;

หาค่าจำนวน ค่าเฉลี่ย และค่าผลรวม 
     
                           ..............................................................................


SELECT * FROM Customers
WHERE CustomerName LIKE 'a_%_%';

เครื่องหมาย _ หมายถึงตัวอักษรใดๆ % ถ้า a% หมายถึง นำหน้าด้วย a ถ้า %a หมายถึงลงท้ายด้วย และ %a% มี a ในตำแหน่งใดๆ จากตัวอย่างข้างบนหมายถึง นำหน้าด้วย a และมีตัวอักษรอย่างน้อย 3 ตัว

% wildcard

SELECT * FROM Customers
WHERE City LIKE '[bsp]%';

SELECT * FROM Customers
WHERE City LIKE '[!a-c]%';

จากรูปแบบนี้ อันแรกจะอะไรก็ได้ที่ขึ้นต้นด้วย bsp ส่วนอันแรก อะไรก็ได้ที่ไม่ได้ขึ้นต้นด้วย a b c

                           ..............................................................................

SELECT * FROM Customers

WHERE Country IN ('Germany', 'France', 'UK');

SELECT * FROM Customers

WHERE Country IN (SELECT Country FROM Suppliers);


เลือก จาก ในเมืองที่กำหนดไว้เท่านั้น (โดยใช้ IN ในเงื่อนไข)

SELECT * FROM Orders
WHERE OrderDate BETWEEN #07/04/1996# AND #07/09/1996#;

SELECT * FROM Products
WHERE (Price BETWEEN 10 AND 20)
AND NOT CategoryID IN (1,2,3);

การใช้เงื่อนไข BETWEEN เพื่อเลือกช่วง

                           ..............................................................................
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o

WHERE c.CustomerName="Around the Horn" AND c.CustomerID=o.CustomerID;


การใช้ชื่อชัวคราว

                           ..............................................................................

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers

ON Orders.CustomerID=Customers.CustomerID;
เช่นการหา รายการสั่ง ของลูกค้าที่มี id ตรงกันโดย order จะมี pk ref to customerID ของอีกตารางหนึ่ง
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

for 3 table join 

                           ..............................................................................

SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION 
SELECT City, Country FROM Suppliers
WHERE Country='Germany'

ORDER BY City;

SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'

ORDER BY City;

UNION จะทำการรวมข้อมูล จาก 2 SELECT เข้าด้วยกัน ถ้าไม่มี ALL จะรวมแบบ นำข้อมูลที่ไม่ซ้ำกันเท่านั้นแต่ถ้า ALL จะเพิ่มส่วนที่ซ้ำกันเข้าไปด้วย


                           ..............................................................................

SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

ผลลัพธ์ จะเป็นการ นับจำนวน ว่ามีลูกค้าในเมืองใดๆกี่คน         


SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5

ORDER BY COUNT(CustomerID) DESC;
ทำหน้าที่คล้ายกับ WHERE แต่ว่าสามารถใช้กับ function ได้


                           ..............................................................................


SELECT SupplierName
FROM Suppliers

WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId = Suppliers.supplierId AND Price < 20);
EXISTS return ture ถ้า ในเงื่อนไข มีค่าที่ตรงกับที่กำหนดไว้ ใช้ในการทดสอบได้ 

                           ..............................................................................

SELECT ProductName
FROM Products

WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99);

ANY return ture ถ้ามีเงื่อนไขตรงเพียงชุดเดียวก็ได้

SELECT ProductName
FROM Products
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

ALL return ture ถ้าทั้งหมดตรงกับเงื่อนไข

                           ..............................................................................
SELECT column1column2column3, ...
INTO newtable [IN externaldb]
FROM oldtableWHERE condition;


copy จาก table หนึ่งไปอีก table หนึ่ง

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';

การเพิ่มข้อมูล จากต่างตาราง และมีเงื่อนไข
                           ..............................................................................
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products


ฟังก์ชั่นเช็คถ้า null return 0

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products


ฟังก์ชั่นเช็คถ้า null return 0

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products


การใช้งาน comment

/*Select all the columns
of all the records
in the Customers table:*/

SELECT * FROM Customers WHERE (CustomerName LIKE 'L%'
OR CustomerName LIKE 'R%' /*OR CustomerName LIKE 'S%'
OR CustomerName LIKE 'T%'*/
 OR CustomerName LIKE 'W%')
AND Country='USA'
ORDER BY CustomerName;

SELECT * FROM Customers -- WHERE City='Berlin';


ใช้เครื่องหมาย /* ......... */  สำหรับหลายบรรทัด และ -- สำหรับบรรทัดเดียว
                           ..............................................................................


เกี่ยวกับ SQL




SQL is an ANSI (American National Standards Institute) standard



you will need: (for web site)
  An RDBMS database program (i.e. MS Access, SQL Server, MySQL)
  To use a server-side scripting language, like PHP or ASP
  To use SQL to get the data you want
  To use HTML / CSS to style the page

SQL keywords are NOT case sensitive ( select = SELECT )


NULL = EMPTY OR NOT VALUES


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

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