วันพุธที่ 1 พฤษภาคม พ.ศ. 2562

Mini Project Group 3 : Web app: BTS Helper

Web application: BTS Helper 


------------------------------ 6 มีนา 2019 ----------------------------------

Propose a project


What’s the problem you’re trying to solve?
  1. ไม่ทราบว่ารอบๆสถานีมีสถานที่อะไรบ้าง
  2. กะเวลาคำนวนเดินทางยาก
  3. ไม่ทราบว่ารถเริ่ม และหมดกี่โมง
  4. ไม่ทราบราคาเที่ยวรถ

What are the benefits for the user ?

  1. ช่วยในการวางแผนการเดินทางแก่ผู้ใช้
  2. เพื่อให้ผู้ใช้สามารถค้นหาสถานที่ต่างๆโดยรอบสถานีได้

Feature

  1. แสดงสถานที่รอบๆสถานี
  2. บอกราคาของเที่ยวรถในการเดินทาง
  3. บอกเวลารถไฟขบวนแรกและ สุดท้ายในแต่ละสถานี
  4. บอกความถี่ของขบวนรถไฟที่วิ่ง

ER - Diagram



Relational Schemas



Example queries

Case: ต้องการทราบราคาจากสถานี ทองหล่อ ไป พญาไท

SELECT id_station, name_station FROM STATION
WHERE name_station IN ( 'Thonglor', 'Phaya Thai') ;

Case: ต้องการทราบเวลารถไฟขบวนแรกจากสถานี หมอชิต 

SELECT id_station, name_station,  FROM STATION
WHERE name_station = 'Thonglor' ORDER BY id_station;

Example Index

สามารถสร้างได้โดยคำสั่ง

CREATE INDEX [new index name] ON [table name]([column name])

ตัวอย่าง 

CREATE INDEX station_index ON STATION(name_station);

What are the resources
- Nodejs 
- MySQL

------------------------------ 20 มีนา 2019 ----------------------------------

ER - Diagram




Relational Schemas




Update your progress 

  1. ได้ทดลองใช้งาน MySQL ทั้งสองรูปแบบคือ Work bench ที่เป็น GUI ให้ User ใช้งาน และ แบบ cmd ที่ไม่มีรูปแบบ GUI ให้ดู ซึ่งการใช้งานแต่ละแบบมีข้อดีและเสีย แล้วแต่ความชอบของ User  

รูปที่ 1 MySQL Work bench



รูปที่ 2 MySQL cmd

   2. ได้ทำการสร้าง Database ขึ้นมา และสร้าง Table ต่างๆใส่ไว้ใน Database ที่เราสร้างขึ้นมา ซึ่งเราสามารถพิมพ์คำสั่งเอง หรือ จะรัน script ใน cmd, Work bench ก็ได้


รูปที่ 3 สร้าง Database 


รูปที่ 4 สร้าง Table ขึ้นใน Database 


รูปที่ 5 script การสร้าง Table ใน Database ของเรา


    3. ทำการเพิ่มข้อมูลลงไปใน Table ต่างๆ ซึ่งจะเหมือนตอนที่เราสร้าง table นั่นคือเราสามารถพิมพ์คำสั่งเอง หรือ รันจาก  script ก็ได้ 




รูปที่ 6 INSERT ข้อมูลลงใน Table ด้วยการพิมพ์คำสั่งใน cmd




รูปที่ 7 INSERT ข้อมูลลงใน Table ด้วยการรัน script


    4. เนื่องจากการ INSERT ข้อมูลที่มีจำนวนมาก ถ้าเรามานั่งพิมพ์ที่ละคำสั่งจะทำให้เสียเวลา เราจึงได้ใส่ข้อมูลลงในไฟล์ csv แล้วใช้ node.js ดึงข้อมูลจากไฟล์ csv แล้ว INSERT ลง database อัตโนมัติ


รูปที่ 8 Code node.js ดึงข้อมูลจากไฟล์ csv 


รูปที่ 9 Code node.js INSERT ข้อมูลที่ได้จาก csv ลง database

 

รูปที่ 10 ทดลอง SELECT ข้อมูลใน table STATION ออกมาดู


