- 博客(0)
- 资源 (1)
- 收藏
- 关注
T-SQL电子书包含PPT及学习笔记、课后作业 非常好的sql学习资料
T-SQL中级教程,包括PPT、学习笔记及课后作业,非常经典的教程
--建库之前先建路径的代码
exec xp_cmdshell'mkdir d:\mydata', --也可以用exec xp_cmdshell'md d:\mydata'
no_output
exec xp_cmdshell'rd d:\mydata' --删除目录
--查看先前建的文件夹是否成功创建
exec xp_cmdshell'dir d:\'
----------------------------------------------------------------------------------------------------------------
/*切换数据库*/
use master
go
/*开启master表来判断要新建的数据库是否已经存在*/
if exists (select * from sysdatabases where name='stuDB')
/*存在就先删除*/
drop database stuDB
/*创建数据库*/
create database stuDB
/*创建主数据库文件*/
on primary
(
name='stuDB_data_1', --数据库逻辑名
filename='d:\mydata\stuDB_data_1.mdf', --数据库路径及名称
size=10mb, --数据库初始大小
maxsize=100mb, --数据库最大大小
filegrowth=15% --数据库增长
),
/*创建次要数据库文件*/
(
name='stuDB_data_2', --数据库逻辑名
filename='d:\mydata\stuDB_data_2.ndf', --数据库路径及名称
size=10mb, --数据库初始大小
maxsize=100mb, --数据库最大大小
filegrowth=15% --数据库增长
)
/*创建日志文件*/
log on
(
name='stuDB_log_1', --数据库逻辑名
filename='d:\mydata\stuDB_log_1.LDF', --数据库路径及名称
size=10mb, --数据库初始大小
maxsize=100mb, --数据库最大大小
filegrowth=15% --数据库增长
),
/*创建日次要志文件*/
(
name='stuDB_log_2', --数据库逻辑名
filename='d:\mydata\stuDB_log_2.ldf', --数据库路径及名称
size=10mb, --数据库初始大小
maxsize=100mb, --数据库最大大小
filegrowth=15% --数据库增长
)
/*如果有多个,请用,()来创建*/
/*批处理的结束 go*/
go
----------------------------------------------------------------------------------------------------------------
/*开始建表*/
/*-创建学员信息表-*/
use stuDB --将当前数据库设置为stuDB
go
--判断要创建的表是否存在,如果存在就删除
if exists(select * from sysobjects where name='stuInfo')
drop table stuInfo
--建表
create table stuInfo
(
stuName varchar(20) not null, --姓名,非空(必填)
stuNo char(6) not null, --学号,非空(必填)
stuAge int not null, --年龄,INT类型默认为4个字节
stuID numeric(18,0), --身份证号 代表18位数字,小数位数为0
stuSeat smallint identity(1,1), --座位号,自动编号 起始量为1,自增长1
stuAddress text --住址,允许为空,即可选输入
)
go
/*学生成绩表*/
if exists(select * from sysobjects where name='stuMarks')
drop table stuMarks
create table stuMarks
(
examNo char(7) not null, --考号
stuNo char(6) not null, --学号
writtenExam int not null, --笔试成绩
LabExam int not null --机试成绩
)
go
--查看表的字段
select * from stuMarks
select * from stuInfo
----------------------------------------------------------------------------------------------------------------
/*建约束的格式*/
/**
主键约束(Primary Key Constraint):要求主键列数据唯一,并且不允许为空
唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。
检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束
默认约束(Default Constraint):某列的默认值,如我们的男性学员较多,性别默认为“男”
外键约束(Foreign Key Constraint):用于两表间建立关系,需要指定引用主表的哪列
*/
/*添加约束的语法*/
alter table 表名
add constraint 约束名 约束类型 具体的约束说明
/*删除约束的语法*/
alter table 表名
drop constraint 约束名
----------------------------------------------------------------------------------------------------------------
/*为stuInfo表添加约束*/
alter table stuInfo
add constraint PK_stuNo primary key(stuNo) --添加主键约束
alter table stuInfo
add constraint UQ_stuId unique(stuId) --添加唯一约束
alter table stuInfo
add constraint DF_stuAddress default('地址不详') for stuAddress --添加默认约束
alter table stuInfo
add constraint CK_stuAge check(stuAge between 10 and 40) --检查约束
/*为stuMarks表添加约束*/
alter table stuMarks
add constraint FK_stuNo
foreign key(stuNo) references stuInfo(stuNo) --添加主外键约束(主键为stuMarks表的stuNo键,外键为stuInfo表的stuNo键)
alter table stuMarks
add constraint CK_writtenExam check(writtenExam between 0 and 100) --检查约束,成绩只能是0到100之间的数
alter table stuMarks
add constraint CK_LabExam check(LabExam between 0 and 100) --检查约束,成绩只能是0到100之间的数
----------------------------------------------------------------------------------------------------------------
/*安全模型*/
exec --专门用来调用存储过程
exec sp_grantlogin '域名\用户名' --创建window用户
sp_grantdbaccess '登录账户名','数据库用户' --grant授权 访问数据库
grant 权限[on 表名] to 数据库用户 --为用户授权
USE stuDB
GO
/*--为zhangsanDBUser分配对表stuInfo的select, insert, update权限--*/
GRANT select, insert, update
ON stuInfo TO zhangsanDBUser
--------------------------------------------------------------------------------------------------------------------
/*第一关:创建SQL登陆账户*/
use master --切换到数据库
exec sp_addlogin 'admin','888888' --创建SQL登陆账户
/*第二关:创建数据库用户*/
--首先切换到要分配权限的数据库
use stuDB
--exec sp_grantdbaccess '登陆账户','数据库账户'
exec sp_grantdbaccess 'admin','stuDB' --grant授权 访问数据库
/*第三关:为数据库用户分配权限*/
--grant 权限 on 表名 to 数据库用户
grant select on stuInfo to stuDB --为数据库用户名赋予查询权限
--收回查找权限
revoke 权限 on 表名 from public --为用户删除权限
revoke select on stuInfo from stuDB
exec sp_revokedbaccess 'stuDB' --删除数据库用户stuDB对数据库的访问权限
exec sp_droplogin 'admin'
2010-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人