0% found this document useful (0 votes)
5 views

SQL Primer: An Accelerated Introduction to SQL Basics Rahul Batra - Get the ebook in PDF format for a complete experience

The document provides information about various SQL-related ebooks available for download at textbookfull.com, including titles like 'SQL Primer' by Rahul Batra and 'Learning SQL' by Alan Beaulieu. It emphasizes the importance of SQL skills for programmers, system administrators, and data scientists. Users can explore the collection and download ebooks in multiple formats for convenient reading on any device.

Uploaded by

libbysileo
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

SQL Primer: An Accelerated Introduction to SQL Basics Rahul Batra - Get the ebook in PDF format for a complete experience

The document provides information about various SQL-related ebooks available for download at textbookfull.com, including titles like 'SQL Primer' by Rahul Batra and 'Learning SQL' by Alan Beaulieu. It emphasizes the importance of SQL skills for programmers, system administrators, and data scientists. Users can explore the collection and download ebooks in multiple formats for convenient reading on any device.

Uploaded by

libbysileo
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 58

Explore the full ebook collection and download it now at textbookfull.

com

SQL Primer: An Accelerated Introduction to SQL


Basics Rahul Batra

https://textbookfull.com/product/sql-primer-an-accelerated-
introduction-to-sql-basics-rahul-batra/

OR CLICK HERE

DOWLOAD EBOOK

Browse and Get More Ebook Downloads Instantly at https://textbookfull.com


Click here to visit textbookfull.com and download textbook now
Your digital treasures (PDF, ePub, MOBI) await
Download instantly and pick your perfect format...

Read anywhere, anytime, on any device!

Learning SQL Master SQL Fundamentals Alan Beaulieu

https://textbookfull.com/product/learning-sql-master-sql-fundamentals-
alan-beaulieu/

textbookfull.com

SQL Server Execution Plans For SQL Server 2008 through to


2017 and Azure SQL Database 3rd Edition Grant Fritchey

https://textbookfull.com/product/sql-server-execution-plans-for-sql-
server-2008-through-to-2017-and-azure-sql-database-3rd-edition-grant-
fritchey/
textbookfull.com

SQL Easy SQL Programming Database Management for Beginners


Your Step By Step Guide to Learning the SQL Database Felix
Alvaro
https://textbookfull.com/product/sql-easy-sql-programming-database-
management-for-beginners-your-step-by-step-guide-to-learning-the-sql-
database-felix-alvaro/
textbookfull.com

Practical guide to Oracle SQL, T-SQL and MySQL 1st Edition


Preston Zhang

https://textbookfull.com/product/practical-guide-to-oracle-sql-t-sql-
and-mysql-1st-edition-preston-zhang/

textbookfull.com
Azure SQL Revealed: A Guide to the Cloud for SQL Server
Professionals Bob Ward

https://textbookfull.com/product/azure-sql-revealed-a-guide-to-the-
cloud-for-sql-server-professionals-bob-ward/

textbookfull.com

Excel Basics to Blackbelt An Accelerated Guide to Decision


Support Designs 3rd Edition Elliot Bendoly

https://textbookfull.com/product/excel-basics-to-blackbelt-an-
accelerated-guide-to-decision-support-designs-3rd-edition-elliot-
bendoly/
textbookfull.com

PROC SQL Beyond the Basics Using SAS Third Edition Kirk
Paul Lafler

https://textbookfull.com/product/proc-sql-beyond-the-basics-using-sas-
third-edition-kirk-paul-lafler/

textbookfull.com

Azure SQL Revealed: A Guide to the Cloud for SQL Server


Professionals 1st Edition Bob Ward

https://textbookfull.com/product/azure-sql-revealed-a-guide-to-the-
cloud-for-sql-server-professionals-1st-edition-bob-ward/

textbookfull.com

SQL for Data Analytics: Harness the power of SQL to


extract insights from data, 3rd Edition Jun Shan

https://textbookfull.com/product/sql-for-data-analytics-harness-the-
power-of-sql-to-extract-insights-from-data-3rd-edition-jun-shan/

textbookfull.com
SQL Primer
An Accelerated Introduction
to SQL Basics

Add a core competency to
your skill set that every
programmer, system administrator,
database administrator,
and data scientist should have

Rahul Batra
SQL Primer
An Accelerated Introduction
to SQL Basics

Rahul Batra
SQL Primer
Rahul Batra
Gurgaon, Haryana, India

ISBN-13 (pbk): 978-1-4842-3575-1 ISBN-13 (electronic): 978-1-4842-3576-8