Problem

  • Multivalued attributes ไม่แน่ใจต้องทำแบบไหน
  • ข้อมูลมีจำนวนหลากหลาย ต้องคุยกันในกลุ่มว่าจะเอาอันไหนบ้าง เช่น สถานที่โดยรอบ อนุสาวรีย์ 


------------------------------ 28 มีนา 2019 ----------------------------------


Update your progress


   1. Create and Connect database ในครั้งที่แล้วเราได้ทำการสร้าง Database ไปแล้วครั้งนี้เราจะมาเชื่อมต่อ Database ของเราด้วย Node.js ให้เราสร้างไฟล์ connect.js ขึ้นมาเพื่อเป็นส่วนเชื่อมต่อ Database


รูปที่ 1 Code js ที่ใช้เชื่อมต่อ database

เราจะเห็นได้ว่า node.js จะให้เราใส่ host, user, password ลงไปซึ่งไม่มีความปลอดภัยเลย เราจึงได้นำเอา 
Environment variables หรือ .env
มาใช้งาน ซึ่ง .env ก็คือ Config ของเราจะเก็บในไฟล์ .env และใช้ dotenv เข้ามาช่วยในการดึงข้อมูล เพื่อให้ง่ายต่อการปรับเปลี่ยนการตั้งค่าระบบ และความปลอดภัย

เมื่อเรานำ .env มาใช้ให้เราสร้างไฟล์ .env ขึ้นมาเพื่อเก็บค่า config ต่างๆใน code js 


รูปที่ 2 Code js ที่ใช้เชื่อมต่อ database



รูปที่ 3 ไฟล์ .env ที่ใช้เก็บ config ต่างๆ

problem

Client does not support authentication protocol requested

สาเหตุมาจากการที่ MySQL ได้ทำการปรับเปลี่ยนการเข้ารหัส password ใหม่ ซึ่ง client บางตัวยังไม่สนับสนุน password hashing algorithm แบบนี้

Solution

ให้เราพิมพ์คำสั่งดังกล่าว แล้วแก้บางส่วนของคำสั่งให้ตรงกับ database ของเรา จะแก้ไขปัญหาได้


รูปที่ 4 คำสั่ง SQL


------------------------------ 28 มีนา 2019 ----------------------------------

Update your progress

Web app: BTS Helper Beta version 1

ตอนนี้ mini project เดินทางจะถึงปลายทางแล้ว ในตอนนี้ web app สามารถใช้งานได้แล้วโดยจะมีหน้า page ดังนี้


รูปที่ 1 HomePage จะมีให้เลือกว่าจะ ดูรายละเอียดสถานี หรือ คำนวนราคาตั๋วรถไฟฟ้า



รูปที่ 2 Select Station จะมีให้เลือกว่าจะ ดูรายละเอียดสถานี อะไร


รูปที่ 3 Detail Station จะบอกรายละเอียดของสถานี ที่เราเลือก


รูปที่ 4 Calculate Ticket ให้เราเลือกสถานีต้นทางและปลายทาง เพื่อคำนวนราคาตั๋วรถ


รูปที่ 5 Ticket Detail จะบอกราคาของตั๋วรถ ซึ่งในตัวอย่างจะเลือกต้นทางคือ หมอชิต ปลายทางคือ สะพานตากสิน


Code and query 

   1. หน้า index  ใช้เพื่อเลือกสถานีที่ต้องการดูรายละเอียด จะทำการ Query ดังนี้

SELECT id_station, name_station FROM station ORDER BY name_station
Query เอาข้อมูลจาก table มาแสดงผลที่หน้า index เพื่อใช้สำหรับกด click ไปหน้า detail ของ station นั้นๆ

   2. หน้า Detail หน้าที่เเสดงรายละเอียดเเต่ละสถานี จะทำการ Query ดังนี้

ลำดับแรกจะทำการ Query ชื่อสถานีจาก id_station ที่ได้รับมาก่อน
SELECT name_station FROM station WHERE id_station = ? 
จากนั้นจะทำการ Query สถานที่โดยรอบสถานีออกมา

