SQL
Table Basics
Database Objects
• Tables
• Temporary tables (begin with #)
• Views
• Keys
• Indexes
Tables
CREATE TABLE table_name
(
applicant_name CHAR(50) NOT NULL,
applicant_address CHAR(255) NULL
)
DROP TABLE table_name
Object Names
• All SQL Server object names are up to 30 characters in length, and are case-sensitive. No embedded blanks or punctuation allowed.
• Full pathname:
database_name.owner_name.object_name
System Procedures
• The Swiss Army Knife: sp_help
• Without parameters: all objects
• With parameters: structure of object
sp_help table_name
Basic Datatypes
• CHAR(): a fixed-length string field.
• VARCHAR(): a variable-length string field.
• TEXT: strings up to 2GB. Note – difficult to manage in T-SQL. Easy through ODBC.
• INTEGER: -231 to 231
• DATETIME: date and time. See convert command for formats.
Column Properties
• NULL (a value does not need to be specified)
• NOT NULL (a value must be specified)• IDENTITY: sequential, unique numbering.
identity(seed,increment)
CREATE TABLE table_name(Column_name int identity(1,1) )
NULL• If possible, avoid allowing null columns.
• 3 valued logic = complexity and bugs.create table truth_table (
x int NULL )
go
insert truth_table(x) values(NULL)
go
select 1 from truth_table where (x >= 0 or x <= 0)
go
What does the select statement return?
Temporary Tables• Temporary tables are like regular tables, but they
are for temporary storage of records. • All SELECT, INSERT, UPDATE and DELETE
operations are allowed on them.• If not explicitly dropped, they will be dropped by
the server when the batch completes.• Are created in the database tempdb.• Most importantly, the table name begins with a
pound sign (#).• CREATE TABLE #temp(a int,b int)
Views
• A named select statement, a virtual table.CREATE VIEW view_name
(
SELECT a.applicant_name,b.skill_code
FROM applicant a, applicant_skill b
WHERE a.applicant_id = b.applicant_id
)
go
select * from view_name order by skill_code
go
Primary Keys• PKs require all values in a column be
unique. Defaults to a clustered index.ALTER TABLE table_name
ADD CONSTRAINT PK_table_name_id
PRIMARY KEY (table_name_id)
sp_helpconstraint table_name
ALTER TABLE table_name DROP CONSTRAINT PK_table_name_id
Foreign Key• One or more columns of a table whose
values must be equal to a primary key in another table.
• SQL Server enforces the referential integrity.
ALTER TABLE table_name
ADD CONSTRAINT FK_table_name_id
FOREIGN KEY (table_name_id)
Indexes
• Maintain uniqueness of the indexed columns (primary keys).
• Provide fast access to the tables. Avoidance of evil table scans.
CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX table_name_idx ON table_name (column [,…])
Clustered Indexes
• One per table.
• Physical sort of table data on indexed column.
• Good for range retrievals because of adjacency.
From SQL Server 6 Unleashed.
Nonclustered Indexes
• Separate structure independent of physical sort order.
• Up to 249 nonclustered indexes on a table.
• Index keys are in sorted order.
From SQL Server 6 Unleashed