This Wikipedia article describes it rather well.
Here is a subset of it, relating to Data Storage:
Data storage The main unit of
data storage is a database, which is a
collection of tables with typed
columns. SQL Server supports different
data types, including primary types
such as Integer, Float, Decimal, Char
(including character strings), Varchar
(variable length character strings),
binary (for unstructured blobs of
data), Text (for textual data) among
others. It also allows user-defined
composite types (UDTs) to be defined
and used. SQL Server also makes server
statistics available as virtual tables
and views (called Dynamic Management
Views or DMVs). A database can also
contain other objects including views,
stored procedures, indexes and
constraints, in addition to tables,
along with a transaction log. A SQL
Server database can contain a maximum
of 231 objects, and can span multiple
OS-level files with a maximum file
size of 220 TB. The data in the
database are stored in primary data
files with an extension .mdf.
Secondary data files, identified with
an .ndf extension, are used to store
optional metadata. Log files are
identified with the .ldf
extension.
Storage space allocated to a database
is divided into sequentially numbered
pages, each 8 KB in size. A page is
the basic unit of I/O for SQL Server
operations. A page is marked with a
96-byte header which stores metadata
about the page including the page
number, page type, free space on the
page and the ID of the object that
owns it. Page type defines the data
contained in the page - data stored in
the database, index, allocation map
which holds information about how
pages are allocated to tables and
indexes, change map which holds
information about the changes made to
other pages since last backup or
logging, or contain large data types
such as image or text. While page is
the basic unit of an I/O operation,
space is actually managed in terms of
an extent which consists of 8 pages. A
database object can either span all 8
pages in an extent ("uniform extent")
or share an extent with up to 7 more
objects ("mixed extent"). A row in a
database table cannot span more than
one page, so is limited to 8 KB in
size. However, if the data exceeds 8
KB and the row contains Varchar or
Varbinary data, the data in those
columns are moved to a new page (or
possibly a sequence of pages, called
an Allocation unit) and replaced with
a pointer to the data.
For physical storage of a table, its
rows are divided into a series of
partitions (numbered 1 to n). The
partition size is user defined; by
default all rows are in a single
partition. A table is split into
multiple partitions in order to spread
a database over a cluster. Rows in
each partition are stored in either
B-tree or heap structure. If the table
has an associated index to allow fast
retrieval of rows, the rows are stored
in-order according to their index
values, with a B-tree providing the
index. The data is in the leaf node of
the leaves, and other nodes storing
the index values for the leaf data
reachable from the respective nodes.
If the index is non-clustered, the
rows are not sorted according to the
index keys. An indexed view has the
same storage structure as an indexed
table. A table without an index is
stored in an unordered heap structure.
Both heaps and B-trees can span
multiple allocation units.