SELECT surroundingFROM station_surroundingWHERE Station_id_station= ? 
   
   3. หน้า price_ticket  หน้าที่ใช้เพื่อเลือกสถานีไว้คำนวณราคาค่าโดยสาร จะทำการ Query ดังนี้

จะทำการ Query ชื่อสถานีออกมาใส่ใน Drop down เพื่อให้ User เลือกสถานีได้ 

SELECT id_station, order_station, name_station
FROM station
   
   4. หน้า calculate_price เเสดงราคาค่าโดยสาร จะทำการ Query ดังนี้

โดยจะทำการ Query สถานี ออกมาโดยจะเลือกจาก id_station ที่ได้รับมา ซึ่งข้อมูลนั้นจะมี order_station ซึ่งก็คือ ลำดับของสถานี ด้วย โดยมีวิธีคำนวนค่าตั๋วรถไฟฟ้าดังนี้ 

      - กรณี ที่สถานีต้นทาง และปลายทางอยู่ เส้นทางการเดินรถเดียวกัน 
เราจะนำ order_station ของสถานีต้นทาง และ ปลายทาง มาลบกัน 

      - กรณี ที่สถานีต้นทาง และปลายทางไม่ได้อยู่ เส้นทางการเดินรถเดียวกัน  
เราจะนำ order_station ของสถานีต้นทาง และ ปลายทาง มาบวกกัน 

จากนั้นจะนำผลลัพธ์มา Query ราคาของตั๋วรถออกมา ซึ่งราคาตั๋วรไฟฟ้านั้น จะมีการระบุตายตัวว่า ราคา xx คือเดินทางกี่สถานี

SELECT id_station, order_station, name_station 
FROM station 
WHERE id_station = ?


ผลการค้นหารูปภาพสำหรับ ราคาตั๋วรถไฟฟ้า bts

รูปที่ 6 ตารางราคาตั๋วรถไฟฟ้า BTS


วันอังคารที่ 30 เมษายน พ.ศ. 2562

Normalization

Normalization

  • First Normal From : 1NF
นี้คือตารางในรูปแบบ Unnormalized Form จะต้องทำให้อยู่ในรูปของ 1NF โดยสามารถทำให้อยู่ในรูปแบบ 1NF ได้โดยการกระจายข้อมูล Dlocations



  • Second normal form: 2NF

คุณสมบัติของ 2NF
1. ต้องมีคุณสมบัติของ 1NF
2. ทุก Nonprime Attribute จะต้องขึ้นกับ Prime (Primary Key) ทุกตัว

ตารางนี้มี  primary key [Customer ID, Store ID]. non-key attribute คือ [Purchase Location]. ในกรณีนี้ [Purchase Location] จะขึ้นอยู่กับ [Store ID] เท่านั้นซึ่งเป็นเพียงส่วนหนึ่งของคีย์หลัก ดังนั้นตารางนี้จึงยังไม่ใช่ second normal form.




ในการทำให้ตารางนี้เป็น second normal form เราแบ่งตารางออกเป็นสองตารางและตอนนี้เรามีดังต่อไปนี้:




  • Third Normal Form (3NF)

มีกฏเหมือนกับการทำ 2NF เช่นกันคือ
  1. ต้องอยู่ในคุณสมบัติของ 2NF 
  2. ต้องไม่มี non-key Attribute หรือ Transitive Dependency




ในตารางสามารถ [Book ID] จะสามารถกำหนด [Genre ID] และ [Genre ID] จะสามารถกำหนด [Genre Type] ดังนั้น [Book ID] จะสามารถกำหนด [Genre Type] ผ่าน [Genre ID] และมีการพึ่งพาการทำงานของ functional dependency และโครงสร้างนี้ไม่เป็นไปตาม third normal form.

ในการทำให้ตารางนี้เป็น third normal form เราแบ่งตารางออกเป็นสองดังนี้:



ขอบคุณหนังสือทั้งสองเล่ม 

  1. Database Design – 2nd Edition 

      2. Fundamentals of Database Systems




Functional Dependencies/ Update Anomalies


