RisingRoad SQL Anywhere and MobiLink Professional Services Home | Services | About Us | Contact Us | News | Resources | Search


English Edition...



Chinese Edition...
Chines Edition
dearbook.com.cn


Japanese Edition...
Japanese Edition
amazon.co.jp
 


SQL Anywhere Studio 9 Developer's Guide

Breck Carter

English: ISBN 1-55622-506-7, Wordware Publishing, Inc., Plano, Texas
Available from amazon.com

Chinese: ISBN 7-121-02185-4, Publishing House of Electronics Industry (PHEI)
Available from dearbook.com.cn

Japanese: ISBN 4798110183
Available from amazon.co.jp



This book is simply a must-have for SQL Anywhere database developers because it's a complete and compact reference for experienced developers as well as comprehensive immersion for beginners and less experienced coders. Have fun reading it.
...from Berndt Hamboeck's review in the WebSphere Journal
"It's truly worth its weight in gold!"
Bill Appell, Programming Manager, Twin Oaks Software
"Good examples, advice on tuning etc, opinionated where it needs to be!"
Conference survey response
"This is brilliant!"
Ruth Haworth, Senior Information Developer, iAnywhere Solutions
"The author's expertise and experience is evident on every page.
This is an invaluable book."
Tom Slee, Documentation Manager, iAnywhere Solutions


Here's Breck Carter (center )on a visit to iAnywhere Solutions February 22, 2006, together with Chinese edition reviewers (left to right) Hong Shi, Raymond Wang, Bob Luo and Shengyu Bao:

Breck with Hong Shi, Raymond Wang, Bob Luo and Shengyu Bao



For an excerpt from the English edition see Local Temporary Tables in SQL Anywhere 9.



CONTENTS
1 CREATING  . . . . . . . . . . . . . . . . . . . . . . . . 1
   1.1 Introduction . . . . . . . . . . . . . . . . . . . . 1
   1.2 Codd’s 12 Rules for Relational Databases . . . . . . 2
   1.3 Five Types of Tables . . . . . . . . . . . . . . . . 4
   1.4 Global Permanent Table . . . . . . . . . . . . . . . 6
   1.5 Data Types . . . . . . . . . . . . . . . . . . . . . 7
      1.5.1 A String Is a String: BINARY, CHARACTER, LONG . 8
      1.5.2 Dates and Times . . . . . . . . . . . . . . . . 10
      1.5.3 Exact Decimals  . . . . . . . . . . . . . . . . 10
      1.5.4 Floating-Point Numbers  . . . . . . . . . . . . 11
      1.5.5 Binary Integers . . . . . . . . . . . . . . . . 12
      1.5.6 Literals  . . . . . . . . . . . . . . . . . . . 13
   1.6 Column Properties  . . . . . . . . . . . . . . . . . 14
   1.7 Computed Columns . . . . . . . . . . . . . . . . . . 14
   1.8 DEFAULT Values . . . . . . . . . . . . . . . . . . . 16
      1.8.1 DEFAULT AUTOINCREMENT . . . . . . . . . . . . . 17
      1.8.2 DEFAULT GLOBAL AUTOINCREMENT  . . . . . . . . . 18
      1.8.3 Literal Defaults  . . . . . . . . . . . . . . . 19
      1.8.4 Special Update Defaults . . . . . . . . . . . . 20
      1.8.5 Expressions as Defaults . . . . . . . . . . . . 21
   1.9 NULL Property  . . . . . . . . . . . . . . . . . . . 21
   1.10 Column Constraints  . . . . . . . . . . . . . . . . 21
      1.10.1 NOT NULL Constraint  . . . . . . . . . . . . . 22
      1.10.2 Column CHECK Constraint  . . . . . . . . . . . 22
      1.10.3 PRIMARY KEY Column Constraint  . . . . . . . . 23
      1.10.4 Foreign Key Column Constraint  . . . . . . . . 24
      1.10.5 UNIQUE Column Constraint . . . . . . . . . . . 25
   1.11 User-Defined Data Types . . . . . . . . . . . . . . 25
   1.12 Free Space  . . . . . . . . . . . . . . . . . . . . 27
   1.13 Table Constraints . . . . . . . . . . . . . . . . . 27
      1.13.1 Table CHECK Constraint . . . . . . . . . . . . 28
      1.13.2 PRIMARY KEY Table Constraint . . . . . . . . . 28
      1.13.3 FOREIGN KEY Table Constraint . . . . . . . . . 29
      1.13.4 UNIQUE Table Constraint  . . . . . . . . . . . 30
      1.14 Remote Data Access . . . . . . . . . . . . . . . 31
      1.14.1 CREATE SERVER  . . . . . . . . . . . . . . . . 32
      1.14.2 CREATE EXTERNLOGIN . . . . . . . . . . . . . . 32
      1.14.3 CREATE Remote and Proxy Tables . . . . . . . . 33
      1.14.4 CREATE EXISTING TABLE  . . . . . . . . . . . . 33
   1.15 Temporary Tables  . . . . . . . . . . . . . . . . . 35
      1.15.1 Global Temporary Tables  . . . . . . . . . . . 36
      1.15.2 Local Temporary Tables . . . . . . . . . . . . 37
      1.15.2.1 CREATE TABLE #table_name . . . . . . . . . . 37
      1.15.2.2 DECLARE LOCAL TEMPORARY TABLE  . . . . . . . 38
      1.15.2.3 SELECT INTO #table_name  . . . . . . . . . . 40
   1.16 Normalized Design . . . . . . . . . . . . . . . . . 40
      1.16.1 First Normal Form  . . . . . . . . . . . . . . 41
      1.16.2 Second Normal Form . . . . . . . . . . . . . . 42
      1.16.3 Third Normal Form  . . . . . . . . . . . . . . 43
      1.16.4 Boyce-Codd Normal Form . . . . . . . . . . . . 44
      1.16.5 Fourth Normal Form . . . . . . . . . . . . . . 45
      1.16.6 Fifth Normal Form  . . . . . . . . . . . . . . 46
   1.17 Chapter Summary . . . . . . . . . . . . . . . . . . 47
