LibreOffice-Suite-Base/C3/Create-simple-queries-in-SQL-View-II/English-timed
From Script | Spoken-Tutorial
Time | Narration |
00:02 | Welcome to the Spoken tutorial on LibreOffice Base. |
00:06 | In this tutorial, we will learn how to: |
00:10 | Write queries in SQL View |
00:13 | Use ORDER BY clause |
00:15 | Use JOINS |
00:17 | Use Aggregate functions |
00:19 | Use the GROUP BY clause |
00:21 | And to use built in Functions. |
00:26 | Let us learn more about writing SQL queries. |
00:31 | For this, let us open our familiar Library database. |
00:36 | Now, let us click on the Queries list on the left panel |
00:42 | and then click on ‘Create Query in SQL View’. |
00:49 | First, let us see how we can sort the results of a query. |
00:55 | And let us consider the following example: |
00:59 | Retrieve Book title and author information for all those books published by Cambridge or Oxford |
01:09 | and sort them by the publisher in ascending order, followed by book titles in ascending order. |
01:19 | And here is the query: |
01:22 | SELECT Publisher, Title, Author |
01:28 | FROM Books |
01:31 | WHERE Publisher IN ( 'Cambridge', 'Oxford') |
01:42 | ORDER BY Publisher ASC, Title ASC |
01:50 | So, notice we have used the ORDER BY clause to specify sorting on column names. |
01:58 | Also notice the comma characters which help to add more columns for sorting. |
02:05 | And to specify the ascending or descending order, we can simply type 'A S C' or 'D E S C' next to each column name. |
02:19 | Now, let us click on the Run Query icon below the file menu bar. |
02:26 | Here are the books, first sorted by Publisher and then by book title. |
02:34 | Now, onto our next query. |
02:38 | Let us now get a list of book titles which have not yet been returned by the members, along with the book issue dates. |
02:48 | Since titles are in the Books table and the Book Issue date is in the BooksIssued table, |
02:55 | we will need to combine these two somehow. |
03:00 | So, we will use the JOIN keyword, to join these two tables |
03:07 | and we will use the common column, BookId, to link these two tables. |
03:14 | So the query is: |
03:17 | SELECT B.title, I.IssueDate, I.Memberid FROM Books B JOIN BooksIssued I |
03:35 | ON B.bookid = I.BookId WHERE CheckedIn = FALSE |
03:48 | Notice the letters 'B' and 'I' in the FROM clause. |
03:55 | These are called Aliases which can be either descriptive or just single alphabets for better readability. |
04:06 | Notice that the BookId column is in both the tables. |
04:11 | So, we will use aliases to specify or qualify column names to avoid any confusion. |
04:21 | Okay, now notice that we have joined the two tables using the JOIN keyword in the FROM clause |
04:31 | and we have specified the BookId column for joining by writing: ON B.bookid = I.BookId |
04:46 | So, let us run our query now |
04:49 | and we see a list of books and their issue date and notice that the CheckedIn status- not checked in. |
04:59 | Okay, also notice that we see only the MemberId in the results. Not very useful, is it? |
05:08 | So, how do we display member names which are in the members table? |
05:15 | Simple. We JOIN the members table to our query as follows: |
05:21 | SELECT B.Title, I.IssueDate, I.MemberId, M.Name FROM Books B |
05:37 | JOIN BooksIssued I ON B.BookId = I.BookId JOIN Members M ON I.MemberId = M.MemberId |
05:58 | WHERE CheckedIn = FALSE |
06:02 | So, notice the second join with the Members table and the MemberId column used for joining. |
06:12 | Let us run the query. |
06:14 | Here are the member names along with the books that were issued to them. |
06:20 | Next, let us learn about aggregates and grouping. |
06:26 | How can we get a count of all the members in the library? |
06:31 | Here is a query: |
06:34 | SELECT COUNT(*) AS "Total Members" FROM Members |
06:47 | So here, notice the COUNT. |
06:51 | This is called an aggregate function as it returns just one value by evaluating a set of records. |
07:02 | Also we have added an Alias- ‘Total Members’. |
07:07 | Now, let us run the query. |
07:10 | So here, Base has evaluated all the 4 members records and returned the number 4 which is the total count of members. |
07:22 | Some more examples of aggregate functions are SUM, MAX and MIN. |
07:30 | Now, let us learn about grouping information. |
07:36 | How do we get a count of books for each publisher? |
07:40 | Here is the query: |
07:43 | SELECT Publisher, COUNT(*) AS "Number of Books" FROM Books
GROUP BY Publisher ORDER BY Publisher |
08:03 | Notice the new GROUP BY clause. |
08:06 | So, we are selecting the Publisher and the number of books and the GROUP BY clause to group the records for each Publisher. |
08:18 | Let us run the query now. |
08:21 | Notice the publisher names and the number of books by each publisher beside them. |
08:33 | Next, let us learn about using Functions in SQL. |
08:38 | Functions are statements that return a single value. |
08:43 | For example, CURRENT_DATE returns today’s date. |
08:49 | So, let us list all the book titles that are due to be returned by the members. |
08:56 | And the query is: |
08:58 | SELECT B.Title, I.IssueDate, I.ReturnDate |
09:08 | FROM Books B JOIN BooksIssued I ON B.bookid = I.BookId |
09:21 | WHERE CheckedIn = FALSE and ReturnDate < CURRENT_DATE |
09:31 | So, notice the use of the CURRENT_DATE function. |
09:36 | We are retrieving books for which the Return Date is past today’s date. |
09:43 | Let us run the query. |
09:45 | And, here are the books that are due to be returned. |
09:51 | For a list of functions that HSQLdb offers: go to http://hsqldb.org/doc/2.0/guide/builtinfunctions-chapt.html |
10:23 | The entire user guide can be accessed by visiting the website: |
10:29 | http://www.hsqldb.org/doc/2.0/guide/ |
10:48 | Here is an assignment: |
10:50 | Write and test your SQL queries for the following: |
10:55 | 1. Get a count of all the books in the Library. |
10:58 | 2. Get a count of books written by each author. |
11:03 | 3. Get a list of member names and their phone numbers who need to return books today. |
11:11 | 4. Explain what this query does?
SELECT (price) AS "Total Cost of Cambridge Books" |
11:24 | FROM Books WHERE publisher = 'Cambridge' |
11:32 | This brings us to the end of this tutorial on more queries in SQL View LibreOffice Base. |
11:40 | To summarize, we learned how to: |
11:43 | Create Queries in SQL View |
11:47 | Use ORDER BY clause |
11:49 | Use JOINS |
11:51 | Use Aggregate functions |
11:54 | Use the GROUP BY clause |
11:57 | And use built in Functions. |
12:00 | Spoken Tutorial project is a part of the Talk to a Teacher project, supported by the National Mission on Education through ICT, MHRD, Government of India. This project is coordinated by http://spoken-tutorial.org. More information on the same is available at the following link. |
12:21 | This script has been contributed by Priya Suresh, DesiCrew Solutions. And this is Soundharya, DesiCrew Solutions, signing off.
Thanks for joining. |