您的位置:首页 > 博客中心 > 数据库 >

SQL Server2008宝典 全书代码

时间:2022-03-14 02:35

3.3.7
-- =============================================
-- Create database template
-- =============================================
USE master
GO

-- Drop the database if it already exists
IF  EXISTS (
    SELECT name 
        FROM sys.databases 
        WHERE name = N‘test‘
)
DROP DATABASE test
GO

CREATE DATABASE test
GO



3.3.8
IF  EXISTS (
    SELECT * FROM sys.objects 
        WHERE object_id = OBJECT_ID(‘<table_name, nvarchar(50), name>‘)
            AND type in (‘U‘))
    print ‘该数据表存在‘
else
    print ‘该数据表不存在‘

5.3.1
CREATE DATABASE database_name                                --设置建立数据库的名称
    [ ON                                                      --设置建立数据库的数据文件
        [ PRIMARY ] [ <filespec> [ ,...n ]                                          --设置文件
        [ , <filegroup> [ ,...n ] ]                                                 --设置文件组
    [ LOG ON { <filespec> [ ,...n ] } ]                              --设置建立数据库的日志文件
    ] 
    [ COLLATE collation_name ]                                 --设置数据库的排序规则名称
    [ WITH <external_access_option> ]                     --设置外部与数据库之间的双向访问
]
[;]

To attach a database                                                   --附加数据库的语法
CREATE DATABASE database_name 
    ON <filespec> [ ,...n ]                                                 --指定附加的文件
    FOR { ATTACH [ WITH <service_broker_option> ]  
        | ATTACH_REBUILD_LOG }                     --指定附加的文件,只限于读/写数据库
[;]

<filespec> ::=                                                       --<filespec>的语法内容
{
(
    NAME = logical_file_name ,
    FILENAME = ‘os_file_name‘ 
        [ , SIZE = size [ KB | MB | GB | TB ] ] 
        [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] 
        [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
) [ ,...n ]
}

<filegroup> ::=                                                    --< filegroup>的语法内容
{
FILEGROUP filegroup_name [ DEFAULT ]
    <filespec> [ ,...n ]
}

<external_access_option> ::=                          --< external_access_option>的语法内容
{
    DB_CHAINING { ON | OFF }
  | TRUSTWORTHY { ON | OFF }
}

<service_broker_option> ::=                           --< service_broker_option >的语法内容
{
    ENABLE_BROKER
  | NEW_BROKER
  | ERROR_BROKER_CONVERSATIONS
}



5.3.5
CREATE DATABASE 测试数据库


CREATE DATABASE 例二数据库
ON 
(
    NAME=‘例二数据库‘,
    FILENAME=‘D:\DBtest\例二数据库.mdf‘
)



CREATE DATABASE 例三数据库
ON 
(
    NAME=‘例三数据库‘,
    FILENAME=‘D:\DBtest\例三数据库.mdf‘,
    SIZE=5MB,
    MAXSIZE=10MB,
    FILEGROWTH=5%
)



CREATE DATABASE 例四数据库
ON 
(
    NAME=‘例四数据库数据文件‘,
    FILENAME=‘D:\DBtest\例四数据库数据文件.mdf‘,
    SIZE=5MB,
    MAXSIZE=10MB,
    FILEGROWTH=5%
)
LOG ON
(
    NAME=‘例四数据库日志文件‘,
    FILENAME=‘D:\DBtest\例四数据库日志文件.ldf‘
)



CREATE DATABASE 例四数据库
ON 
(
    NAME=‘例四数据库逻辑数据文件‘,
    FILENAME=‘D:\DBtest\例四数据库数据文件.mdf‘,
    SIZE=5MB,
    MAXSIZE=10MB,
    FILEGROWTH=5%
)
LOG ON
(
    NAME=‘例四数据库逻辑日志文件‘,
    FILENAME=‘D:\DBtest\例四数据库日志文件.ldf‘
)



CREATE DATABASE 例五数据库
ON 
(
    NAME=‘例五数据库数据文件1‘,
    FILENAME=‘D:\DBtest\例五数据库数据文件1.mdf‘,
    SIZE=5MB,
    MAXSIZE=10MB,
    FILEGROWTH=5%
),(
    NAME=‘例五数据库数据文件2‘,
    FILENAME=‘D:\DBtest\例五数据库数据文件2.ndf‘,
    SIZE=5MB,
    MAXSIZE=10MB,
    FILEGROWTH=5%
),
FILEGROUP 例五数据库数据文件组1
(
    NAME=‘例五数据库数据文件组1的数据文件‘,
    FILENAME=‘D:\DBtest\例五数据库数据文件组1的数据文件.ndf‘,
    SIZE=5MB,
    MAXSIZE=10MB,
    FILEGROWTH=5%
),
FILEGROUP 例五数据库数据文件组2
(
    NAME=‘例五数据库数据文件组2的数据文件1‘,
    FILENAME=‘D:\DBtest\例五数据库数据文件组2的数据文件1.ndf‘,
    SIZE=5MB,
    MAXSIZE=10MB,
    FILEGROWTH=5%
),(
    NAME=‘例五数据库数据文件组2的数据文件2‘,
    FILENAME=‘D:\DBtest\例五数据库数据文件组2的数据文件2.ndf‘,
    SIZE=5MB,
    MAXSIZE=10MB,
    FILEGROWTH=5%
)
LOG ON
(
    NAME=‘例五数据库日志‘,
    FILENAME=‘D:\DBtest\例五数据库日志文件.ldf‘
) 



CREATE DATABASE 例六数据库
ON 
(
    NAME=‘例六数据库‘,
    FILENAME=‘D:\DBtest\例六数据库.mdf‘
)
COLLATE Chinese_PRC_CI_AS



select * from ::fn_helpcollations ()


5.3.6
-- =============================================
-- Create database template
-- =============================================
USE master
GO

-- Drop the database if it already exists
IF  EXISTS (
    SELECT name 
        FROM sys.databases 
        WHERE name = N‘测试用数据库‘
)
DROP DATABASE 测试用数据库
GO

CREATE DATABASE 测试用数据库
GO


-- =============================================
-- Create database on mulitple filegroups
-- =============================================
IF EXISTS (
  SELECT * 
    FROM sys.databases 
   WHERE name = N‘<database_name, sysname, sample_database>‘
)
  DROP DATABASE <database_name, sysname, sample_database>
GO

CREATE DATABASE <database_name, sysname, sample_database>
ON PRIMARY
    (NAME = <logical_filename1, , sample_database_file1>,
      FILENAME = N‘<data_filename1, , C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Datasample_database_1.mdf>‘,
          SIZE = 10MB,
          MAXSIZE = 50MB,
          FILEGROWTH = 10%),
    
    ( NAME = <logical_filename2, , sample_database_file2>,
      FILENAME = N‘<data_filename2, , C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Datasample_database_2.ndf>‘,
          SIZE = 10MB,
          MAXSIZE = 50MB,
          FILEGROWTH = 10%),

FILEGROUP <filegroup_1, , sample_database_filegroup1>
    ( NAME = <logical_filename3, , sample_database_file3>,
      FILENAME = N‘<data_filename3, , C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Datasample_database_3.ndf>‘,
          SIZE = 10MB,
          MAXSIZE = 50MB,
          FILEGROWTH = 10%),
    
    ( NAME = <logical_filename4, , sample_database_file4>,
      FILENAME = N‘<data_filename4, , C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Datasample_database_4.ndf>‘,
          SIZE = 10MB,
          MAXSIZE = 50MB,
          FILEGROWTH = 10%),

FILEGROUP <filegroup2, , sample_database_group_2>
    ( NAME = <logical_filename5, , sample_database_file5>,
      FILENAME = N‘<data_filename5, , C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Datasample_database_5.ndf>‘,
          SIZE = 10MB,
          MAXSIZE = 50MB,
          FILEGROWTH = 10%)

LOG ON
    ( NAME = <logical_log_filename1, , sample_database_log_file1>,
      FILENAME = N‘<log_filename1, , C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Datasample_database_1.ldf>‘,
          SIZE = 10MB,
          MAXSIZE = 50MB,
          FILEGROWTH = 10%),

    ( NAME = <logical_log_filename2, , sample_database_log_file2>,
      FILENAME = N‘<log_filename2, , C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Datasample_database_2.ldf>‘,
          SIZE = 5MB,
          MAXSIZE = 25MB,
          FILEGROWTH = 5MB)
GO



5.5.1
ALTER DATABASE database_name                                     --要修改的数据库名
{
    <add_or_modify_files>                                           --添加或修改数据库文件
  | <add_or_modify_filegroups>                                    --添加或修改数据库文件组
  | <set_database_options>                                               --设置数据库选项
  | MODIFY NAME = new_database_name                                          --重命名
  | COLLATE collation_name                                                --修改排序规则
}
[;]


<add_or_modify_files>::=
{
    ADD FILE <filespec> [ ,...n ] 
        [ TO FILEGROUP { filegroup_name | DEFAULT } ] 
  | ADD LOG FILE <filespec> [ ,...n ] 
  | REMOVE FILE logical_file_name 
  | MODIFY FILE <filespec>
}


<filespec>::= 
(
    NAME = logical_file_name  
    [ , NEWNAME = new_logical_name ] 
    [ , FILENAME = ‘os_file_name‘ ] 
    [ , SIZE = size [ KB | MB | GB | TB ] ] 
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] 
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ] 
    [ , OFFLINE ]
) 