Functional Dependencies

            Function Dependency คือการระบุความสัมพันธ์ของแอตทิบิวต์ใน Field  ซึ่งแอตทิบิวต์ที่สามารถระบุค่าในแอตทิบิวต์อื่นๆ ได้เราจะเรียกมันว่า determimant และถ้าแอตทิบิวต์ที่ถูกระบุค่าได้จาก determinant เราจะเรียกมันว่า dependent ซึ่งในทางทฤษฏีเราจะใช้สัญญาลักษณ์ —–> เพื่อเป็นการบอกถึงการขึ้นต่อกัน

           เช่นในรูปตัวอย่างด้านล่าง เราจะเห็นได้ว่า TEXT นั้นเป็น determimant ส่วน COURSE นั้นเป็น dependent ซึ่ง TEXT สามารถระบุค่า COURSE  นับเป็น Functional Dependency เพราะเป็น Primary key ที่ใช้ระบุค่าอื่น




Update Anomalies


           หาก branch เปลี่ยนที่อยู่เช่น branch Round Hill ในรูป เราจำเป็นต้องอัปเดตแถวทั้งหมดที่อ้างถึง branch นั้น การเปลี่ยนแปลงข้อมูลที่มีอยู่อย่างไม่ถูกต้อง เรียกว่า การอัปเดตผิดปกติ



       

ขอบคุณหนังสือทั้งสองเล่ม 

  1. Database Design – 2nd Edition 

      2. Fundamentals of Database Systems




วันพฤหัสบดีที่ 21 กุมภาพันธ์ พ.ศ. 2562

SQLite on Ubuntu





SQLite เป็นโปรแกรมฐานข้อมูลที่มีขนาดเล็กมาก (ไม่ถึง 1MB)  เก็บฐานข้อมูลเป็นไฟล์โดยไม่จำเป็นต้องมีเซิร์ฟเวอร์ ทำให้ถูกใช้ในหลายๆ โปรแกรม

ในบทความนี้ขอแสดงวิธีใช้ SQLite แบบรันเป็นคำสั่ง (command line) คือรันคำสั่ง sqlite3 เพื่อเข้าใช้งาน หลายๆ OS เช่น Linux, MacOS จะติดตั้ง SQLite มาเป็นดีฟอลต์เลย เราสามารถรันคำสั่ง sqlite3 เพื่อใช้งานได้เลย
 
[unknow@cent6-dev ~]$ sqlite3
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

คำสั่งใน sqlite (ที่ไม่ใช่ SQL) จะขึ้นต้นด้วยเครื่องหมายจุด “.” หากต้องการดูคำสั่ง และวิธีการใช้ ให้พิมพ์คำสั่ง .help

sqlite> .help
.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail ON|OFF           Stop after hitting an error.  Default OFF
.databases             List names and files of attached databases
.dump ?TABLE? ...      Dump the database in an SQL text format
                         If TABLE specified, only dump tables matching
                         LIKE pattern TABLE.
.echo ON|OFF           Turn command echo on or off
.exit                  Exit this program
... (คำสั่งอื่นๆ)
 
ลองสร้างตารางแล้วลองใส่ข้อมูล ด้วย SQL


sqlite> CREATE TABLE books(
           id_book INTEGER PRIMARI KEY, 
           name_book TEXT NOT NULL, 
           author TEXT NOT NULL,
           isbn INTEGER NOT NULL UNIQUE
        ); 
sqlite> CREATE TABLE authors( 
          name_author TEXT PRIMARI KEY,
          email TEXT NOT NULL,
          phone INTEGER NOT NULL UNIQUE 
        ); 
sqlite> CREATE TABLE publishers(
          name_publisher TEXT PRIMARI KEY,
          email TEXT NOT NULL, 
          phone INTEGER NOT NULL UNIQUE
          ); 
 
sqlite> INSERT INTO books VALUES (name_book, author, isbn);
         VALUES 
         ('Database', 'Ben', 12345789);

sqlite> SELECT * FROM books ;
Database|Ben|12345789
sqlite> 
 
