use mytestgo--nchar类型与char类型完全相同,除了nchar是以Unicode格式而非ANSI格式来存储字符。--Unicode格式比ANSI格式有更大的字符集范围。ANSI字符集仅有256个字符,Unicode字符集有65536个不同的字符。--在SQL server中,Unicode数据类型要占用更多的存储空间,SQL server将为Unicode数据类型分配双倍的内部--存储空间,因此,除非数据库中的确需要以这种格式保存字符,否则应使用ANSI。--新建数据库--create database mytest--删除数据库--drop database mytest--新建表--create table SaleManager(--number varchar(10) not null,--name vachar(20) not null,--sex char(4) not null)--删除表--drop table SaleManager--修改表名--EXEC sp_rename 'SaleManager','Student'--插入数据--insert into SaleManager values(1501,N'jia',N'男'),(1502,N'ze',N'男')--更改列名 注意: 更改对象名的任一部分都可能会破坏脚本和存储过程。--exec sp_rename 'SaleManager.[birthday]','Birthday ','column '--更改列类型--alter table SaleManeger alter column Birthday date--增加列--alter table SaleManager add Birthday date--更新数据--update SaleManager set Birthday = '07/15/2015' where number = 1501--删除列--alter table SaleManager drop column Birthday--变量的使用--declare @number int--set @number = 2015--print @number--赋值列所有数据--update SaleManager set [Birthday ] = '02/12/2014'--使用聚合函数--select N'人员数量' = COUNT(*),-- N'平均年龄' = AVG(Age),-- N'最小年龄' = MIN(Age),-- N'最大年龄' = MAX(Age),-- N'年龄方差' = STDEV(Age)--from SaleManager--使用数学函数--select N'自然对数' = LOG(10),-- N'指数' = EXP(12),-- N'符号' = SIGN(2),-- N'圆周率' = PI(),-- N'正弦' = SIN(PI()/2.0),-- N'余弦' = COS(PI()/2.0)--使用字符串函数--select name,-- N'名字长度' = LEN(name)--from SaleManager--选取id为1和2的数据行,in可译为'有,为'--select * from Score--where id in (1,2)--通配符%替代一个或多个字符,_仅替代一个字符,[charlist]字符列中的任何一个首字符,[!charlist]--select * from Score--where name like 'j%'--where name like 'z_'--where name like '[j]%'--操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。--select * from Score--where name between 'jia' and 'ze'--通过使用 SQL,可以为列名称和表名称指定别名(Alias),as可省略--指定表别名,多表查询--select sc.name,sa.number--from Score as sc,SaleManager as sa--where sc.name = 'jia' and sa.number = 1501--指定列别名--select name as n,sex as s--from Score--UNION 操作符用于合并两个或多个 SELECT 语句的结果集.--默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL--select name from SaleManager--union --(union all)--select name from Score--SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中--SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档--select * into Score1 --(in 'backup.mdb')--from Score--(where id = 01)/*UNIQUE 约束唯一标识数据库表中的每条记录。UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。PRIMARY KEY 拥有自动定义的 UNIQUE 约束。请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。例:Id_P int NOT NULL UNIQUE,*//*PRIMARY KEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表应该都一个主键,并且每个表只能有一个主键。例:Id_P int NOT NULL PRIMARY KEY,*//*一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。FOREIGN KEY 约束用于预防破坏表之间连接的动作。FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。例:FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)*//*CHECK 约束用于限制列中的值的范围。如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。例:Id_P int NOT NULL CHECK (Id_P>0),*//*DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新纪录。例:City varchar(255) DEFAULT 'Sandnes'*//*Auto-increment 会在新纪录插入表中时生成一个唯一的数字。我们通常希望在每次插入新纪录时,自动地创建主键字段的值。我们可以在表中创建一个 auto-increment 字段。MS SQL 使用 IDENTITY 关键字来执行 auto-increment 任务默认地,IDENTITY 的开始值是 1,每条新纪录递增 1。要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10)下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键:P_Id int PRIMARY KEY IDENTITY*//*SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:DATE - 格式: YYYY-MM-DD DATETIME - 格式: YYYY-MM-DD HH:MM:SS SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS TIMESTAMP - 格式: 唯一的数字 *//*NULL 值的处理方式与其他值不同。NULL 用作未知的或不适用的值的占位符。注释:无法比较 NULL 和 0;它们是不等价的。*//*在 SQL Server 中的合计函数: 函数 描述 AVG(column) 返回某列的行数 COUNT(column) 返回某列的行数(不包括NULL值) COUNT(*) 返回被选行数 COUNT(DISTINCT column) 返回相异结果的数目 FIRST(column) 返回在指定的域中第一个记录的值(SQLServer2000 不支持) LAST(column) 返回在指定的域中最后一个记录的值(SQLServer2000 不支持) MAX(column) 返回某列的最高值 MIN(column) 返回某列的最低值 SUM(column) 返回某列的总和 例:select avg(age) as AveAge from SaleManager*//*SQL索引有两种,聚集索引和非聚集索引,聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。*/--创建视图--create view [FirstView] as--select name, score--from Score--(where score>80)--go--查询视图--select * from [FirstView]--GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。--select name, AVG(score) as AveScore from Score--group by name--HAVING 子句,在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。--select name, AVG(score) as AveScore from Score--where sex = '女'--group by name--having AVG(score)>80