2 INSERTING   . . . . . . . . . . . . . . . . . . . . . . . 49
   2.1 Introduction . . . . . . . . . . . . . . . . . . . . 49
   2.2 Insert . . . . . . . . . . . . . . . . . . . . . . . 49
      2.2.1 INSERT All Values . . . . . . . . . . . . . . . 50
      2.2.2 INSERT Named Values . . . . . . . . . . . . . . 52
      2.2.3 INSERT Select All Columns . . . . . . . . . . . 53
      2.2.4 INSERT Select Column List . . . . . . . . . . . 54
      2.2.5 INSERT Select With Auto Name  . . . . . . . . . 55
   2.3 LOAD TABLE . . . . . . . . . . . . . . . . . . . . . 56
   2.4 ISQL INPUT . . . . . . . . . . . . . . . . . . . . . 64
   2.5 Chapter Summary  . . . . . . . . . . . . . . . . . . 68
3 SELECTING   . . . . . . . . . . . . . . . . . . . . . . . 69
   3.1 Introduction . . . . . . . . . . . . . . . . . . . . 69
   3.2 Logical Execution of a SELECT  . . . . . . . . . . . 70
   3.3 FROM Clause  . . . . . . . . . . . . . . . . . . . . 80
   3.4 JOIN   . . . . . . . . . . . . . . . . . . . . . . . 82
      3.4.1 CROSS JOIN  . . . . . . . . . . . . . . . . . . 82
      3.4.2 INNER JOIN  . . . . . . . . . . . . . . . . . . 83
      3.4.3 LEFT OUTER JOIN . . . . . . . . . . . . . . . . 84
      3.4.4 RIGHT OUTER JOIN  . . . . . . . . . . . . . . . 85
      3.4.5 FULL OUTER JOIN . . . . . . . . . . . . . . . . 86
   3.5 Derived Tables . . . . . . . . . . . . . . . . . . . 87
   3.6 Multi-Table Joins  . . . . . . . . . . . . . . . . . 90
   3.7 SELECT FROM Procedure Call . . . . . . . . . . . . . 96
   3.8 LATERAL Procedure Call . . . . . . . . . . . . . . . 99
   3.9 SELECT List  . . . . . . . . . . . . . . . . . . . . 101
   3.10 Expressions and Operators . . . . . . . . . . . . . 102
      3.10.1 IF and CASE Expressions  . . . . . . . . . . . 105
   3.11 Top 15 Scalar Builtin Functions . . . . . . . . . . 107
   3.12 Boolean Expressions and the WHERE Clause  . . . . . 113
      3.12.1 Comparison Predicates  . . . . . . . . . . . . 116
      3.12.2 EXISTS Predicates  . . . . . . . . . . . . . . 117
      3.12.3 IN Predicates  . . . . . . . . . . . . . . . . 118
      3.12.4 BETWEEN Predicates . . . . . . . . . . . . . . 119
      3.12.5 NULL Test Predicates . . . . . . . . . . . . . 120
      3.12.6 LIKE Predicates  . . . . . . . . . . . . . . . 120
      3.12.7 Trigger Predicates . . . . . . . . . . . . . . 122
   3.13 GROUP BY Clause . . . . . . . . . . . . . . . . . . 123
   3.14 Aggregate Function Calls  . . . . . . . . . . . . . 125
   3.15 GROUP BY ROLLUP Clause  . . . . . . . . . . . . . . 131
   3.16 HAVING Clause . . . . . . . . . . . . . . . . . . . 134
   3.17 ORDER BY Clause . . . . . . . . . . . . . . . . . . 135
   3.18 SELECT DISTINCT . . . . . . . . . . . . . . . . . . 137
   3.19 FIRST and TOP . . . . . . . . . . . . . . . . . . . 137
   3.20 NUMBER(*) . . . . . . . . . . . . . . . . . . . . . 139
   3.21 INTO Clause . . . . . . . . . . . . . . . . . . . . 140
   3.22 UNION, EXCEPT, and INTERSECT  . . . . . . . . . . . 141
   3.23 CREATE VIEW . . . . . . . . . . . . . . . . . . . . 145
   3.24 WITH Clause . . . . . . . . . . . . . . . . . . . . 148
      3.24.1 Recursive UNION  . . . . . . . . . . . . . . . 149
   3.25 UNLOAD TABLE and UNLOAD SELECT  . . . . . . . . . . 155
   3.26 ISQL OUTPUT . . . . . . . . . . . . . . . . . . . . 160
   3.27 Chapter Summary . . . . . . . . . . . . . . . . . . 165