<add_or_modify_filegroups>::=
{
    | ADD FILEGROUP filegroup_name 
    | REMOVE FILEGROUP filegroup_name 
    | MODIFY FILEGROUP filegroup_name
        { <filegroup_updatability_option> 
        | DEFAULT
        | NAME = new_filegroup_name 
        }
}


<filegroup_updatability_option>::=
{
    { READONLY | READWRITE } 
    | { READ_ONLY | READ_WRITE }
}


<set_database_options>::=
SET 
{
    { <optionspec> [ ,...n ] [ WITH <termination> ] }
    | ALLOW_SNAPSHOT_ISOLATION {ON | OFF }
    | READ_COMMITTED_SNAPSHOT {ON | OFF } [ WITH <termination> ]
}


<optionspec>::= 
{
    <db_state_option>
  | <db_user_access_option> 
  | <db_update_option>   | <external_access_option>
  | <cursor_option> 
  | <auto_option> 
  | <sql_option> 
  | <recovery_option> 
  | <database_mirroring_option>
  | <supplemental_logging_option>
  | <service_broker_option>
  | <date_correlation_optimization_option>
  | <parameterization_option>
}


5.5.4
ALTER DATABASE 例二数据库
    MODIFY NAME = 例七数据库 
或
exec sp_renamedb ‘例二数据库‘,‘例七数据库‘


ALTER DATABASE 例六数据库
    ADD FILE (NAME=增加的数据文件,
        FILENAME=‘D:\DBtest\例六数据库增加的数据文件.ndf‘)


ALTER DATABASE 例六数据库
    ADD LOG FILE (NAME=例九增加的日志文件,
        FILENAME=‘D:\DBtest\例九增加的日志文件.ldf‘,
        SIZE=3MB,
        MAXSIZE=50MB,
        FILEGROWTH=10%)


ALTER DATABASE 例六数据库
    MODIFY FILE (NAME=增加的数据文件,
    NEWNAME = 例十数据文件,
FILENAME = ‘D:\DBtest\例十数据文件.ndf‘)


ALTER DATABASE 例六数据库
    COLLATE Chinese_PRC_CI_AS_KS


ALTER DATABASE 例六数据库
    REMOVE FILE 例十数据文件


ALTER DATABASE 例六数据库
    ADD FILEGROUP 例十三文件组


ALTER DATABASE 例六数据库
    MODIFY FILEGROUP 例十三文件组
    NAME = 例十四文件组


ALTER DATABASE 例六数据库
    ADD FILE (NAME=例十五数据文件,
        FILENAME=‘D:\DBtest\例十五数据文件.ndf‘)
        TO FILEGROUP 例十四文件组
GO
ALTER DATABASE 例六数据库
    MODIFY FILEGROUP 例十四文件组 DEFAULT
GO


ALTER DATABASE 例六数据库
    MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
ALTER DATABASE 例六数据库
    REMOVE FILE 例十五数据文件
GO
ALTER DATABASE 例六数据库
    REMOVE FILEGROUP 例十四文件组
GO


ALTER DATABASE 例六数据库
    ADD FILEGROUP 例十七文件组
GO
ALTER DATABASE 例六数据库
    ADD FILE (NAME=例十七数据文件,
        FILENAME=‘D:\DBtest\例十七数据文件.ndf‘)
        TO FILEGROUP 例十七文件组
GO
ALTER DATABASE 例六数据库
    MODIFY FILEGROUP 例十七文件组 READ_ONLY 
GO


ALTER DATABASE 例六数据库
    SET SINGLE_USER


ALTER DATABASE 例六数据库
    SET AUTO_SHRINK ON


5.6.1
exec sp_detach_db ‘例四数据库‘


use master
exec sp_who


use master
kill 52
kill 54
exec sp_detach_db ‘例四数据库‘


5.6.2
use master

CREATE DATABASE 例三数据库
    ON (FILENAME = ‘D:\DBtest\例三数据库.mdf‘)
    FOR ATTACH



use master

CREATE DATABASE 例三数据库
    ON (FILENAME = ‘D:\test\例三数据库.mdf‘),
    (FILENAME=‘D:\test\例三数据库_log.LDF‘)
    FOR ATTACH



use master
exec sp_attach_db 例三数据库,‘D:\test\例三数据库.mdf‘



use master
exec sp_attach_db 例三数据库,
‘D:\test\例三数据库.mdf‘,
‘D:\test\例三数据库_log.LDF‘



5.7.1
use master

ALTER DATABASE 例三数据库
    set OFFLINE



use master

ALTER DATABASE 例三数据库
    set ONLINE



use master
DROP DATABASE 测试数据库



use master
DROP DATABASE 测试用数据库,test



5.9.1
ALTER DATABASE 例六数据库
    SET AUTO_SHRINK ON


5.9.2
DBCC SHRINKDATABASE 
( ‘database_name‘ | database_id | 0 
     [ ,target_percent ] 
     [ , { NOTRUNCATE | TRUNCATEONLY } ] 
)
[ WITH NO_INFOMSGS ]



DBCC SHRINKDATABASE 
(例六数据库)



DBCC SHRINKDATABASE 
(例六数据库,10)

5.9.3
DBCC SHRINKFILE 
(
    { ‘file_name‘ | file_id } 
    { [ , EMPTYFILE ] 
    | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]
    }
)
[ WITH NO_INFOMSGS ]


use 例六数据库
go

DBCC SHRINKFILE 
    (例六数据库_log)
go


use 例六数据库
go

DBCC SHRINKFILE 
    (例六数据库,3)
go



5.10
USE [master]
GO
/****** 对象:  Database [例六数据库]    脚本日期: 07/14/2006 15:27:58 ******/
CREATE DATABASE [例六数据库] ON  PRIMARY 
( NAME = N‘例六数据库‘, FILENAME = N‘D:\DBtest\例六数据库.mdf‘ , SIZE = 1408KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
 FILEGROUP [例十七文件组] 
( NAME = N‘例十七数据文件‘, FILENAME = N‘D:\DBtest\例十七数据文件.ndf‘ , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
 FILEGROUP [例十四文件组] 
( NAME = N‘例十五数据文件‘, FILENAME = N‘D:\DBtest\例十五数据文件.ndf‘ , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N‘例九增加的日志文件‘, FILENAME = N‘D:\DBtest\例九增加的日志文件.ldf‘ , SIZE = 3072KB , MAXSIZE = 51200KB , FILEGROWTH = 10%), 
( NAME = N‘例六数据库_log‘, FILENAME = N‘D:\DBtest\例六数据库_log.LDF‘ , SIZE = 560KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
 COLLATE Chinese_PRC_CI_AS_KS
GO
EXEC dbo.sp_dbcmptlevel @dbname=N‘例六数据库‘, @new_cmptlevel=90
GO
IF (1 = FULLTEXTSERVICEPROPERTY(‘IsFullTextInstalled‘))
begin
EXEC [例六数据库].[dbo].[sp_fulltext_database] @action = ‘enable‘
end
GO
ALTER DATABASE [例六数据库] SET ANSI_NULL_DEFAULT OFF 
GO
ALTER DATABASE [例六数据库] SET ANSI_NULLS OFF 
GO
ALTER DATABASE [例六数据库] SET ANSI_PADDING OFF 
GO
ALTER DATABASE [例六数据库] SET ANSI_WARNINGS OFF 
GO
ALTER DATABASE [例六数据库] SET ARITHABORT OFF 
GO
ALTER DATABASE [例六数据库] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [例六数据库] SET AUTO_CREATE_STATISTICS ON 
GO
ALTER DATABASE [例六数据库] SET AUTO_SHRINK ON 
GO
ALTER DATABASE [例六数据库] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [例六数据库] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [例六数据库] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [例六数据库] SET CONCAT_NULL_YIELDS_NULL OFF 
GO
ALTER DATABASE [例六数据库] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [例六数据库] SET QUOTED_IDENTIFIER OFF 
GO
ALTER DATABASE [例六数据库] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [例六数据库] SET  ENABLE_BROKER 
GO
ALTER DATABASE [例六数据库] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [例六数据库] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [例六数据库] SET TRUSTWORTHY OFF 
GO
ALTER DATABASE [例六数据库] SET ALLOW_SNAPSHOT_ISOLATION OFF 
GO
ALTER DATABASE [例六数据库] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [例六数据库] SET  READ_WRITE 
GO
ALTER DATABASE [例六数据库] SET RECOVERY FULL 
GO
ALTER DATABASE [例六数据库] SET  MULTI_USER 
GO
ALTER DATABASE [例六数据库] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [例六数据库] SET DB_CHAINING OFF




6.4.1
CREATE TABLE 
    [ database_name . [ schema_name ] . | schema_name . ] table_name            --设置表名
        ( 
        { <column_definition>                                                 --设置列属性
        | <computed_column_definition> }                                      --设置计算列
        [ <table_constraint> ] [ ,...n ] )                                          --设置表约束
    [ ON 
            { partition_scheme_name ( partition_column_name ) 
            | filegroup 
        | "default" } ]                                   --指定存放表数据的分区架构或文件组
    [ { TEXTIMAGE_ON             --指定存放Text及Image类型字段数据的分区架构或文件组
            { filegroup 
            | "default" } ]



6.4.2
<column_definition> ::=
column_name <data_type>                                                          --列名
    [ COLLATE collation_name ]                                              ---列排序规则
    [ NULL | NOT NULL ]                                                     --列是否为空
    [ 
        [ CONSTRAINT constraint_name ]                                         --列约束
DEFAULT constant_expression ]                                           --缺省值
      | [ IDENTITY [ ( seed ,increment ) ]                                           --标识列
[ NOT FOR REPLICATION ]                                            --不用于复制
    ]
[ ROWGUIDCOL ]                                              --GUID列(全球惟一值)
[ <column_constraint> [ ...n ] ]                                                --设置约束



<data type> ::= 
[ type_schema_name . ] type_name                                    --列的数据类型及架构
[ ( precision                                                          --数据类型的精度
[ , scale ] | max |                                                            --小数位数
        [ { CONTENT | DOCUMENT } ] xml_schema_collection ) ]           --指定xml数据类型



<column_constraint> ::= 
[ CONSTRAINT constraint_name ]                                             --设置约束名
{     { PRIMARY KEY| UNIQUE }                                 --设置主键或UNIQUE约束
        [ CLUSTERED | NONCLUSTERED ]                     --指定聚集索引或非聚集索引
        [ 
            WITH FILLFACTOR = fillfactor                                   --指定填充因子
          | WITH ( < index_option > [ , ...n ] )                       --指定一个或多个索引选项
        ]
        [ ON { partition_scheme_name ( partition_column_name )  
            | filegroup | "default" } ]                                    --指定索引存放的位置
  | [ FOREIGN KEY ]                                                       --设置外键约束
        REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ] 
--设置外键所引用的表及字段
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
                                                                          --设置删除规则
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
                                                                          --设置更新规则
        [ NOT FOR REPLICATION ] 
                                                                          --设置强制复制
  | CHECK [ NOT FOR REPLICATION ] ( logical_expression )               --设置CHECK约束
}



<computed_column_definition> ::=
column_name AS computed_column_expression                                --定义计算列
[ PERSISTED [ NOT NULL ] ]                                                    --设置更新
[ 
    [ CONSTRAINT constraint_name ]                                           --设置约束
    { PRIMARY KEY | UNIQUE }                                  --设置主键或UNIQUE约束
        [ CLUSTERED | NONCLUSTERED ]                     --指定聚集索引或非聚集索引
        [ 
            WITH FILLFACTOR = fillfactor                                   --指定填充因子
          | WITH ( <index_option> [ , ...n ] )                          --指定一个或多个索引选项
        ]
    | [ FOREIGN KEY ]                                                     --设置外键约束
        REFERENCES referenced_table_name [ ( ref_column ) ] 
--设置外键所引用的表及字段

        [ ON DELETE { NO ACTION | CASCADE } ]                           --设置删除规则                                                           
        [ ON UPDATE { NO ACTION } ]                                      --设置更新规则
        [ NOT FOR REPLICATION ]                                         --设置强制复制
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )             --设置CHECK约束
    [ ON { partition_scheme_name ( partition_column_name ) 
        | filegroup | "default" } ]                                            --为约束创建索引
]



<table_constraint> ::=
[ CONSTRAINT constraint_name ] 
{ 
    { PRIMARY KEY | UNIQUE }                                  --设置主键或UNIQUE约束
        [ CLUSTERED | NONCLUSTERED ]                     --指定聚集索引或非聚集索引
                (column [ ASC | DESC ] [ ,...n ] ) --指定加入到表约束中的一列或多列的排序顺序。
        [ 
            WITH FILLFACTOR = fillfactor                                   --指定填充因子
           |WITH ( <index_option> [ , ...n ] )                        --指定一个或多个索引选项
        ]
        [ ON { partition_scheme_name (partition_column_name)
            | filegroup | "default" } ]                                    --指定索引存放的位置
    | FOREIGN KEY                                                       --设置外键约束
                ( column [ ,...n ] ) 
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] 
--设置外键所引用的表及字段
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
                                                                          --设置删除规则
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
                                                                          --设置更新规则
        [ NOT FOR REPLICATION ] 
                                                                          --设置强制复制
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )             --设置CHECK约束
} 



<index_option> ::=
{ 
    PAD_INDEX = { ON | OFF }                                             --是否填充索引
  | FILLFACTOR = fillfactor                                                 --设置填充因子
  | IGNORE_DUP_KEY = { ON | OFF }                                 --重复键错误响应方式
  | STATISTICS_NORECOMPUTE = { ON | OFF }                         --重新计算统计数据
  | ALLOW_ROW_LOCKS = { ON | OFF}                                       --允许行锁定
  | ALLOW_PAGE_LOCKS ={ ON | OFF}                                       --允许页锁定
}


6.4.3
CREATE TABLE Northwind.dbo.例一表
(
    编号 int,
    姓名 nvarchar(50)
)



CREATE TABLE Northwind..例一表
(
    编号 int,
    姓名 nvarchar(50)
)



USE Northwind
CREATE TABLE 例一表
(
    编号 int,
    姓名 nvarchar(50)
)



6.4.4
CREATE TABLE 例二表
(
    编号 int IDENTITY,
    姓名 nvarchar(50)
)



CREATE TABLE 例三表
(
    编号 int IDENTITY(1,2) PRIMARY KEY,
    姓名 nvarchar(50)
)



CREATE TABLE 例四表
(
    编号 int IDENTITY(1,1) PRIMARY KEY,
    姓名 nvarchar(50) NOT NULL
)


6.4.7
CREATE TABLE 例五表
(
    编号 int IDENTITY(1,1) PRIMARY KEY,
    姓名 nvarchar(50) NOT NULL,
    性别 bit DEFAULT 1
)



6.4.8
CREATE TABLE 例六表
(
    编号 int IDENTITY(1,1) PRIMARY KEY,
    姓名 nvarchar(50) NOT NULL,
    性别 bit DEFAULT 1
)
ON 第二文件组



6.4.9
CREATE TABLE 例七表
(
    编号 int IDENTITY(1,1) PRIMARY KEY,
    姓名 nvarchar(50) NOT NULL,
    性别 bit DEFAULT 1,
    年纪 tinyint CONSTRAINT CK_年纪 CHECK (年纪>0 AND 年纪<101)
)



CREATE TABLE 例八表
(
    编号 int IDENTITY(1,1) PRIMARY KEY,
    姓名 nvarchar(50) COLLATE Chinese_PRC_CI_AS Not null,
    性别 bit DEFAULT 1,
    年纪 tinyint CONSTRAINT CK_例八年纪 CHECK (年纪>0 AND 年纪<101)
)



6.4.11
CREATE TABLE 例九_部门表
(
    部门编号 int IDENTITY(1,1) PRIMARY KEY,
    部门名称 nvarchar(50) Not null
)
GO

CREATE TABLE 例九_员工表
(
    员工编号 int IDENTITY(1,1) PRIMARY KEY,
    所属部门 int 
        CONSTRAINT FK_员工表外键
        FOREIGN KEY
        REFERENCES 例九_部门表(部门编号),
    员工姓名 nvarchar(20) not null
)
GO



6.4.12
CREATE TABLE 例十_部门表
(
    部门编号 int IDENTITY(1,1) PRIMARY KEY,
    部门名称 nvarchar(50) Not null
)
GO

CREATE TABLE 例十_员工表
(
    员工编号 int IDENTITY(1,1) PRIMARY KEY,
    所属部门 int 
        CONSTRAINT FK_例十_员工表外键
        FOREIGN KEY
        REFERENCES 例十_部门表(部门编号)
        ON UPDATE CASCADE 
        ON DELETE SET NULL,
    员工姓名 nvarchar(20) not null
)
GO



6.4.13
CREATE TABLE 例十一_部门表
(
    部门编号 int IDENTITY(1,1) PRIMARY KEY,
    部门名称 nvarchar(50) Not null UNIQUE
)



6.4.14
CREATE TABLE 例十二
(
    编号 int IDENTITY(1,1) PRIMARY KEY,
    单价 money Not null,
    数量 int Not null  
        CONSTRAINT CK_例十二 CHECK (数量>0),
    合计 as 单价*数量
)



6.4.15
CREATE TABLE 例十三_用户注册表
(
    编号 int IDENTITY(1,1) PRIMARY KEY,
    用户名 nvarchar(50) Not null,
    密码 varchar(16) Not null,
    电话 varchar(50),
    地址 nvarchar(200),
    CHECK (电话 is not null or 地址 is not null)
)



6.6.1
ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name 
{ 
    ALTER COLUMN column_name                                       --要修改的字段名
    { 
        [ type_schema_name. ] type_name [ ( { precision [ , scale ] 
            | max | xml_schema_collection } ) ]                           --修改后的数据类型
        [ NULL | NOT NULL ]                                           --设置是否为NULL
        [ COLLATE collation_name ]                                         –设置排序规则
    | {ADD | DROP } { ROWGUIDCOL | PERSISTED }         --添加或删除ROWGUIDCOL属性
    } 
    | [ WITH { CHECK | NOCHECK } ] ADD                                       --添加字段
    { 
        <column_definition>                                                --设置字段属性
      | <computed_column_definition>                                         --设置计算列
      | <table_constraint>                                                    --设置表约束
    } [ ,...n ]
    | DROP                                                                       --删除
    { 
        [ CONSTRAINT ] constraint_name                                       --删除约束
        [ WITH ( <drop_clustered_constraint_option> [ ,...n ] ) ]              --设置聚集约束选项
        | COLUMN column_name                                               –删除字段
    } [ ,...n ] 
    | [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT   --启用或禁用约束
        { ALL | constraint_name [ ,...n ] } 
    | { ENABLE | DISABLE } TRIGGER                                   --启用或禁用触发器
        { ALL | trigger_name [ ,...n ] }
    | SWITCH [ PARTITION source_partition_number_expression ]                --切换数据块
        TO [ schema_name. ] target_table 
        [ PARTITION target_partition_number_expression ]
}



6.6.2
<column_definition> ::=
column_name [ type_schema_name. ] type_name                                  --数据类型
    [ 
                ( { precision [ , scale ] | max | 
            [ { CONTENT | DOCUMENT } ] xml_schema_collection } ) 
    ] 
    [ 
        [ CONSTRAINT constraint_name ] DEFAULT constant_expression               --约束
             [ WITH VALUES ] 
        | IDENTITY [ (seed , increment ) ] [ NOT FOR REPLICATION ] 
    ] 
    [ ROWGUIDCOL ]                                             --GUID列(全球惟一值)
    [ COLLATE < collation_name > ]                                           --列排序规则
    [ <column_constraint> [ ...n ] ]



<column_constraint> ::= 
[ CONSTRAINT constraint_name ]                                             --设置约束名
{ 
    [ NULL | NOT NULL ] 
    { PRIMARY KEY | UNIQUE }                                  --设置主键或UNIQUE约束
        [ CLUSTERED | NONCLUSTERED ]                     --指定聚集索引或非聚集索引
        [ WITH FILLFACTOR =fillfactor ]                                     --指定填充因子
        [ WITH ( index_option [, ...n ] ) ]                            --指定一个或多个索引选项
        [ ON { partition_scheme_name (partition_column_name) 
            | filegroup | "default" } ]                                    --指定索引存放的位置
    | [ FOREIGN KEY ]                                                     --设置外键约束
        REFERENCES [ schema_name . ] referenced_table_name 
            [ ( ref_column ) ]                                   --设置外键所引用的表及字段
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
--设置删除规则
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
 --设置更新规则
        [ NOT FOR REPLICATION ]                                         --设置强制复制
    | CHECK [ NOT FOR REPLICATION ]                                 --设置CHECK约束
        | DEFAULT constant_expression [ WITH VALUES ] 
                ( logical_expression ) 
}



<computed_column_definition> ::=
column_name AS computed_column_expression                                --定义计算列
[ PERSISTED [ NOT NULL ] ]                                                    --设置更新
[ 
    [ CONSTRAINT constraint_name ]                                           --设置约束
    { PRIMARY KEY | UNIQUE }                                  --设置主键或UNIQUE约束
        [ CLUSTERED | NONCLUSTERED ]                     --指定聚集索引或非聚集索引
        [ WITH FILLFACTOR = fillfactor ]                                     --指定填充因子
        [ WITH ( <index_option> [, ...n ] ) ]                          --指定一个或多个索引选项
        [ ON { partition_scheme_name ( partition_column_name ) | filegroup 
            | "default" } ]                                                 --为约束创建索引
    | [ FOREIGN KEY ]                                                     --设置外键约束
         REFERENCES ref_table [ ( ref_column ) ]                --设置外键所引用的表及字段
        [ ON DELETE { NO ACTION | CASCADE } ]                           --设置删除规则
        [ ON UPDATE { NO ACTION } ]                                      --设置更新规则
        [ NOT FOR REPLICATION ]                                         --设置强制复制
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )             --设置CHECK约束
]



<index_option> ::=
{ 
    PAD_INDEX = { ON | OFF }                                             --是否填充索引
  | FILLFACTOR = fillfactor                                                 --设置填充因子
  | IGNORE_DUP_KEY = { ON | OFF }                                 --重复键错误响应方式
  | STATISTICS_NORECOMPUTE = { ON | OFF }                         --重新计算统计数据
  | ALLOW_ROW_LOCKS = { ON | OFF}                                       --允许行锁定
  | ALLOW_PAGE_LOCKS ={ ON | OFF}                                       --允许页锁定
  | SORT_IN_TEMPDB = { ON | OFF }                  --指定是否将排序结果存储在tempdb中
  | ONLINE = { ON | OFF }                                  --是否可用于查询和数据修改操作
  | MAXDOP = max_degree_of_parallelism       --在索引操作期间覆盖“最大并行度”配置选项
}



<table_constraint> ::=
[ CONSTRAINT constraint_name ] 
{ 
    { PRIMARY KEY | UNIQUE }                                  --设置主键或UNIQUE约束
        [ CLUSTERED | NONCLUSTERED ]                     --指定聚集索引或非聚集索引
                (column [ ASC | DESC ] [ ,...n ] )  --指定加入到表约束中的一列或多列的排序顺序
        [ WITH FILLFACTOR = fillfactor                                      --指定填充因子
        [ WITH ( <index_option>[ , ...n ] ) ]                        --指定一个或多个索引选项
        [ ON { partition_scheme_name ( partition_column_name ... )
          | filegroup | "default" } ]                                      --指定索引存放的位置
    | FOREIGN KEY                                                       --设置外键约束
                ( column [ ,...n ] )
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]     
--设置外键所引用的表及字段
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
                                                                          --设置删除规则
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
                                                                          --设置更新规则
        [ NOT FOR REPLICATION ]                                         --设置强制复制
    | DEFAULT constant_expression FOR column [ WITH VALUES ]         --指定字段的默认值
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )            --设置CHECK约束
} 



<drop_clustered_constraint_option> ::=  
    { 
        MAXDOP = max_degree_of_parallelism
      | ONLINE = {ON | OFF }
      | MOVE TO { partition_scheme_name ( column_name ) | filegroup
          | "default"}
}



6.6.3
ALTER TABLE 例一表
    ALTER COLUMN 姓名 nvarchar(20) COLLATE Chinese_PRC_CI_AS not null



ALTER TABLE 例一表
    ADD 性别 nvarchar(2)



6.6.6
ALTER TABLE 例一表
    DROP COLUMN 密码



6.6.7
ALTER TABLE 例一表
    ADD CONSTRAINT CK_性别 CHECK (性别=‘男‘ OR 性别=‘女‘)


ALTER TABLE 例一表
    WITH NOCHECK ADD 
        CONSTRAINT CK_性别 CHECK (性别=‘男‘ OR 性别=‘女‘)



6.6.8
ALTER TABLE 例一表
    NOCHECK CONSTRAINT CK_性别



ALTER TABLE 例一表
    NOCHECK CONSTRAINT CK_1,CK_2,CK_3



ALTER TABLE 例一表
    NOCHECK CONSTRAINT ALL



6.6.9
ALTER TABLE 例一表
    CHECK CONSTRAINT CK_性别



ALTER TABLE 例一表
    CHECK CONSTRAINT CK_1,CK_2,CK_3



ALTER TABLE 例一表
    CHECK CONSTRAINT ALL



6.6.10
ALTER TABLE 例一表
    DROP CK_性别


6.6.11
ALTER TABLE 例一表
    ALTER COLUMN 编号 int not null
GO
ALTER TABLE 例一表
    ADD CONSTRAINT PK_主键 PRIMARY KEY (编号)
GO


6.6.12
exec sp_rename ‘例一表.姓名‘,‘名称‘,‘COLUMN‘
exec sp_rename ‘例一表‘,‘例二十三表‘


sp_rename ‘原对象名称’ , ’新对象名称’ [ , ’对象类型’]


6.8
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ]
 table_name [ ,...n ] [ ; ]


DROP TABLE 例二表


6.9
USE [Northwind]
GO
/****** 对象:  Table [dbo].[例十_部门表]    脚本日期: 05/19/2009 13:53:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[例十_部门表](
    [部门编号] [int] IDENTITY(1,1) NOT NULL,
    [部门名称] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
PRIMARY KEY CLUSTERED 
(
    [部门编号] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]






7.3.1
INSERT 
    [ TOP ( expression ) [ PERCENT ] ]                               ..插入记录数或百分比数
    [ INTO]                                                                   ..可选参数
{ <object>                                                             ..数据表或视图
| rowset_function_limited                          ..OPENQUERY或OPENROWSET函数
      [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]           ..指定目标表所允许的一个或多个表提示
    }
{
    [ ( column_list ) ]                                     ..要在插入数据的一列或多列的列表
    [ <OUTPUT Clause> ]                              ..将插入行作为插入操作的一部分返回
    { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] )          ..引入要插入的数据值的列表
    | derived_table                                                         ..SELECT语句
    | execute_statement                                                  ..EXECUTE语句
    } 
} 
    | DEFAULT VALUES                               ..强制新行包含为每个列定义的默认值
[; ]


7.3.2
<object> ::=
{ 
[ server_name .                                                            ..服务器名
      database_name .                                                        ..数据库名
      schema_name .                                                            ..架构名
      | database_name .[ schema_name ] . 
      | schema_name . 
    ]
        table_or_view_name                                                 ..表或视图名
}


7.3.3
INSERT 订单明细 VALUES  (10248,1,10,2,0.8)


7.3.4
INSERT INTO 订单明细
    (折扣, 数量, 单价, 产品ID, 订单ID)
VALUES (0.8, 3, 26, 2, 10248)



7.3.5
INSERT INTO 类别
    (类别名称, 说明)
VALUES (N‘图书‘,N‘所有类型的图书‘)



7.3.6
SET IDENTITY_INSERT 类别 ON;
GO

INSERT INTO 类别
    (类别ID,类别名称)
VALUES (100,N‘电器‘)
GO

SELECT * FROM 类别
GO



7.3.7
CREATE TABLE 雇员通讯录(
    雇员ID int PRIMARY KEY,
    姓氏 nvarchar(20) NOT NULL,
    名字 nvarchar(10) NOT NULL,
    邮政编码 nvarchar(10) NULL,
    城市 nvarchar(15) NULL,
    地址 nvarchar(60) NULL,
    家庭电话 nvarchar(24) NULL
)
GO

INSERT INTO 雇员通讯录
SELECT  雇员ID, 姓氏, 名字, 邮政编码, 城市, 地址, 家庭电话
FROM  雇员
GO

SELECT * FROM 雇员通讯录
GO


DELETE 雇员通讯录
GO

INSERT top (5) INTO 雇员通讯录
SELECT  雇员ID, 姓氏, 名字, 邮政编码, 城市, 地址, 家庭电话
FROM  雇员
GO



7.3.8
DELETE 雇员通讯录
GO

INSERT 雇员通讯录(雇员ID, 姓氏, 名字, 邮政编码, 地址)
SELECT  雇员ID, 姓氏, 名字, 邮政编码, 地址
FROM  雇员
GO



7.3.9
DELETE 雇员通讯录
GO

INSERT 雇员通讯录(雇员ID, 姓氏, 名字, 邮政编码, 地址, 城市)
SELECT  雇员ID, 姓氏, 名字, 邮政编码, 地址, ‘北京‘
FROM  雇员
GO



7.3.10
CREATE TABLE 用户与进程信息(
    编号 int PRIMARY KEY IDENTITY,
    进程ID smallint,
    定线程上下文ID smallint,
    进程状 态nchar(30),
    登录名 nchar(128),
    主机名 nchar(128),
    阻塞进程的系统进程ID nchar(5),
    数据库名 nchar(128),    
    运行命令 nchar(16),
    请求ID int,
    查询时间 smalldatetime DEFAULT getdate()
)
GO

INSERT 用户与进程信息(进程ID,定线程上下文ID,进程状态,登录名,主机名,
    阻塞进程的系统进程ID,数据库名,运行命令,请求ID)
    EXEC sp_who

SELECT * FROM 用户与进程信息



7.3.11
INSERT INTO 用户与进程信息
DEFAULT VALUES



7.5.1
UPDATE 
    [ TOP ( expression ) [ PERCENT ] ]                               ..更新记录数或百分比数
{ <object>                                                   ..要更改数据的表或视图的名称
| rowset_function_limited                         .. OPENQUERY或OPENROWSET函数
     [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]              ..指定目标表允许的一个或多个表提示
    }
    SET                                                ..指定要更新的列或变量名称的列表
        { column_name = { expression | DEFAULT | NULL }             ..指定更改的数据的字段
          | { udt_column_name.{ { property_name = expression         ..更改用户定义类型字段
                                | field_name = expression } 
                               | method_name ( argument [ ,...n ] ) 
                              } 
            }
          | column_name { .WRITE ( expression , @Offset , @Length ) } ..指定更改的数据的字段
          | @variable = expression                                          ..已声明的变量
          | @variable = column = expression [ ,...n ] 
        } [ ,...n ] 
    [ <OUTPUT Clause> ]                    ..返回更新后的数据或基于更新后的数据的表达式
    [ FROM{ <table_source> } [ ,...n ] ]      ..指定将表、视图或派生表源用于为更新操作提供条件
    [ WHERE { <search_condition>                              ..指定条件来限定所更新的行
            | { [ CURRENT OF                         ..指定更新在指定游标的当前位置进行
                  { { [ GLOBAL ] cursor_name }           ..指定cursor_name涉及到全局游标
                      | cursor_variable_name             ..要从中进行提取的开放游标的名称
                  } 
                ]
              }
            } 
    ] 
    [ OPTION ( <query_hint> [ ,...n ] ) ]   ..指定优化器提示用于自定义数据库引擎处理语句的方式
[ ; ]



7.5.2
<object> ::=
{ 
    [ server_name . database_name . schema_name . 
    | database_name .[ schema_name ] . 
    | schema_name .
    ]
        table_or_view_name}


7.5.3
UPDATE    类别
SET  说明 = N‘家用电器‘
WHERE   (类别名称 = N‘电器‘)



7.5.4
UPDATE 产品
    SET 单价 = 单价*1.5
    WHERE 产品名称 = N‘牛奶‘



7.5.5
UPDATE 订单明细
    SET 单价 = 产品.单价
    FROM 产品
    WHERE (订单明细.产品ID = 产品.产品ID) 
        AND (产品.产品名称 = N‘牛奶‘)



7.5.6
UPDATE top (10) PERCENT 订单明细
    SET 单价= 产品.单价
    FROM 产品
    WHERE (订单明细.产品ID = 产品.产品ID) 
        AND (产品.产品名称= N‘牛奶‘)



7.7.1
DELETE 
    [ TOP ( expression ) [ PERCENT ] ]                                       ..要删除的行数
    [ FROM ] 
    { <object> | rowset_function_limited                        ..openquery或openowset函数
      [ WITH ( <table_hint_limited> [ ...n ] ) ]                          ..指定一个或多个表提示
    }
    [ <OUTPUT Clause> ]                                    ..将已删除的行或行表达式返回
    [ FROM <table_source> [ ,...n ] ] 
    [ WHERE { <search_condition>                                          ..删除行的条件
            | { [ CURRENT OF                                         ..删除游标的当前行
                   { { [ GLOBAL ] cursor_name }                                   ..游标名
                       | cursor_variable_name                                ..游标变量名
                   } 
                ]
              }
            } 
    ] 
    [ OPTION ( <Query Hint> [ ,...n ] ) ]                                     ..指定优化器提示
[; ] 



7.7.2
<object> ::=
{ 
    [ server_name . database_name . schema_name . 
    | database_name .[ schema_name ] . 
    | schema_name .
    ]
        table_or_view_name}



7.7.3
DELETE 类别
    WHERE 类别名称= N‘电器‘



7.7.4
DELETE 订单
    WHERE 订购日期 < ‘1996.8.1‘ 



7.7.5
DELETE 订单
    FROM 雇员
    WHERE (雇员.雇员ID = 订单.雇员ID)
        AND (雇员.姓氏 = N‘王‘) AND (雇员.名字 = N‘伟‘)



7.8
TRUNCATE TABLE 
    [ { database_name.[ schema_name ]. | schema_name . } ]
    table_name
[ ; ] 


TRUNCATE TABLE 订单明细


7.9
SELECT [ ALL | DISTINCT ] 
    [TOP expression [PERCENT] [ WITH TIES ] ] 
    < select_list > 
    [ INTO new_table ] 
    [ FROM { <table_source> } [ ,...n ] ] 
    [ WHERE <search_condition> ] 
    [ GROUP BY [ ALL ] group_by_expression [ ,...n ] 
    [ WITH { CUBE | ROLLUP } ]
    ]
[ HAVING < search_condition > ]



7.10.1
SELECT [ ALL                                                                   ..所有行
      | DISTINCT ]                                                             ..唯一行
[ TOP expression [ PERCENT ] [ WITH TIES ] ]                          ..返回结果集的头几行
<select_list> 

<select_list> ::= 
    { 
      *                                                                         ..所有列
      | { table_name | view_name | table_alias }.*                  ..指定列及列所在的表或视图
      | { column_name                                                       ..返回的列名
        | [ ] expression                                                     ..返回表达式列
        | $IDENTITY                                                         ..返回标识列
        | $ROWGUID }                                                     ..返回GUID列
      | udt_column_name                                                 ..返回CLR列名
         [ { . | :: }                                           ..指定CLR的方法、属性或字段
            { { property_name                                                  ..公共属性
                | field_name }                                              ..公共数据成员
            | method_name(argument [,...n] ) } ]                                   ..公共方法
      [ [ AS ] column_alias ] 
      | column_alias = expression                                               ..替换列名
    } [ ,...n ]



7.10.3
SELECT *
FROM 类别



7.10.4
SELECT 类别名称,说明
FROM 类别


SELECT 类别.类别名称, 类别.说明
FROM 类别


7.10.5
SELECT  订单ID, 产品ID, 单价, 数量, 折扣, 单价 * (1 . 折扣) * 数量 AS 总价
FROM  订单明细


SELECT  *, 单价 * (1 . 折扣) * 数量 AS 总价
FROM  订单明细


SELECT  订单ID as 订单编号, 产品ID as 产品编号, 
    单价, 数量, 折扣, 单价 * (1 . 折扣) * 数量 AS 总价
FROM  订单明细


7.10.6
SELECT  TOP  10  *
    FROM  订单明细
    ORDER BY 数量 DESC



SELECT  top 10  PERCENT  *
    FROM  订单明细
    ORDER BY 数量 DESC



SELECT  TOP  10  WITH TIES  *
    FROM  订单明细
    ORDER BY 数量 DESC



7.10.7
SELECT   货主城市
    FROM  订单



SELECT  ALL  货主城市
    FROM  订单



SELECT   DISTINCT 货主城市
    FROM  订单



SELECT   DISTINCT 货主名称,货主城市
    FROM  订单



7.10.8
SELECT  $IDENTITY
    FROM  类别



SELECT  $ROWGUID
    FROM  类别



7.11.1
[ FROM { <table_source> } [ ,...n ] ]   

<table_source> ::= 
{
    table_or_view_name                                                     ..表或视图名
     [ [ AS ] table_alias ]                                                    ..表或视图别名
        [ WITH ( < table_hint > [ [ , ]...n ] ) ]                                  ..指定查询优化器
    | rowset_function [ [ AS ] table_alias ]                                     ..指定行集函数
        [ ( bulk_column_alias [ ,...n ] ) ]                                 ..替代结果集内的列名
    | user_defined_function [ [ AS ] table_alias ]                                ..指定表值函数
    | OPENXML <openxml_clause>                                         ..通过XML查询
    | derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]                         ..子查询
    | <joined_table> 
}

<joined_table> ::=                                                          ..多表联合查询
{
<table_source> 
        <join_type>                                                           ..联合类型
    <table_source> 
        ON <search_condition>                                                 ..联合条件
    | <table_source> CROSS JOIN <table_source> 
    | left_table_source { CROSS | OUTER } APPLY right_table_source 
    | [ ( ] <joined_table> [ ) ] 
}
<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN




7.11.3
SELECT  *
FROM    雇员


SELECT 类别ID,类别名称
    FROM 类别


SELECT 产品ID,产品名称,类别ID
    FROM 产品



SELECT 产品ID,产品名称,类别名称
FROM 产品 JOIN 类别
    ON 产品.类别ID = 类别.类别ID


SELECT 产品ID,产品名称,类别名称,类别ID
FROM 产品 JOIN 类别
    ON 产品.类别ID = 类别.类别ID



SELECT 产品ID,产品名称,类别名称,类别.类别ID
FROM 产品 JOIN 类别
    ON 产品.类别ID = 类别.类别ID



SELECT 产品ID,产品名称,类别名称,类别.类别ID
FROM 产品, 类别
    WHERE 产品.类别ID = 类别.类别ID



7.11.5
SELECT  产品.产品名称, 订单明细.单价, 订单明细.数量, 
    订单明细.折扣, 订单.订购日期
FROM   订单明细 JOIN
    订单 ON 订单明细.订单ID = 订单.订单ID JOIN
    产品 ON 订单明细.产品ID = 产品.产品ID



SELECT  产品.产品名称, 订单明细.单价, 订单明细.数量, 
    订单明细.折扣, 订单.订购日期
FROM   (订单明细 JOIN 订单 ON 订单明细.订单ID = 订单.订单ID ) 
JOIN 产品 ON 订单明细.产品ID = 产品.产品ID



7.11.6
SELECT  *
FROM 库存信息 INNER JOIN
    订单信息 ON 库存信息.产品名称 = 订单信息.产品名称



SELECT  *
FROM 库存信息 LEFT OUTER JOIN
    订单信息 ON 库存信息.产品名称 = 订单信息.产品名称



SELECT *
FROM 库存信息 RIGHT OUTER JOIN
    订单信息 ON 库存信息.产品名称 = 订单信息.产品名称



SELECT  *
FROM 库存信息 FULL OUTER JOIN
    订单信息 ON 库存信息.产品名称 = 订单信息.产品名称



SELECT  *
FROM 库存信息 CROSS  JOIN 订单信息



7.11.7
SELECT 细.单价, 细.数量, 细.折扣, 
    细.单价* (1 . 细.折扣) * 细.数量 AS 总价,
    订.订购日期
FROM 订单 AS 订 INNER JOIN
    订单明细 AS 细 ON 订.订单ID = 细.订单ID



7.11.8
SELECT   雇员.雇员ID, 雇员.姓氏, 雇员.名字, 雇员.职务, 
    主管.姓氏 AS 主管姓氏, 主管.名字 AS 主管名字, 
    主管.职务 AS 主管职务
FROM  雇员 LEFT OUTER JOIN
    雇员 AS 主管 ON 雇员.上级 = 主管.雇员ID



7.12.1
[ WHERE <search_condition> ]

< search_condition > ::= 
    { [ NOT ] <predicate> | ( <search_condition> ) } 
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ] 
[ ,...n ] 

<predicate> ::= 
    { expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression 
    | string_expression [ NOT ] LIKE string_expression 
  [ ESCAPE ‘escape_character‘ ] 
    | expression [ NOT ] BETWEEN expression AND expression 
    | expression IS [ NOT ] NULL 
    | CONTAINS 
    ( { column | * } , ‘< contains_search_condition >‘ ) 
    | FREETEXT ( { column | * } , ‘freetext_string‘ ) 
    | expression [ NOT ] IN ( subquery | expression [ ,...n ] ) 
    | expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } 
  { ALL | SOME | ANY} ( subquery ) 
| EXISTS ( subquery )     }



7.12.3
SELECT * FROM 产品
    WHERE 库存量 = 0



SELECT * FROM 产品
    WHERE 库存量 <> 0



SELECT * FROM 产品


7.12.4
SELECT * FROM 产品
    WHERE 库存量 = 0 AND 类别ID = 2



SELECT 产品.* 
    FROM 产品 JOIN 类别
    ON 产品.类别ID = 类别.类别ID
    WHERE 产品.库存量 = 0 AND 类别.类别名称 = N‘调味品‘



SELECT 产品.* 
    FROM 产品 JOIN 类别
    ON 产品.类别ID = 类别.类别ID
    WHERE 产品.库存量 = 0  AND 
        (类别.类别名称 = N‘调味品‘  OR 类别.类别名称 = N‘日用品‘)


7.12.5
SELECT * FROM 雇员
    WHERE 雇用日期< CONVERT(DATETIME, ‘1993.1.1‘, 102)



SELECT * FROM 雇员
    WHERE 雇用日期< ‘1993.1.1‘



SELECT *
FROM 雇员
WHERE Year(Getdate()).Year(雇用日期) >13


7.12.6
SELECT  *
FROM 雇员
WHERE 雇用日期 BETWEEN  CONVERT(DATETIME, ‘1993.01.01‘, 102) 
    AND CONVERT(DATETIME, ‘1994.12.31‘, 102)



7.12.7
SELECT  *
    FROM 雇员
    WHERE  上级 IS NULL



7.12.8
SELECT  *
    FROM 雇员
    WHERE  雇员ID = 1 OR 雇员ID = 3 OR 雇员ID = 4 
        OR 雇员ID = 7 OR 雇员ID = 9



SELECT * 
    FROM 雇员
    WHERE 雇员ID IN (1,3,4,7,9)



SELECT * 
    FROM 雇员
    WHERE 雇员ID NOT IN (1,3,4,7,9)



SELECT * 
    FROM 订单明细
    WHERE 产品ID IN
        (SELECT 产品ID 
            FROM 产品 JOIN 类别
            ON 产品.类别ID  = 类别.类别ID
            WHERE 类别.类别名称 = N‘日用品‘)


7.12.9
SELECT * 
    FROM 产品
    WHERE 产品名称 LIKE ‘%奶%‘


SELECT * 
    FROM 产品
    WHERE 产品名称 LIKE ‘%奶酪‘



SELECT * 
    FROM 产品
    WHERE 产品名称 LIKE ‘_奶酪‘



SELECT * 
    FROM 产品
    WHERE 产品名称 LIKE ‘%油‘
GO

SELECT * 
    FROM 产品
    WHERE 产品名称 LIKE ‘[麻酱]油‘
GO

SELECT * 
    FROM 产品
    WHERE 产品名称 LIKE ‘[^麻酱]油‘
GO


7.12.10
SELECT * 
    FROM 类别
    WHERE 说明 LIKE ‘%[_]%‘



7.12.11
SELECT * 
    FROM 订单
    WHERE EXISTS 
(
    SELECT *
    FROM 雇员
    WHERE Year(Getdate()).Year(雇用日期) <13
        AND 订单.雇员ID = 雇员.雇员ID
)



SELECT * 
    FROM 订单 JOIN 雇员
        ON 订单.雇员ID  = 雇员.雇员ID
    WHERE Year(Getdate()).Year(雇员.雇用日期) <13


7.12.12
SELECT * 
    FROM 产品
    WHERE 类别ID = ANY 
    (
        SELECT 类别ID
        FROM 类别
        WHERE  类别名称= N‘日用品‘  OR  类别名称= N‘点心‘
    )



SELECT * 
    FROM 产品
    WHERE 类别ID in 
    (
        SELECT 类别ID
        FROM 类别
        WHERE  类别名称= N‘日用品‘  OR  类别名称= N‘点心‘
    )
或者
SELECT * 
    FROM 产品 JOIN 类别
        ON 产品.类别ID = 类别.类别ID
    WHERE 类别.类别名称= N‘日用品‘  OR  类别.类别名称= N‘点心‘



SELECT * 
    FROM 产品
    WHERE 单价> ALL
    (
        SELECT 单价
        FROM 产品 JOIN 类别
            ON 产品.类别ID = 类别.类别ID
        WHERE  类别名称= N‘日用品‘
    )



SELECT * 
    FROM 产品
    WHERE 单价>    (
        SELECT max(单价)
        FROM 产品 JOIN 类别
            ON 产品.类别ID = 类别.类别ID
        WHERE  类别名称= N‘日用品‘    )


7.13.1
[ ORDER BY 
    {
    order_by_expression                                                     ..要排序的列
  [ COLLATE collation_name ]                                                   ..排序规则
  [ ASC | DESC ]                                                            ..升序或降序
    } [ ,...n ] 
]


7.13.3
SELECT * FROM 产品
    ORDER BY 产品名称



SELECT * FROM 产品
    ORDER BY 产品名称 DESC



7.13.4
SELECT * FROM 产品
    ORDER BY 供应商ID,产品名称



SELECT * FROM 产品
    ORDER BY 供应商ID ASC,产品名称 DESC


7.14.1
[ GROUP BY [ ALL ] group_by_expression [ ,...n ] 
    [ WITH { CUBE | ROLLUP } ] 
]


7.14.3
SELECT 货主城市,count(订单ID) AS 订单总数
    FROM 订单
    GROUP BY 货主城市


7.14.4
SELECT 货主城市,count(订单ID) AS 订单总数,YEAR(订购日期) as 订购年份
    FROM 订单
    GROUP BY 货主城市,YEAR(订购日期)
    ORDER BY 货主城市,YEAR(订购日期)



7.14.5
SELECT 货主城市,count(订单ID) AS 订单总数
    FROM 订单
    GROUP BY 货主城市 
WITH CUBE



SELECT 货主城市,YEAR(订购日期) as 订购年份,count(订单ID) AS 订单总数
    FROM 订单
    GROUP BY 货主城市,YEAR(订购日期)    
    WITH CUBE



7.14.6
SELECT 货主城市,YEAR(订购日期) as 订购年份,count(订单ID) AS 订单总数
    FROM 订单
    GROUP BY 货主城市,YEAR(订购日期)    
    WITH ROLLUP



7.14.7
SELECT 货主城市,count(订单ID) AS 订单总数,sum(运货费) AS 运货费总数
    FROM 订单
    WHERE 订购日期> ‘1998.5.1‘
    GROUP BY 货主城市    



SELECT 货主城市,count(订单ID) AS 订单总数,sum(运货费) AS 运货费总数
    FROM 订单
    WHERE 订购日期> ‘1998.5.1‘
    GROUP BY ALL 货主城市    



7.15.1
[ HAVING <search condition> ]
< search_condition > ::= 
    { [ NOT ] <predicate> | ( <search_condition> ) } 
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ] 
[ ,...n ] 
<predicate> ::= 
    { expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression 
    | string_expression [ NOT ] LIKE string_expression 
  [ ESCAPE ‘escape_character‘ ] 
    | expression [ NOT ] BETWEEN expression AND expression 
    | expression IS [ NOT ] NULL 
    | CONTAINS 
    ( { column | * } , ‘< contains_search_condition >‘ ) 
    | FREETEXT ( { column | * } , ‘freetext_string‘ ) 
    | expression [ NOT ] IN ( subquery | expression [ ,...n ] ) 
    | expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } 
  { ALL | SOME | ANY} ( subquery ) 
    | EXISTS ( subquery )     }



7.15.2
SELECT 货主城市,count(订单ID) AS 订单总数,sum(运货费) AS 运货费总数
    FROM 订单
    WHERE count(订单ID) > 20
    GROUP BY 货主城市    



SELECT 货主城市,count(订单ID) AS 订单总数,sum(运货费) AS 运货费总数
    FROM 订单
    GROUP BY 货主城市    
    HAVING count(订单ID) > 20


7.16.1
[ COMPUTE 
    { { AVG | COUNT | MAX | MIN | STDEV | STDEVP | VAR | VARP | SUM } 
    ( expression ) } [ ,...n ] 
    [ BY expression [ ,...n ] ] 
]


7.16.3
SELECT 订单ID,货主城市,运货费
    FROM 订单
    WHERE     发货日期 is null
    COMPUTE SUM(运货费)



7.16.4
SELECT 订单ID,货主城市,运货费
    FROM 订单
    WHERE     发货日期 is null
    ORDER BY 货主城市 desc
    COMPUTE SUM(运货费)  by 货主城市


7.17.1
    { <query specification> | ( <query expression> ) } 
  UNION [ ALL ] 
  <query specification | ( <query expression> ) 
 [ UNION [ ALL ] <query specification> | ( <query expression> ) 
    [ ...n ] ]



7.17.3
SELECT 联系人姓名,地址,电话
    FROM 供应商
UNION ALL
SELECT 联系人姓名,地址,电话
    FROM 客户



7.17.4
SELECT 联系人姓名,地址,电话
    FROM 供应商
UNION 
SELECT 联系人姓名,地址,电话
    FROM 客户



7.17.5
SELECT 联系人姓名,地址,电话
    FROM 供应商
UNION 
SELECT 联系人姓名,地址,电话
    FROM 客户
UNION
SELECT ‘张三‘,‘北京中医药大学‘,‘010.12345678‘



7.17.6
SELECT 联系人姓名,地址,电话
    FROM 供应商
UNION 
SELECT 联系人姓名,地址,电话
    FROM 客户
ORDER BY 联系人姓名



7.17.7
SELECT 地址,COUNT(地址) AS 联系人数
FROM 
(
    SELECT 联系人姓名,地址,电话
        FROM 供应商
    UNION 
    SELECT 联系人姓名,地址,电话
        FROM 客户
) AS 临时表
GROUP BY 地址


7.18.1
SELECT < select_list > 
    [ INTO new_table ] 
    [ FROM { <table_source> } [ ,...n ] ] 
    [ WHERE <search_condition> ] 


7.18.2
SELECT 产品ID,产品名称
    INTO 缺货记录
    FROM dbo.产品
    WHERE 库存量= 0



7.18.3
SELECT 雇员.雇员ID, 雇员.姓氏, 雇员.名字, 
    产品.产品名称 as 售出产品, 订单明细.单价, 订单明细.数量, 
    订单明细.折扣, 订单明细.单价*订单明细.数量*(1.订单明细.折扣) as 总价,
    客户.公司名称, 客户.联系人姓名, 客户.地址, 客户.邮政编码, 
    客户.电话
INTO 雇员订单信息
FROM  订单 INNER JOIN
      订单明细 ON 订单.订单ID = 订单明细.订单ID INNER JOIN
      雇员 ON 订单.雇员ID = 雇员.雇员ID INNER JOIN
      产品 ON 订单明细.产品ID = 产品.产品ID INNER JOIN
      客户 ON 订单.客户ID = 客户.客户ID


7.18.4
SELECT * 
    INTO 订单历史记录
    FROM  订单
    WHERE 0=1



7.19
SELECT * FROM Northwind.dbo.雇员
    JOIN test.dbo.订单
    ON Northwind.dbo.雇员.雇员ID = test.dbo.订单.雇员ID



SELECT * FROM Northwind.dbo.雇员
    JOIN test.dbo.订单
    ON 雇员.雇员ID = 订单.雇员ID



SELECT * FROM Northwind.dbo.雇员 as N雇员
    JOIN test.dbo.订单 as 例订单
    ON N雇员.雇员ID = 例订单.雇员ID



use Northwind

SELECT * FROM 雇员
    JOIN test.dbo.订单
    ON 雇员.雇员ID = test.dbo.订单.雇员ID


7.20.2
SELECT * FROM 类别
    WHERE 图片 IS NULL



SELECT * FROM 类别
    WHERE 图片 IS NOT NULL


7.20.3
ISNULL ( check_expression , replacement_value )




SELECT 类别ID,类别名称,isnull(说明,‘暂无说明‘) as 说明
    FROM 类别


7.21.1
WITH 临时表(雇员ID,上级ID,订单数) AS
(
    SELECT 雇员.雇员ID,雇员.上级,count(订单.订单ID) FROM 订单
        JOIN 雇员 ON 订单.雇员ID = 雇员.雇员ID
    GROUP BY 雇员.雇员ID,雇员.上级
)
SELECT 雇员.姓氏,雇员.名字,sum(订单数) as 订单数FROM 临时表
    JOIN 雇员 ON 临时表.上级ID = 雇员.雇员ID
    GROUP BY 雇员.姓氏,雇员.名字


7.21.2
DELETE 雇员通讯录
GO

WITH 临时表(雇员ID,姓氏,名字,邮政编码,城市,地址,家庭电话) AS
(
    SELECT  雇员ID, 姓氏, 名字, 邮政编码, 城市, 地址, 家庭电话
    FROM  雇员
    WHERE  雇员ID IN
    (    
        SELECT 雇员ID FROM 订单
        GROUP BY 雇员ID
        HAVING COUNT(订单ID) >100
    )
)
INSERT INTO  雇员通讯录
    SELECT 雇员ID,姓氏,名字,邮政编码,城市,地址,家庭电话
    FROM 临时表



DELETE 雇员通讯录

INSERT top (5) INTO  雇员通讯录
    SELECT  雇员ID, 姓氏, 名字, 邮政编码, 城市, 地址, 家庭电话
    FROM  雇员
?    OUTPUT子句:使用OUTPUT子句可以返回插入到数据表里的记录。



DELETE 雇员通讯录
GO

INSERT top (5) INTO 雇员通讯录
    OUTPUT INSERTED.雇员ID, INSERTED.姓氏, INSERTED.名字, INSERTED.邮政编码,
        INSERTED.城市, INSERTED.地址, INSERTED.家庭电话
    SELECT  雇员ID, 姓氏, 名字, 邮政编码, 城市, 地址, 家庭电话
        FROM  雇员


7.21.3
.WRITE ( expression, @Offset , @Length )



ALTER TABLE 雇员通讯录
    ALTER COLUMN 地址nvarchar(max)
GO

SELECT * FROM 雇员通讯录
    WHERE 雇员ID = 4

UPDATE 雇员通讯录
    SET 地址.WRITE (N‘试一下‘,1,1)
    WHERE 雇员ID = 4

SELECT * FROM 雇员通讯录
    WHERE 雇员ID = 4




8.3.1
INSERT 类别(类别名称,说明) 
    VALUES (‘图书‘,‘各种图书‘)

SELECT * FROM 类别
    WHERE 类别名称 = N‘图书‘

UPDATE 类别
    SET 说明 = N‘计算机、时尚生活等图书‘
    WHERE 类别名称 = N‘图书‘

SELECT * FROM 类别
    WHERE 类别名称 = N‘图书‘


8.3.2
SELECT * FROM 类别
    WHERE 类别名称 = N‘图书‘

UPDATE 类别
    SET 说明 = N‘计算机、时尚生活等图书‘
    WHERE 类别名称 = N‘图书‘
GO

SELECT * FROM 类别
    WHERE 类别名称 = N‘图书‘
GO




8.4.1
--先插入一条记录
INSERT 类别(类别名称,说明) 
    VALUES (‘图书‘,‘各种图书‘)

--查看插入记录的内容
SELECT * FROM 类别
    WHERE 类别名称 = N‘图书‘

--更新记录内容
--将“说明”字段内容改为“计算机、时尚生活等图书”
UPDATE 类别
    SET 说明 = N‘计算机、时尚生活等图书‘
    WHERE 类别名称 = N‘图书‘

--查看更新后的记录内容
SELECT * FROM 类别
    WHERE 类别名称 = N‘图书‘



8.4.2
/*
下面代码可以完成以下操作:
1、查看类别表中类别名称为“图书”的记录内容
2、将类别表中类别名称为“图书”的记录的说明字段的内容改为“计算机、时尚生活等图书”
3、查看修改后的结果
*/
SELECT * FROM 类别
    WHERE 类别名称= N‘图书‘

UPDATE 类别
    SET 说明= N‘计算机、时尚生活等图书‘
    WHERE 类别名称= N‘图书‘

SELECT * FROM 类别
    WHERE 类别名称= N‘图书‘




8.5.1
CAST ( expression AS data_type [ (length ) ])



SELECT 产品名称+ ‘的单价为:‘ + CAST(单价 AS VARCHAR(10)) + ‘元‘
    AS 产品介绍
    FROM 产品


8.5.2
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )



SELECT 订单ID,
    CONVERT(varchar(20),订购日期,1) AS                             

热门排行

今日推荐

热门手游