Archive for the ‘ Intro to SQL ’ Category

SQL SUBSTRING Function

The Substring function in SQL is used to grab a portion of the stored data. The general syntax is: SUBSTRING(String, Position,Length)

The most frequent uses are as follows:

SUBSTR(String,Position,Length): Starting with the th character in string and select the next characters.

Assume we have the following table:

Store Regions

Region StoreName
East Boston
East New York
West LA
West San Diego

Example 1:

SELECT SUBSTRING(store_name,2,4)
FROM Geography
WHERE storename = ‘San Diego’;
Result:
‘an D’

There are so many variants of SQL that it is hard sometimes to figure out what to use. Here is a short article that briefly explains the difference between SQL and PL/SQL. Enjoy!

What is SQL?

SQL (pronounced “sequal”) stands for Structured Query Language. Withe SQL, you can view data – called Data Definiton Language or DDL and manipulate data – called Data Manipulation Languate or DML. All of the above are just a fancy way to say that with SQL, the user can both view and alter records in the database. To help , here are a couple of queries:

DDL or View

SELECT * FROM employees

View all of the records in the employee table

DML or Manipulate

UPDATE employees SET employeefirstname = ‘John’ WHERE employeeid = 101

Find the record for employee ID 101 and change the first name to John

What is PL/SQL?

The official answer is from the PL/SQL User Guide:
PL/SQL, Oracle’s procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers software-engineering features such as data encapsulation, overloading, collection types, exceptions, and information hiding. PL/SQL also supports rapid prototyping and development through tight integration with SQL and the Oracle database.
Huh? That is what I thought at the beginning. But at a high level, all this means is that it can do all of the things that regular SQL can do, but also, it is procedural and can be used like a programming language (C++, Java, etc.) For instance, you can use loops and If . . . Then statements in your PL/SQL statements (Programs).

Here is a definition of PL/SQL from Lewis Cunningham (an Oracle database expert):

“If I wanted to create my own, very short, definition of PL/SQL it would be this: PL/SQL is the Oracle native programming language that provides database-centric application development. It can natively call static SQL and provides multiple methods of calling dynamic SQL.

Mr. Cunningham also does a very good job of spelling out the differences between SQL and PL/SQL.

SQL is a data oriented language for selecting and manipulating sets of data. PL/SQL is a procedural language to create applications. You don’t normally have a “SQL application”. You normally have an application that uses SQL and a relational database on the back-end. PL/SQL can be the application language just like Java or PHP can. SQL may be the source of data for your screens, web pages and reports. PL/SQL might be the language you use to build, format and display those screens, web pages and reports.

Think of it like this: The code that makes your program function is PL/SQL. The code that manipulates the data is SQL DML. The code that creates stored database objects is SQL DDL. DDL compiles the code that is written in PL/SQL. PL/SQL may call SQL to perform data manipulation. The commands that format the output of a tool are not related to the SQL standard or to PL/SQL.
To muddy the waters a little more, while you cannot write an application in SQL, you can use a procedural language to automate parts. These are called Stored Procedures and here is a link to all you want to know about stored procedures on this site.

Triggers are stored procedures which are fired when data is modified in an underlying table. They can evaluate data being added to a table for validation purposes, or can make changes in that or other fields depending on the value of that data. You can use them even to execute a separate stored procedure, or to roll back a data modification or an entire transaction.

In earlier versions of SQL Server, triggers were used to maintain referential integrity. In current versions, constraints and foreign keys are used to accomplish much of those tasks, but triggers are still used to accomplish more complex tasks than that are available to the built in newer tools, such as complex column constraints, evaluation of tables in other databases, complicated defaults, or cascading routines involving multiple changes in multiple tables.

Triggers are created in the Enterprise Manager, or in the Query Analyzer through the object browser. There are also templates for triggers in the Query Analyzer (Edit|Insert Trigger). Triggers can be created with the following syntax:

CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ... n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ... n ]
} ]
sql_statement [ ... n ]
}
}

