Translate

แสดงบทความที่มีป้ายกำกับ db แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ db แสดงบทความทั้งหมด

วันพุธที่ 15 มีนาคม พ.ศ. 2560

SQL subQuery

            สวัสดีครับวันนี้มาทำความรู้จักกับการใช้ sub query หลายคนได้ยินคำว่า sub query อาจไม่รู้ว่าคืออะไร หมายถึงอะไร หลายคนเคยเห็นแต่ไม่รู้ว่าคือ sub query วันนี้จะทำให้รู้จักครับ

Example

SELECT * FROM (SELECT T1.ID,T2.USERNAME,T2.PASSWORD FROM TABLE_MAIN T1 INNER JOIN TABLE_DETAIL T2 ON T1.ID = T2.ID) T_MAIN;

ดังตัวอย่างด้านบนคือการใช้ subquery ในวงเล็บนั่นคือ subquery หรือ query ย่อยนั่นเอง บางครั้งเราอาจต้องการ join table หลาย table บาง table อาจจะ join กันได้ บาง table ก็ไม่ได้ subquery จะมีประโยชน์ในตอนนี้แหละครับ และมีการใช้ subquery อีกแบบนึงคือ

Example

SELECT (SELECT USERNAME FROM TABLE_DETAIL T1 WHERE T1.ID = T_MAIN.ID ) FROM TABLE_MAIN T_MAIN;

การใช้ subquery กรณีด้านบนนี้ บางครั้งเราอาจจะไม่อยาก join table และต้องการเพียงค่าเดียวจาก table นั้นๆที่สำคัญต้องไม่มี duplicate ก็สามารถเขียนแบบนี้ได้ครับ

การ subquery บางครั้งอาจทำให้ performance ลดลงนะครับยังไงก็ใช้กันอย่างระมัดระวังด้วยครับ

ขอบคุณครับ

วันอังคารที่ 14 มีนาคม พ.ศ. 2560

SQL Alias name

             สวัสดีครับวันนี้ก็ยังคงอยู่ที่ SQL เหมือนเดิมครับเพราะ SQL นั้นมีหลากหลาย function และ วิธีการให้เราเลือกใช้มากมายและทุกระบบที่มีการจัดเก็บข้อมูลส่วนใหญ่ก็ต้องใช้เราจึงต้องเน้นทางด้านนี้ให้มือใหม่ก่อนครับ วันนี้มาพูดถึง Alias name ใน SQL กันครับว่าคืออะไร หลายคนอาจเคยเห็นแล้วครับแต่ไม่รู้ว่านั่นคือ Alias name ถ้าได้ดูตัวอย่างคงอ๋อกันเป็นแถวแน่นอนครับ

Alias Name คือ แปลตรงตัวคือนามแฝงครับใน SQL ก็คือ นามแฝงนั่นเองโดยที่เราสามารถตั้งชื่ออะไรก็ได้ให้กับ table หรือ column นั้นๆ หรือ function นั้นๆเพื่อความสะดวกในการอ้างอิงครับ

Example

SELECT '1' AS ONE FROM DUAL;

จากตัวอย่างด้านบน ONE คือชื่อ column ของ value 1 ใน query นี้ซึ่ง ONE นี่ล่ะครับคือ Alias name

แบบย่อ

SELECT '1' ONE FROM DUAL;

การประกาศ alias name ไม่จำเป็นต้องมี as เสมอไปครับเว้นวรรคแล้วใส่ชื่อที่ต้องการได้เลย

ทำไมต้องประกาศ alias name มีประโยชน์ยังไง

ดังที่กล่าวแล้วข้างต้นว่ามีประโยชน์ในการอ้างอิงตัวอย่างเช่น

SELECT cust.id,det.name FROM CUSTOMER cust,DETAIL det WHERE cust.id = det.id;

จากตัวอย่างด้านบนเราต้องการ select ข้อมูลของ 2 table ออกมาแสดง alias name ช่วยในการอ้างอิงถึง table และ column ได้สะดวกยิ่งขึ้นโดยที่เราไม่ต้องพิมพ์ชื่อเต็มของ table หรือ column นั้นๆครับ

เป็นยังไงบ้างครับเท่านี้ทุกท่านก็รู้จักกับ alias name แล้วนะครับ สำหรับวันนี้สวัสดีครับ

วันอังคารที่ 28 กุมภาพันธ์ พ.ศ. 2560

Beginning Oracle Stored Prcedure

     สวัสดีครับวันนี้ผมจะมาเล่าเกี่ยวกับการเขียน stored Procedure พื้นฐานของ oracle db ผมเชื่อว่าทุกคนเคยเขียนมาบ้างแล้วสำหรับ sql command แต่ stored Procedure นี้เป็น pl/sql คล้ายๆ method ของ java ที่สามารถส่ง parameter เข้าหรือออกมาก็ได้

Example
CREATE OR REPLACE PROCEDURE getUserNameฺById(
    p_id IN NUMBER,
    o_user_name OUT VARCHAR2)
IS
BEGIN

  SELECT USERNAME 
  INTO o_user_name
  from  table_user_name WHERE USER_ID = p_id;

END;
จากตัวอย่างด้านบนคือส่ง parameter เข้ามา where ใน stored procedure แล้ว query นำใส่ out_parameter return ออกไปให้กับผู้เรียก

Example
CREATE OR REPLACE PROCEDURE getUserNameฺById(
    p_id IN NUMBER,
    o_user_name OUT VARCHAR2)
IS
   l_user_name VARCHAR2(100);
BEGIN
   IF p_id='12345' THEN
      o_user_name := 'userName';
   ELSE
      SELECT USERNAME INTO o_user_name
      from  table_user_name WHERE USER_ID = p_id;
   END;
END; 
จากตัวอย่างด้านบนแสดงการใช้ programmingร่วมกับการ query sql command เพื่อ return o_user_name ออกไป หวังว่าบทความนี้จะช่วยให้ผู้เริ่มใหม่สามารถเรียนรู้ได้เร็วยิ่งขึ้นนะครับ

สวัสดีครับ