sqlserver学习日记之一

1、创建数据库并指定数据库文件的位置和大小
create database eshop
on primary
( name=Eshop,
  filename='D:\MSSQL\data\eshop.mdf',
  size=10mb,
  maxsize=100mb,
  filegrowth=5mb)
log on
( name=eshoplog
  filename='d:\mssql\log\eshoplog.mdf',
  size=10mb,
  maxsize=100mb,
  filegrowth=5mb  
)

2、修改数据库
alter database eshop
  add file
  ( name=eshop2
    filename='d:\mssql\data\eshop2.ndf',
    size=10mb,
    filegrowth=10mb
  )

3、数据库命名中包含保留关键字的TSQL操作。
在T-SQL中,有多个保留关键字,例如create,table,order等,它们有特殊的含义,这些保留关键字列在microsoft sql server Transact-Sql参考手册的“保留关键字”话题中,如果希望使用这些保留字作为表名,列名,或者其他SQL对象名称,那么当它们出现在SQL语句中时,必须用双引号括起这些名称,下面示例如何编写一个SQL语句,从表名为Order的表中检索列。
select * from "order" where custid=12345
一般,应该避免使用SQL的保留字或者特殊字符作为SQL对象的名称

4、在指定文件组上创建表
可以定义文件组,它是一个或者多个存储应用程序数据的操作系统文件的集合,为了把一个新表放在用户定义的文件组上,可以在create table语句的末端增加一个on子句:
create table eshop.dbo.customer
(
 custid int not null
  check(custid>0),
 name char(30) not null
  check(name<>'')
...
)
on eshopGroupfile1
注意:eshopGroupfile1必须是已经被创建的数据库文件

5、TimeStamp列
无论何时插入或者修改一行数据时,都会自动修改用TimeStamp数据类型说明的列(或者名为TimeStamp但没有数据类型的列)。sql server 设置time stamp列为下述值:保证该值在数据库中是唯一的,并且大于以前指定的值,该值的数据类型与datatime数据类型不同,永远也不能直接设置timestamp列的值。
一个表只能有一个timestamp列,可以使用timestamp列的值决定自从上次检索之后是否有其他进程修改数据行,在应用程序中,检查timestamp列的值提供了一种有效的方法,可以用这种方法在防止与其他进程的修改冲突时,允许并行浏览和修改表。

6、用户定义的数据类型
sql server提供了一种非标准的数据类型,称之为用户定义的数据类型,用户定义的数据类型是内置数据类型,长度,和可空性的同义词。
为了创建一个用户定义的数据类型,使用sp_addtype存储过程,如下所示:

sp_addtype TDescription,'Character Varying(50)','not null'

本示例创建了TDescription数据类型,作为Character Varying(50)数据类型的同义词,该数据类型不允许空,在创建了这种数据类型之后,可以把它用在create table列说明中,例如:
...,
productDescription TDescription
等价于:
productDescription Character Varying (50) not null
用户定义的数据类型提供了一种很好的方法,可以标准化用于主键和外键的数据类型,以及标准化经常重复的列的定义。在每个数据库中,数据类型名称必须是唯一的,可遵循一些约定,每个用户定义的数据类型以T开头,用于区别数据类型名称和列名称。
如果不再需要某个用户定义的数据类型,可以使用sp_droptype存储过程删除它:
sp_droptype TDescription

7、增加、删除、修改表列
可以使用Alter Table语句在一个已经存在的表中增加一个新列,如下所示在customer表中增加一个新列:
alter table eshop.dbo.customer
 add discount decimal(5,3) default 0
  check(discount between 0 and 100)
值得注意的是,alter table时所有的新列要么允许为空,要么有一个default子句,以便sql server可以为已有行初始化该列。
alter table还允许改变已有列的数据类型、大小、和可空性。下面的语句设置Discount列的数据类型和大小及不允许为空:
alter table eshop.dbo.customer
 alter column Discount Decimal(7,5) not null
一般不能修改text,ntext,image,timestamp列;不能修改计算可复制列;不能修改计算的列,约束,缺省值,或者索引中引用的列,这种规则的例外是可以增加在索引中使用的变长度列的长度,并且可以改变在唯一性约束或者检查约束中使用的变长度列的长度。另外。不能修改有RowGuidCol属性的列的类型,大小或者可空性,可以为UniqueIdentifier列增加或者删除RowGuidCol属性,这与Alter Table语句的形式稍微有些不同。
alter table eshop.dbo.customer
 alter column RowId add RowGuidCol
使用alter table语句还可以从表中删除一个已经存在的列
alter table eshop.dbo.customer
 drop column discount
在可以删除一列之前,必须删除任何引用该列的约束,缺省表达式,计算列表达式,或者索引,不能删除复制的列。

转载于:https://www.cnblogs.com/liuxing3169/articles/1420939.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值