Lesson 3: SQL Server Databases

[Previous] [Next]

An understanding of SQL Server database structure will help you develop and implement your database effectively. This lesson discusses the types of databases found in SQL Server and also describes two types of structural elements: database objects and system tables.

After this lesson, you will be able to

  • Describe SQL Server system and user databases
  • Understand how database objects are named and referenced in SQL Server
  • Describe the purpose of SQL Server system tables
  • Define metadata and know how to retrieve it

Estimated lesson time: 30 minutes

Types of Databases

Each SQL Server has two types of databases: system databases and user databases. Structurally there is no difference between system and user databases, both types of databases store data. However, SQL Server recognizes and requires system databases for its own use. System databases store information about SQL Server as a whole. SQL Server uses these databases to operate and manage the system. User databases are databases that users create. One copy of SQL Server can manage one or more user databases. When SQL Server is installed, SQL Server Setup creates four system databases and two sample user databases.

System Databases

The following table describes the system databases.

Database Description
master Controls the user databases and operation of SQL Server as a whole by keeping track of information such as login accounts, configurable environment variables, database locations, and system error messages
model Provides a template, or prototype, for new user databases
tempdb Provides a storage area for temporary tables and other temporary working storage needs
msdb Supports SQL Server Agent and provides a storage area for scheduling information and job history
distribution Stores history and transaction data used in replication

NOTE
The distribution database is installed only when you configure SQL Server for replication activities.

While it is possible to modify and delete data in the system databases, this is not recommended. You should create all user objects in user databases and use system stored procedures only to read and modify data in the system databases.

There is one case in which you can modify a system database directly. If you want certain objects that you create (such as stored procedures, data types, defaults, and rules) to be added to every new user database, you can add these objects to the model database. The contents of the model database are copied into every new database.

User Databases

The pubs and Northwind sample databases are installed when you install SQL Server. These provide useful examples for you to use when learning how to work with SQL Server. They are not required for SQL Server to operate correctly.

Database Objects

A database is a collection of data stored in tables, along with objects that support the storage, retrieval, security, and integrity of this data.

The following table summarizes the SQL Server database objects.

Database object Description
Table Stores data as a collection of rows and columns.
Data type Defines the type of data values allowed for a column or variable. SQL Server provides system-supplied data types. Users can create user-defined data types.
Constraint Used to define integrity rules for a column or set of columns in a table; the standard mechanism for enforcing data integrity.
Default Defines a value that is stored in a column if no other value is supplied.
Rule Defines an expression that is used to check the validity of values that are stored in a column or data type.
Index A storage structure that provides ordering and fast access for data retrieval and that can enforce data uniqueness.
View Provides a way to look at data from one or more tables or other views in a database.
Stored procedure A named collection of Transact-SQL statements or batches that execute together.
Trigger A special form of a stored procedure that is executed automatically when a user modifies data in a table.

NOTE
In Enterprise Manager, system databases and system objects are hidden by default. You can change the default by editing the server registration information and checking the Show System Databases And System Objects option.

Referring to SQL Server Objects

You can refer to SQL Server objects in several ways. You can specify the full name of the object (its fully qualified name), or you can specify only part of the object's name and have SQL Server determine the rest of the name from the context in which you are working.

Fully Qualified Names

The complete name of a SQL Server object includes four identifiers: the server name, the database name, the owner name, and the object name, in the following format:

server.database.owner.object 

Any name that specifies all four parts is known as a fully qualified name. Each object created in SQL Server must have a unique, fully qualified name. For example, there can be two tables named Orders in the same database only as long as they belong to different owners. In addition, column names must be unique within a table or view.

Partially Specified Names

When referencing an object, you do not always have to specify the server, database, and owner. Leading identifiers can be omitted. Intermediate identifiers can also be omitted as long as their position is indicated by periods. The valid formats of object names are as follows:

server.database.owner.object server.database..object server..owner.object server...object database.owner.object database..object owner.object object 

When you create an object, SQL Server uses the following defaults if different parts of the name are not specified:

  • The server defaults to the local server.
  • The database defaults to the current database.
  • The owner defaults to the username in the specified database associated with the login ID of the current connection. (Usernames are mapped to login IDs when they are created.)

A user who is a member of a role can explicitly specify the role as the object owner. A user who is a member of the db_owner or db_ddladmin role in the Northwind database can specify the dbo user account as the owner of an object. This practice is recommended.