4 UPDATING    . . . . . . . . . . . . . . . . . . . . . . . 167
   4.1 Introduction . . . . . . . . . . . . . . . . . . . . 167
   4.2 Single-Row UPDATE  . . . . . . . . . . . . . . . . . 167
   4.3 Multi-Row UPDATE . . . . . . . . . . . . . . . . . . 169
   4.4 Logical Execution of a Set UPDATE  . . . . . . . . . 170
      4.4.1 Set UPDATE  . . . . . . . . . . . . . . . . . . 174
   4.5 UPDATE WHERE CURRENT OF Cursor . . . . . . . . . . . 176
   4.6 Chapter Summary  . . . . . . . . . . . . . . . . . . 179
5 DELETING    . . . . . . . . . . . . . . . . . . . . . . . 181
   5.1 Introduction . . . . . . . . . . . . . . . . . . . . 181
   5.2 Single-Row DELETE  . . . . . . . . . . . . . . . . . 181
   5.3 Multi-Row DELETE . . . . . . . . . . . . . . . . . . 182
   5.4 Logical Execution of a Set DELETE  . . . . . . . . . 183
      5.4.1 Set DELETE  . . . . . . . . . . . . . . . . . . 185
   5.5 DELETE WHERE CURRENT OF Cursor . . . . . . . . . . . 188
   5.6 TRUNCATE TABLE . . . . . . . . . . . . . . . . . . . 190
   5.7 Chapter Summary  . . . . . . . . . . . . . . . . . . 194
