http://www.thomasfrank.se/SQLike/
Keywords are case-insensitive and insensitive to underscores. This means GroupBy can be written GROUP_BY , groupby etc. Where clauses are written as functions. You can also use a function instead of a field name in Select and Set statements. In these functions the this -keyword points to the current row.
Please note:
- The queries below are run in sequence.
- The test data is random generated and differs each time you load this page.
- JavaScript debuggers (like Firebug) can slow down SQLike [JavaScript].
SQLike, version 1.02, demo & short reference 1
Some test data: dataArray 2
More test data: dataArray2 2
Unpack 3
Select (+ order by) 4
Select, example 2 (using "as" and a function instead of a field name) 4
Select Distinct 5
Group By (+ aggregate functions) 6
Join (implicit) 6
Join 7
Join Using 7
Natural Join 8
Left Join 8
Right Join 9
Full Join 10
Cross Join (+ use of "limit") 11
Union 13
Union All 14
Intersect 15
Intersect All 16
Except 16
Except All 17
Update 18
Insert into 18
Select into 19
Delete from 20
Pack 21
This is the first part of our test data that we store in an array called "dataArray" (an array of arrays until it is unpacked, see below).
0 | 1 | 2 | 3 |
---|---|---|---|
Susanna | Peterson | 55 | 66000 |
Anette | Irons | 26 | 31000 |
Anette | Steele | 62 | 72000 |
Anette | Steele | 50 | 70000 |
John | Green | 27 | 80000 |
Debbi | Jones | 58 | 93000 |
George | Green | 63 | 40000 |
Anette | Jones | 22 | 76000 |
Susanna | Black | 58 | 52000 |
Debbi | Jones | 44 | 54000 |
JSON :
[["Susanna", "Peterson", 55, 66000], ["Anette", "Irons", 26, 31000], ["Anette", "Steele", 62, 72000], ["Anette", "Steele", 50, 70000], ["John", "Green", 27, 80000], ["Debbi", "Jones", 58, 93000], ["George", "Green", 63, 40000], ["Anette", "Jones", 22, 76000], ["Susanna", "Black", 58, 52000], ["Debbi", "Jones", 44, 54000]]
Rows: 10
This is the second part of our test data that we store in an array called "dataArray2" (an array of objects).
firstName | lastName | favColor |
---|---|---|
Susanna | Peterson | green |
Anette | Irons | green |
Strange | Mike | red |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson", "favColor":"green"}, {"firstName":"Anette", "lastName":"Irons", "favColor":"green"}, {"firstName":"Strange", "lastName":"Mike", "favColor":"red"}]
Rows: 3
If your data is an array of arrays you need to unpack it into an array of objects, before querying it.
Please note: Unpack changes the orginal array.
SQLike.q( { Unpack: dataArray, Columns: ['firstName','lastName','age','salary'] } )
firstName | lastName | age | salary |
---|---|---|---|
Susanna | Peterson | 55 | 66000 |
Anette | Irons | 26 | 31000 |
Anette | Steele | 62 | 72000 |
Anette | Steele | 50 | 70000 |
John | Green | 27 | 80000 |
Debbi | Jones | 58 | 93000 |
George | Green | 63 | 40000 |
Anette | Jones | 22 | 76000 |
Susanna | Black | 58 | 52000 |
Debbi | Jones | 44 | 54000 |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":66000}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":72000}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":70000}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":93000}, {"firstName":"George", "lastName":"Green", "age":63, "salary":40000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":52000}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":54000}]
Rows: 10 Time taken: JS 31 ms
Selecting tuples where the salary>50000. Note that the where condition is in the form of a function that returns true or false. Also note the syntax "|desc|" for sorting in descending order.
SQLike.q( { Select: ['*'], From: dataArray, Where: function(){return this.salary>50000}, OrderBy: ['salary','|desc|'] } )
firstName | lastName | age | salary |
---|---|---|---|
Debbi | Jones | 58 | 93000 |
John | Green | 27 | 80000 |
Anette | Jones | 22 | 76000 |
Anette | Steele | 62 | 72000 |
Anette | Steele | 50 | 70000 |
Susanna | Peterson | 55 | 66000 |
Debbi | Jones | 44 | 54000 |
Susanna | Black | 58 | 52000 |
JSON :
[{"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":93000}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":72000}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":70000}, {"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":66000}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":54000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":52000}]
Rows: 8 Time taken: JS 2 ms
Still selecting tuples where the salary>50000. Note the use of a function in the select statement as well as the use of "|as|".
SQLike.q( { Select: [function(){return this.firstName+" "+this.lastName},'|as|','name'], From: dataArray, Where: function(){return this.salary>50000}, OrderBy: ['salary','|desc|'] } )
name |
---|
Debbi Jones |
John Green |
Anette Jones |
Anette Steele |
Anette Steele |
Susanna Peterson |
Debbi Jones |
Susanna Black |
JSON :
[{"name":"Debbi Jones"}, {"name":"John Green"}, {"name":"Anette Jones"}, {"name":"Anette Steele"}, {"name":"Anette Steele"}, {"name":"Susanna Peterson"}, {"name":"Debbi Jones"}, {"name":"Susanna Black"}]
Rows: 8 Time taken: JS 2 ms
Selecting distinct first names.
SQLike.q( { SelectDistinct: ['firstName'], From: dataArray, OrderBy: ['firstName'] } )
firstName |
---|
Anette |
Debbi |
George |
John |
Susanna |
JSON :
[{"firstName":"Anette"}, {"firstName":"Debbi"}, {"firstName":"George"}, {"firstName":"John"}, {"firstName":"Susanna"}]
Rows: 5 Time taken: JS 2 ms
SQLike.q( { Select: ['firstName','|count|','firstName','|sum|','salary','|min|','salary','|max|','salary','|avg|','salary'], From: dataArray, GroupBy: ['firstName'], Having: function(){return this.count_firstName>1}, OrderBy: ['sum_salary','|desc|'] } )
firstName | count_firstName | sum_salary | min_salary | max_salary | avg_salary |
---|---|---|---|---|---|
Anette | 4 | 249000 | 31000 | 76000 | 62250 |
Debbi | 2 | 147000 | 54000 | 93000 | 73500 |
Susanna | 2 | 118000 | 52000 | 66000 | 59000 |
JSON :
[{"firstName":"Anette", "count_firstName":4, "sum_salary":249000, "min_salary":31000, "max_salary":76000, "avg_salary":62250}, {"firstName":"Debbi", "count_firstName":2, "sum_salary":147000, "min_salary":54000, "max_salary":93000, "avg_salary":73500}, {"firstName":"Susanna", "count_firstName":2, "sum_salary":118000, "min_salary":52000, "max_salary":66000, "avg_salary":59000}]
Rows: 3 Time taken: JS 2 ms
SQLike.q( { Select: ['*'], From: {t1:dataArray,t2:dataArray2}, Where: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName} } )
t1_firstName | t1_lastName | t1_age | t1_salary | t2_firstName | t2_lastName | t2_favColor |
---|---|---|---|---|---|---|
Susanna | Peterson | 55 | 66000 | Susanna | Peterson | green |
Anette | Irons | 26 | 31000 | Anette | Irons | green |
JSON :
[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}]
Rows: 2 Time taken: JS 3 ms
SQLike.q( { Select: ['*'], From: {t1:dataArray}, Join: {t2:dataArray2}, On: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName} } )
t1_firstName | t1_lastName | t1_age | t1_salary | t2_firstName | t2_lastName | t2_favColor |
---|---|---|---|---|---|---|
Susanna | Peterson | 55 | 66000 | Susanna | Peterson | green |
Anette | Irons | 26 | 31000 | Anette | Irons | green |
JSON :
[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}]
Rows: 2 Time taken: JS 2 ms
SQLike.q( { Select: ['*'], From: {t1:dataArray}, Join: {t2:dataArray2}, Using: ['firstName','lastName'] } )
firstName | lastName | t1_age | t1_salary | t2_favColor |
---|---|---|---|---|
Susanna | Peterson | 55 | 66000 | green |
Anette | Irons | 26 | 31000 | green |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_favColor":"green"}, {"firstName":"Anette", "lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_favColor":"green"}]
Rows: 2 Time taken: JS 1 ms
SQLike.q( { Select: ['*'], From: {t1:dataArray}, NaturalJoin: {t2:dataArray2}, Where:function(){return this.t1.firstName!='Vicki'} } )
firstName | lastName | t1_age | t1_salary | t2_favColor |
---|---|---|---|---|
Susanna | Peterson | 55 | 66000 | green |
Anette | Irons | 26 | 31000 | green |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_favColor":"green"}, {"firstName":"Anette", "lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_favColor":"green"}]
Rows: 2 Time taken: JS 0 ms
Same as LeftOuterJoin.
SQLike.q( { Select: ['*'], From: {t1:dataArray}, LeftJoin: {t2:dataArray2}, On: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName} } )
t1_firstName | t1_lastName | t1_age | t1_salary | t2_firstName | t2_lastName | t2_favColor |
---|---|---|---|---|---|---|
Susanna | Peterson | 55 | 66000 | Susanna | Peterson | green |
Anette | Irons | 26 | 31000 | Anette | Irons | green |
Anette | Steele | 62 | 72000 | undefined | undefined | undefined |
Anette | Steele | 50 | 70000 | undefined | undefined | undefined |
John | Green | 27 | 80000 | undefined | undefined | undefined |
Debbi | Jones | 58 | 93000 | undefined | undefined | undefined |
George | Green | 63 | 40000 | undefined | undefined | undefined |
Anette | Jones | 22 | 76000 | undefined | undefined | undefined |
Susanna | Black | 58 | 52000 | undefined | undefined | undefined |
Debbi | Jones | 44 | 54000 | undefined | undefined | undefined |
JSON :
[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000}, {"t1_firstName":"George", "t1_lastName":"Green", "t1_age":63, "t1_salary":40000}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000}]
Rows: 10 Time taken: JS 2 ms
Same as RightOuterJoin.
SQLike.q( { Select: ['*'], From: {t1:dataArray}, RightJoin: {t2:dataArray2}, On: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName} } )
t1_firstName | t1_lastName | t1_age | t1_salary | t2_firstName | t2_lastName | t2_favColor |
---|---|---|---|---|---|---|
Susanna | Peterson | 55 | 66000 | Susanna | Peterson | green |
Anette | Irons | 26 | 31000 | Anette | Irons | green |
undefined | undefined | undefined | undefined | Strange | Mike | red |
JSON :
[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}]
Rows: 3 Time taken: JS 3 ms
Same as FullOuterJoin.
SQLike.q( { Select: ['*'], From: {t1:dataArray}, FullJoin: {t2:dataArray2}, On: function(){return this.t1.firstName==this.t2.firstName && this.t1.lastName==this.t2.lastName}, Where:function(){return this.t1.firstName!="George"} } )
t1_firstName | t1_lastName | t1_age | t1_salary | t2_firstName | t2_lastName | t2_favColor |
---|---|---|---|---|---|---|
Susanna | Peterson | 55 | 66000 | Susanna | Peterson | green |
Anette | Irons | 26 | 31000 | Anette | Irons | green |
Anette | Steele | 62 | 72000 | undefined | undefined | undefined |
Anette | Steele | 50 | 70000 | undefined | undefined | undefined |
John | Green | 27 | 80000 | undefined | undefined | undefined |
Debbi | Jones | 58 | 93000 | undefined | undefined | undefined |
Anette | Jones | 22 | 76000 | undefined | undefined | undefined |
Susanna | Black | 58 | 52000 | undefined | undefined | undefined |
Debbi | Jones | 44 | 54000 | undefined | undefined | undefined |
undefined | undefined | undefined | undefined | Strange | Mike | red |
JSON :
[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000}, {"t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}]
Rows: 10 Time taken: JS 1 ms
SQLike.q( { Select: ['*'], From: {t1:dataArray}, CrossJoin: {t2:dataArray2}, Limit: 100 } )
t1_firstName | t1_lastName | t1_age | t1_salary | t2_firstName | t2_lastName | t2_favColor |
---|---|---|---|---|---|---|
Susanna | Peterson | 55 | 66000 | Susanna | Peterson | green |
Anette | Irons | 26 | 31000 | Susanna | Peterson | green |
Anette | Steele | 62 | 72000 | Susanna | Peterson | green |
Anette | Steele | 50 | 70000 | Susanna | Peterson | green |
John | Green | 27 | 80000 | Susanna | Peterson | green |
Debbi | Jones | 58 | 93000 | Susanna | Peterson | green |
George | Green | 63 | 40000 | Susanna | Peterson | green |
Anette | Jones | 22 | 76000 | Susanna | Peterson | green |
Susanna | Black | 58 | 52000 | Susanna | Peterson | green |
Debbi | Jones | 44 | 54000 | Susanna | Peterson | green |
Susanna | Peterson | 55 | 66000 | Anette | Irons | green |
Anette | Irons | 26 | 31000 | Anette | Irons | green |
Anette | Steele | 62 | 72000 | Anette | Irons | green |
Anette | Steele | 50 | 70000 | Anette | Irons | green |
John | Green | 27 | 80000 | Anette | Irons | green |
Debbi | Jones | 58 | 93000 | Anette | Irons | green |
George | Green | 63 | 40000 | Anette | Irons | green |
Anette | Jones | 22 | 76000 | Anette | Irons | green |
Susanna | Black | 58 | 52000 | Anette | Irons | green |
Debbi | Jones | 44 | 54000 | Anette | Irons | green |
Susanna | Peterson | 55 | 66000 | Strange | Mike | red |
Anette | Irons | 26 | 31000 | Strange | Mike | red |
Anette | Steele | 62 | 72000 | Strange | Mike | red |
Anette | Steele | 50 | 70000 | Strange | Mike | red |
John | Green | 27 | 80000 | Strange | Mike | red |
Debbi | Jones | 58 | 93000 | Strange | Mike | red |
George | Green | 63 | 40000 | Strange | Mike | red |
Anette | Jones | 22 | 76000 | Strange | Mike | red |
Susanna | Black | 58 | 52000 | Strange | Mike | red |
Debbi | Jones | 44 | 54000 | Strange | Mike | red |
JSON :
[{"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"George", "t1_lastName":"Green", "t1_age":63, "t1_salary":40000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000, "t2_firstName":"Susanna", "t2_lastName":"Peterson", "t2_favColor":"green"}, {"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"George", "t1_lastName":"Green", "t1_age":63, "t1_salary":40000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000, "t2_firstName":"Anette", "t2_lastName":"Irons", "t2_favColor":"green"}, {"t1_firstName":"Susanna", "t1_lastName":"Peterson", "t1_age":55, "t1_salary":66000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Anette", "t1_lastName":"Irons", "t1_age":26, "t1_salary":31000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":62, "t1_salary":72000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Anette", "t1_lastName":"Steele", "t1_age":50, "t1_salary":70000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"John", "t1_lastName":"Green", "t1_age":27, "t1_salary":80000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":58, "t1_salary":93000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"George", "t1_lastName":"Green", "t1_age":63, "t1_salary":40000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Anette", "t1_lastName":"Jones", "t1_age":22, "t1_salary":76000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Susanna", "t1_lastName":"Black", "t1_age":58, "t1_salary":52000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}, {"t1_firstName":"Debbi", "t1_lastName":"Jones", "t1_age":44, "t1_salary":54000, "t2_firstName":"Strange", "t2_lastName":"Mike", "t2_favColor":"red"}]
Rows: 30 Time taken: JS 2 ms
SQLike.q( { Union:[ { Select: ['firstName','lastName'], From: dataArray }, { Select: ['firstName','lastName'], From: dataArray2 } ] } )
firstName | lastName |
---|---|
Susanna | Peterson |
Anette | Irons |
Anette | Steele |
John | Green |
Debbi | Jones |
George | Green |
Anette | Jones |
Susanna | Black |
Strange | Mike |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}, {"firstName":"Anette", "lastName":"Steele"}, {"firstName":"John", "lastName":"Green"}, {"firstName":"Debbi", "lastName":"Jones"}, {"firstName":"George", "lastName":"Green"}, {"firstName":"Anette", "lastName":"Jones"}, {"firstName":"Susanna", "lastName":"Black"}, {"firstName":"Strange", "lastName":"Mike"}]
Rows: 9 Time taken: JS 2 ms
SQLike.q( { UnionAll:[ { Select: ['firstName','lastName'], From: dataArray }, { Select: ['firstName','lastName'], From: dataArray2 } ] } )
firstName | lastName |
---|---|
Susanna | Peterson |
Anette | Irons |
Anette | Steele |
Anette | Steele |
John | Green |
Debbi | Jones |
George | Green |
Anette | Jones |
Susanna | Black |
Debbi | Jones |
Susanna | Peterson |
Anette | Irons |
Strange | Mike |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}, {"firstName":"Anette", "lastName":"Steele"}, {"firstName":"Anette", "lastName":"Steele"}, {"firstName":"John", "lastName":"Green"}, {"firstName":"Debbi", "lastName":"Jones"}, {"firstName":"George", "lastName":"Green"}, {"firstName":"Anette", "lastName":"Jones"}, {"firstName":"Susanna", "lastName":"Black"}, {"firstName":"Debbi", "lastName":"Jones"}, {"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}, {"firstName":"Strange", "lastName":"Mike"}]
Rows: 13 Time taken: JS 2 ms
SQLike.q( { Intersect:[ { Select: ['firstName','lastName'], From: dataArray }, { Select: ['firstName','lastName'], From: dataArray2 } ] } )
firstName | lastName |
---|---|
Susanna | Peterson |
Anette | Irons |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}]
Rows: 2 Time taken: JS 0 ms
SQLike.q( { IntersectAll:[ { Select: ['firstName','lastName'], From: dataArray }, { Select: ['firstName','lastName'], From: dataArray2 } ] } )
firstName | lastName |
---|---|
Susanna | Peterson |
Anette | Irons |
Susanna | Peterson |
Anette | Irons |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}, {"firstName":"Susanna", "lastName":"Peterson"}, {"firstName":"Anette", "lastName":"Irons"}]
Rows: 4 Time taken: JS 1 ms
Except can also be written as Minus.
SQLike.q( { Except:[ { Select: ['firstName','lastName'], From: dataArray2 }, { Select: ['firstName','lastName'], From: dataArray } ] } )
firstName | lastName |
---|---|
Strange | Mike |
JSON :
[{"firstName":"Strange", "lastName":"Mike"}]
Rows: 1 Time taken: JS 1 ms
SQLike.q( { ExceptAll:[ { Select: ['firstName','lastName'], From: dataArray2 }, { Select: ['firstName','lastName'], From: dataArray } ] } )
firstName | lastName |
---|---|
Strange | Mike |
JSON :
[{"firstName":"Strange", "lastName":"Mike"}]
Rows: 1 Time taken: JS 0 ms
Raising the salary with 5% for everyone over 40 years old. Note that the update condition is in the form of a function that changes a field/property.
Please note: Update changes the orginal array.
SQLike.q( { Update: dataArray, Set: function(){this.salary*=1.05}, Where: function(){return this.age>40} } )
firstName | lastName | age | salary |
---|---|---|---|
Susanna | Peterson | 55 | 69300 |
Anette | Irons | 26 | 31000 |
Anette | Steele | 62 | 75600 |
Anette | Steele | 50 | 73500 |
John | Green | 27 | 80000 |
Debbi | Jones | 58 | 97650 |
George | Green | 63 | 42000 |
Anette | Jones | 22 | 76000 |
Susanna | Black | 58 | 54600 |
Debbi | Jones | 44 | 56700 |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":69300}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":75600}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":73500}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":97650}, {"firstName":"George", "lastName":"Green", "age":63, "salary":42000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":54600}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":56700}]
Rows: 10 Time taken: JS 1 ms
Insert a new post into a table.
Please note: Changes the orginal array.
SQLike.q( { InsertInto: dataArray, Values: {firstName:"Michael",lastName:"Arvidson",age:55,salary:100000} } )
firstName | lastName | age | salary |
---|---|---|---|
Susanna | Peterson | 55 | 69300 |
Anette | Irons | 26 | 31000 |
Anette | Steele | 62 | 75600 |
Anette | Steele | 50 | 73500 |
John | Green | 27 | 80000 |
Debbi | Jones | 58 | 97650 |
George | Green | 63 | 42000 |
Anette | Jones | 22 | 76000 |
Susanna | Black | 58 | 54600 |
Debbi | Jones | 44 | 56700 |
Michael | Arvidson | 55 | 100000 |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":69300}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":75600}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":73500}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":97650}, {"firstName":"George", "lastName":"Green", "age":63, "salary":42000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":54600}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":56700}, {"firstName":"Michael", "lastName":"Arvidson", "age":55, "salary":100000}]
Rows: 11 Time taken: JS 1 ms
Insert the posts selected into a table.
Please note: Changes the array specified by into.
SQLike.q( { Select: ['*'], From: dataArray2, Into: dataArray } )
firstName | lastName | age | salary | favColor |
---|---|---|---|---|
Susanna | Peterson | 55 | 69300 | undefined |
Anette | Irons | 26 | 31000 | undefined |
Anette | Steele | 62 | 75600 | undefined |
Anette | Steele | 50 | 73500 | undefined |
John | Green | 27 | 80000 | undefined |
Debbi | Jones | 58 | 97650 | undefined |
George | Green | 63 | 42000 | undefined |
Anette | Jones | 22 | 76000 | undefined |
Susanna | Black | 58 | 54600 | undefined |
Debbi | Jones | 44 | 56700 | undefined |
Michael | Arvidson | 55 | 100000 | undefined |
Susanna | Peterson | undefined | undefined | green |
Anette | Irons | undefined | undefined | green |
Strange | Mike | undefined | undefined | red |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":69300}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":75600}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":73500}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":97650}, {"firstName":"George", "lastName":"Green", "age":63, "salary":42000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":54600}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":56700}, {"firstName":"Michael", "lastName":"Arvidson", "age":55, "salary":100000}, {"firstName":"Susanna", "lastName":"Peterson", "favColor":"green"}, {"firstName":"Anette", "lastName":"Irons", "favColor":"green"}, {"firstName":"Strange", "lastName":"Mike", "favColor":"red"}]
Rows: 14 Time taken: JS 1 ms
Delete posts from a table.
Please note: Changes the array.
SQLike.q( { DeleteFrom: dataArray, Where:function(){return this.salary===undefined} } )
firstName | lastName | age | salary |
---|---|---|---|
Susanna | Peterson | 55 | 69300 |
Anette | Irons | 26 | 31000 |
Anette | Steele | 62 | 75600 |
Anette | Steele | 50 | 73500 |
John | Green | 27 | 80000 |
Debbi | Jones | 58 | 97650 |
George | Green | 63 | 42000 |
Anette | Jones | 22 | 76000 |
Susanna | Black | 58 | 54600 |
Debbi | Jones | 44 | 56700 |
Michael | Arvidson | 55 | 100000 |
JSON :
[{"firstName":"Susanna", "lastName":"Peterson", "age":55, "salary":69300}, {"firstName":"Anette", "lastName":"Irons", "age":26, "salary":31000}, {"firstName":"Anette", "lastName":"Steele", "age":62, "salary":75600}, {"firstName":"Anette", "lastName":"Steele", "age":50, "salary":73500}, {"firstName":"John", "lastName":"Green", "age":27, "salary":80000}, {"firstName":"Debbi", "lastName":"Jones", "age":58, "salary":97650}, {"firstName":"George", "lastName":"Green", "age":63, "salary":42000}, {"firstName":"Anette", "lastName":"Jones", "age":22, "salary":76000}, {"firstName":"Susanna", "lastName":"Black", "age":58, "salary":54600}, {"firstName":"Debbi", "lastName":"Jones", "age":44, "salary":56700}, {"firstName":"Michael", "lastName":"Arvidson", "age":55, "salary":100000}]
Rows: 11 Time taken: JS 1 ms
Repack an array of objects into an array of arrays - this saves some space if you want to send it as JSON via AJAX.
Please note: Pack changes the orginal array.
SQLike.q( { Pack: dataArray, Columns: ['firstName','lastName','age','salary'] } )
0 | 1 | 2 | 3 |
---|---|---|---|
Susanna | Peterson | 55 | 69300 |
Anette | Irons | 26 | 31000 |
Anette | Steele | 62 | 75600 |
Anette | Steele | 50 | 73500 |
John | Green | 27 | 80000 |
Debbi | Jones | 58 | 97650 |
George | Green | 63 | 42000 |
Anette | Jones | 22 | 76000 |
Susanna | Black | 58 | 54600 |
Debbi | Jones | 44 | 56700 |
Michael | Arvidson | 55 | 100000 |
JSON :
[["Susanna", "Peterson", 55, 69300], ["Anette", "Irons", 26, 31000], ["Anette", "Steele", 62, 75600], ["Anette", "Steele", 50, 73500], ["John", "Green", 27, 80000], ["Debbi", "Jones", 58, 97650], ["George", "Green", 63, 42000], ["Anette", "Jones", 22, 76000], ["Susanna", "Black", 58, 54600], ["Debbi", "Jones", 44, 56700], ["Michael", "Arvidson", 55, 100000]]
Rows: 11 Time taken: JS 0 ms