use mytest go --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
时间: 2024-10-28 21:49:32