6 FETCHING    . . . . . . . . . . . . . . . . . . . . . . . 195
   6.1 Introduction . . . . . . . . . . . . . . . . . . . . 195
   6.2 Cursor FETCH Loop  . . . . . . . . . . . . . . . . . 195
      6.2.1 DECLARE CURSOR FOR Select . . . . . . . . . . . 199
      6.2.2 DECLARE CURSOR USING Select . . . . . . . . . . 203
      6.2.3 DECLARE CURSOR FOR CALL . . . . . . . . . . . . 204
      6.2.4 OPEN and CLOSE Cursor . . . . . . . . . . . . . 206
      6.2.5 FETCH Cursor  . . . . . . . . . . . . . . . . . 206
   6.3 Cursor FOR Loop  . . . . . . . . . . . . . . . . . . 207
   6.4 Chapter Summary  . . . . . . . . . . . . . . . . . . 210
7 SYNCHRONIZING . . . . . . . . . . . . . . . . . . . . . . 211
   7.1 Introduction . . . . . . . . . . . . . . . . . . . . 211
   7.2 How MobiLink Works . . . . . . . . . . . . . . . . . 212
   7.3 The MobiLink ASA Client  . . . . . . . . . . . . . . 216
   7.4 MobiLink Client Setup  . . . . . . . . . . . . . . . 217
      7.4.1 CREATE PUBLICATION  . . . . . . . . . . . . . . 217
      7.4.2 CREATE SYNCHRONIZATION USER . . . . . . . . . . 219
      7.4.3 CREATE SYNCHRONIZATION SUBSCRIPTION . . . . . . 220
      7.4.4 The DBMLSYNC Command Line . . . . . . . . . . . 221
      7.4.5 SYSSYNC and Publication Defaults  . . . . . . . 226
   7.5 The MobiLink Server  . . . . . . . . . . . . . . . . 228
   7.6 MobiLink Server Setup  . . . . . . . . . . . . . . . 229
      7.6.1 Connection-Level Scripts  . . . . . . . . . . . 229
      7.6.2 Session-Level Scripts . . . . . . . . . . . . . 230
      7.6.3 Table-Level Scripts . . . . . . . . . . . . . . 232
      7.6.4 Row-Level Scripts . . . . . . . . . . . . . . . 233
         7.6.4.1 Handling Uploaded Inserts  . . . . . . . . 233
         7.6.4.2 Handling Uploaded Updates  . . . . . . . . 234
         7.6.4.3 Handling Uploaded Deletes  . . . . . . . . 235
         7.6.4.4 Handling Upload Conflicts  . . . . . . . . 236
         7.6.4.5 Handling Upload Errors . . . . . . . . . . 240
         7.6.4.6 Downloading Inserts and Updates  . . . . . 243
         7.6.4.7 Downloading Deletes  . . . . . . . . . . . 246
         7.6.4.8 Handling Download Errors . . . . . . . . . 249
   7.7 The MobiLink System Tables . . . . . . . . . . . . . 254
   7.8 MobiLink Monitor . . . . . . . . . . . . . . . . . . 258
   7.9 Chapter Summary  . . . . . . . . . . . . . . . . . . 260
8 PACKAGING   . . . . . . . . . . . . . . . . . . . . . . . 261
   8.1 Introduction . . . . . . . . . . . . . . . . . . . . 261
   8.2 BEGIN Block  . . . . . . . . . . . . . . . . . . . . 261
   8.3 Exception Handler  . . . . . . . . . . . . . . . . . 264
   8.4 Assignment Statement . . . . . . . . . . . . . . . . 267
   8.5 IF Statement . . . . . . . . . . . . . . . . . . . . 268
   8.6 CASE Statement . . . . . . . . . . . . . . . . . . . 269
   8.7 WHILE Loop . . . . . . . . . . . . . . . . . . . . . 270
   8.8 EXECUTE IMMEDIATE  . . . . . . . . . . . . . . . . . 271
   8.9 CREATE PROCEDURE, CALL, and RETURN . . . . . . . . . 274
   8.10 CREATE FUNCTION . . . . . . . . . . . . . . . . . . 280
   8.11 CREATE TRIGGER  . . . . . . . . . . . . . . . . . . 284
   8.12 CREATE EVENT  . . . . . . . . . . . . . . . . . . . 293
   8.13 TRIGGER EVENT . . . . . . . . . . . . . . . . . . . 301
   8.14 CREATE VARIABLE . . . . . . . . . . . . . . . . . . 304
   8.15 Chapter Summary . . . . . . . . . . . . . . . . . . 305