https://doi.org/10.1007/978-1-4842-3576-8
Library of Congress Control Number: 2018947350
Copyright © 2018 by Rahul Batra
This work is subject to copyright. All rights are reserved by the Publisher, whether the whole
or part of the material is concerned, specifically the rights of translation, reprinting, reuse of
illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way,
and transmission or information storage and retrieval, electronic adaptation, computer software,
or by similar or dissimilar methodology now known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos,
and images only in an editorial fashion and to the benefit of the trademark owner, with no
intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of
publication, neither the authors nor the editors nor the publisher can accept any legal
responsibility for any errors or omissions that may be made. The publisher makes no warranty,
express or implied, with respect to the material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Jonathan Gennick
Development Editor: Laura Berendson
Coordinating Editor: Jill Balzano
Cover designed by eStudioCalamar
Cover image designed by Freepik (www.freepik.com)
Distributed to the book trade worldwide by Springer Science+Business Media New York,
233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505,
e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a
California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc
(SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail [email protected], or visit http://www.apress.
com/rights-permissions.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook
versions and licenses are also available for most titles. For more information, reference our Print
and eBook Bulk Sales web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is available
to readers on GitHub via the book's product page, located at www.apress.com/9781484235751.
For more detailed information, please visit http://www.apress.com/source-code.
Printed on acid-free paper
To Mum and Dad.
Table of Contents
About the Author���������������������������������������������������������������������������������xi
About the Technical Reviewer�����������������������������������������������������������xiii
Acknowledgments������������������������������������������������������������������������������xv
Introduction��������������������������������������������������������������������������������������xvii

Chapter 1: An Introduction to SQL��������������������������������������������������������1


The Relational Model and SQL������������������������������������������������������������������������������2
Advantages of Using SQL��������������������������������������������������������������������������������������4
SQL Commands Classification������������������������������������������������������������������������������5
Explaining Tables��������������������������������������������������������������������������������������������������5
Data Types in SQL�������������������������������������������������������������������������������������������������7

Chapter 2: Getting Your Database Ready��������������������������������������������11


Using PostgreSQL�����������������������������������������������������������������������������������������������12
Using SQLite��������������������������������������������������������������������������������������������������������14
Creating Your Own Database������������������������������������������������������������������������������16
Table Creation�����������������������������������������������������������������������������������������������������17
Inserting Data������������������������������������������������������������������������������������������������������20
Writing Your First Query��������������������������������������������������������������������������������������21

Chapter 3: The Benefit of Constraints�������������������������������������������������25


The Null Constraint���������������������������������������������������������������������������������������������26
Selective Fields INSERT��������������������������������������������������������������������������������������28
Check Constraints�����������������������������������������������������������������������������������������������30

v
Table of Contents

Primary Key Constraint���������������������������������������������������������������������������������������32


Unique Key Constraints���������������������������������������������������������������������������������������34
Differences Between a Primary Key and a Unique Key�������������������������������������36

Chapter 4: Operations on Tables���������������������������������������������������������37


Dropping Tables��������������������������������������������������������������������������������������������������37
Creating New Tables from Existing Tables����������������������������������������������������������39
Modifying Tables�������������������������������������������������������������������������������������������������42
Showing Table Information in PostgreSQL����������������������������������������������������������43
Showing Table Information in SQLite������������������������������������������������������������������45
Showing Table Information in Other DBMS’s������������������������������������������������������46

Chapter 5: Writing Basic Queries��������������������������������������������������������47


Selecting a Limited Number of Columns�������������������������������������������������������������47
Ordering the Results�������������������������������������������������������������������������������������������49
Ordering Using Field Abbreviations���������������������������������������������������������������������50
Ordering by Multiple Columns�����������������������������������������������������������������������������51
Putting Conditions with WHERE��������������������������������������������������������������������������53
Combining Conditions�����������������������������������������������������������������������������������������55

Chapter 6: Manipulating Data�������������������������������������������������������������57


Inserting Data into a Table from Another Table���������������������������������������������������57
Updating Existing Data����������������������������������������������������������������������������������������60
Deleting Data from Tables�����������������������������������������������������������������������������������63

Chapter 7: Organizing Your Data��������������������������������������������������������65


Normalization������������������������������������������������������������������������������������������������������65
Atomicity�������������������������������������������������������������������������������������������������������������67
Repeating Groups������������������������������������������������������������������������������������������������68
Splitting the Table�����������������������������������������������������������������������������������������������69

vi
Table of Contents

Chapter 8: Doing More with Queries���������������������������������������������������75


Counting the Records in a Table�������������������������������������������������������������������������75
Using DISTINCT with COUNT�������������������������������������������������������������������������������77
Column Aliases����������������������������������������������������������������������������������������������������79
Order of Execution of SELECT Queries����������������������������������������������������������������82
Using the LIKE Operator��������������������������������������������������������������������������������������83

Chapter 9: Calculated Fields���������������������������������������������������������������87


Mathematical Calculations����������������������������������������������������������������������������������87
String Operations������������������������������������������������������������������������������������������������89
Literal Values�������������������������������������������������������������������������������������������������������92

Chapter 10: Aggregation and Grouping����������������������������������������������95


Aggregate Functions�������������������������������������������������������������������������������������������95
Using the Extreme Functions – MAX and MIN�����������������������������������������������������98
Grouping Data���������������������������������������������������������������������������������������������������100
Grouping and Aggregate Functions�������������������������������������������������������������������103
The HAVING Clause�������������������������������������������������������������������������������������������105

Chapter 11: Understanding Joins�����������������������������������������������������109


Alternative Join Syntax�������������������������������������������������������������������������������������111
Resolving Ambiguity in Join Columns���������������������������������������������������������������112
Outer Joins��������������������������������������������������������������������������������������������������������113
Cross Joins�������������������������������������������������������������������������������������������������������115
Self Joins����������������������������������������������������������������������������������������������������������118
Non-Equi Joins��������������������������������������������������������������������������������������������������120

Chapter 12: Subqueries��������������������������������������������������������������������123


Types of Subqueries������������������������������������������������������������������������������������������124
Existence Tests in Subqueries��������������������������������������������������������������������������125
Using Subqueries in INSERT Statements����������������������������������������������������������127
Using ANY and ALL��������������������������������������������������������������������������������������������129

vii
Table of Contents

Chapter 13: Working in Sets�������������������������������������������������������������133


Union�����������������������������������������������������������������������������������������������������������������133
Intersection�������������������������������������������������������������������������������������������������������136
Difference���������������������������������������������������������������������������������������������������������138

Chapter 14: Views����������������������������������������������������������������������������141


Why Are Views Needed?�����������������������������������������������������������������������������������141
Creating a View�������������������������������������������������������������������������������������������������142
Modifying Data Through Views�������������������������������������������������������������������������145
Deleting Views��������������������������������������������������������������������������������������������������149

Chapter 15: Indexing������������������������������������������������������������������������151


Creating an Index����������������������������������������������������������������������������������������������152
Using EXPLAIN to See Indexes at Work�������������������������������������������������������������154
Unique Indexes�������������������������������������������������������������������������������������������������158
How Do Indexes Work?�������������������������������������������������������������������������������������160
Index Overheads�����������������������������������������������������������������������������������������������161
Deleting an Index����������������������������������������������������������������������������������������������163

Chapter 16: Access Control Statements�������������������������������������������165


Creating New Users in PostgreSQL�������������������������������������������������������������������166
Grant Privileges to Users�����������������������������������������������������������������������������������169
Revoking Privileges�������������������������������������������������������������������������������������������172

Appendix A: Further Reading������������������������������������������������������������175

Appendix B: Database Management Systems and Tools������������������179


Relational Database Management Systems�����������������������������������������������������179
SQL Development Environments�����������������������������������������������������������������������181

viii
Table of Contents

Appendix C: A History of SQL and Relational Databases������������������183


The Rise of Sophisticated File-Oriented Systems���������������������������������������������183
The Entry of Database Systems������������������������������������������������������������������������184
Genesis of the Relational Model�����������������������������������������������������������������������185
The Hard Fought Battle of Query Languages����������������������������������������������������186

Index�������������������������������������������������������������������������������������������������189

ix
About the Author
Rahul Batra was first introduced to
programming in 1996 in GWBASIC, but he
did not seriously foray into it until 2001 when
he started learning C++. Along the way, there
were dabblings in many other languages like
C, Ruby, Perl, Python, and Lisp. He has worked
with databases such as PostgreSQL, Sybase
ASA, and SQLite. He is passionate about
sharing knowledge, especially with those who
are just starting out. Rahul currently lives and
works in Gurgaon, India.

xi
About the Technical Reviewer
Stefan Ardeleanu was born in Bucharest,
Romania, in 1967. He graduated Math and
Philosophy, and he was a math teacher for
10 years. Afterwards, he started a career in
software development. He felt attracted by
databases from the beginning so his entire
career in software industry has been related
to databases and, especially, to database
development and design.
Stefan Ardeleanu is a database specialist,
a database architect and developer, working
for many years under various systems as Oracle, SQL Server, DB2,
and PostgreSQL. He has experience in OLTP and Data warehouse and
replication systems.
Stefan is a passionate SQL guy, and he was able to develop and
improve a specific style of development. This style is reflected in his
various projects, including replication systems and data migration
systems, where this style is highly required.

xiii
Acknowledgments
I got into computing early, when I was around 12 years old. In those
days, buying a personal computer was an expensive affair. Especially in
a developing country like India where the computer revolution was slow
to reach the household level. I owe a debt of gratitude to my parents and
my sister for providing me with a PC. Without it, I certainly would not
have had as much passion for the field as I do now. Thank you for your
unwavering belief in me.
My wife not only acted as an editor for the early drafts of this text but
also took the lion’s share of taking care of our child while I was writing the
book. Thank you for your patience and encouragement.
Completing a book is rarely an individual effort. I thank the team at
Apress for working with me to bring this to fruition. Thank you, Jonathan
and Jill for taking a chance on me and keeping me focused. Thank you,
Stefan and Laura for combing through the text and improving the finished
product immensely.
Finally, thanks are in order to my early readers who suggested
improvements and caught errors – Keith Thompson, Nathan Adams, Paul
Guilbault, Jim Noh, and Sean Farrell.

xv
Introduction
I wrote the predecessor text to this book in late 2012 and put it on the
Internet hoping someone would find it useful. There was enough response
that I continued writing and we have this book as a result. There have
been lots of changes and additions over time, but the core aim remains the
same – a brief introduction to SQL assuming no prior experience in it.
After reading this text, the reader should be able to recognize the parts
of queries they encounter and even be able to write simple SQL statements
and queries themselves. The book, however, is not intended as a reference
work or for a full-time database administrator since it does not have
exhaustive topic coverage.
The book is written in a linear fashion – you start from Chapter 1 and
work your way forward. Being example heavy, I hope readers are able to
jump to certain topics and get a quick recap. The examples are worked out
in PostgreSQL and SQLite, but the goal is to remain DBMS implementation
agnostic as far as possible.
I encourage you to tinker with the statements and queries as you
progress through the book. Also, be sure to check out the appendices for
book recommendations to help you dig deeper in the world of SQL and
databases.
Your questions, comments, criticism, encouragement, and corrections
are most welcome and you can e-mail me at [email protected].

xvii
CHAPTER 1

An Introduction
to SQL
Modern society is driven by data. Whether it is at a personal level, like a
notebook containing scribbled notes; or at a countrywide level like Census
data, it has permeated all our workflows. There is always a growing need
to efficiently store and organize it so that meaningful information can be
extracted out of raw data.
A database is nothing but a collection of organized data. It doesn’t
have to be in a digital format to be called a database. A telephone directory
is a good example, which stores data about people and organizations with
a contact number. A to-do list is also a rudimentary form of a database.
With ever-larger amounts of data being collected about even the most
mundane of processes, digital databases have become increasingly
important since their inception in the 1960s.
Software that is used to manage a digital database is called a Database
Management System (DBMS). When you hear someone talking about
PostgreSQL or MySQL, they are referring to a DBMS. A database is what is
created when you use the DBMS software to store data about topics that
make sense to you or your organization. For example, your company may
use PostgreSQL to store inventory information about cellular phones – the
product that you sell. In this case, you have created an inventory database
using PostgreSQL as your DBMS.

© Rahul Batra 2018 1


R. Batra, SQL Primer, https://doi.org/10.1007/978-1-4842-3576-8_1
Chapter 1 An Introduction to SQL

The Relational Model and SQL


Data comes in myriad shapes and sizes, and every context generates
data in a different way. The data generated by a bank keeping a record of
account balances is different from keeping track of members of a family
tree. But for a DBMS to provide uniform data management and reporting
capabilities, we must adhere to a data organization structure or data
model.
The most prevalent database organizational model is the Relational
Model, developed by Dr. E. F. Codd in his groundbreaking research paper –
A Relational Model of Data for Large Shared Data Banks in 1970.1 In this
model, the data to be stored is organized in a tabular format with rows
and columns. Each row inside a table represents a distinct record with the
column headings specifying the corresponding type of data stored. This is
not unlike a spreadsheet where the first row can be thought of as column
headings and the subsequent rows storing the actual data.
A database would typically consist of more than one table, each
with different column headings. There may be certain columns that are
common between tables, but this is a topic we will approach later in
the book.

1
 odd, E. F.; “A Relational Model of Data for Large Data Banks,” Communications
C
of the ACM, vol 13, no 6, June 1970, https://www.seas.upenn.edu/~zives/03f/
cis550/codd.pdf

2
Chapter 1 An Introduction to SQL

Question What does the word relational in relational database


mean?
It is a common misconception that the word relational implies a
relationship between the tables. A relation is a mathematical term
that is roughly equivalent to a table itself. When used in conjunction
with the word database, we mean to say that this particular system
arranges data in a tabular fashion.

A possible origin of this misconception might have been the set


relation command in dBase, a DBMS from the 1980s. That command
indeed was used to create linkages between tables, but it has
nothing to do with relational theory.

SQL stands for Structured Query Language, and it is the de


facto standard for interacting with relational databases. Almost all
database management systems you’ll come across will have an SQL
implementation. SQL was standardized by the American National
Standards Institute (ANSI) in 1986 and has undergone many revisions,
most notably in 1992 and 1999. However, all DBMS’s do not strictly adhere
to the standard defined but rather remove some features and add others to
provide a unique feature set. Nonetheless, the standardization process has
been helpful in giving a uniform direction to the vendors in terms of their
database interaction language.
While SQL is a computer language, it is not like the other programming
languages that you may have heard of like Python or C. Such programming
languages are generic in nature, suitable for a wide variety of tasks from
programming basic calculating systems to advanced simulation models.
SQL is a special purpose query language meant for interacting with
relational databases. It has no use other than this context.

3
Chapter 1 An Introduction to SQL

This does not mean that it is the only database query language to
exist. In the 1980s, another language called QUEL from Ingres was fairly
popular, but the standardization effort around SQL cemented its position.
In recent years, we have seen a large number of non-relational databases
being developed under the umbrella term of NoSQL. Most of their query
languages, however, bear some resemblance to SQL even though their data
model varies significantly from the relational model.

Advantages of Using SQL


• It is standardized – no matter which relational database
you choose, it will have an SQL query interpreter
built in. The sheer popularity of SQL makes it worth
everyone’s time who interacts with a data system.

• It has a reasonable English-like syntax. None of the


painstaking detail of programming languages like C or
Java have to be specified when using SQL. It is concise,
easy to understand, and easy to write database queries
with. It is declarative in nature, meaning you only have
to declare what you want to achieve rather than going
over the steps to achieve the results.

• It allows a uniform way to query and administer


a relational database. Many of the database
administration commands are standard SQL
commands making the transfer of skills much easier.
• It is mature – SQL has been around for over 35 years.
While many new features have been added to it, the
core of SQL has largely been unchanged. You can derive
a lot of utility knowing a few basic SQL concepts and
commands, and they will serve you well into the future.

4
Chapter 1 An Introduction to SQL

SQL Commands Classification


SQL is a language for interacting with databases. It consists of a number of
commands with further options to allow you to carry out your operations
with a database. While DBMS’s differ in the command subset they provide,
usually you would find the classifications below.
• Data Definition Language (DDL): CREATE TABLE,
ALTER TABLE, DROP TABLE, etc. These commands
allow you to create or modify your database structure.
• Data Manipulation Language (DML): INSERT,
UPDATE, DELETE. These commands are used to
manipulate data stored inside your database.
• Data Query Language (DQL): SELECT. Used for
querying or selecting a subset of data from a database.
• Data Control Language (DCL): GRANT, REVOKE, etc.
Used for controlling access to data within a database,
commonly used for granting user privileges.
• Transaction Control Commands: COMMIT,
ROLLBACK, etc. Used for managing groups of
statements as a unit of work.
Besides these, your database management system may give you other
sets of commands to work more efficiently or to provide extra features. But
it is safe to say that the ones above would be present in almost all DBMS’s
you encounter.

E xplaining Tables
A table in a relational database is nothing but a two-dimensional matrix
of data where the columns describe the type of data, and the row contains
the actual data to be stored. Have a look at Table 1-1 to get a sense of the
visualization of a table in a database.
5
Chapter 1 An Introduction to SQL

Table 1-1. A Table Describing Programming Languages


ID Language Author Year

1 Fortran Backus 1955


2 Lisp McCarthy 1958
3 Cobol Hopper 1959

The above table stores data about programming languages. It consists


of four columns (id, language, author, and year) and three rows. The
formal term for a column in a database is a field and a row is known as a
record.

Note The example tables in this book primarily deal with


programming languages, their authors, and the year they were
created. We could have used database query languages, but they are
far fewer in number.
Our computer hardware and technologies have changed quite a bit
since the 1950s and 1960s, but the early programming languages
from that era still have a lasting impact on the programming
languages of today. Lisp – imagined by John McCarthy in 19582 is
still alive in the form of Common Lisp, Scheme, and Clojure. Even
Fortran still sees regular use in scientific computing.

2
 cCarthy, John; “Recursive functions of symbolic expressions and their
M
computation by machine, Part I,” Communications of the ACM, vol 3, issue 4, April
1960, http://jmc.stanford.edu/articles/recursive/recursive.pdf

6
Chapter 1 An Introduction to SQL

There are two things of note in the example table. The first one is that
the id field effectively tells you nothing about the programming language
by itself, other than its sequential position in the table. The second is that
though we can understand the fields by looking at their names, we have
not formally assigned a data type to them, that is, we have not restricted
(not yet anyways) whether a field should contain alphabets or numbers or
a combination of both.
The id field here serves the purpose of a primary key in the table. It
makes each record in the table unique, and its advantages will become
clearer in chapters to come. But for now consider this, what if a language
creator made two languages in the same year; we would have a difficult
time narrowing down on the records. An id field usually serves as a good
primary key since it’s guaranteed to be unique, but usage of other fields for
this purpose is not restricted.
A key concept of tables is that they are conceptual in nature and may
not have any bearing upon the actual files where the data is stored. When
users create a spreadsheet, they associate a file name with the spreadsheet
and place it somewhere on their disk. But relational databases hide all
these details from the user. The physical storage of a table on the disk
might be to a single file, or to many files, or even have a relationship of
storing many tables in a single file. It is the responsibility of your DBMS to
provide a way to read and write to tables.

Data Types in SQL


Just like programming languages, SQL also has data types to define the
kind of data that will be stored in its fields. In the table given above, we
can see that the fields language and author must store English language
characters. The id and year fields both store whole numbers.
The commonly used data types you will encounter in subsequent
chapters are shown in Table 1-2.

7
Chapter 1 An Introduction to SQL

Table 1-2. Various Data Types in SQL


Character types char, varchar
Integer values integer, smallint
Decimal numbers numeric, decimal
Date data type date

A string of characters is usually stored in either char or varchar. The


former reserves as much space as you want when you specify the field,
but if the value you store in it is shorter, the remaining space is wasted. A
varchar, however, stands for a varying character and will occupy the exact
length of the string, nothing wasted. There is, however, a maximum limit to
how long a string value you can assign to such a field, and that is specified
during the field definition itself.

char(12)
varchar(12)

If you store the value ‘McCarthy’ that is eight characters long, the
char will store it but waste four characters. The varchar will store it as
exactly eight characters but the whole dynamism comes at a cost of speed.
Nonetheless, the speed difference is small enough that for most scenario’s
you would see the varying character data type being used.
In case of number values, we get a split across two major classes –
integer for storing whole numbers and numeric for storing number values
with a decimal point in them. The ranges and limits of the values being
stored in them vary with your choice of DBMS. However, a good rule of
thumb to follow is to use the smallest data type that will suffice for the
present and foreseeable future of your application.

8
Chapter 1 An Introduction to SQL

For example, if I were storing student roll numbers, using a smallint


would suit just fine. In most implementations, this data type allows a
maximum value of 32767, a number I mostly expect to be much greater
than the number of students in any class.
Decimal point numbers are trickier to specify. We use the numeric data
type to fix how large the number could be and how many numbers can
occur after the decimal point.

numeric(precision, scale)
numeric(5, 2)

The total number of digits is specified by the precision and the number
of digits after the decimal point is represented by scale. So in the example
given, we would be able to store a number like 999.99 but not any further.
Since data types still vary from a DBMS implementation to another, I
suggest you keep your DBMS manual handy. Each implementation gives
you many other types to work with, but for our learning purposes, the ones
above should suffice.

9
CHAPTER 2

Getting Your
Database Ready
The best way to learn SQL is to practice writing the commands on a real
relational database management system. In this book SQL is taught using
either one of the following systems: PostgreSQL or SQLite. The reasons for
choosing these DBMS systems are simple – they are free and open source,
with availability on most major platforms. PostgreSQL is a full-features
enterprise class database management system with a great community.
SQLite is a small but robust system that is especially suited for learning
purposes. Choose the latter if you are not comfortable with software
installations.
However, any relational database product that you can get your hands
on should serve you just fine. In some cases, you may already have access
to one in your organization, but be sure to ask for permissions to use it
for learning purposes. There might be minor incompatibilities between
different vendors, so if you choose something else to practice on while
reading this book, it would be a good idea to keep the database vendor's
user manual handy.
Since this text deals largely with teaching SQL in a product-­
independent manner, rather than the teaching of a specific DBMS system,
details with respect to installation and specific operations of the product
will be kept to a minimum. Emphasis is instead placed on a few specific
steps that will help you to get working on writing SQL as fast as possible.

© Rahul Batra 2018 11


R. Batra, SQL Primer, https://doi.org/10.1007/978-1-4842-3576-8_2
Chapter 2 Getting Your Database Ready

U
 sing PostgreSQL
The latest version of PostgreSQL as of writing this book was 9.6. You don’t
absolutely need the latest version; in fact I use version 9.5 in this text.
You can download the latest version of PostgreSQL from https://
www.postgresql.org/download/ for your platform. For the fastest and
easiest installation, I would recommend you choose your platform from
the Binary Packages list. Pre-built binaries mean that you can simply
download and install PostgreSQL like any other software using a graphical
step-by-­step installer.
After choosing your platform, you might still get multiple ways to
perform an installation. I’d recommend choosing the graphical installer
version from third-party vendors like BigSQL or EnterpriseDB. I had
chosen the EnterpriseDB installer for my Fedora Linux machine, and a
friendly installation procedure popped up when I ran the downloaded file,
asking for details like the installation directory (Figure 2-1).

12
Chapter 2 Getting Your Database Ready

Figure 2-1. EnterpriseDB PostgreSQL installation wizard

Some other details will also be asked for, most importantly the port
number and password. The default value of 5432 for the port number
should suffice. At the end of installation, you would have user named
‘postgres’ on your system and a working database installation.
You can quickly verify that everything went well using psql, which is a
command-line utility to interact with your PostgreSQL installation. I am
capturing the command and output from my system below (Listing 2-1).

Listing 2-1. Launching the psql shell

[~]$ /opt/PostgreSQL/9.5/bin/psql -U postgres


psql.bin (9.5.8)
Type "help" for help.
postgres=#
13
Chapter 2 Getting Your Database Ready

If you get a similar output, you are ready to start using your PostgreSQL
installation. If not, I’m afraid you will have to do some digging on your
own. You can also choose SQLite, which is discussed in the next section
and has a much easier installation procedure.

U
 sing SQLite
If installing PostgreSQL seems like a daunting task, you are in luck. There is
a very credible, free alternative database for you to practice on. It is called
SQLite and its creator D. Richard Hipp has generously licensed it in the
public domain. You can download it from the project page at: ­https://
www.sqlite.org/download.html
Like the previous section, what you are looking for to get the fastest
start is precompiled binaries corresponding to your operating system.
SQLite is tiny; on most platforms its core engine is less than one megabyte!
If you are using Microsoft Windows, you are looking for the section
titled “Precompiled Binaries for Windows.” Download the SQLite DLL
zip archive, named like sqlite-dll-win32-x86-xxxxxxx.zip, which contains
SQLite but not a way to interact with it. For that you must download the
SQLite shell, named like sqlite-tools-win32-x86-xxxxxxx.zip, which will
allow us to create and query SQLite databases through the command line.
Extract both these archives into the same directory and you are done
installing SQLite. Your folder should now contain at least three files:

• sqlite3.dll

• sqlite3.def

• sqlite3.exe

The last one launches the command shell used to interact with SQLite
databases.

14
Chapter 2 Getting Your Database Ready

If you are on a Linux or MacOS X system, chances are high that you
already have SQLite installed. To test this, you can attempt launching the
SQLite shell sqlite3 (Listing 2-2).

Listing 2-2. Launching the sqlite3 shell

[~]$ sqlite3
SQLite version 3.13.0 2016-05-18 10:57:30
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

If you get the output as above, you have everything you need to run
SQLite. Alternatively, if you get an error message, it means you have to
install it yourself. You can either use the similar precompiled binary
method for your platform or you could use the system installer.
For systems like Red Hat Enterprise Linux, Scientific Linux, and
CentOS, you can use yum to install SQLite.

# yum install sqlite

On a Fedora Linux system, you have to use dnf as below.

# dnf install sqlite

If you happen to use a Debian- or Ubuntu-based system, you can


achieve the same result with the following.

$ sudo apt-get install sqlite3

Once the installation is done, you can verify the installation by


launching the SQLite shell as before.

15
Chapter 2 Getting Your Database Ready

Creating Your Own Database


Database management systems like PostgreSQL allow you to create
multiple databases. For practice purposes, it's advisable to create your own
database, so that you are free to perform any operations on it.
Most database systems differ in the way they provide database
creation facilities. PostgreSQL achieves the same by providing you
multiple ways to do this, including through the pgAdmin III graphical
utility. However, for didactic purposes, we will instead use a command
operation to create our database. Open up the psql shell and enter the
command as below (Listing 2-3).

Listing 2-3. Creating a database in PostgreSQL

CREATE DATABASE testdb;


The command CREATE DATABASE is used to create a database that
will serve as a holding envelope for your tables. In the example and output
shown above, we created a database called testdb for our use. The login
user you used while connecting with psql, in most cases postgres, is now
the owner of this database and has full control of entities within it. This is
analogous to creating a file in an operating system where the creator gets
full access control rights and may choose to give other users and groups
specific rights.
The SQL standard by definition allows commands and keywords to be
written in a case-insensitive manner. In this book we will use uppercase
letters while writing them in statements, which is a widely accepted practice.

Note Oddly enough, the SQL standard doesn’t include the CREATE


DATABASE command. In the 1992 standard, aptly named SQL-92,
there is a CREATE SCHEMA command that was close to the former
but not exactly similar. In modern times, however, databases like
MySQL treat the two commands as synonyms of each other.

16
Chapter 2 Getting Your Database Ready

If you are using SQLite, fire up the command shell, and you will be
greeted with a text printing version information (Listing 2-4). This is
exactly the same message we saw in the previous section when we were
verifying our SQLite installation.

Listing 2-4. Opening the SQLite shell

SQLite version 3.13.0 2016-05-18 10:57:30


Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

Here we enter our .open command to both create a SQLite database or


open it in case it already exists.

sqlite> .open testdb

On a Linux system, you could also simply write the database name
after the command of the SQLite shell like below, and you would be able to
open the said database.

sqlite3 testdb

Interestingly, this invocation would not result in creation of testdb, it would


simply open it if it exists. If you don’t perform any other operation and close
the shell (Ctrl-D), there would be no testdb file on your machine on Linux. On
a Windows system, you would get an empty file with a length of 0 bytes.

T able Creation
We have already explored the concept of a table in a relational model. It is
now time to create one using a standard SQL command – CREATE TABLE
(Listing 2-5).

17
Discovering Diverse Content Through
Random Scribd Documents
kränklich und dann und wann ein wenig argwöhnisch ist. Leben Sie wohl.
Ich bin —

N. S.
Denken Sie einmal, liebste Freundin! gestern bekomme ich von Herrn
Weisen einen Brief, — einen sehr gütigen, freundschaftlichen Brief. Und
dieses Vergnügen muß mir durch eine so traurige Nachricht verbittert
werden, als die von Meinhards Tode. Ja, dieser rechtschaffene Mann,
dieser große Gelehrte, dieser schöne und empfindliche Geist, dieser mein
Freund — ist todt. Peace to his gentle shade!
Fünfter Brief.
B***, den 9. und 10. Juni.

Niemals ist ein Brief mit einem so schmerzhaften Verlangen erwartet


worden, als ich gestern den Ihrigen erwartete. Selbst in dem Schoße
meiner Familie, und an der Seite der vortrefflichsten Mutter, empfinde ich
dem ungeachtet, daß mir noch ein Freund und eine Freundin fehlt, um
diesem Glück seine Vollständigkeit zu geben. Ich fühle es, daß mir Ihr
Umgang nothwendig geworden ist; und ohne die Gütigkeit, mit welcher
Sie mir Ihren Briefwechsel versprachen, und ohne die Beständigkeit, mit
welcher Sie dieses Versprechen ausführen, würde ich meine hiesigen
Freunde mit dem beständigen Anblick einer gewissen Unruhe beleidigt
haben, die sie vielleicht auf die Rechnung eines Mangels von Zärtlichkeit
geschrieben hätten. Aber jetzt setzt mich Ihre Gütigkeit in den Stand,
zwey der angenehmsten Beschäftigungen mit einander zu verbinden, die
Unterhaltung mit meiner Mutter und das Andenken an Sie.
Meine Mutter kannte Sie schon als eine sehr gütige Freundin von
ihrem Sohne, ehe ich noch Leipzig verließ. Aber nun kennt sie Sie als eine
vortreffliche Frau, als eine zärtliche Freundin, mit einem Worte, als eine
Person von einem solchen Geiste und einem solchen Herzen, als die Liebe
und die Freundschaft nöthig hat, wenn sie beschlossen hat, einen
glücklichen Ehemann und einen kleinen Kreis glücklicher Freunde zu
machen.
Was meynen Sie wohl? Ich zeige meiner Mutter alle Ihre Briefe. Sie
liest sie beynahe mit eben dem Feuer, mit welchem ich sie lese. Bey
gewissen Stellen füllen sich ihre Augen mit Thränen der Zärtlichkeit und
der Freude. So stark wirken diese gleichgestimmten Herzen auf einander,
selbst in der weitesten Entfernung. Glauben Sie wohl, daß ich es hätte
aushalten können, ein ganzes halbes Jahr zuzubringen, ohne Jemand zu
haben, mit dem ich mich von Ihnen unterreden könnte, und in dessen
Schoß ich zuweilen mein volles Herz ausleerte, wenn Ihre Gütigkeit und
die Sehnsucht nach Ihrem Umgange dasselbe mit zu unruhigen und
stürmischen Wünschen anfüllte? Und könnte wohl diese Person Jemand
anders als meine Mutter seyn? Sie, die an den kleinsten Vergnügen ihres
Sohnes Theil nimmt, sollte sie nicht in der Glückseligkeit, die ihm der
Himmel geschenkt hat, eine Freundin und einen Freund zu besitzen,
einen Theil derjenigen wieder finden, die sie durch den Tod einer Tochter,
die zugleich Freundin war, verloren hat?
Ja, gütigste Freundin, schon theilt meine Mutter alle die
Empfindungen mit mir, die mir die Bekanntschaft mit einer so edlen und
zugleich zärtlichen Seele eingeflößt hat, und die ich, wenn es möglich ist,
durch die Abwesenheit noch gestärkt und vermehrt finde. Unsere
Unterredungen beleben sich am meisten, wenn sie Sie zum Gegenstand
haben; und ohne daß wir es gewahr werden, kommen sie durch die
wunderbarsten Irrgänge immer wieder auf diese Lieblingsmaterie zurück.
So viel Gewalt hat das Herz über unsere Denkungskraft, daß die
leichtesten und schwächsten Verbindungen schon genug sind, Ideen in
die Seele wieder zurück zu bringen, die durch ein starkes Interesse an
uns gebunden sind. Lassen Sie sich dieses von H o m e viel besser und
gründlicher sagen. Ich mag nicht philosophiren, ich will Ihnen bloß sagen,
was ich empfinde. —
Aber gütigste Freundin, wie haben Sie es übers Herz bringen können,
mir mit einem so versteckten, aber für mich doch sehr fühlbaren Vorwurf
wehe zu thun? — Oder trauten Sie es der Feinheit meines Gefühls nicht
zu, daß ich den kleinen Ansatz von Empfindlichkeit gewahr werden
würde, der Ihnen die Worte eingab: „Ich suchte in der Folge Ihres Briefes
Trost, aber ich fand keinen. Sie, der Sie mit mir einerley Gefühl haben,
Sie empfinden den Unterschied wohl, der zwischen der Verstorbenen und
mir ist!“ Und noch dazu eine so ceremoniöse Vorsichtigkeit, Ihren Namen
nicht zuerst zu schreiben! Ein kleiner, ganz kleiner Rest von Weiblichkeit!
würde Onkel Selby sagen. Wie? glauben Sie wohl, daß ich meine
Cousine liebte, und die Eigenschaften nicht von ganzem Herzen
hochschätzte, die sie liebenswürdig machten? daß ich ihren Verlust
beweinen, und mich nicht zugleich über den Besitz von Freunden
erfreuen sollte, in denen ich ihren Geist und ihr Herz wieder finde? Oder
können Sie so ungerecht gegen sich selbst seyn, diese größten
Geschenke des Himmels in sich zu verkennen, und sich unter Ihren
eigenen Werth herabzusetzen? Liebste, gütigste Freundin, lassen Sie sich
niemals durch einen gewissen Unmuth die Erhabenheit der Seele
schwächen, die ohne Stolz, dennoch ihre eigene Vollkommenheit fühlt,
und indem sie die Stufe erkennt, auf welche die Güte des Schöpfers sie
gesetzt hat, dadurch nur noch mehr Muth bekommt, höhere zu
erreichen. —
Aber lieber will ich glauben, daß Sie nur darum diese Stelle in Ihren
Brief gesetzt haben, um mir die Gelegenheit, die ich so sehr wünsche, zu
geben, es Ihnen noch einmal zu sagen, wie hoch ich meine Freundin
schätze, und wie theuer sie meinem Herzen ist. Ich kann dieses, zu
meinem eigenen Vergnügen nicht oft genug wiederholen. Denn welche
Glückseligkeit ist der gleich, seinem Freunde zu sagen, daß man ihn liebt,
wenn es nicht die Glückseligkeit ist, zu hören, daß man von ihm geliebt
wird? Wenn ich also von meiner Cousine rede, so glauben Sie nur, daß
keine Ideen verwandter sind und einander leichter erwecken, als der
Gedanke an ein Gut, das man verloren, und der an ein anderes, das uns
der Himmel noch läßt; und daß der Abgang von so theueren Freunden
das Herz nur noch zärtlicher gegen diejenigen macht, die uns noch übrig
sind.
Ich glaube, ich habe Ihnen schon in Leipzig gesagt, daß ein Freund
von mir und von unserm Hause, ein junger angehender Dichter, der jetzt
in Halle studirt, ein Gedicht auf meine Muhme gemacht hat. Ich habe es
hier erst zu sehen bekommen. Weil viel gute Stellen darin sind, obgleich
manche gegen die übrigen matt, andere in der Verbindung, in der sie
stehen, nicht richtig und zusammen hängend genug, und noch andere zu
überhäuft und nur durch die Rechte der Poesie zu entschuldigen sind, so
will ich es Ihnen abschreiben. Aber schöner, als das ganze Gedicht, ist
meinem Urtheile nach ein Motto aus dem Petrarch, welches er demselben
vorgesetzt hat. Wo ich nicht irre, so ist es eine der schönsten Stellen im
ganzen Petrarch. Es ist aber zur Anwendung auf die Person, die der
Gegenstand dieses Gedichts ist, nicht schicklich und angemessen genug,
und überhaupt kann es nur im Munde eines Liebhabers und eines solchen
Liebhabers als Petrarch, sein rechtes Verhältniß bekommen. Ich will es
wagen, die Stelle zu übersetzen, ob ich Sie gleich zu eben der Zeit
bedauren werde, daß Sie nicht das Original lesen können.

„Wer alles sehen will, was nur die Natur und der Himmel unter den
Menschen vermag, der komme, diese zu sehen. Aber er komme bald. Denn der
Tod raubt zuerst die besten, und läßt die schlechtern stehen. Dieses in dem
Reiche der Götter schon lang erwartete schöne und sterbliche Geschöpf geht
nur vorüber, und bleibt nicht. Wenn er noch zu rechter Zeit kommt, so wird er
jede Tugend, jede Schönheit, jede erhabene Eigenschaft in einem Körper mit
wunderbarer Mischung vereinigt sehen. Aber wenn er zu lange zaudert, so wird
er nur kommen, um beständig zu weinen“[A].

Ist diese Apostrophe nicht das rührendste Gemählde eines von


Schmerz ganz durchdrungenen Herzens? Aber nun zum Gedicht selbst.
Sie sollen nur die besten Strophen davon bekommen.
Also blühte rühmlich Doris Leben —
Rühmlich mußte sie es wieder geben;
Und das grosse Beyspiel im Erblassen
Noch der Erde zum Vermächtniß lassen;

Da ihr lieblich Auge brechen sollte,


Stürmend Feuer durch die Adern rollte,
Freunde sprachlos matte Hände rangen,
Und die Engel froh die Flügel schwangen,

Schaute sie des Todes letzten Schlägen


Voll Geduld und Majestät entgegen,
Ruhig, da die Trennung jetzt begonnte,
Weil sie nur die Hülle wechseln konnte.

Keusche Jungfraun, eilt ihr Grab zu ehren.


Pflanzt Zypressen, oft benetzt mit Zähren,
Und gelobet auf dem Staub der Schönen
Euren Wandel einst wie sie zu krönen.

Aus den Zweigen soll ein Hayn entsprießen,


Junge, leicht verführte Töchter müssen
Ihn besuchen, die Geschichte hören,
Und erröthend sittsam wiederkehren.

Jährlich sollen freundschaftliche Reyhen,


Wo sie schlummert, zarte Lilien streuen,
Und das Opfer mit gedämpften Saiten
Und wehmüthigem Gesang begleiten.

Nie, Geliebte, nie wirst du vergessen!


Deinen Nachruhm wird kein Ruhm ermessen.
Laß noch Einen für die Tugend brennen,
So wird er auch dich mit Ehrfurcht nennen.

Und sollt’ einst auf der undankbar’n Erden


Sie verkannt, gehaßt von allen werden;
Darf sie nur, um alle zu entzücken,
Sich mit deinem süßen Reitze schmücken.
Sich mit deinem süßen Reitze schmücken.

Dürfte ich wohl so eigennützig seyn, und mit diesem kleinen


Geschenke wuchern? Meine Freunde kennen Sie noch nicht als eine eben
so empfindungsvolle Dichterin, als Sie eine gefühlvolle Ehegattin und
Freundin sind. Einige von den kleinen Stücken, die Sie mir einmal
vorlasen, und unter diesen auch das Hochzeit-Gedicht, das Sie für einen
Ihrer Bekannten gemacht haben, würden mich in den Stand setzen,
dieses Vergnügen meiner Mutter zu machen. Ich würde sogar durch
die Mittheilung derselben ein gewisses Ansehen bekommen. Ich würde
Macht haben, Gefälligkeiten auszutheilen; und ich würde gewiß meine
Geheimnisse nicht so wohlfeil verkaufen. Sie sehen schon, daß ich
unbescheiden genug bin, auch wohl gar eine kleine Mühe Ihnen
aufzulegen. —
Wenn ich nur dafür im Stande wäre, Ihr Tagebuch, das mich so sehr
unterhält und mich auf einige Augenblicke wieder zu Ihnen zurück bringt,
mit einem eben so angenehmen zu vergelten. — Aber meine Geschichte
(ich nehme die Unterhaltung mit meiner Mutter aus, und die wissen Sie
schon größten Theils) ist so einförmig, oft für den Helden derselben so
langweilig, und fast immer für die Leser so wenig unterrichtend, daß ich
alle Mal abgeschreckt werde, so oft ich daran denke, meine Briefe mit
meinen Begebenheiten, anstatt mit meinen Empfindungen anzufüllen. Sie
sollen unterdessen alle meine Freunde, die ich hier hochschätze, kennen
lernen. So bald nur der Cirkel von Besuchen, in dem ich mich jetzt
herumgedreht habe, durch seyn wird, so werde ich es mir zu einer fest
gesetzten Beschäftigung machen, Sie ganz in unsere Familie und in
unsere Bekanntschaften einzuführen, und mich auch zuweilen für die
Langeweile, die mir einige davon machen, zu rächen.
Meine Reise ist, wie Sie wissen, glücklich, aber dem ungeachtet
ziemlich unangenehm gewesen. Meine Gesellschafter waren entweder
Misanthropen oder Schläfer. Ich dankte unterdessen beyden für die Muse,
die sie mir gaben, an meine Freunde zu denken. Oft in der Mitte der
Nacht, wenn alles um mich schlief, schweifte meine durch die Stille noch
mehr aufgeweckte Seele zu allen Wohnungen meiner Freunde umher,
und segnete ihren sanften und ruhigen Schlaf. Bald flog ich unsern
langsam kriechenden Pferden zuvor, warf mich in Gedanken zu den Füßen
des Bettes meiner Mutter, küßte sanft ihre Hand um sie nicht zu wecken,
und flehte den Beystand der sie bewachenden Engel an, sie mir zu
beschützen. Bald überraschte ich Sie, weit glücklicher als mein Freund
Reiz, in Ihrem Schlafzimmer, und gebot Ihrem Schutzgeist, Ihnen mitten
im Schlafe die angenehmsten, fröhlichsten und schönsten Bilder
vorzustellen, und Ihre Seele, selbst ohne ihr Wissen, noch vollkommener
zu machen. — Alsdann — Ich freue mich, theuerste Freundin, daß unsere
Freundschaft von der Beschaffenheit ist, daß meine Seele von dem
Andenken an Sie, unmittelbar zu dem Gedanken an Gott, unsern großen
und gemeinschaftlichen Freund, übergehen kann, zu dessen Verehrung
solche Seelen, wie die Ihrige, geschaffen worden. Meine Seele steigt
durch diese Stufen auf eine leichtere Art bis zu ihm hinauf.
Aber ich muß, ich muß schließen u. s. w.

[A] Für Freunde des Originals folgt hier das ganze Sonnet:

Chi vuol veder quantunque può natura,


E’l Ciel tra noi, venga a mirar costei,
Ch’è sola un Sol, non pur agli occhi miei,
Ma al mondo cieco, che virtù non cura;

E venga tosto, perchè morte fura


Prima i migliori, e lascia stare i rei;
Questa aspettata regno degli Dei
Cosa bella mortal passa, e non dura.

Vedrà s’arriva a tempo, ogni virtute,


Ogni bellezza, ogni real costume
Giunti in un corpo con mirabil tempre.
Allor dirà, che mie rime son mute.
L’ingegno offeso dal soverchio lume;
Ma se più tarda, avrà da pianger sempre.
Sechster Brief.
B***, den — Juli.
1767.

Wissen Sie auch wohl, daß ich Ihre Frage, ob wir noch einerley
Empfindungen mit einander hätten, für einen Vorwurf würde angesehen,
und daß mich dieser Vorwurf würde gekränkt haben, wenn ich nicht
selbst in den Beyspielen, die Sie dafür anführen, eine nette Bestätigung
dieser Gleichheit Ihrer Gesinnungen mit den meinigen, auf die ich so stolz
bin, gefunden hätte. Ich kann mir also unmöglich helfen. Ich muß erst
diese beyden Punkte erörtern, ehe ich ein Wort weiter schreiben kann,
gesetzt auch, daß Ihnen indeß der Brief vor Langerweile aus der Hand
fallen sollte.
Zuerst also meine Unzufriedenheit bey meiner Ankunft in B****.
Sollte ich Ihnen erst nöthig haben, die Quellen davon zu entdecken?
Sie sagen, ich hatte Freunde verlassen, die mich liebten, und ich kam zu
andern, die ich auch liebte. Haben Sie niemals diese angenehme
Mischung von Schmerz und Vergnügen, von Verlangen und von
Befriedigung, von Sehnsucht nach abwesenden Gütern, und von Genuß
der gegenwärtigen empfunden? Haben sich niemals mit den Thränen, die
Sie über den Anblick neuer Freunde vergossen, diejenigen vermischt, die
Ihnen das Andenken an die, von denen Sie sich losgerissen hatten,
ablockte? Sie, die Sie die menschliche Seele so gut kennen, da Sie Ihre
eigene mit so vieler Sorgfalt studirt haben, wissen Sie nicht, wie geschickt
eine gewisse Art von Freude ist, die traurigen Empfindungen, die eine
Zeit lang in der Seele geschlafen haben, wieder zu erwecken, und mit
ihnen vermischt einen gewissen Zustand der Ermattung hervorzubringen,
wo die Seele, zu denken und zu handeln unfähig, unter der Menge von
dunkeln Ideen, die sich in ihr zusammen drängen, erliegt. So empfand
meine gute Mutter den Verlust ihrer Tochter niemals mehr, als da sie
ihren Sohn wieder sah, und ich fühlte in den ersten Umarmungen meiner
Mutter am meisten, wie viel ich an Freunden verloren hatte, die in diesem
Augenblicke mit mir die Glückseligkeit einer wieder vereinigten Familie
würden getheilt haben.
Dieses waren die Regungen der ersten Augenblicke. Ihnen folgten
andere eben so traurige, aber weniger angenehme. Glauben Sie ja nicht,
daß die guten Leute immer glücklich sind. Wenn sie es wären, so bin ich
stolz genug zu sagen: unser Haus würde mehr als einen Glücklichen
einschließen. Aber wie weit, wie weit ist es davon entfernt, daß dieses
ganz wahr seyn sollte? Meine Mutter, durch die natürliche Zärtlichkeit
ihres Körpers, und durch die große Empfindlichkeit ihrer Seele, einer
Menge von Uebeln bloß gestellt, mit denen die Natur härtere und
fühllosere Menschen verschont hat; durch eine beynahe fortgehende
Reihe von Unglücksfällen in einer beständigen Uebung dieser
Empfindlichkeit unterhalten; durch eine sehr schwere und sorgenvolle
Nahrung, die sie seit dem Tode ihres Mannes ohne Gehülfen und
Rathgeber besorgt, abgemattet und entkräftet, von Krankheit und der
Annäherung des Alters bis zu dem äußersten Grade der Zärtlichkeit in
ihren Nerven gebracht; und in diesem Zeitpunkte ihrer besten Stütze
beraubt, und fast mitten unter ihrer Familie einsam und verlassen, —
sagen Sie mir, geliebte Freundin, was würden Sie in meinen Umständen
fühlen, wenn Sie, so wie ich, sich außer Stande sähen, dieser Mutter zu
helfen; wenn Sie ihr sogar in der Zukunft keine Aussicht, wenigstens
keine nahe Aussicht anweisen könnten, durch die Sie ihre gegenwärtigen
Umstände erträglich machten? Sagen Sie mir, liebe Freundin, wo ist die
Stelle, die für mich zubereitet ist, und von der ich hoffen könnte, meiner
Mutter die ihrem gütigen Herzen so theuere Glückseligkeit zu verschaffen,
in der Gesellschaft ihres Sohnes ihre letzten Tage in Ruhe und
Zufriedenheit zuzubringen? Ich selbst in die Welt nur noch so
hingeworfen, in die Welt, die, dem Himmel sey es gedankt, nicht ganz
leer von Freunden für mich, aber vielleicht leer von Beförderern und
dem, was man darin Patronen nennt, ist; ich selbst noch von einem Orte
zum andern herumirrend, zwar nicht ganz ohne Endzweck, aber doch
noch ohne große Mittel, diesen Endzweck auszuführen; was kann ich für
meine Mutter thun, da ich für mich selbst nichts zu thun vermag?
Glauben Sie wohl, daß es mir unter diesen Umständen leicht wird,
daran zu denken, daß ich meine Mutter verlassen soll; sie so verlassen,
ohne ihr vorher zu sagen, nach was für einem Plane ich arbeiten werde,
um ihre Glückseligkeit mit der Erreichung meiner Wünsche zu vereinigen?
Und doch kann ich nicht anders; ich muß sie verlassen. Alles, sie selbst
ausgenommen, macht, daß ich diesen Augenblick beynahe wünsche. Die
Beförderung, die mir meine Vaterstadt darbieten kann, ist, wie Sie
wissen, nur von einer einzigen Art. Glauben Sie nicht, daß mich der Name
und die gewöhnliche Verachtung eines Schulmannes abhalten würde, in
einen Stand zu treten, der, wenn er recht verwaltet wird, ehrwürdig ist,
und den die Vortheile und die Erleichterung, die ich meiner Mutter
dadurch verschaffe, mir auch sogar liebenswürdig machen würden. Aber
die Verrichtungen, die hier zuerst denen auferlegt sind, die in diesen
Stand treten, die Unwissenheit, und noch mehr der elende Geschmack,
der unter den meisten der hiesigen Schullehrer herrscht, und durch sie
ohne Zweifel die Studirenden ansteckt; der durchgängige Mangel an
guter Lebensart bey dieser ganzen Zunft Leuten, unter denen ich doch
genöthigt würde zu leben; der Mangel an Ermunterung und Hülfsmitteln
zur Vermehrung der Wissenschaften, die ich mehr schätze als alles;
endlich, was darf ich es erst sagen, die Entfernung von Freunden, die mir
theuer sind, um so viel theurer, weil ich sie nicht bloß der Natur und
Familienverbindungen zu danken habe; — alles dieses, und was weiß ich
noch, was für hundert dunkel damit vermischte Vorstellungen mehr,
machen mir es ganz unmöglich, daran zu denken.
Nun gut also. Ich gehe von B****. Aber wohin? Nach L***zig? Ja
freilich ist dieß der Ort, der mich unter allen am meisten an sich zieht.
Aber was hälfe es, wenn ich vor mir selbst es verbärge. Es ist nicht
Hoffnung der Beförderung, sondern das Vergnügen, meine Freunde
wieder zu sehen, welches mir diese Stadt vor allen andern so angenehm
macht. Sie wissen selbst, und wenn Sie es nicht wissen, so lassen Sie sich
es den braven und rechtschaffenen Ebert sagen, was für Geduld und
Aufopferungen dazu gehören, sein Glück bey der Leipziger Akademie zu
erwarten. Und während der Zeit, daß ich diese vielleicht fehl schlagende
Probe machte, würde meine arme Mutter von Alter und Sorgen verzehrt,
von ihren noch übrigen Freunden vollends entblößt, und stürbe, ehe sie
die so lange gehoffte und so theuer errungene Ruhe ihres Alters gekostet
hätte. Lassen Sie mich also auf eine andere Universität gehen, wo die
Beförderung leichter und geschwinder ist. Setzen Sie den besten
möglichen Fall. Machen Sie mich in einigen Jahren zum Professor in Halle,
oder in irgend einem andern solchen Winkel der Erde. Jetzt soll ich meine
Mutter in ihrem Alter aus ihrem natürlichen Boden in ein ganz fremdes
Land verpflanzen, sie aus einer belebten und volkreichen Stadt in einen
todten und finstern Flecken führen, sie aus dem Cirkel ihrer Freunde und
ihrer Bekanntschaften, die sie von langer Zeit her kennen, die sie alle
hochschätzen, unter ganz fremde und für sie noch gar nicht
eingenommene Menschen bringen, — oder mir mit einem so groben
Stolze schmeicheln, daß ich allein aller deren Stelle würde ersetzen
können. — Ist dieses vielleicht nicht ein eben so schwerer und trauriger
Schritt für beyde? — Und doch bey dem allen, was bleibt mir übrig?
Sie sehen, liebe Freundin, wenn Sie diese Ueberlegungen machen, Sie
werden meine Unruhe nicht schelten, so gütig Sie mich auch von Ihrer
Gewogenheit versichert haben, und so gewiß ich von der Liebe der
Meinigen bin. — Aber das ist noch lange nicht alles. Ich behalte mir dieß
auf einen andern Brief vor. Ich kann nicht anders; ich muß Sie mit meinen
eigenen Angelegenheiten unterhalten. Der Wohlstand würde dieß bey
Personen, die weniger meine Freunde wären, verbieten. Aber es ist gar
zu eine große und eine zu unentbehrliche Glückseligkeit, zuweilen sein
volles Herz in den Schoß eines Freundes ausschütten zu können. Ich
habe Ihnen schon oft gesagt, Sie und Ihr liebster Gemahl machen in
meiner Einbildungskraft nur Eine Person aus. Sie sind in meinen
Gedanken eben so unzertrennlich, als Sie es durch Ihre Liebe sind. Alles
also, was ich Ihnen schreibe, ist zugleich für ihn geschrieben. Sein kurzer
Brief ist mir dem ungeachtet so angenehm gewesen, als der längste Brief
hundert anderer mir nicht seyn würde.....
Ich sehe, ich stehe in Gefahr, meinen Brief eben so lang und so voll
von Digressionen zu machen, als es des Tristram Shandy Roman ist. Also
nur noch ein Wort von Klopstock und seinen Briefen, und dann nehme ich
bis auf künftigen Freytag von Ihnen Abschied. (Können Sie wohl
errathen, was ich da erwarte?) —
Ich wundere mich gar nicht darüber, daß Ihnen des Mannes, und mir
der Frau ihre Briefe zärtlicher vorkommen. Das macht, würde Onkel
Tobias sagen, Sie sind eine Frau, und ich ein junger Mensch. Ich habe
des Klopstocks Briefe flüchtig gelesen, der Frau ihre recht aufmerksam.
Sie haben vielleicht das Gegentheil gethan. Mit einem gleichen Grade der
Aufmerksamkeit würden wir bey beyden vielleicht gleich viel empfunden
haben. Ich wenigstens, durch die Verschiedenheit Ihres Gefühls
aufmerksam gemacht, habe sie noch einmal gelesen, und schon habe ich
des Klopstock Briefe viel zärtlicher gefunden. Aber, daß es ihre weniger
sind, das wollte ich doch noch nicht gerne für wahr halten.
Wie gern fieng’ ich noch die eilfte Seite an, um Stellen zu meiner
Vertheidigung anzuführen! Aber es hilft nichts. Es ist jetzt ein Uhr,
Dienstags in der Nacht. Möchten doch die gütigen Engel Ihre und Ihres
Geliebten Ruhe beschirmen u. s. w.
Siebenter Brief.
B***, den — Juli
1767.

Wahrheiten, die uns sehr am Herzen liegen, können niemals zu oft


bewiesen werden. So ein sophistisches Ding ist dieses Herz, daß es sich
der Ueberzeugung von eben der Sache am meisten widersetzt, von der
es am meisten gewiß zu seyn wünscht. Ich, zum Beyspiel, bedarf keiner
neuen Proben mehr, um zu wissen, daß Sie meine Freundin sind. Und
doch, mit welchem Vergnügen habe ich diejenigen aufgenommen, die Sie
mir in Ihren letzten Briefen gegeben haben, gerade so, als wenn dieß die
ersten gewesen wären. Sie wissen, wie schwer sich Empfindungen durch
Beschreibungen deutlich machen lassen. Man kann nichts weiter thun, als
diejenigen, welche ähnliche gehabt haben, an ihr eigenes Gefühl
erinnern.
So stellen Sie sich also Ihren lieben Mann, meinen Freund, an dem
Abende eines sehr geschäftigen Tages vor. Er tritt zuerst mit einer etwas
tiefsinnigen und zerstreuten Miene in ihr Zimmer. Seine von fremden
Bildern ganz angefüllte Seele empfängt schon die geheimen Einflüsse
Ihrer Gegenwart, ohne sie noch zu fühlen; selbst die ersten Liebkosungen
verschwenden Sie an den Undankbaren vergeblich. Endlich thut Ihr
Anblick und Ihre Zärtlichkeit ihre gehörige Wirkung; und jetzt schweben
nur noch die Sorgen der Geschäfte auf der Oberfläche der Seele, wie die
Nebel an einem heitern Frühlingsmorgen auf dem Gipfel der äußersten
Berge. So gewinnt der Ehemann einen Schritt nach dem andern über den
Geschäftsmann — bis er zuletzt nur ganz allein übrig bleibt. Was Ihnen in
diesem Augenblicke ein stillschweigender Kuß ist, den er Ihnen aus
vollem Herzen giebt, ein Druck seiner Hand, bey dem er sie zugleich
seine Wilhelmine nennt, sehen Sie, das waren für mich Ihre Briefe.
Versicherungen von Sachen, die wir lange wissen, die wir aber gern
vergessen, an denen wir sogar zweifeln, aus bloßem Muthwillen, um
sie uns noch einmal versichern zu lassen!
Ich glaube, Sie müssen es schon bemerkt haben, daß es eins von
meinen Steckenpferden ist, (hieraus können Sie schließen, daß ich den
Tristram Shandy lese) über alles, was in und mich herum vorgeht, zu
philosophiren, jede Begebenheit, wenn sie auch die natürlichste und
gewöhnlichste von der Welt ist, zu erklären und aus Gründen zu zeigen,
wie sie möglich gewesen ist. Wenn ich mich nicht irre, so war ich eben im
Begriffe, einen guten Ritt darauf zu thun. Denn, anstatt Ihnen mit drey
Worten zu sagen, liebe Freundin, Ihre Briefe waren mir herzlich lieb, und
dann gleich zur Beantwortung ihres Inhalts fortzugehen; verwende ich
eine und eine halbe Seite, um es zu beweisen, daß es möglich gewesen
ist, daß ich mich über Ihre Briefe habe freuen können. Und doch, welcher
Beweis wäre stärker gewesen, als die Aufmerksamkeit, mit welcher ich
alle Ihre gütigen Vorschläge erwogen habe.
Nach dem Wunsche, bey Ihnen zu seyn, ist keiner stärker als der,
daß Sie es zuweilen wünschen möchten, daß ich bey Ihnen wäre. Denken
Sie also, was es seyn muß, wenn Sie noch mehr thun, und nicht bloß
wünschen, sondern schon Anstalten machen, mich bey sich zu behalten.
Wenn es mir jemals schwer angekommen ist, Schwierigkeiten gegen den
Rath meiner Freunde zu machen, so ist es gegen einen solchen, der die
größten Wünsche meines Herzens vereiniget. Der Entwurf, den Sie mir
machen, der freylich der natürlichste und ohne Zweifel auch der sicherste
ist, ist dem ungeachtet viel zu weit aussehend, als daß ich damit meine
Mutter beruhigen könnte, die bey Ihrem Alter und bey Ihrer Schwäche
eine Glückseligkeit, auf die sie so viele Jahre warten muß, für gar keine
hält. Und wie kann sie hoffen, diesen Zeitpunkt zu erleben, wenn die Zeit,
die dazwischen ist, mit Sorgen und Mißvergnügen angefüllt seyn sollte.
Gesetzt aber, ich hätte das Ziel erreicht, und meine Mutter wäre noch im
Stande, eine so große Veränderung vorzunehmen; was sind es nicht für
neue Beschwerden, die die Ausführung unsers Vermögens verursachen
würde. — Meine Mutter hat bey allen Beschwerlichkeiten ihrer Nahrung
doch auch den Vortheil gehabt, daß sich ihr Vermögen besser
verinteressirt hat, als durch bloßes Ausleihen. Lassen Sie nun von einem
nicht großen, aber doch für einen ehrlichen Mann hinlänglichen
Vermögen das abgehen, was der Abzug kostet; setzen sie dazu die
Verschiedenheit des Geldes und der Preise der Dinge in beyden Ländern,
und endlich rechnen Sie noch die Schwierigkeiten, die mit der Errichtung
einer neuen Haushaltung verbunden sind; und Sie werden sehen, daß
meine Mutter nicht die Hälfte der Bequemlichkeiten würde haben können,
zu denen sie hier gewohnt ist. Denn daß meine eigene Einnahme einen
beträchtlichen Zuschuß zu unserer Oekonomie in wenig Jahren machen
sollte, dazu sehe ich keine andere, als sehr unsichere Hoffnungen. Sehen
Sie, so partheiisch ich für einen Entschluß bin, der mit meinen Neigungen
so sehr übereinstimmt, so kann ich es mir doch nicht verhehlen, daß
dieses sehr beträchtliche Schwierigkeiten sind; und was kann ich
darauf antworten, wenn meine Mutter sie mir entgegensetzt? — Was
anders, als daß die Schwierigkeiten für mich, in B**** zu bleiben, noch
größer sind, und wenn sie sich auch alle auf eine einzige zurück bringen
ließen, ich meyne diese, daß ich zu dem Stande, der für mich der einzige
ist, nicht die geringste Neigung habe?
Sie müssen es diesem Briefe ansehen, daß er unter sehr vielen
Zerstreuungen geschrieben ist. Ich bin gar nicht mit ihm zufrieden. Denn
bey alle den Schwierigkeiten, die ich mache, wollte ich doch nicht, daß
Sie glaubten, ich hätte jetzt mehr Lust hier zu bleiben, als ehemals. Ich
komme mit Gottes Hülfe gewiß auf Michaelis nach Leipzig, aber ob um
beständig dort zu bleiben, das ist in den Händen der Vorsehung. —
Ich reise morgen mit dem Herrn Oberforstmeister S**** und seiner
Gemahlin nach S***witz, wo mein ehmaliger Lehrer und Hofmeister
Pfarrer ist. Meine Mutter kommt auf den Freytag mit meinem Onkel
und seiner Tochter nach. Dieser geht alsdann mit dem Herrn
Oberforstmeister weiter ins Gebirge nach L***, um da die Brunnenkur zu
brauchen. Wir übrigen bleiben in S***witz, und werden dort in einer
vortrefflichen Gegend vier oder fünf Wochen in dem Hause meines
Lehrers zubringen. Dieser Aufenthalt könnte mir durch nichts in der Welt
unangenehm gemacht werden, als wenn Ihre Briefe nicht mehr so richtig
einliefen, oder die meinigen nicht zu rechter Zeit auf die Post gegeben
würden; denn das Dorf ist sechs Meilen von B****. Ich werde aber alles
mögliche thun, um beydes zu verhüten.
Diese Reise macht heute meinen Brief so kurz, und nöthigt mich, den
an meinen lieben M. Reiz ganz aufzuschieben. Es ist jetzt 12 Uhr in der
Nacht und morgen muß ich um 6 Uhr auf seyn. Leben Sie wohl!
Achter Brief.
Mittwochs des Morgens.

Ich wende noch die Augenblicke, die ich vor dem Antritte meiner Reise
übrig habe, dazu an, an Sie zu denken, und das, was ich gedacht habe,
niederzuschreiben. Ich weiß, daß sich Ihre freundschaftliche Neubegierde
nicht bloß damit beruhigen wird, zu wissen wo ich bin. Sie werden auch
wissen wollen, was ich da mache. —
Wenn ich mich nicht irre, so müssen Sie schon Herrn Ringeltauben, in
dessen Hause ich seyn werde, aus meinen Beschreibungen kennen. Ich
verehre ihn als meinen Lehrer; und ich liebe ihn als meinen Freund und
meinen Bruder. Hochachtung und Dankbarkeit sind gewiß die festesten
Bande, die die Natur hat, zwey nicht ganz unedle Seelen mit einander zu
verbinden. Sein Haus soll sehr bequem, und die Gegend vortrefflich
seyn. Meine Mutter, die das Land über alles, und den Herrn Ringeltauben
als ihren Sohn liebt, wird sich dort wieder erholen, und das wird auf mich
zurück wirken. Endlich werde ich Bücher genug haben, um die leeren
Stunden auszufüllen. Der Herr Oberforstmeister, mit dem ich reise, ist
lange im Kriege mit dem General Wobersnow in Leipzig gewesen. Er ist
ein Mann von sehr vielem Verstande, von einer großen Erfahrung, (da er
lange Zeit mit den Vornehmsten der Armee und einige Zeit auch mit dem
Könige selbst umgegangen ist;) und der Mann einer Frau, die beynahe
meine Gespielin gewesen ist. Der Weg heraus geht an der Oder, in einer
sehr angenehmen Gegend. Ihre Briefe dürfen Sie nicht anders als bisher
addressiren. Ich habe gemessene Ordre gestellt, sie mir gleich
nachzuschicken.
Erwarten Sie also ins künftige Briefe, die voll von ländlicher Unschuld
und Einfalt, aber auch voll von ländlichem Vergnügen sind.
Neunter Brief.
S***witz den — Juli.

Es giebt gewisse Arten von Vergnügungen, die uns unempfindlich


machen, weil sie uns berauschen. Indem alsdann die gegenwärtige
Empfindung die ganze Seele ausfüllt, und ihre gesammten Fähigkeiten
bloß in dem Genuß erschöpft werden, so werden alle Erinnerungen, alle
Reflexionen aus der Seele verdrängt, und mit ihnen zugleich die feinern
Vergnügungen, die auf dieselben gegründet sind. In diesem Zustande ist
die ganze Seele Maschine, und sie bewegt sich ganz unwillkührlich nach
der Richtung des Stoßes, die ihr ein so heftiger äußerer Antrieb giebt.
Eine andere Art hingegen, die nur die Sinnen in so weit rührt, als es
nöthig ist, durch sie die Einbildungskraft rege zu machen, eröffnet allen
Arten von moralischen Empfindungen den Zugang. Sie macht das Herz
weich, und so zu sagen — schmachtend. Die Vernunft ist dabey heiter
genug, alle verwandten Ideen herbeyzurufen, jede angenehme
Erinnerung mit der augenblicklichen Empfindung zu verbinden, und unter
die Ergötzungen des Auges und des Ohres die moralischen Vergnügungen
der Freundschaft und der Tugend zu mischen.
Unter diese letztere Gattung gehört diejenige Art von Vergnügen, die
ich jetzt genieße. Sie sind so still und so ruhig, wie die Fluren des
Abends, durch die ich gehe, und eben so heiter und rein, als das blaue
Gewölbe, das mich deckt. Alles das, was ich sehe, und was die Quelle des
Vergnügens ist, ist zugleich ein Stoff zu Betrachtungen, die vielleicht noch
ergötzender sind, als der sinnliche Eindruck selbst. Wenn ich dann auf
einer großen lachenden Wiese, die von alten ehrwürdigen Eichen rings
um eingeschlossen, und von dem schwankenden Schatten derselben halb
überstreut ist, die mildern Einflüsse der Abendsonne genieße; dann
versetze ich in diese Gegend alle meine Freunde. Ich sammle in
Gedanken diesen kleinen aber ehrwürdigen Haufen von Leuten, die ich
liebe und die mich wieder lieben, um mich herum, alle durch gegenseitige
Neigungen an einander gebunden, alle von einerley Geiste beseelt, zu
einerley Empfindungen aufgelegt, und mit eben denselben Arbeiten des
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

textbookfull.com

You might also like