There are two types of triggers: AFTER and INSTEAD OF. After triggers AFTER TRIGGERS fire after the data is changed, either by insert, delete, or update. If the data is inappropriate, as defined in the trigger, the modification can be rolled back to where it was before the data was modified. After triggers AFTER TRIGGERS cannot be placed on views, and cannot be used on more than one table. Also, the text, ntext, and image columns cannot be referenced in an after trigger. AFTER TRIGGERS.

After triggers AFTER TRIGGERS can be nested to 32 levels deep, and can be called recursively, again to 32 levels.

Instead of INSTEAD OF triggers make the validation before the modification. However, Instead of INSTEAD OF triggers CAN can be used on views. They do not allow recursion, and you can only have one Instead of INSTEAD OF trigger per table. And you cannot use an Instead of INSTEAD OF trigger with a cascade.

Resources

Professional SQL Server 2005 CLR Programming: with Stored Procedures, Functions, Triggers, Aggregates and Types

MICROSOFT SQL SERVER 2008 A BEGINNER’S GUIDE 4/E

Tutorial On SQL Datatypes

SQL Server requires that each variable and column in a table should be defined with respect to the type of data it will store. From a bit to a huge image and binary storage types, the allocation is supposed to help the user conform to the data required, and help the engine allocate space and processing speed efficiently.

Built-in data types

SQL Server 2000 recognizes the following built in data types:

bigint
Integer data from -2^63 through 2^63-1

int
Integer data from -2^31 through 2^31 – 1

smallint
Integer data from -2^15 through 2^15 – 1

tinyint
Integer data from 0 through 255

bit
Integer data with either a 1 or 0 value

decimal
Fixed precision and scale numeric data from -10^38 +1 through 10^38 -1

numeric
Fixed precision and scale numeric data from -10^38 +1 through 10^38 -1

money
Monetary data values from -2^63 through 2^63 – 1

smallmoney
Monetary data values from -214,748.3648 through +214,748.3647

float
Floating precision number data from -1.79E + 308 through 1.79E + 308

real
Floating precision number data from -3.40E + 38 through 3.40E + 38

datetime
Date and time data from January 1, 1753, through December 31, 9999, with an accuracy of 3.33 milliseconds

smalldatetime
Date and time data from January 1, 1900, through June 6, 2079, with an accuracy of one minute

char
Fixed-length character data with a maximum length of 8,000 characters

varchar
Variable-length data with a maximum of 8,000 characters

text
Variable-length data with a maximum length of 2^31 – 1 characters

nchar
Fixed-length Unicode data with a maximum length of 4,000 characters

nvarchar
Variable-length Unicode data with a maximum length of 4,000 characters

ntext
Variable-length Unicode data with a maximum length of 2^30 – 1 characters

binary
Fixed-length binary data with a maximum length of 8,000 bytes

varbinary
Variable-length binary data with a maximum length of 8,000 bytes

image
Variable-length binary data with a maximum length of 2^31 – 1 bytes

cursor
A reference to a cursor

sql_variant
A data type that stores values of various data types, except text, ntext, timestamp, and sql_variant

table
A special data type used to store a result set for later processing

timestamp
A database-wide unique number that gets updated every time a row gets updated

uniqueidentifier
A globally unique identifier

How to choose the appropriate data type

SQL Server stores data in data pages that are 8Kb (8192 bytes) in size. The system uses some of that s Sometimes, the system uses only 8060 bytes are availableto that are available to store user’s data. Consider the size of a row of data in your tables. If the rows are large, make sure that multiples of the fit conveniently on a data page so that page space is not wasted. This is cut down on disk paging overhead when accessing the data. You want to maximize the number of rows of data which that will fit on a page. This can be accomplished both by splitting the tables, and by choosing the smallest data type which that will accommodate your data. .