9 PROTECTING  . . . . . . . . . . . . . . . . . . . . . . . 307
   9.1 Introduction . . . . . . . . . . . . . . . . . . . . 307
   9.2 Options  . . . . . . . . . . . . . . . . . . . . . . 308
   9.3 Transactions . . . . . . . . . . . . . . . . . . . . 313
   9.4 Savepoints and Subtransactions . . . . . . . . . . . 320
   9.5 Error Handling . . . . . . . . . . . . . . . . . . . 324
      9.5.1 SIGNAL and RESIGNAL . . . . . . . . . . . . . . 324
      9.5.2 RAISERROR and CREATE MESSAGE  . . . . . . . . . 327
      9.5.3 ROLLBACK TRIGGER  . . . . . . . . . . . . . . . 333
   9.6 Locks  . . . . . . . . . . . . . . . . . . . . . . . 336
   9.7 Blocks and Isolation Levels  . . . . . . . . . . . . 339
      9.7.1 Isolation Level 0 . . . . . . . . . . . . . . . 340
      9.7.2 Isolation Level 1 . . . . . . . . . . . . . . . 343
      9.7.3 Isolation Level 2 . . . . . . . . . . . . . . . 346
      9.7.4 Isolation Level 3 . . . . . . . . . . . . . . . 349
   9.8 Deadlock . . . . . . . . . . . . . . . . . . . . . . 355
   9.9 Mutexes  . . . . . . . . . . . . . . . . . . . . . . 359
   9.10 GRANT CONNECT . . . . . . . . . . . . . . . . . . . 361
      9.10.1 Table Privileges . . . . . . . . . . . . . . . 364
      9.10.2 View Privileges  . . . . . . . . . . . . . . . 367
      9.10.3 Execution Privileges . . . . . . . . . . . . . 369
      9.10.4 Special Privileges . . . . . . . . . . . . . . 370
      9.10.5 GRANT GROUP  . . . . . . . . . . . . . . . . . 372
   9.11 Logging and Recovery  . . . . . . . . . . . . . . . 375
   9.12 Backup  . . . . . . . . . . . . . . . . . . . . . . 379
      9.12.1 Full Offline Image Backup  . . . . . . . . . . 379
      9.12.2 Full Online Image Backup . . . . . . . . . . . 382
      9.12.3 Differential Online Log Backup . . . . . . . . 384
      9.12.4 Incremental Online Log Backup  . . . . . . . . 385
      9.12.5 Live Log Backup  . . . . . . . . . . . . . . . 386
   9.13 Restore . . . . . . . . . . . . . . . . . . . . . . 387
   9.14 Validation  . . . . . . . . . . . . . . . . . . . . 393
   9.15 Chapter Summary . . . . . . . . . . . . . . . . . . 396
10 TUNING     . . . . . . . . . . . . . . . . . . . . . . . 399
   10.1 Introduction  . . . . . . . . . . . . . . . . . . . 399
   10.2 Request-Level Logging . . . . . . . . . . . . . . . 400
   10.3 Index Consultant  . . . . . . . . . . . . . . . . . 408
   10.4 Execution Profiler  . . . . . . . . . . . . . . . . 413
   10.5 Graphical Plan  . . . . . . . . . . . . . . . . . . 416
   10.6 File Fragmentation and Reorganization . . . . . . . 421
      10.6.1 File Fragmentation . . . . . . . . . . . . . . 421
      10.6.2 Table Fragmentation  . . . . . . . . . . . . . 423
      10.6.3 Table Reorganization . . . . . . . . . . . . . 428
      10.6.4 Index Fragmentation  . . . . . . . . . . . . . 429
      10.6.5 Index Reorganization . . . . . . . . . . . . . 432
      10.6.6 Database Reorganization with Unload/Reload . . 433
   10.7 CREATE INDEX  . . . . . . . . . . . . . . . . . . . 437
   10.8 Database Performance Counters . . . . . . . . . . . 443
   10.9 Tips and Techniques . . . . . . . . . . . . . . . . 446
   10.10 Chapter Summary  . . . . . . . . . . . . . . . . . 453
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . 455



This page was last updated on April 24, 2006.