Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. SQL Anywhere ® Studio 9 Breck Carter Wordware Publishing, Inc. Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Library of Congress Cataloging-in-Publication Data Carter, Breck. SQL anywhere Studio9/byBreck Carter. p. cm. ISBN 1-55622-506-7 1. SQL (Computer program language) 2. Relational databases. I. Title. QA76.73.S67C36 2004 005.13'3—dc22 2004011573 © 2004, Wordware Publishing, Inc. All Rights Reserved 2320 Los Rios Boulevard Plano, Texas 75074 No part of this book may be reproduced in any form or by any means without permission in writing from Wordware Publishing, Inc. Printed in the United States of America ISBN 1-55622-506-7 10987654321 0406 SQL Anywhere is a registered trademark of Sybase, Inc. and its subsidiaries. All brand names and product names mentioned in this book are trademarks or service marks of their respective companies. Any omission or misuse (of any kind) of service marks or trademarks should not be regarded as intent to infringe on the property of others. The publisher recognizes and respects all marks used by companies, manufacturers, and developers as a means to distinguish their products. All inquiries for volume purchases of this book should be addressed to Wordware Publishing, Inc., at the above address. Telephone inquiries may be made by calling: (972) 423-0090 Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Contents Preface ix Acknowledgments xiii About the Author xiv Chapter 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 iii Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 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 Chapter 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 Chapter 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 Built-in Functions 107 3.12 Boolean Expressions and the WHERE Clause 113 3.12.1 Comparison Predicates 116 Contents iv Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 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 Chapter 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 169 4.4.1 Set UPDATE 174 4.5 UPDATE WHERE CURRENT OF Cursor 176 4.6 Chapter Summary 179 Chapter 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 Chapter 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 Contents v Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 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 Chapter 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 Chapter 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 Contents vi Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 8.15 Chapter Summary 305 Chapter 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 381 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 Chapter 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 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 Contents vii Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. 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 Contents viii Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. Preface There’s a good reason that SQL Anywhere has over 70% of the mobile database market. In fact, there are several good reasons: It’s easy to use, easy to adminis - ter, and it doesn’t take up much space. Those are all good things if you’re trying to deploy hundreds or thousands of databases. And they’re good things to have if you’re trying to embed relational databases inside tens of thousands of routers or switches or other hardware devices. But SQL Anywhere isn’t just for mobile and embedded databases; it’s got the features and the flexibility to work as a network server with hundreds of active users pounding away on a single database. And it’s got a solid foundation and a long history, from its roots with Watcom in the 1980s through to Powersoft and Sybase in the 1990s and now with iAnywhere Solutions in the new millennium. Through all those years, the SQL Anywhere development team has never strayed from one central virtue; as Richard Williams of VMI Communication and Learning Systems said it, “Watcom does things the way they should be done.” Here’s an overview of the history behind SQL Anywhere Studio Version 9: n 1965 The WATFOR FORTRAN compiler was initially developed for the IBM 7040 at the University of Waterloo. n 1981 The company Watcom was founded. n 1988 The PACEBase SQL Database System was released as part of the Watcom Information Workbench. It ran on PCs using DOS, and included ISQL, transaction processing, declarative referential integrity, CREATE TABLE and ALTER TABLE statements, inner joins, subqueries in SELECT lists, multiple user IDs, and a separate rollback file for recovery. This was “Version 1”; no Version 2 was ever released. n 1992 Watcom SQL 3 became commercially available. It was a multi-user server with row-level locking, a separate transaction log, and multi-table updates. Later versions added Windows 3 support, an ODBC driver, outer joins, DEFAULT values, CHECK constraints, TIME, DATE, and LONG data types, and online backup. n 1993 Powersoft included Watcom SQL 3.2 in the box with PowerBuilder 3. n 1994 Powersoft bought Watcom. n 1994 Watcom SQL 4 was released. It included stored procedures and trig - gers, cascading updates and deletes, temporary tables, multiple databases in one server, a self-tuning query optimizer, and TCP/IP support. n 1995 Sybase bought Powersoft. n 1995 SQL Anywhere 5 was released. It included SQL Remote, SQL Cen - tral (now Sybase Central), Transact SQL syntax, and support for the Sybase Replication Server. n 1996 SQL Anywhere 5.5 was released as a bundled product that included InfoMaker, NetImpact Dynamo (later PowerDynamo), and a plug-in archi - tecture for Sybase Central. ix Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark. [...]...Preface n 1998 SQL Anywhere 6 was released, with the new names “Adaptive Server Anywhere applied to the engine itself and SQL Anywhere Studio applied to the product bundle, which now included SQL Modeler (later called PowerDesigner) SQL Anywhere 6 was the version that introduced Java in the database; later releases added proxy... develop enterprise databases and applications using IMS DB/DC, DB2, Oracle, SQL Server, ASE, and, beginning in 1995, SQL Anywhere Breck has been a member of Team Sybase since 1993, which means you can find him answering questions on the SQL Anywhere newsgroups on behalf of Sybase and iAnywhere Solutions Breck is also a member of the iAnywhere Solutions Customer Advisory Board, where he is helping to shape... synchronization, and an interactive debugger n 2000 SQL Anywhere 7 was released It supported ASA databases as MobiLink remote databases, and included UltraLite improvements, an OLEDB driver, and dynamic cache resizing Version 7 also introduced the Java versions of ISQL and Sybase Central n 2000 iAnywhere Solutions, Inc was founded as a subsidiary of Sybase n 2001 SQL Anywhere 8 was released This version included... SQL Anywhere 9 was released It included hundreds more enhancements including more performance improvements, the Index Consultant, support for OLAP, XML, and 64-bit processors, and many new SQL features including recursive union and stored procedure calls in the FROM clause In the years to come, as the prices of computers and hard drives continue to fall and the performance and capabilities of SQL Anywhere. .. Synchronizing 8 Packaging 9 Protecting 10 Tuning Chapter 1, “Creating,” starts with Codd’s 12 rules that define what a relational database management system like SQL Anywhere really is It then proceeds to describe the five different kinds of tables SQL Anywhere uses: global permanent, global temporary, local temporary, remote, and proxy Chapter 1 also covers data types, column properties like DEFAULT, and... references to SQL Anywhere s own demonstration database, ASADEMO.DB, and a cute organization chart in Chapter 3 on the recursive UNION feature, there are no extended case studies or attempts to mimic the detail and complexity of real-world applications Instead, most of the examples use simple tables with artificial names like “t1” and “t2” The examples focus on the syntax and semantics of SQL Anywhere: ... browsing It also includes all of the examples from the book, plus a full copy of SQL Anywhere Studio 9 Developer Edition for Windows Please purchase PDF Split-Merge on www.verypdf.com to remove this watermark xii Acknowledgments I am grateful to Chris Kleisath, Dave Neudoerffer, Michael Paola, Glenn Paulley, and Tom Slee at iAnywhere Solutions for the years of encouragement, and to Steven McDowell for... continue to fall and the performance and capabilities of SQL Anywhere continue to improve, SQL Anywhere will be used for larger and more sophisticated applications This book is dedicated to that prospect, and the belief that you, the database designer and application developer, will want to explore the capabilities of SQL Anywhere and exploit its features to the fullest This book is divided into 10 chapters,... table must have a primary key: one or more non-null columns whose composite value is unique for each row in the table SQL Anywhere 9 lets you create a table without a primary key, but that’s a really bad idea for many reasons including performance It’s up to you to obey Rule 2, and SQL Anywhere 9 provides facilities for defining an artificial primary key if you can’t or don’t want to specify one that... NOT NULL, non_key_2 VARCHAR ( 100 ) NOT NULL ); Owner, table, and DBSPACE names are all standard SQL Anywhere identifiers An identifier is a string of up to 128 characters optionally surrounded by double quotes (" ") or square brackets ([ ]) The quotes or brackets are necessary if the string is an SQL Anywhere reserved word They are also necessary if the string is something other than one alphabetic . watermark. n 1998 SQL Anywhere 6 was released, with the new names “Adaptive Server Anywhere applied to the engine itself and SQL Anywhere Studio applied. Sybase bought Powersoft. n 1995 SQL Anywhere 5 was released. It included SQL Remote, SQL Cen - tral (now Sybase Central), Transact SQL syntax, and support for