Ms SQL Command
Ms SQL Command
The create table statement is used to create a new table. Here is the format of a simple create
table statement:
Note: You may have as many columns as you'd like, and the constraints are optional.
Example:
To create a new table, enter the keywords create table followed by the table name, followed by
an open parenthesis, followed by the first column name, followed by the data type for that
column, followed by any optional constraints, and followed by a closing parenthesis. It is
important to make sure you use an open parenthesis before the beginning table, and a closing
parenthesis after the end of the last column definition. Make sure you separate each column
definition with a comma. All SQL statements should end with a ";".
The table and column names must start with a letter and can be followed by letters, numbers, or
underscores - not to exceed a total of 30 characters in length. Do not use any SQL reserved
keywords as names for tables or column names (such as "select", "create", "insert", etc).
Data types specify what the type of data can be for that particular column. If a column called
"Last_Name", is to be used to hold names, then that particular column should have a "varchar"
(variable-length character) data type.
char(size) Fixed-length character string. Size is specified in parenthesis. Max 255 bytes.
varchar(size) Variable-length character string. Max size is specified in parenthesis.
number(size) Number value with a max number of column digits specified in parenthesis.
date Date value
number(size,d) Number value with a maximum number of digits of "size" total, with a
maximum number of "d" digits to the right of the decimal.
What are constraints? When tables are created, it is common for one or more columns to have
constraints associated with them. A constraint is basically a rule associated with a column that
the data entered into that column must follow. For example, a "unique" constraint specifies that
no two records can have the same value in a particular column. They must all be unique. The
other two most popular constraints are "not null" which specifies that a column can't be left
blank, and "primary key". A "primary key" constraint defines a unique identification of each
record (or row) in a table
To insert records into a table, enter the key words insert into followed by the table name,
followed by an open parenthesis, followed by a list of column names separated by commas,
followed by a closing parenthesis, followed by the keyword values, followed by the list of values
enclosed in parenthesis. The values that you enter will be held in the rows and they will match up
with the column names that you specify. Strings should be enclosed in single quotes, and
numbers should not.
In the example below, the column name first will match up with the value 'Luke', and the
column name state will match up with the value 'Georgia'.
Example:
Updating Records
The update statement is used to update or change records that match a specified criteria. This is
accomplished by carefully constructing a where clause.
[] = optional
Examples:
update phone_book
set area_code = 623
where prefix = 979;
update phone_book
set last_name = 'Smith', prefix=555, suffix=9292
where last_name = 'Jones';
update employee
set age = age+1
where first_name='Mary' and last_name='Williams'
Deleting Records
The delete statement is used to delete records or rows from the table.
where "columnname"
OPERATOR "value"
[and|or "column"
OPERATOR "value"];
[ ] = optional
Examples:
Note: if you leave off the where clause, all records will be deleted!
Drop a Table
The drop table command is used to delete a table and all rows in the table.
To delete an entire table including all of its rows, issue the drop table command followed by the
tablename. drop table is different from deleting all of the records in the table. Deleting all of the
records in the table leaves the table including column and constraint information. Dropping the
table removes the table definition as well as all of its rows.
Example:
ADD A COLUMN
RENAME A TABLE
RENAME A COLUMN
DROP A COLUM
This will drop the column called column_name from the table .
MODIFY A COLUMN
Example:
ALTER TABLE MyTable ALTER COLUMN MyColumn DECIMAL (5, 2)
Selecting Data
The select statement is used to query the database and retrieve selected data that match the
criteria that you specify. Here is the format of a simple select statement:
select "column1"
[,"column2",etc]
from "tablename"
[where "condition"];
[] = optional
The column names that follow the select keyword determine which columns will be returned in
the results. You can select as many column names that you'd like, or you can use a "*" to select
all columns.
The table name that follows the keyword from specifies the table that will be queried to retrieve
the desired results.
The where clause (optional) specifies which data values or rows will be returned or displayed,
based on the criteria described after the keyword where.
= Equal
> Greater than
< Less than
>= Greater than or equal
<= Less than or equal
<> Not equal to
LIKE *See note below
The LIKE pattern matching operator can also be used in the conditional selection of the where
clause. Like is a very powerful operator that allows you to select only rows that are "like" what
you specify. The percent sign "%" can be used as a wild card to match any possible character
that might appear before or after the characters specified. For example:
This SQL statement will match any first names that start with 'Er'. Strings must be in single
quotes.
This statement will match any last names that end in a 's'.
This will only select rows where the first name equals 'Eric' exactly.
SELECT Statement
The SELECT statement is used to query the database and retrieve selected data that match the
criteria that you specify.
The SELECT statement has five main clauses to choose from, although, FROM is the only required
clause. Each of the clauses have a vast selection of options, parameters, etc. The clauses will be
listed below, but each of them will be covered in more detail later in the tutorial.
FROM table1[,table2]
[WHERE "conditions"]
[GROUP BY "column-list"]
[HAVING "conditions]
*The column names that follow the SELECT keyword determine which columns will be returned in
the results. You can select as many column names that you'd like, or you can use a * to select all
columns. The order they are specified will be the order that they are returned in your
query results.
*The table name that follows the keyword FROM specifies the table that will be queried to
retrieve the desired results.
*The WHERE clause (optional) specifies which data values or rows will be returned or displayed,
based on the criteria described after the keyword where.
Example:
FROM employee
The above statement will select all of the values in the name, age, and salary columns from the
employee table whose age is greater than 50.
Note: Remember to put a semicolon at the end of your SQL statements. The ; indicates that your
SQL statment is complete and is ready to be interpreted.
Comparison Operators
= Equal
> Greater than
The LIKE pattern matching operator can also be used in the conditional selection of the where
clause. Like is a very powerful character string comparison operator that allows you to select only
rows that are "like" what you specify. The percent sign "%" can be used as a wild card to match
any possible character that might appear before or after the characters specified. For example:
This SQL statement will match any first names that start with 'Mc'. Strings must be in single
quotes.
Example:
FROM employee
The above statement will select all of the rows/values in the name, title, and dept columns from
the employee table whose title starts with 'Pro'. This may return job titles including Programmer
or Pro-wrestler.
ALL and DISTINCT are keywords used to select either ALL (default) or the "distinct" or unique
records in your query results. If you would like to retrieve just the unique records in specified
columns, you can use the "DISTINCT" keyword. DISTINCT will discard the duplicate records for
the columns you specified after the "SELECT" statement: For example:
This statement will return all of the unique ages in the employee_info table.
ALL will display "all" of the specified columns including all of the duplicates. The ALL keyword is
the default if nothing is specified.
Aggregate Functions
MIN returns the smallest value in a given column
MAX returns the largest value in a given column
SUM returns the sum of the numeric values in a given column
AVG returns the average value of a given column
COUNT returns the total number of values in a given column
COUNT(*) returns the number of rows in a table
Aggregate functions are used to compute against a "returned column of numeric data" from your
SELECT statement. They basically summarize the results of a particular column of selected data.
We are covering these here since they are required by the next topic, "GROUP BY". Although they
are required for the "GROUP BY" clause, these functions can be used without the "GROUP BY"
clause. For example:
SELECT AVG(salary)
FROM employee;
This statement will return a single result which contains the average value of everything returned
in the salary column from the employee table.
Another example:
SELECT AVG(salary)
FROM employee;
This statement will return the average salary for all employees whose title is equal to
'Programmer'
Example:
FROM employees;
This particular statement is slightly different from the other aggregate functions since there isn't
a column supplied to the count function. This statement will return the number of rows in the
employees table.
GROUP BY clause
The GROUP BY clause will gather all of the rows together that contain data in the specified
column(s) and will allow aggregate functions to be performed on the one or more columns. This
can best be explained by an example:
SELECT column1,
SUM(column2)
FROM "list-of-tables"
GROUP BY "column-list";
Let's say you would like to retrieve a list of the highest paid salaries in each dept:
FROM employee
GROUP BY dept;
This statement will select the maximum salary for the people in each unique department.
Basically, the salary for the person who makes the most in each department will be displayed.
Their, salary and their department will be returned.
For example, take a look at the items_ordered table. Let's say you want to group everything of
quantity 1 together, everything of quantity 2 together, everything of quantity 3 together, etc. If
you would like to determine what the largest cost item is for each grouped quantity (all quantity
1's, all quantity 2's, all quantity 3's, etc.), you would enter:
FROM items_ordered
GROUP BY quantity;
Enter the statement in above, and take a look at the results to see if it returned what you were
expecting. Verify that the maximum price in each Quantity Group is really the maximum price.
HAVING clause
The HAVING clause allows you to specify conditions on the rows for each group - in other words,
which rows should be selected will be based on the conditions you specify. The HAVING clause
should follow the GROUP BY clause if you are going to use it.
SELECT column1,
SUM(column2)
FROM "list-of-tables"
GROUP BY "column-list"
HAVING "condition";
HAVING can best be described by example. Let's say you have an employee table containing the
employee's name, department, salary, and age. If you would like to select the average salary for
each employee in each department, you could enter:
GROUP BY dept;
But, let's say that you want to ONLY calculate & display the average if their salary is over 20000:
FROM employee
GROUP BY dept
ORDER BY clause
ORDER BY is an optional clause which will allow you to display the results of your query in a
sorted order (either ascending order or descending order) based on the columns that you specify
to order by.
FROM "list-of-tables"
ORDER BY
"column-list" [ASC | DESC];
[ ] = optional
This statement will select the employee_id, dept, name, age, and salary from the employee_info
table where the dept equals 'Sales' and will list the results in Ascending (default) order based on
their Salary.
For example:
FROM employee_info
ORDER BY salary;
If you would like to order based on multiple columns, you must seperate the columns with
commas. For example:
FROM employee_info
SELECT column1,
SUM(column2)
FROM "list-of-tables"
The OR operator can be used to join two or more conditions in the WHERE clause also. However,
either side of the OR operator can be true and the condition will be met - hence, the rows will be
displayed. With the OR operator, either side can be true or both sides can be true.
For example:
FROM employee_info
This statement will select the employeeid, firstname, lastname, title, and salary from the
employee_info table where the salary is greater than or equal to 50000.00 AND the title is equal
to 'Programmer'. Both of these conditions must be true in order for the rows to be returned in the
query. If either is false, then it will not be displayed.
Although they are not required, you can use paranthesis around your conditional expressions to
make it easier to read:
FROM employee_info
Another Example:
FROM employee_info
This statement will select the firstname, lastname, title, and salary from the employee_info table
where the title is either equal to 'Sales' OR the title is equal to 'Programmer'.
FROM "list-of-tables"
WHERE col3 IN
(list-of-values);
FROM "list-of-tables"
The IN conditional operator is really a set membership test operator. That is, it is used to test
whether or not a value (stated before the keyword IN) is "in" the list of values provided after the
keyword IN.
For example:
FROM employee_info
This statement will select the employeeid, lastname, salary from the employee_info table where
the lastname is equal to either: Hernandez, Jones, Roberts, or Ruiz. It will return the rows if it is
ANY of these values.
FROM employee_info
As you can see, the IN operator is much shorter and easier to read when you are testing for more
than two or three values.
You can also use NOT IN to exclude the rows in your list.
The BETWEEN conditional operator is used to test to see whether or not a value (stated before
the keyword BETWEEN) is "between" the two values stated after the keyword BETWEEN.
For example:
FROM employee_info
This statement will select the employeeid, age, lastname, and salary from the employee_info
table where the age is between 30 and 40 (including 30 and 40).
FROM employee_info
You can also use NOT BETWEEN to exclude the values between your range.
Mathematical Operators
Standard ANSI SQL-92 supports the following first four basic arithmetic operators:
+ addition
The modulo operator determines the integer remainder of the division. This operator is not ANSI
SQL supported, however, most databases support it. The following are some more useful
mathematical functions to be aware of since you might need them. These functions are not
standard in the ANSI SQL-92 specs, therefore they may or may not be available on the specific
RDBMS that you are using. However, they were available on several major database systems that
I tested. They WILL work on this tutorial.
For example:
FROM employee_info
This statement will select the salary rounded to the nearest whole value and the firstname from
the employee_info table.
A "Join" can be recognized in a SQL SELECT statement if it has more than one table after the
FROM keyword.
For example:
SELECT "list-of-columns"
FROM table1,table2
WHERE "search-condition(s)"
Joins can be explained easier by demonstrating what would happen if you worked with one table
only, and didn't have the ability to use "joins". This single table database is also sometimes
referred to as a "flat table". Let's say you have a one-table database that is used to keep track of
all of your customers and what they purchase from your store:
Everytime a new row is inserted into the table, all columns will be be updated, thus resulting in
unnecessary "redundant data". For example, every time Wolfgang Schultz purchases something,
the following rows will be inserted into the table:
"Customer_info" table:
"Purchases" table:
Now, whenever a purchase is made from a repeating customer, the 2nd table, "Purchases" only
needs to be updated! We've just eliminated useless redundant data, that is, we've just
normalized this database!
Data Normalization is a technique of database design that is used to get the tables in your
database into at least the third normal form (3NF). Basically, this means that you want to
eliminate the redundancy of non-key data when constructing your tables. Each table should only
have columns that depend on the primary key.
Notice how each of the tables have a common "cusomer_number" column. This column, which
contains the unique customer number will be used to JOIN the two tables. Using the two new
tables, let's say you would like to select the customer's name, and items they've purchased. Here
is an example of a join statement to accomplish this:
This particular "Join" is known as an "Inner Join" or "Equijoin". This is the most common type of
"Join" that you will see or use.
Notice that each of the colums are always preceeded with the table name and a period. This isn't
always required, however, it IS good practice so that you wont confuse which colums go with
what tables. It is required if the name column names are the same between the two tables. I
recommend preceeding all of your columns with the table names when using joins.
Note: The syntax described above will work with most Database Systems -including the
one with this tutorial. However, in the event that this doesn't work with yours, please
check your specific database documentation.
Although the above will probably work, here is the ANSI SQL-92 syntax specification for an Inner
Join using the preceding statement above that you might want to try:
ON customer_info.customer_number = purchases.customer_number;
Another example:
This statement will select the employeeid, lastname (from the employee_info table), and the
comission value (from the employee_sales table) for all of the rows where the employeeid in the
employee_info table matches the employeeid in the employee_sales table.