ถ้ารันคำสั่ง sqlite3 อย่างเดียวโดยไม่ได้ระบุไฟล์ฐานข้อมูลแบบนี้ หลังจากสร้าง table ใส่ข้อมูลแล้ว ฐานข้อมูลที่สร้างจะถูกเก็บไว้ในหน่วยความจำชั่วคราว ถ้าพิมพ์คำสั่ง .exit ออกจาก sqlite เลย ข้อมูล table ที่สร้างนี้จะหายไป เราต้อง
บันทึกฐานข้อมูลลงเป็นไฟล์ด้วยคำสั่ง .backup
 
sqlite> .backup work1.db 
 

 พิมพ์คำสั่ง .exit ออกจาก sqlite

sqlite> .exit
[unknow@cent6-dev ~]$
 
ลอง ls ดู จะมีไฟล์ test1.db ถูกสร้างขึ้นมา

[unknow@cent6-dev ~]$ ls -l work1.db
-rw-r--r--. 1 unknow users 2048 Feb 9 15:22 work1.db




วันศุกร์ที่ 8 กุมภาพันธ์ พ.ศ. 2562

SQL Tutorial

What is SQL?

      SQL หรือ Structured Query Language  เป็นภาษาในการเข้าถึง ฐานข้อมูล เราสามารถใช้งานภาษา SQL ในการทำการดึงข้อมูล จากฐานข้อมูล และมันเป็นมาตรฐานกลางที่ใช้ในระบบฐานข้อมูลต่างๆ โดยเป็นมาตรฐานของ ANSI (American National Standard Institute)


What Can SQL do?

  • ใช้ในการค้นข้อมูลในฐานข้อมูล
  • ใช้ใส่ข้อมูลเพิ่มไปยังฐานข้อมูล
  • ใช้แก้ไขข้อมูลในฐานข้อมูล
  • ใช้ลบข้อมูลที่เราไม่ต้องการออกจากฐานข้อมูล
  • ใช้สร้างฐานข้อมูลขึ้นมาใหม่
  • ใช้สร้างตาราง ในฐานข้อมูล
  • และอื่นๆ 


RDBMS

  • RDBMS ย่อมาจาก Relational Database Management System 
  • RDBMS เป็นพื้นฐานสำหรับ SQL และสำหรับระบบฐานข้อมูลที่ทันสมัยเช่น MS SQL Server, IBM DB2, Oracle, MySQL และ Microsoft Access 
  • ข้อมูลใน RDBMS ถูกเก็บไว้ในวัตถุฐานข้อมูลที่เรียกว่าตาราง ตารางคือชุดของรายการข้อมูลที่เกี่ยวข้องและประกอบด้วยคอลัมน์และแถว

 

Database Tables

     Table เป็นโครงสร้างพื้นฐานที่จะใช้ในการเก็บข้อมูล ประกอบด้วย Field ต่างๆ ที่จะกำหนดว่าจะเก็บเรื่องราวอะไรบ้าง และข้อมูลต่างๆ ที่บันทึกเข้ามาใน Table จะเรียกว่า Record
ถือเป็นโครงสร้างที่สำคัญมากๆ ในฐานข้อมูล (Database) จากรูปจะเห็นได้ว่า Table นี้ประกอบด้วย ShipperID, ShipperName, Phone


 -------------------------------   END SQL Theory  --------------------------------

 

The SQL SELECT Statement

 

      การดึงข้อมูลที่อยู่ในตาราง หรือ table กลับออกมาเพื่อใช้ตามเงือนไขที่เราระบุกัน โดยคำสั่งที่ใช้คือ SQL Select statement ซึ่งผลลัพธ์ที่ได้จะมีลักษณะเป็นข้อมูลตาราง หรือ table ที่ประกอบด้วย column และ row

SELECT Syntax 

SELECT * FROM table_name;


      เมื่อเราใส่คำสั่งนี้ลงไปจะได้ผลลัพธ์คือ จะดึงข้อมูลทุก column ของ table นั้นๆ ในตัวอย่างเราจะดึงข้อมูลทุก column ของ table customer  ก็จะใช้คำสั่ง SELECT * FROM Customers; จะได้ผลลัพธ์ดังกล่าว




 

 

SELECT Syntax

 

SELECT column1, column2, ... FROM table_name;


