‏הצגת רשומות עם תוויות UPDATE. הצג את כל הרשומות
‏הצגת רשומות עם תוויות UPDATE. הצג את כל הרשומות

יום ראשון, 3 ביולי 2016

SQL בקצרה

  • ADD_MONTHS - מקבלת תאריך ומספר חודשים ומחזירה את התאריך בתוספת מספר החודשים.
  • AND ו-OR - אופרטורים מיוחדים שניתן להשתמש בהם בפקודת WHERE לסינון השאילתא לפי תנאים שונים.
  • AVG() - מחזיר את הערך הממוצע בעמודה.
  • ALTER TABLE - משנה טבלה קיימת. לדוגמה להוספת עמודה:
    ALTER TABLE celebs ADD COLUMN twitter_handle TEXT;
                
    אפשר גם להגדיר ערך ברירת מחדל לעמודה:
    ALTER TABLE celebs ADD COLUMN twitter_handle TEXT DEFAULT 'zebra';
                
  • AS - כינוי לטבלה או עמודה, מאפשר לכתוב את שם הטבלה ואחריו את הכינוי. במקרה של יותר מטבלה אחת יש להפריד באמצעות פסיק. לדוגמא
    SELECT c.OrderID, c.ProductID, p.ProductName, p.Price
    FROM Price AS c
    JOIN Products AS p ON c.ProductID = p.ProductID;
                
  • COUNT()takes the name of a column(s) as an argument and counts the number of rows where the value(s) is not NULL

  • CONCAT() - מחברת שני מחרוזות. לדוגמה:
    SELECT CONCAT(CONCAT(last_name, '''s job category is '), job_id)
                
    התוצאה: Hall's job category is SA_REP

  • CREATE TABLE - יוצר טבלה חדשה:
    לדוגמא - CREATE TABLE celebs (name TEXT, age INTEGER);
                
    ניתן להגדיר עמודות כחייבות להיות מלאות או ייחודיות. לדוגמה:

    להגדרת התאים כחייבים להיות מלאים
    CREATE TABLE celebs (name TEXT NOT NULL, age INTEGER NOT NULL);
    להגדרת התאים כחייבים להיות UNIQUE
    CREATE TABLE celebs (name TEXT UNIQUE, age INTEGER NOT NULL);
                
  • DECODE - הפונקציה הזו משווה בין שני ערכים ומחזירה תשובה אם שווים, התשובה יכולה להיות כל פונקציה או שכמו בתשובה פשוט ניתן להוסיף אם אינם שווים ,לפי הסינטקס הבא 
    SELECT DECODE(P1, P2, 'Equal', 'Not Equal');
  • DELETE FROM - מוחק שורות מטבלה.

  • DISTINCT - מסיר כפילויות מתוך תוצאת השאילתא:
    SELECT DISTINCT column_name FROM table;
                
  • DATEDIFF - מחזיר פער בין תאריכים, מספר של חודשים/ימים/שנים וכדו' לדוג
    SELECT DATEDIFF(day, '2000/08/16', '2022/08/16') AS NumDayDiff;
  • DATEPART מחזיר חלק התאריך מתוך העמודה לדוג'
    SELECT DATEPART(yyyy, '2019/05/12') AS DatePart;  יחזיר את השנה 2019
                
  • EXTRACT - מחלץ חלקים מתאריך (כמו שנה, חודש, יום):
    SELECT EXTRACT(YEAR FROM date_column) FROM table;
                
  • getdate()מחזיר את ערך התאריך של היום, התאריך הנוכחי 'דומה קצת ל SYSDATE
  • GROUP BYis a clause used with aggregate functions to combine data from one or more columns.

  • INSERT INTO - מוסיף שורה חדשה לטבלה:
    INSERT INTO celebs (name, age) VALUES ('Harrison Ford', 76);
                
  • INSTR - מחפש את המיקום של תת-מחרוזת במחרוזת.

  • INTICAP(string) - מחזירה מחרוזת שבה כל האותיות הראשונות גדולות וכל השאר קטנות.

  • SELECT - לשלוף נתונים מתוך טבלה:
    SELECT column1, column2 FROM table;
                
  • UPDATE - לעדכן שורות בטבלה:
    UPDATE table_name
    SET column = new_value
    WHERE condition;
                
  • LIKE ו-BETWEEN - אופרטורים מיוחדים ב-WHERE:
    • LIKE '%a%' - מחפש מילה המכילה את האות 'a'.
    • LIKE '_a%' - מחפש מילה שבה האות השנייה היא 'a'.

  • LIMIT - מגביל את מספר השורות המוחזרות.

  • LAST_DAY - מחזיר את היום האחרון בחודש.

  • HAVING - שימוש בנתונים אגרגטיביים במקום WHERE.

  • LENGTH - אורך תוכן בעמודה --> SELECT LENGTH('Israel') FROM dual; 
    in SQL Server we use LEN --> SELECT LEN('Israel');

  • SUBSTR() - מחזיר חלק ממחרוזת לפי מיקום וכמות תוויים:
    SELECT SUBSTR('ABCD', 2, 2) FROM dual;  -- תוצאה: 'BC'
                
  • LOWER() ו-UPPER() - מחזירות את המחרוזת באותיות קטנות או גדולות.

  • MAX() ו-MIN() - מחזירים את הערכים המקסימליים והמינימליים בעמודה.

  • MOD - מחזיר את השארית של שני מספרים.

  • MONTHS_BETWEEN - מחזירה את מספר החודשים בין שני תאריכים.

  • NEXT_DAY - מחזיר את התאריך הקרוב ליום בשבוע הנתון:

  • IN - this operator is used when you want to compare a column with more then one value. for example - if you need to select all people from NY,CA,LA instead of using OR you can use IN lie that - WHERE city IN ('NY','CA','LA');
  • NOT IN - כמו מה שצוין למעלה רק לא.. די ברור
  • NVL(exp1,exp2) - מקבל שני נתונים האחד עמודה השני, אם הערך בעמודה הוא null מזין במקום את הערך השני
  • NULLIF() - מחזיר NULL אם שני הביטויים שווים, אחרת מחזיר את הערך הראשון.

  • ORDER BY lets you sort the results of the query in either ascending or descending order.
    default - ASC to sort the records in a descending order, you can use the DESC keyword
    טיפ - יצירת סדר לפי שתי עמודות מתבקש למשל בשם פרטי ושם ומשפחה
  • OFFSET - בעוד שהפקודה שמעל מגבילה את כמות השורות, הפקודה הזו שבאה איתה קובעת אילו שורות יוחזרו. רוצה להביא רק 5 ? תוצאות אבל אילו ? החמש הראשונות, החמש השניות, החמש השלישיות וכן הלאה..
  • getdate() - מחזיר את ערך התאריך של היום, התאריך הנוכחי 'דומה קצת ל SYSDATE
  • PRIMARY KEY
    את העמודה הזו נגדיר ביצירת הטבלה והיא לא זקוקה לעדכון התאים בה משום שהיא ממספרת אוטומאטית  את המזהה של כל שורה .לדוגמא

    CREATE TABLE test (

    id INTEGER PRIMARY KEY,

    name TEXT,

    grade INTEGER

    );

  • ROUND() takes two arguments, a column name and the number of decimal places to round the values in that column.
  • RANK - זוהי פונקציה אנליטית שתפקידה לתת לערכים דירוג מספרי מאחד והלאה, הפונקציה תבוא עם סוגריים ובמבנה שלאחריו תבוא הפוקנציה over
    SELECT RANK() OVER ([ עמודה ] order_by_clause). לדוגמא אם נרצה לקבל את שמות התלמידים הראשונים שהגיעו בסשנים שונים לפי תאריך הגעה לכיתה נוכל לדרג אותם בצורה הבאה
    SELECT Time, Name,
    
    RANK () OVER (partition by Name by Time desc)
    FROM 
  • SUM() takes the column name as an argument and returns the sum of all the values in that column.
  • STDDEV - פונקציה המחזירה סטיית תקן מהממוצע
  • TO_DATE - שאילתא על שדה זמן באמצעות יצירת פורמט זמן לדוג
    TO_DATE('2006/12/25', 'yyyy/mm/dd')
    Result: date value of Dec 25, 2016
  • TO_NUMBER - המרה לערך נומרי,מספרי על פי  פורמט שמצויין בסוגרים לאחר הפסיק כמו בדוג' מטה
    TO_NUMBER('string', '99.99')
  • TO_CHAR - מקבלת תאריך/שעה/מספר והופכת אותם למחרוזת
  • TOP - צימצום התוצאות למספר שיוגדר ב TOP או  לאחוז כפי שיוגדר
  • TRIM - פונקציה שמחזירה טקסט ללא תווים עודפים שניתו להגדיר או בברירת המחדל היא מורידה רווחים מיותרים לפני ואחרי הטקסט
  • OVER- בתוך הסוגריים של הפונקציה הזו נגדיר את הערכים עליהם נרצה לבצע את הפונקציות האנליטיות כמו בדוגמא למעלה עם פונקציית הדירוג RANK.
  • PARTIOTION - משמשת בפונקציה rank ליצירת הפרדה לפי מחלקות וכך נקבל במקום רצף של 1 והלאה מספר רצפים כאלו לפי מספר המחלקות. בדוגמא למעלה השמות הם המחלקות ונראה דירוג לפי הגעה של כל תלמיד לכיתה לפי שמו מהפעם הראשונה ועד לאחרונה.
  • TRANSACTION- נשתמש בטרנזקציות לאיגוד ומיטוב ביצועי תהליכים לפי התבנית הבאה
  • BEGIN TRANSACTION;
    INSERT INTO example_table....
    END TRANSACTION;
  • SUBSTR מחרוזת, מיקום מספרי, ומספר אותיות- יחזירו את תת המחרוזת מהמיקום המספרי ועד למספר האותיות
    לדוג' - SELECT SUBSTR('ABCD',2,2) יחזיר 'BC'
    כמו כן מיקום עם הסימון '-' יספור מהסוף להתחלה, השימוש בו יכול להיות מאוד שימושי כשאנחנו רוצים להמיר מספר בודד לייצוג של שתי ספרות מדקות דקות עם '0' בהתחלה, נשלוף זאת כך
     SELECT mm || ':' || SUBSTR('00' || ss, -2, 2), .....
  • REPLACE - מכניסים לסוגריים, עמודה, ביטוי להחלפה ואת ההחלפה
    לדוג' - REPLACE( 'test', 't', 'T' ) -> TesT
  • TRUNC- מקצץ מספרים ותאריכים - מספר עשרוני מחזירה עם ספרות עשרוניות לפי המספר בסוגריים תאריך לפי הפרמטר מחזירה את תחילתו, למשל בשנה תחזיר את תחילת השנה
    לדוג' TRUNC(TO_DATE('21-MAY-22','DD-MON-YY'), 'YEAR')
    יחזיר 01-01-22.
  • UPPER (string) -  LOWERמחזירה מחרוזת כשכל האותיות הקטנות הומרו לגדולות, ההיפך מ
  • WHERE is a popular command that lets you filter the results of the query based on conditions that you specify.
  • ABS() - מחזיר את הערך המוחלט של מספר. לדוגמה - אם מספר שלילי נשלח לפונקציה, היא מחזירה את הערך החיובי שלו.
    SELECT ABS(-5);  -- לדוגמה: 5
  • ALL - משמש בשילוב עם SELECT להחזיר את כל השורות התואמות. לדוגמה - אם רוצים לבדוק אם ערך גדול יותר מכל הערכים בתוצאה משנה.
    SELECT * FROM products WHERE price > ALL (SELECT price FROM products WHERE category = 'Electronics');
  • ANY - משווה ערך לכל ערך בתוצאה משנה. לדוגמה - אם רוצים להשוות ערך למספר תוצאות משנה.
    SELECT * FROM products WHERE price > ANY (SELECT price FROM products WHERE category = 'Electronics');
  • BETWEEN - מציין טווח ערכים. לדוגמה - שימוש בבחירת טווח מחירים.
    SELECT * FROM products WHERE price BETWEEN 100 AND 500;
  • CASE - יוצר לוגיקה תנאית בתוך השאילתא. לדוגמה - השוואת מחיר ותווית 'Expensive' או 'Cheap' בהתאם למחיר.
    SELECT name, 
                CASE WHEN price > 100 THEN 'Expensive' ELSE 'Cheap' END AS price_category 
                FROM products;
  • CAST() - ממיר סוג נתון לסוג אחר. לדוגמה - המרת ערכים מסוג מספר לסוג טקסט.
    SELECT CAST(price AS VARCHAR) FROM products;
  • COALESCE() - מחזיר את הערך הראשון שאינו NULL מתוך רשימה. לדוגמה - אם שני הערכים הראשונים הם NULL, מחזיר את הערך השלישי.
    SELECT COALESCE(NULL, NULL, 'Value');  -- לדוגמה: 'Value'
  • CROSS JOIN - מחבר את כל השורות משתי טבלאות. לדוגמה - משלב כל שורה מטבלה אחת עם כל שורה מטבלה שנייה.
    SELECT * FROM table1 CROSS JOIN table2;
  • EXISTS - בודק אם תת-שאילתא מחזירה תוצאות. לדוגמה - אם ישנם הזמנות עבור מוצר מסוים.
    SELECT * FROM products WHERE EXISTS (SELECT 1 FROM orders WHERE products.product_id = orders.product_id);
  • FOR UPDATE - חוסם שורות לעדכון במהלך שאילתא. לדוגמה - כדי לעדכן נתונים מבלי שתהיה אפשרות לשנות את השורות עד לסיום הטרנזקציה.
    SELECT * FROM products WHERE price > 100 FOR UPDATE;
  • FROM - מציין את הטבלה לשאילתא. לדוגמה - מציין את שם הטבלה ממנה יש לשלוף נתונים.
    SELECT * FROM products;
  • HAVING - מסנן תוצאות לאחר ביצוע פונקציות אגרגטיביות. לדוגמה - לאחר שסיננת את המוצרים, מסנן רק את הקטגוריות עם יותר מ-5 מוצרים.
    SELECT category, COUNT(*) FROM products GROUP BY category HAVING COUNT(*) > 5;
  • INTERSECT - מחזיר רשומות משותפות בין שתי תוצאות. לדוגמה - מציאת מוצרים שנמצאים גם בהזמנות וגם במלאי.
    SELECT product_id FROM products 
                INTERSECT 
                SELECT product_id FROM orders;
  • IS NULL - בודק אם הערך הוא NULL. לדוגמה - למציאת שורות שבהן אין ערך בעמודה.
    SELECT * FROM products WHERE price IS NULL;
  • IS NOT NULL - בודק אם הערך איננו NULL. לדוגמה - מציאת שורות שיש בהן ערך בעמודה.
    SELECT * FROM products WHERE price IS NOT NULL;
  • JOIN - מחבר שורות מטבלאות שונות על פי קשר בין עמודות. לדוגמה - הצגת פרטי הזמנה עם פרטי הלקוח.
    SELECT * FROM orders 
                JOIN customers ON orders.customer_id = customers.customer_id;
  • LEFT JOIN - מחזיר את כל השורות מהטבלה השמאלית והשורות התואמות מהטבלה הימנית. לדוגמה - הצגת כל ההזמנות, כולל אלו ללא לקוח תואם.
    SELECT * FROM orders 
                LEFT JOIN customers ON orders.customer_id = customers.customer_id;
  • RIGHT JOIN - מחזיר את כל השורות מהטבלה הימנית והשורות התואמות מהטבלה השמאלית. לדוגמה - הצגת כל הלקוחות, כולל אלו ללא הזמנה תואמת.
    SELECT * FROM orders 
                RIGHT JOIN customers ON orders.customer_id = customers.customer_id;
  • LIKE - משמשת לתבנית חיפוש במחרוזת. לדוגמה - חיפוש מוצרים שמתחילים באות 'A'.
    SELECT * FROM products WHERE name LIKE 'A%';
  • NOT LIKE - משמשת להחרגת תבנית חיפוש במחרוזת. לדוגמה - חיפוש מוצרים שלא מתחילים באות 'A'.
    SELECT * FROM products WHERE name NOT LIKE 'A%';
  • ORDER BY - מסדר את התוצאות בסדר עולה או יורד. לדוגמה - סידור תוצאות לפי מחיר בסדר יורד.
    SELECT * FROM products ORDER BY price DESC;
  • OUTER JOIN - מחבר שורות מטבלאות עם ערכים חסרים. לדוגמה - מציאת פרטי מוצרים שהוזמנו, כולל כאלו שלא הוזמנו.
    SELECT * FROM table1 
                LEFT OUTER JOIN table2 ON table1.id = table2.id;
  • REVOKE - מסיר הרשאות ממשתמש. לדוגמה - הסרת גישה לקריאה בטבלה.
    REVOKE SELECT ON products FROM user1;
  • ROLLBACK - מחזיר את השינויים שבוצעו במהלך טרנזקציה. לדוגמה - אם ברצונך לבטל את השינויים שבוצעו עד כה.
    ROLLBACK;
  • SELECT DISTINCT - מסיר כפילויות מתוך התוצאה. לדוגמה - מציאת קטגוריות ייחודיות מתוך רשימת מוצרים.
    SELECT DISTINCT category FROM products;
  • UNION - מחבר את התוצאות של שתי שאילתות שונות. לדוגמה - חיבור רשימת לקוחות עם רשימת עובדים.
    SELECT product_id FROM products 
                UNION 
                SELECT product_id FROM orders;
  • UPDATE - מעדכן נתונים בטבלה. לדוגמה - עדכון מחירים של מוצרים בקטגוריה מסוימת.
    UPDATE products SET price = price * 1.1 WHERE category = 'Electronics';
  • VALUES - מציין את הערכים להוספה בטבלה. לדוגמה - הוספת מוצר חדש עם שם ומחיר.
    INSERT INTO products (name, price) VALUES ('Laptop', 1000);