P. 1
SQLite Functions

SQLite Functions

|Views: 494|Likes:
Published by pun_82b

More info:

Published by: pun_82b on Jun 25, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/19/2011

pdf

text

original

Home Contents

SQLite functions
In this part of the SQLite tutorial, we will cover SQLite built-in functions. There are three types of functions in SQLite database. Core, aggregate and date & time functions. We will cover some functions from each group of SQLite functions.

Core functions
In this group we have various diverse functios. Some are numerical functions, some work with text. Others do some very specific things.

sqlite> SELECT sqlite_version() AS 'SQLite Version';

SQLite Version

--------------

3.5.9
The sqlite_version() function returns the version of the SQLite library.

sqlite> SELECT random() AS Random;

Random

-------------------

1056892254869386643

The random() function returns a pseudo-random integer between -9223372036854775808 and +9223372036854775807.

sqlite> SELECT max(cost) FROM Cars;

max(cost)

----------

350000

sqlite> SELECT min(cost) FROM Cars;

min(cost)

----------

9000
In our example, the max() and min() functions return the most and the least expensive cars from the Cars table.

sqlite> SELECT upper(name) AS 'Names in Capitals' FROM Friends;

Names in Capitals

-----------------

JANE

THOMAS

FRANKLIN

ELISABETH

MARY

LUCY

JACK
The upper() function converts characters into upper-case letters.

sqlite> SELECT length('ZetCode');

length('ZetCode')

-----------------

7
The length() function returns the length of a string.

sqlite> SELECT total_changes() AS 'Total changes';

Total changes

-------------

3

The total_changes() function returns the number of row changes caused by INSERT, UPDATE or DELETE statements since the current database connection was opened. In the current database connection, I have done three INSERT statements, so the total changes is equal to three.

Aggregate funcions
With aggregate functions, we get some statistical data. Let's recap, what we have in the Cars table.

sqlite> SELECT * FROM Cars;

Id

Name

Cost

----------

----------

----------

1

Audi

52642

2

Mercedes

57127

3

Skoda

9000

4

Volvo

29000

5

Bentley

350000

6

Citroen

21000

7

Hummer

41400

8

Volkswagen

21600

Notice, that there are no duplicate records.

sqlite> SELECT count(*) AS '# of cars' FROM Cars;

# of cars

----------

8
The count(*) function returns the number of rows in the table. In our table, we have eight cars. Assuming, there are no duplicates. In the Orders table, we have duplicate records of customers.

sqlite> SELECT * FROM Orders;

Id

OrderPrice

Customer

----------

----------

----------

1

1200

Williamson

2

200

Robertson

3

40

Robertson

4

1640

Smith

5

100

Robertson

6

50

Williamson

7

150

Smith

8

250

Smith

9

840

Brown

10

440

Black

11

20

Brown

Logically, each customer can make multiple orders. How do we count the number of orders and how do we count the number of customers?

sqlite> SELECT count(Customer) AS '# of orders'

FROM Orders;

# of orders

-----------

11
This SQL statement returns the number of orders. To calculate the number of unique customers, we have to utilize the DISTINCT keyword.

sqlite> SELECT count(DISTINCT Customer) AS '# of customers' FROM Orders;

# of customers

--------------

5
We have 5 customers in our Orders table. They made 11 orders. Next we are going to demonstrate the difference between the count(*) and count(ColumnName). These function usages differ in the way, how they handle NULL values.

sqlite> .nullvalue NULL
First, we change how sqlite3 shows NULL values. By default, the NULL value is shown as empty string.

sqlite> CREATE TABLE IF NOT EXISTS Testing(id integer primary key);

sqlite> DELETE FROM Testing;

sqlite> INSERT INTO Testing VALUES(1);

sqlite> INSERT INTO Testing VALUES(2);

sqlite> INSERT INTO Testing VALUES(3);

sqlite> INSERT INTO Testing VALUES(NULL);

sqlite> INSERT INTO Testing VALUES(NULL);

sqlite> SELECT * FROM Testing;

id

----------

1

2

3

NULL

NULL
Here we create table Testing with 3 numerical and 2 NULL values.

sqlite> SELECT count(*) AS '# of rows' FROM Testing;

# of rows

----------

5
The count(*) returns the number of rows in the table. It takes NULL values into account.

sqlite> SELECT count(id) AS '# of non NULL values' FROM Testing;

# of non NULL values

--------------------

3
The count(id) counts only non NULL values.

sqlite> SELECT avg(cost) AS 'Average price' FROM Cars;

Average price

----------------

88528.1666666667
The avg() function returns the average value of all non NULL records. In our example, we show the average price of the car in the Cars table. Finally, we mention the sum() function. It does a summation of all non NULL values.

sqlite> SELECT sum(OrderPrice) AS Sum FROM Orders;

Sum

----------

4930
Here we count the sum of all orders made by our customers.

Date and time funcions
SQLite has functions for working with date and time. With these functions we can use various time strings, modifiers and formats.

sqlite> SELECT date('now');

2009-11-05
The date() function with the now string return the current date.

sqlite> SELECT datetime('now');

2009-11-05 20:01:07
The datetime() function returns the current date and time.

sqlite> SELECT strftime('%d-%m-%Y');

05-11-2009
We can use the the strftime() function to return a date in a different format.

sqlite> SELECT "Current day " || strftime('%d');

Current day 05
This SQL statement returns the current day of the month. We used the strftime() function.

sqlite> SELECT 'Days to XMas:' || (strftime('%j', '2009-12-24') - strftime('%j', 'now'));

Days to XMas:49
Here we have computed the number of days till Christmas. The %j modifier gives the day of the year for the time string.

sqlite> SELECT date('now','start of year','10 months','weekday 4');

2009-11-05
This SQL statement returns the first Thursday of the November for the current year. In this example, we used three modifiers. start of year, +x months and weekday x. The now time string gives the current date. The start of year shifts the date backwards to the beginning of the year. The 10 months adds 10 months to the current month (January). Finally, the weekday 4 modifier advances the date forward to the first Thursday. We count from Sunday, 0. In this part of the SQLite tutorial, we worked with the built-in SQLite functions.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->