Transact-SQL Cookbook by Jonathan Gennick, Ales Spetic

Total Page:16

File Type:pdf, Size:1020Kb

Transact-SQL Cookbook by Jonathan Gennick, Ales Spetic Transact-SQL Cookbook By Jonathan Gennick, Ales Spetic Publisher: O'Reilly Pub Date: March 2002 ISBN: 1-56592-756-7 Pages: 302 Table of • Slots: 1 Contents • Index • Reviews • Examples This cookbook contains a wealth of solutions to problems that SQL Reader programmers face all the time. Recipes inside range from how to perform • Reviews simple tasks, like importing external data, to ways of handling issues that are • Errata more complicated, like set algebra. Each recipe includes a discussion that explains the logic and concepts underlying the solution. The book covers audit logging, hierarchies, importing data, sets, statistics, temporal data, and data structures. Transact-SQL Cookbook By Jonathan Gennick, Ales Spetic Publisher: O'Reilly Pub Date: March 2002 ISBN: 1-56592-756-7 Pages: 302 Table of • Slots: 1 Contents • Index • Reviews • Examples Reader • Reviews • Errata Copyright Dedication Preface Why We Wrote This Book Audience for This Book Which Platform and Version? Structure of This Book Conventions Used in This Book About the Code Comments and Questions Acknowledgments Chapter 1. Pivot Tables Section 1.1. Using a Pivot Table Chapter 2. Sets Section 2.1. Introduction Section 2.2. The Students Example Section 2.3. Implementing Set Difference Section 2.4. Comparing Two Sets for Equality Section 2.5. Implementing Partial Intersection Section 2.6. Implementing Full Intersection Section 2.7. Classifying Subsets Section 2.8. Summarizing Classes of Sets Section 2.9. Aggregating Aggregates Section 2.10. Summarizing Aggregated Classes Section 2.11. Including Nonaggregated Columns Section 2.12. Finding the Top N Values in a Set Section 2.13. Reporting the Size of a Set's Complement Section 2.14. Finding the Complement of a Set Section 2.15. Finding the Complement of a Missing Set Section 2.16. Finding Complements of Sets with Different Universes Section 2.17. Comparing a Set with Its Universe Section 2.18. Dynamic Classification System Chapter 3. Data Structures Section 3.1. Types of Data Structures Section 3.2. Working Example Section 3.3. Finding Regions Section 3.4. Reporting Region Boundaries Section 3.5. Limiting Region Size Section 3.6. Ranking Regions by Size Section 3.7. Working with Sequences Section 3.8. Working with Runs Section 3.9. Cumulative Aggregates in Lists Section 3.10. Implementing a Stack Section 3.11. Implementing Queues Section 3.12. Implementing Priority Queues Section 3.13. Comparing Two Rows in an Array Section 3.14. Printing Matrices and Arrays Section 3.15. Transposing a Matrix Section 3.16. Calculating a Matrix Trace Section 3.17. Comparing Two Matrices for Size Section 3.18. Adding and Subtracting Matrices Section 3.19. Multiplying Matrices Chapter 4. Hierarchies in SQL Section 4.1. Types of Hierarchies Section 4.2. Creating a Permission Hierarchy Section 4.3. Changing Individual Permissions Section 4.4. Adding New Individual Permissions Section 4.5. Centralizing Authorization Logic Section 4.6. Implementing General Hierarchies Section 4.7. Traversing Hierarchies Recursively Section 4.8. Manipulating Hierarchies Recursively Section 4.9. Aggregating Hierarchies Section 4.10. Preparing Multilevel Operations Section 4.11. Aggregating Hierarchies Revised Chapter 5. Temporal Data Section 5.1. Introduction Section 5.2. The Schedules Example Section 5.3. Enforcing Granularity Rules Section 5.4. Storing Out-of-Range Temporal Values Section 5.5. Deriving the First and Last Dates of the Month Section 5.6. Printing Calendars Section 5.7. Calculating Durations Section 5.8. Reporting Durations Section 5.9. Querying Periods Section 5.10. Querying Periods and Respecting Granularity Section 5.11. Finding Available Periods Section 5.12. Finding Common Available Periods Section 5.13. Excluding Recurrent Events Section 5.14. Excluding Nonrecurring Events Section 5.15. Finding Continuous Periods Section 5.16. Using Calendar Information with Periods Section 5.17. Using Calendar Information with Durations Chapter 6. Audit Logging Section 6.1. Audit Logs Section 6.2. The Warehouse Example Section 6.3. Row-Level Logging Section 6.4. Reporting Log Events Section 6.5. Generating Current Snapshots Section 6.6. Generating Time-Restricted Snapshots Section 6.7. Undoing Table Changes Section 6.8. Minimizing Audit-Log Space Consumption Section 6.9. Online Account Balancing Section 6.10. Activity-Level Logging Section 6.11. Partitioning Large Log Tables Section 6.12. Server Push Chapter 7. Importing and Transforming Data Section 7.1. Considerations When Importing Data Section 7.2. Working Examples Section 7.3. Importing External Data Section 7.4. Importing Data into a Live System Section 7.5. Importing with a Single Procedure Section 7.6. Hiding the Import Procedure Section 7.7. Folding Tables Section 7.8. Pivoting Tables Section 7.9. Joining Arrays with Tables Section 7.10. Joining Arrays with Master Tables Section 7.11. Joining Arrays with Multiple Master Records Section 7.12. Extracting Master Records from Tables Section 7.13. Generating Master Records Online Section 7.14. Working with Duplicates Chapter 8. Statistics in SQL Section 8.1. Statistical Concepts Section 8.2. The Light-Bulb Factory Example Section 8.3. Calculating a Mean Section 8.4. Calculating a Mode Section 8.5. Calculating a Median Section 8.6. Calculating Standard Deviation, Variance, and Standard Error Section 8.7. Building Confidence Intervals Section 8.8. Calculating Correlation Section 8.9. Exploring Patterns with Autocorrelation Section 8.10. Using a Simple Moving Average Section 8.11. Extending Moving Averages Appendix A. The T-Distribution Table Colophon Index Copyright © 2002 O'Reilly & Associates, Inc. All rights reserved. Printed in the United States of America. Published by O'Reilly & Associates, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O'Reilly & Associates books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles ( http://safari.oreilly.com). For more information contact our corporate/institutional sales department: 800-998-9938 or [email protected]. Nutshell Handbook, the Nutshell Handbook logo, and the O'Reilly logo are a registered trademark of O'Reilly & Associates, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O'Reilly & Associates, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. The association between the image of a tree swift and the topic of Transact-SQL is a trademark of O'Reilly & Associates, Inc. While every precaution has been taken in the preparation of this book, the publisher and the authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. Dedication To my family: Helena, Peter, Mojca, and Bostjan -Ales To Donna, Jenny, and Jeff -Jonathan Preface SQL in general, and Transact-SQL in particular, is so deceptively simple that few people take the time to master it. Many of the SQL books currently on the market contribute to this state of affairs by not taking their readers very far beyond the simple SELECT column_name FROM table_name WHERE conditions pattern of writing SQL SELECT statements. In this book, we hope to take you far beyond the level of writing simple SQL statements and open your eyes to the full power of SQL and Transact-SQL. For many years, SQL has been the domain of large corporations using high-end databases such as Oracle, Sybase, Informix, and DB2. Microsoft's entry into the market with Microsoft SQL Server brought Transact-SQL to the workgroup server and desktop level, thereby broadening the market for Transact-SQL programmers. More systems are being programmed in SQL and Transact-SQL, and if you're a Transact- SQL programmer, you'll want to leverage Transact-SQL to its fullest. Getting the most out of SQL and Transact-SQL requires a particular way of thinking. SQL is a set-oriented language in which you focus on end results, not on the procedures used to accomplish those results. If you're used to thinking procedurally, this shift to set-oriented thinking can be jarring. The SQL solutions to problems that are easily described procedurally are often not obvious. So why bother with the set-oriented SQL solutions? It's true that Transact-SQL provides you with procedural capabilities, but use of those capabilities is no excuse for not utilizing the core SQL language to its fullest. SQL solutions are often magnitudes more efficient than the corresponding procedural solutions. Why We Wrote This Book We have many years experience working in SQL environments, and over the years we've developed, or stumbled across, a number of useful SQL design patterns that we apply to problems that we encounter in our day-to-day work. Knowing these patterns gives us an edge and allows us to accomplish things with ease that might otherwise be difficult. Looking back over our careers, we remember the "magic" of discovering a new and innovative SQL-based solution to a programming problem. There was the sudden flash of light and a rush of adrenalin as a whole new vista of possibilities opened up before us. It's our hope that we can share some of that magic with you. For that matter, we each learned a few pieces of magic from the other while collaborating on this book. Audience for This Book We have two target audiences in mind for this book: those who have just recently learned SQL and those who have been using SQL for several years. This is not a learning-SQL type of book. We assume that you have a working knowledge of the basic SQL statements: INSERT, UPDATE, DELETE, and SELECT. We also assume that you are passingly familiar with Transact-SQL's procedural capabilities.
Recommended publications
  • Cruise Shipboard Property Management System Security Guide Release 19.1 F20778-01
    Oracle® Hospitality Cruise Shipboard Property Management System Security Guide Release 19.1 F20778-01 February 2020 Copyright © 1995, 2020, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this software or related documentation is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government. This software or hardware is developed for general use in a variety of information management applications.
    [Show full text]
  • Tools User Guide Release 8.0 E84869-03
    Oracle® Hospitality Cruise Shipboard Property Management System Tools User Guide Release 8.0 E84869-03 December 2019 Copyright © 1995, 2019, Oracle and/or its affiliates. All rights reserved. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this software or related documentation is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.
    [Show full text]
  • Forensic Attribution Challenges During Forensic Examinations of Databases
    Forensic Attribution Challenges During Forensic Examinations Of Databases by Werner Karl Hauger Submitted in fulfilment of the requirements for the degree Master of Science (Computer Science) in the Faculty of Engineering, Built Environment and Information Technology University of Pretoria, Pretoria September 2018 Publication data: Werner Karl Hauger. Forensic Attribution Challenges During Forensic Examinations Of Databases. Master's disser- tation, University of Pretoria, Department of Computer Science, Pretoria, South Africa, September 2018. Electronic, hyperlinked versions of this dissertation are available online, as Adobe PDF files, at: https://repository.up.ac.za/ Forensic Attribution Challenges During Forensic Examinations Of Databases by Werner Karl Hauger E-mail: [email protected] Abstract An aspect of database forensics that has not yet received much attention in the aca- demic research community is the attribution of actions performed in a database. When forensic attribution is performed for actions executed in computer systems, it is nec- essary to avoid incorrectly attributing actions to processes or actors. This is because the outcome of forensic attribution may be used to determine civil or criminal liabil- ity. Therefore, correctness is extremely important when attributing actions in computer systems, also when performing forensic attribution in databases. Any circumstances that can compromise the correctness of the attribution results need to be identified and addressed. This dissertation explores possible challenges when performing forensic attribution in databases. What can prevent the correct attribution of actions performed in a database? The first identified challenge is the database trigger, which has not yet been studied in the context of forensic examinations. Therefore, the dissertation investigates the impact of database triggers on forensic examinations by examining two sub questions.
    [Show full text]
  • Lighting Application Suite
    Lighting Application Suite 7.0 System Manual Lighting Application Suite 7.0 System Manual (original version) Edition: 04.03.15 Published by: Traxon Technologies Europe GmbH Karl Schurz-Strasse 38 Paderborn, Germany ©2014, Traxon Technologies Europe GmbH All rights reserved Comments to: [email protected] Available for free download from www.traxontechnologies.com Subject to modification without prior notice. Typographical and other errors do not justify any claim for damages. All dimensions should be verified using an actual part. Except for internal use, relinquishment of the instructions to a third party, duplication in any type or form - also extracts - as well as exploitation and/or communication of the contents is not permitted. e:cue Lighting Application Suite: - Contents 1 Changes in LAS 7.0 9 1.1 Programmer .................................................................................................. 9 2 Introduction 11 2.1 The Lighting Application Suite ....................................................................... 11 2.2 About this book ............................................................................................. 11 3 How to use this manual 12 3.1 Previous knowledge ...................................................................................... 12 3.2 Levels............................................................................................................ 12 4 About the LAS 13 4.1 Objectives ....................................................................................................
    [Show full text]
  • Postgresql Replication Second Edition
    www.allitebooks.com PostgreSQL Replication Second Edition Leverage the power of PostgreSQL replication to make your databases more robust, secure, scalable, and fast Hans-Jürgen Schönig BIRMINGHAM - MUMBAI www.allitebooks.com PostgreSQL Replication Second Edition Copyright © 2015 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: August 2013 Second edition: July 2015 Production reference: 1240715 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78355-060-9 www.packtpub.com www.allitebooks.com Credits Author Project Coordinator Hans-Jürgen Schönig Vijay Kushlani Reviewers Proofreader Swathi Kurunji Safis Editing Jeff Lawson Maurício Linhares Indexer Priya Sane Shaun M. Thomas Tomas Vondra Graphics Sheetal Aute Commissioning Editor Kartikey Pandey Production Coordinator Komal Ramchandani Acquisition Editor Larissa Pinto Cover Work Komal Ramchandani Content Development Editor Nikhil Potdukhe Technical Editor Manali Gonsalves Copy Editors Dipti Mankame Vikrant Phadke www.allitebooks.com About the Author Hans-Jürgen Schönig has 15 years of experience with PostgreSQL.
    [Show full text]
  • Oracle Database from Wikipedia, the Free Encyclopedia Jump To: Navigation, Search Oracle Database
    The most important program that runs on a computer. Every general-purpose computer must have an operating system to run other programs. Operating systems perform basic tasks, such as recognizing input from the keyboard, sending output to the display screen, keeping track of files and directories on the disk, and controlling peripheral devices such as disk drives and printers. For large systems, the operating system has even greater responsibilities and powers. It is like a traffic cop -- it makes sure that different programs and users running at the same time do not interfere with each other. The operating system is also responsible for security, ensuring that unauthorized users do not access the system. Operating systems can be classified as follows: # multi-user : Allows two or more users to run programs at the same time. Some operating systems permit hundreds or even thousands of concurrent users. # multiprocessing : Supports running a program on more than one CPU. # multitasking : Allows more than one program to run concurrently. # multithreading : Allows different parts of a single program to run concurrently. # real time: Responds to input instantly. General-purpose operating systems, such as DOS and UNIX, are not real-time. Operating systems provide a software platform on top of which other programs, called application programs, can run. The application programs must be written to run on top of a particular operating system. Your choice of operating system, therefore, determines to a great extent the applications you can run. For PCs, the most popular operating systems are DOS, OS/2, and Windows, but others are available, such as Linux.
    [Show full text]
  • Table of Contents
    keeptool User’s Guide Version 6.2.0 KeepTool User’s Guide Page 1 Version 6.2.0 Table of Contents Table Of Contents TABLE OF CONTENTS........................................................................................2 !GETTING STARTED.....................................................................................16 About KeepTool........................................................................................................... 17 System Requirements ................................................................................................. 17 Workstation Requirements ..................................................................................................... 17 Server Requirements.............................................................................................................. 17 Installation.................................................................................................................... 18 License Agreement...................................................................................................... 20 Free 30-day Trial Period ......................................................................................................... 20 License Agreement for Registered Users............................................................................... 21 Copyright................................................................................................................................. 21 3rd party components ............................................................................................................
    [Show full text]
  • Outputting Event Log Events to a Remote SQL Database Using Powershell
    Peter McEldowney Mark Waddington | Capstone CSNT 255 Outputting Event Log Events to a Remote SQL Database Using PowerShell Objective: After completing this lab, the Administrator will have the Event Log from the computer of their choice uploading information to a SQL database. The step-by-step outlines how to create the tables that will be used to organize the data and will cover how to create a basic SQL script to create these tables. Within the script to create the tables, indexes will be covered to ensure quick access to the data by a particular column that is indexed and will also cover items to be aware of. After creating these tables, a script to upload the event log items to the SQL server will be created so that the script can be run from any machine to ensure scalability. After the script is created and tested, this step-by-step will go through how to create a trigger that will run the script whenever a new event log entry is created. Requirements: PowerShell 3.0, Microsoft SQL Server [w/ Management Tools] Step 1 : Create a diagram of the tables that will be used to store the data Considerations when designing your tables: a) What data is available? b) How will you identify the machine once the data is in the database? c) What log did the data come from and how will this be stored in the database? d) Is there an efficient way to organize the data to make retrieving the data quicker? e) What columns will people be searching from? f) What should the Primary Keys for the table(s) be? What is a Primary Key? A primary key is basically an index number.
    [Show full text]
  • Implementation Best Practice Guide
    Implementation Best Practice Guide Version 1.0 Release July 2016 Lexmark believes the information in this publication is accurate as of its publication date. The information is subject to change without notice. The information in this publication is provided as is. Lexmark makes no representations or warranties of any kind with respect to the information in this publication, and specifically disclaims implied warranties of merchantability or fitness for a particular purpose. Use, copying, and distribution of any Lexmark software described in this publication requires an applicable software license. For information on Lexmark product names and trademarks, visit Lexmark.com. All other trademarks used herein are the property of their respective owners. © Copyright 2016 Lexmark International, Inc. All rights reserved. Table of Contents Contents 1. OVERVIEW ............................................................................................................... 4 1.1. Purpose ...................................................................................................... 4 1.2. Intended Audience ...................................................................................... 4 1.3. Revision History .......................................................................................... 4 1.4. References ................................................................................................. 4 2. GLOSSARY .............................................................................................................
    [Show full text]
  • E-Maj Documentation Release 4.0.0 Philippe Beaudoin
    E-Maj Documentation Release 4.0.0 Philippe Beaudoin Sep 17, 2021 Overview: 1 Introduction 1 2 Concepts 3 3 Architecture 5 4 Quick start 9 5 Installing the E-Maj software 11 6 E-Maj extension setup 13 7 Upgrade an existing E-Maj version 17 8 Uninstalling an E-Maj extension from a database 23 9 PostgreSQL version upgrade 25 10 Set-up the E-Maj access policy 27 11 Creating and dropping tables groups 29 12 Main functions 35 13 Modifying tables groups 43 14 Other groups management functions 51 15 Marks management functions 57 16 Statistics functions 61 17 Data extraction functions 65 18 Other functions 69 19 Multi-groups functions 75 20 Parallel Rollback client 77 i 21 Rollback monitoring client 81 22 Parameters 83 23 Log tables structure 85 24 Reliability 87 25 Traces of operations 89 26 The E-Maj rollback under the Hood 93 27 Impacts on instance and database administration 97 28 Sensitivity to system time change 103 29 Performance 105 30 Usage limits 107 31 User’s responsibility 109 32 Emaj_web overview 111 33 Installing the Emaj_web client 113 34 Using Emaj_web 115 35 Contribute to the E-Maj development 127 36 E-Maj functions list 135 37 E-Maj distribution content 143 38 PostgreSQL and E-Maj versions compatibility matrix 145 39 Indices and tables 147 ii CHAPTER 1 Introduction 1.1 License This extension and its documentation are distributed under GPL license (GNU - General Public License). 1.2 E-Maj’s objectives E-Maj is the French acronym for “Enregistrement des Mises A Jour”, which means “updates recording”.
    [Show full text]
  • Database Concepts © Leo Mark 1 DATABASE CONCEPTS
    Database Concepts © Leo Mark 1 DATABASE CONCEPTS Leo Mark College of Computing Georgia Tech (January 1999) Database Concepts © Leo Mark 2 Course Contents Introduction Database Terminology Data Model Overview Database Architecture Database Management System Architecture Database Capabilities People That Work With Databases The Database Market Emerging Database Technologies What You Will Be Able To Learn More About Database Concepts © Leo Mark 3 INTRODUCTION What a Database Is and Is Not Models of Reality Why use Models? A Map Is a Model of Reality A Message to Map Makers When to Use a DBMS? Data Modeling Process Modeling Database Design Abstraction Database Concepts © Leo Mark 4 What a Database Is and Is Not The word database is commonly used to refer to any of the following: your personal address book in a Word document a collection of Word documents a collection of Excel Spreadsheets a very large flat file on which you run some statistical analysis functions data collected, maintained, and used in airline reservation data used to support the launch of a space shuttle Database Concepts © Leo Mark 5 Models of Reality DML DATABASE SYSTEM REALITY structures DATABASE processes DDL A database is a model of structures of reality The use of a database reflect processes of reality A database system is a software system which supports the definition and use of a database DDL: Data Definition Language M M DatabaseD ConceptsL: Data anipulation Language © Leo Mark 6 Why Use Models? Models can be useful when we want
    [Show full text]
  • Postgresql Server Programming
    PostgreSQL Server Programming Extend PostgreSQL and integrate the database layer into your development framework Hannu Krosing Jim Mlodgenski Kirk Roybal BIRMINGHAM - MUMBAI PostgreSQL Server Programming Copyright © 2013 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: June 2013 Production Reference: 1180613 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-84951-698-3 www.packtpub.com Cover Image by Hannu Krosing ([email protected]) Credits Authors Project Coordinator Hannu Krosing Shraddha Vora Jim Mlodgenski Kirk Roybal Proofreader Joel T. Johnson Reviewer Gabriele Bartolini Indexer Priya Subramani Acquisition Editor Sarah Cullington Graphics Ronak Dhruv Lead Technical Editor Susmita Panda Production Coordinator Arvindkumar Gupta Technical Editors Veronica Fernandes Cover Work Arvindkumar Gupta Vaibhav Pawar Kirti Pujari Amit Ramadas About the Authors Hannu Krosing was a PostgreSQL user before it was rewritten to use SQL as its main query language in 1995.
    [Show full text]