现在的位置: 首页 > 综合 > 正文

mssql的T-SQL教程(从建登陆到建库、表和约束)(1)

2012年08月04日 ⁄ 综合 ⁄ 共 4114字 ⁄ 字号 评论关闭

 

  1 
  2--1,创建登录,可以有两种方式:
  3--(1)以SQL验证的方式新建一个新的登录:
  4    exec sp_addlogin 'allnen','all123'--创建登录,登录名和密码
  5
  6--(2)以windows验证的方式将windows中的某个用户授予登录数据库服务的权限:
  7    exec sp_grantlogin 'PC-200901051757\allnen'
  8--或者
  9    --create login [PC-200901051757\allnen] from windows
 10
 11--如果要删除某个登录,可以用如下方式:
 12    --drop login [PC-200901051757\allnen] 
 13
 14--2,现在就可以用allnen这个帐号登录,但这里先不要登录,我们先给这个帐号授予创建数据库和表的权限
 15
 16    exec sp_grantdbaccess @loginame='allnen',@name_in_db='allnenDbUser'--将登录名映射到当前数据库
 17
 18    --exec sp_revokedbaccess 'allnen'--从当前数据库中删除对应的登录用户映射,也就是去除某个用户访问此数据库的权限
 19
 20    grant create database,create table to allnen--授予当前用户创建数据库的权限
 21--如果要去除某个用户的权限,用revoke,如果要拒绝某个用户的相关权限,用deny,revoke和deny的区别,请查阅其他相关文章
 22    --deny create database to allnenDbUser
 23
 24--3,现在就可以用allnen这个帐号登录,然后创建数据库和表了
 25--有时候如果要创建的数据库已经存在 ,那创建数据库的时候就会出错,
 26--所以我们一般在创建数据库前都会先判断要创建的数据库是否已经存在,
 27--如果存在,就先将存在的数据库删除
 28    IF EXISTS(SELECT * FROM sysdatabases WHERE name='stuDB')
 29        drop database stuDB
 30    GO
 31--当然,也可以用db_id(数据库名)这个函数来判断
 32
 33--创建数据库的时候,有可能数据库文件已经存在,或者文件目录不存在等,所以,我们还要先在硬盘中创建对应的文件夹
 34
 35    exec sp_configure 'show advanced options'1--显示高级选项,然后才可以配置xp_cmdshell
 36    reconfigure--从新应用配置,让配置生效
 37    exec sp_configure 'xp_cmdshell',1--启用xp_cmdshell功能
 38    reconfigure
 39    exec xp_cmdshell 'mkdir D:\project\'--用xp_cmdshell创建目录
 40    GO
 41--开始创建数据库
 42    CREATE DATABASE stuDB
 43       ON  PRIMARY  --默认就属于PRIMARY主文件组,可省略
 44    (
 45     NAME='stuDB_data',  --主数据文件的逻辑名
 46     FILENAME='D:\project\stuDB_data.mdf',  --主数据文件的物理名
 47     SIZE=5mb,  --主数据文件初始大小
 48     MAXSIZE=100mb,  --主数据文件增长的最大值
 49     FILEGROWTH=15%   --主数据文件的增长率
 50    )
 51    LOG ON
 52    (
 53      NAME='stuDB_log',
 54      FILENAME='D:\project\stuDB_log.ldf',
 55      SIZE=2mb,
 56      FILEGROWTH=1MB
 57    )
 58    GO 
 59--如果要创建多个数据库文件或者多个日志文件,则可以用这样的方式
 60    CREATE  DATABASE  employees
 61      ON 
 62       (
 63       /*-主数据文件的具体描述-*/
 64       NAME = 'employee1'
 65       FILENAME = 'D:\project\employee1_Data.mdf' , 
 66       SIZE = 10
 67       FILEGROWTH = 10%
 68      ), 
 69      (
 70       /*-次要数据文件的具体描述-*/
 71       NAME = 'employee2'
 72       FILENAME = 'D:\project\employee2_Data.ndf' , 
 73       SIZE = 20
 74       MAXSIZE = 100
 75       FILEGROWTH = 1
 76      ) 
 77     LOG ON 
 78      (
 79       /*-日志文件1的具体描述-*/
 80       NAME = 'employeelog1'
 81       FILENAME = 'D:\project\employeelog1_Log.ldf' , 
 82       SIZE = 10
 83       FILEGROWTH = 1
 84       ), 
 85      (
 86       /*-日志文件2的具体描述-*/
 87       NAME = 'employeelog2'
 88       FILENAME = 'D:\project\employeelog2_Log.ldf' , 
 89       SIZE = 10
 90       MAXSIZE = 50
 91       FILEGROWTH = 1
 92      )
 93    GO 
 94
 95
 96--
 97
 98--4,创建完数据库后,我们就可以开始创建表了
 99    USE stuDB   --将当前数据库设置为stuDB 
100    GO
101--同样,在创建表的时候,表也有可能已经存在,所以我们要先将已存在的表删除
102    IF EXISTS(SELECT * FROM sysobjects  WHERE name='stuInfo')
103        drop table stuInfo
104    GO
105    CREATE  TABLE  stuInfo    /*-创建学员信息表-*/
106    (
107     stuName  VARCHAR(20)  NOT  NULL ,  --姓名,非空(必填)
108     stuNo   CHAR(6)  NOT  NULL,   --学号,非空(必填)
109     stuAge  INT  NOT  NULL,  --年龄,INT类型默认为4个字节
110     stuID  NUMERIC(18,0),     --身份证号
111     stuSeat   SMALLINT  IDENTITY (1,1),   --座位号,自动编号
112     stuAddress   TEXT   --住址,允许为空,即可选输入
113    ) 
114    GO
115
116    IF EXISTS(SELECT * FROM sysobjects WHERE name='scoreInfo')
117        DROP TABLE scoreInfo
118    GO
119    CREATE TABLE scoreInfo
120    (
121        scoreInfoId int identity(1,1primary key,
122        score int,
123        stuNo CHAR(6)
124    )
125    GO
126
127--5,创建完表之后,要做的事情就算给表建立约束
128    alter table stuInfo
129        add constraint PK_stuNo primary key(stuNo)--主键约束
130    go
131    alter table stuInfo
132        add constraint UQ_stuID unique(stuID)--唯一约束
133    go
134    alter table stuInfo
135        add constraint DF_stuAddress default('地址不详'for stuAddress--默认约束
136    go
137    alter table stuInfo
138        add constraint CK_stuAge check(stuAge >20 and stuAge<40)--检查约束
139    go
140    alter table scoreInfo
141        add constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo) --外键约束
142    go
143        

 

【上篇】
【下篇】

抱歉!评论已关闭.