The following example creates an order_history table in the Northwind database.

CREATE TABLE northwind.dbo.order_history         (           OrderID INT         , ProductID int         , UnitPrice money         , Quantity int         , Discount decimal         ) 

Most object references use three-part names and default to the local server. Four-part names are generally used for distributed queries or remote stored procedure calls.

System Tables

System tables store information, called metadata, about the system and objects in databases. Metadata is information about data.

The Database Catalog

Each database (including the master database) contains a collection of system tables that store metadata about that specific database. This collection of system tables is called the database catalog.

The System Catalog

The system catalog, found only in the master database, is a collection of system tables that stores metadata about the entire system and all other databases.

System tables all begin with the sys prefix. The following table identifies some frequently used system tables.

System table Database Function
sysxlogins master Contains one row for each login account that can connect to SQL Server. If you need to access information in sysxlogins, you should do so through the syslogins view.
sysmessages master Contains one row for each system error or warning that SQL Server can return.
sysdatabases master Contains one row for each database on a SQL Server.
sysusers All Contains one row for each Windows NT user, Windows NT group, SQL Server user, or SQL Server role in a database.
sysobjects All Contains one row for each object in a database.

Metadata Retrieval

You can query a system table as you would any other table to retrieve information about the system. However, you should not write scripts that directly query the system tables, because if the system tables are changed in future product versions, your scripts may fail or may not provide accurate information.

CAUTION
Writing scripts that directly modify the system tables is strongly discouraged. Changing a system table may make it impossible for SQL Server to operate normally.

When you write applications that retrieve metadata from system tables, you should use system stored procedures, system functions, or system-supplied information schema views. Each of these is described in the sections that follow.

System Stored Procedures

To make it easier for you to gather information about the state of the server and database objects, SQL Server provides a collection of prewritten queries called system stored procedures.

The names of most system stored procedures begin with the sp_ prefix. The following table describes three commonly used system stored procedures.

System stored procedure Description
sp_help [object_name] Provides information on the specified database object
sp_helpdb [database_name] Provides information on the specified database
sp_helpindex [table_name] Provides information on the index for the specified table

The following example executes a system stored procedure to get information on the employee table.

sp_help employee 

Many other stored procedures are used to create or modify system information or database objects by modifying the system tables. For example, the system stored procedure sp_addlogin creates a new login account in the master..sysxlogins system table.

As you have seen, there are system stored procedures that modify and query the system tables for you so that you do not have to do so directly.

System Functions

System functions provide a method for querying system tables from within Transact-SQL statements. System functions return specific, single values. The following table describes commonly used system functions and the information they return.

System function Parameter passed Results
DB_ID Database name Returns the database ID
USER_NAME User ID Returns the user's name
COL_LENGTH Table and column names Returns the column width
STATS_DATE Table and index IDs Returns the date when statistics for the specified index were last updated
DATALENGTH Expression Returns the actual length of the value of an expression of any data type

The following example uses a system function in a query to get the user name for user ID 10.

SELECT USER_NAME(10) 

Information Schema Views

Information schema views provide an internal, system table_independent view of the SQL Server metadata. These views conform to the ANSI SQL standard definition for information schema. Information schema views allow applications to work properly even if future product versions change the system tables significantly.

In SQL Server, all information schema views are owned by a predefined information_schema user.

Each information schema view contains metadata for the data objects stored in a particular database. The following table describes commonly used information schema views.

Information schema view Description
information_schema.tables List of tables in the database
information_schema.columns Information on columns defined in the database
information_schema.tables_privileges Security information for tables in the database

The following example queries an information schema view to get a list of tables in a database.

SELECT * FROM information_schema.tables 

Lesson Summary

The retrieval of metadata—information about objects and their configuration—has been made much easier in SQL Server 7. Information Schema Views, new to this version, provide a means to retrieve valuable information from system tables without writing a query against these tables yourself. SQL Server continues to support the use of system stored procedures, which can be recognized by their sp_ prefix, to gather valuable information for database objects.



Microsoft Press - Microsoft SQL Server 7. 0 System Administration Training Kit
Microsoft SQL Server 7.0 System Administration Training Kit
ISBN: 1572318279
EAN: 2147483647
Year: 1999
Pages: 100

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net