ถ้าเราอยากจะเห็น "เฉพาะบาง column" ของ database นั้นๆให้ใช้คำสั่งด้านบนผลลัพธ์คือ จะดึงข้อมูล"เฉพาะบาง column" ของ table นั้นๆ ในตัวอย่างเราจะดึงข้อมูล column CustomerName ของ table customer  ก็จะใช้คำสั่ง SELECT CustomerName FROM Customers; จะได้ผลลัพธ์ดังกล่าว







SELECT DISTINCT Syntax



 SELECT DISTINCT column1, column2, ... FROM table_name;


      ในบางครั้งข้อมูล column ที่เรานำมาแสดงผล อาจจะมีข้อมูลซ้ำกันบ้าง แต่ถ้าเราต้องการแสดงผลข้อมูลทุก column โดยที่แสดงผลแบบข้อมูลไม่ซ้ำกัน หรือ unique ข้อมูล
จะทำได้ด้วย keyword DISTINCT ซึ่งระบบจะทำการเอาข้อมูลที่ซ้ำออกไปให้ เช่น

 SELECT  Country FROM Customers;

ผลลัพธ์



 จะเห็นได้ว่าส่วนของ Country นั้นมีข้อมูลซ้ำกันนั้นคือ Germany และ Mexico แต่ถ้าเราใช้ คำสั่ง

SELECT DISTINCT Country  FROM Customers;

ผลลัพธ์



 จะเห็นได้ว่าข้อมูลไม่มีส่วนที่ซ้ำกัน และยังมีการจัดเรียงข้อมูลตามตัวอักษรด้วย



SELECT COUNT DISTINCT Syntax



SELECT COUNT(DISTINCT Country) FROM Customers;

      ถ้าเราต้องการนับข้อมูลเฉพาะบาง column โดยที่แสดงผลแบบข้อมูลไม่ซ้ำกันก็สามารถทำได้ด้วยคำสั่งด้านบน

ผลลัพธ์

 

 -------------------------------   END SQL Select statement   --------------------------------



 

The SQL WHERE Clause

 

      วิธีการสร้างเงือนไข ในกรณีที่ข้อมูลใน table มีจำนวนมาก และเราต้องการข้อมูลเฉพาะแถวที่เราต้องการ เราจะเพิ่มส่วนของ SQL Where Clause statement เข้ามาช่วยในการทำ select ข้อมูลจาก table

WHERE Syntax

 

SELECT column1, column2, ... FROM table_name WHERE condition

      เราสามารถนำเอา Where condition เพิ่มต่อเข้าไปที่ SQL Select statement ได้เลย เพื่อให้ข้อมูลที่แสดงถูกกรองให้เหลือเฉพาะข้อมูลที่อยู่ในเงื่อนไขที่ต้องการ เช่น ถ้าเราต้องการเฉพาะข้อมูลของ Customers ที่ Country Mexico  คำสั่งคือ 

SELECT * FROM Customers
WHERE Country='Mexico';


ผลลัพธ์


 

 

Text fields VS Numeric fields 

      บางครั้งเราอาจจะมีเงื่อนไขที่ต้องค้นหาจากตัวเลขเราไม่จำเป็นที่จะต้องใส่เครื่องหมาย quotes (' ') เช่น เราต้องการหา customers คนที่ 1 

SELECT * FROM Customers WHERE CustomerID=1;

ผลลัพธ์



 

Operators in The WHERE Clause

      ในส่วนของ condition เราสามารถนำเอา SQL Operator เช่น =, >, <, LIKE, IN มาสร้างเป็น SQL Expression เพื่อเปรียบเทียบข้อมูลใน table และ ข้อมูลที่เราต้องการได้ เช่น  เราต้องการดึงข้อมูล ProductID, ProductName, SupplierID, CategoryID, Unit, Price จาก table Products ที่มีเงื่อนไขว่า Price ต้องมากกว่า 20 ขึ้นไป
 
SELECT * FROM Products WHERE Price > 20 ;
ผลลัพธ์
 
 

-------------------------------   END SQL Where statement   --------------------------------

 

 

 