If you are using integer data, data; consider that the tinyint datatype will accommodate data which that will fit into one byte of storage. So if the range of all of the data in your field (or variable) is between 0 and 255, use the tinyint datatype. If the range is between -32,768 and 32,767, use the smallint data type. And if If you need to store integer data from -2,147,483,648 through 2,147,483,647, use int data type.

Similarly with smallmoney. If smallmoney. if your value range is between -214748.3648 and 214,748.3647, use the smallmoney datatype.

Use smalldatetime data type instead of datetime data type, if you need to store the date and time data from January 1, 1900 through June 6, 2079, with accuracy to the minute.

Prefer varchar.nvarchar to text/ntext whenever possible because the text and image fields are stored separately, which produces additional paging. And prefer char/varchar to nchar/nvarchar data types because the n types require twice as much storage space. The n types are used primarily for unicode data.

SQL Math Functions

The following is a reference to the main math functions in SQL:

ABS(X) Absolute value-converts negative numbers to positive, or leaves positive numbers alone
CEIL(X) X is a decimal value that will be rounded up.
FLOOR(X) X is a decimal value that will be rounded down.
GREATEST(X,Y) Returns the largest of the two values.
LEAST(X,Y) Returns the smallest of the two values.
MOD(X,Y) Returns the remainder of X / Y.
POWER(X,Y) Returns X to the power of Y.
ROUND(X,Y) Rounds X to Y decimal places. If Y is omitted, X is rounded to the nearest integer.
SIGN(X) Returns a minus if X < 0, else a plus.
SQRT(X) Returns the square root of X.

Q: What is normalization?

A: Normalization is a technique of database design that minimizes the amount of redundancy in the database tables. This is accomplished by laying out tables (mainly columns and key fields) in a manner that reduces the amount of duplicate data being stored in the tables. When people talk about normalization, you will hear them talk about forms. This article will talk about the first 3 forms. To learn more about forms and database design practices the following books are great references Database Design for Mere Mortals or Beginning Database Design.

First Normal Form
This form refers to classifying data into seperate tables where that data in each table is of similar type and giving each table a primary key.

Second Normal Form
This form involves removing to other tables data that is only dependent on a part of the key. As with the definition of database normalization, you are trying to reduce redundancy. Here is an example: If you have two tables – authors and books, you do not want to put the author’s address in both tables. If you need the author’s address in the books table, you would only put a reference to the primary key for the author from the Authors table in the Books table. This way, you will be able to use all of the information about the author without having to maintain it in more than one place.

Third Normal Form
This form involves getting rid of anything in the tables that does not depend solely on the primary key. Only include information that is dependent on the key and move off data to other tables that are independent on the primary key and create primary key for the new tables.

Normalization is crucial to good database design, but it is not necessary to normalize all of the way to the third or fourth form for every database that you create. Use common sense and use the amount of normalization that the situation calls for and the amount that you feel comfortable with.

sp_columns table name

What is a Database?

Databases are similar to storage containers in that they hold information in a logical and convenient format. Your job as a database guru is to create and manage databases.

The Inner Workings of a Database

A database can have one table or many tables. Imagine if you are looking at an excel sheet, there are columns and rows in every book. The same principle applies to a database table. Just like you can have many books in an excel sheet, you can have many tables in a database.

Here’s an example table with 3 columns and 1 row, the top row are the names of the column:

Fname LName Email
Tom Jones Spamme@yahoo.com

Intro to SQL

I hope to make learning SQL very simple and easy with these tutorials. I have written tutorials on other subjects, but never on SQL, I am however experienced with it. I have created numerous database driven websites and have managed large scale websites that use databases as a foundation, such as forums.

With these tutorials I am going to go step-by-step. I am going to show you what information the database holds, and when I
show a command I will show you what will be returned.

The tutorials here refer to MySQL database software, which can be obtained for different platforms at no cost from http://www.mysql.com.

One thing to keep in mind is that there is very little difference in syntax between using Oracle, Mysql, or MSsql. They all use sql as a basis, but run on different engines so to speak.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes