/*数据库建设表和表操作的规则说明示例*/
CREATE DATABASE
        [ database_name .] table_name
                (        { <column_definition> }
                        [ <table_constraint> ] [,...n ] )
        [ ; ]
<column_definition> ::=
columu_name <data_type>
        [ NULL | NOT NULL ]
        [ [ CONSTRAINT constraint_name ] DEFAULT contant_expression ]
         | [ IDENTITY [ ( seed , increment ) ] ]
        [ ROWGUIDCOL ] [ <column_constraint> [ ...n] ]
<column_constraint> ::=
[ CONSTRAINT contraint_name ]
{        {         PRIMARY KEY | UNIQUE}
                [ CLUSTERED | NONCLUSTERED        ]
                 | [ FOREIGN KEY ]
                        | CHECK [ NOT FOR REPLICATION ] ( logical_expression )
}

/**
参数说明:
table_name :    要创建的表的名称。
column_definition:    字段定义。
table_constraint:    表约束定义。
column_name :        字段的名称。
IDENTITY:        自动增长列,其中seed为基数,increment为增长步长。
表约束定义主要参数:
NULL 和 NOT NULL    :限制字段可以为NULL(空),或者不能为NOT NULL(非空)。
PRIMARY KEY        :    设置字段的主键。
CLUSTERED和NONCLUSTERED :    创建聚集索引或者非聚集索引。
UNIQUE :    设置字段值唯一。
CHECK :        设置CHECK约束。
logical_ CHECK约束检查的逻辑表达式。

提示:
在创建表之前,最好先在纸上画出其轮廓。此时要考虑的内容主要有:
1、表中要存储的数据类型。
2、表中需要的列以及每一列的类型、列的长度。
3、列是否可以为空。
4、是否需要在列上使用约束、默认值和规则。
*/
use test
go
create table demoTB
(
Tid int identity(1,1) not null,         /* identity自动增长*/
Tname char(10) not null,
Tmodel char(6) null,
Tprice float null)
/**
修改表结构的规则和示例
*/

ALTER TABLE table_name
         ADD [column_name date_type ]
                [ PRIMARY KEY | CONSTRAINT ]
                [FOREIGE KEY (column_name)
                     REFERENCES ref_table(ref_column)]
DROP [ CONSTRAINT ] constraint_name | COLUMN column_name


/**
各参数的含义如下
ADD 字句   增加字段。
DROP 字句    删除字段或者约束。其中CONSTRAINT 表示删除约束;COLUMN表示删除字段。
例如:修改表中的Tname列,将其最大长度改为15个字符,且不允许为空。
 */

USE test
GO
ALTER TABLE demoTB
         ALTER COLUMN Tname char(15) NOT NULL
GO


/**
向demoTB表中添加Taddress(产地)列,字段类型为字符型可变长,可以为空。
*/

USE test
GO
ALTER TABLE demoTB
ADD Taddress varchar(50) NULL
GO

/**
删除一个表中的一个列。
*/

USE test
GO
ALTER TABLE demoTB
DROP COLUMN Tadress
GO

/**
查看表的定义,可用系统的存储过程SP_help
使用sp-help的方法是在sp_help后面加上要查看的表名作为参数。
*/

USE test
GO
EXEC sp_help demoTB
GO

/**
可以使用系统存储过程sp_helpconstraint查看表上定义的约束。
*/

USE test
GO
EXEC sp_helpconstraint demoTB
GO

/**
INSERT添加数据的基本语法为:
*/
INSERT [ INTO]
        Table_or_view[ (column_lise ) ]
{ data_values | select...}

/**
参数说明:
INTO:将新的数据存储在表或者视图中。
Table_or_view:    要插入的表或者视图的名称。
data_values:    待插入的数据。
*/
USE test
GO
INSERT INTO demoTB VALUSE( '苹果电脑', '家电', '5000')
GO

/**
提示:
 由于demoTB表的列为IDENTITY(自动增长),所以在命令中不给Tid列赋值。
如果赋值,将报一下错误信息:仅当使用了列列表并且IDENTITY_INSERT为ON时,
才能为表demoTB中的标识列指定显式值。
*/

/**
修改数据简要语法
*/
UPDATE table_name
SET column_name =    expression
[ WHERE logical_expression]

/**
各参数的含义:
column_name = expression :将右边表达式的值赋给左边的列。
logical_expression : 条件表达式。
    使用UPDATE...SET,可以更新数据库中原有的数据,SET 字句为被修改列和修改后的数据,
如果没有条件限制(如没有WHERE字句等),表中所有行的指定列将被修改为SET后面的新数据。
新数据可以为常量,也可以为表达式。
    例如:demoTB表中的记录,将其Tname为"苹果电脑"的Tmodel列值改为"白色家电"。
*/
USE test
GO
UPDATE demoTB
SET Tmodel= '白色家电'
WHERE Tname= '苹果电脑'
GO