SQL INSERT INTO Statement

      

           คือการใส่ข้อมูลลงในตาราง ด้วย data type แต่ละ column ที่ต้องกำหนดให้ถูกต้อง ข้อมูลที่เพิ่มลงจะไป จะอยู่ในรูปแบบทีละแถวข้อมูล หรือ row นั่นเอง เราจะเรียกคำสั่งเพิ่มข้อมูลนี้ว่า SQL Insert into statement

INSERT Syntax



INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

      การทดลองใช้คำสั่ง INSERT

เริ่มแรกข้อมูลใน Database ของเราจะมีดังนี้





จากนั้นเราจะใช้คำสั่ง 


INSERT INTO Customers (CustomerName, City, Country)

VALUES ('Cardinal''Stavanger''Norway');


ซึ่งเราจะได้ผลลัพธ์ดังภาพ คือมีข้อมูลใหม่เข้าไปใน Database





SQL UPDATE INTO Statement


           ตอนนี้เรามีข้อมูลอยู่ในตาราง หรือ table เราแล้ว ทีนี้ถ้าเราต้องการปรับเปลี่ยนค่าบางอย่าง หรือ บาง column ที่มีอยู่ปัจจุบัน เราจะใช้คำสั่ง SQL Update query statement ในการแก้ไขข้อมูลที่ต้องการ
 โดยที่เราสามารถนำเอา Where Clause statement มากำหนดกลุ่มของข้อมูลที่เราต้องการได้ด้วย

UPDATE Syntax

UPDATE table_name

SET column1 = value1, column2 = value2, ...
WHERE condition;

 การทดลองใช้คำสั่ง INSERT

เริ่มแรกข้อมูลใน Database ของเราจะมีดังนี้





จากนั้นเราจะใช้คำสั่ง 

UPDATE Customers

SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

ซึ่งเราจะได้ผลลัพธ์ดังภาพ คือมีการแก้ไขข้อมูลที่ CustomerID 1







SQL DELETE Statement


           ตอนนี้เรามาดูวิธีการลบข้อมูลออกจาก table ด้วยคำสั่ง SQL Delete query statement โดยสามารถใช้คำสั่งร่วมกัน Where Clause ในการกำหนดกลุ่มของข้อมูลที่ต้องการจะลบออกจาก table

DELETE Syntax

DELETE FROM table_name WHERE condition;


การทดลองใช้คำสั่ง DELETE

เริ่มแรกข้อมูลใน Database ของเราจะมีดังนี้





จากนั้นเราจะใช้คำสั่ง 

DELETE FROM Customers WHERE CustomerName='Alfreds Futterkiste';





ซึ่งเราจะได้ผลลัพธ์ดังภาพ คือมีการลบข้อมูล CustomerName : Alfreds 






 -------------------------------   END SQL TABLE statement   --------------------------------



SQL JOIN Statement

      

           ในบางครั้งการเก็บข้อมูลบน database อาจจะมีการกระจายของข้อมูลอยู่ในหลายๆ table ขึ้น ในบางครั้งข้อมูลใน table อาจจะมีความสัมพันธ์ที่ในบาง column ที่ข้อมูลเหมือนกัน และทาง user เองอาจต้องการเชื่อมข้อมูลของ 2 table นั้นเข้าด้วยกัน ซึ่งสามารถทำได้ด้วยคำสั่ง SQL Join statement

JOIN  Syntax



SELECT table1.column1, table2.column2...
FROM table1
JOIN table2
ON table1.common_field = table2.common_field;


      การทดลองใช้คำสั่ง JOIN


เริ่มแรกข้อมูลใน Database ของเราจะมีดังนี้
โดยมี 2 Database คือ 

1. Order



2. Customer



จากนั้นเราจะใช้คำสั่ง 


SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;



ซึ่งเราจะได้ผลลัพธ์ดังภาพ คือมีการ JOIN ข้อมูลการระหว่าง 2 Table






Conclude  09/02/2019

related info/link/reference   

 

any problem/solution 

  • SELECT COUNT(DISTINCT colume1) FROM name_table;  ไม่สามารถใช้ได้กับ Browser Firefox จึงต้องเปลี่ยนไปใช้ Google Chrome แทน เพราะ FireFox ไม่ supported Microsoft Access databases.