use test;
--这是查看当前使用的数据库的一些信息(主要数据库文件,日志文件)
select * from sysfiles;
--查看有哪些数据库
select * from master..sysdatabases;
--查看一个数据库有哪些表
select * from sysobjects where xtype = 'u';
use master;
select * from sysdatabases;--查看系统数据库
--创建数据库
use test;
/*
一.建库
数据库文件
主要数据库文件.mdf 有且只有一个 ==1
次要数据库文件.ndf 可有可无 >=0
日志数据库文件.ldf >=1
select * from sysfiles; 查看当前数据库文件的位置
create database 数据库名
on
(
--主要数据库
),
(
--这里是次要数据库文件
)
,
(
次要
)
....
log on
(
日志
)
二.创建表
1.查询所有表
select * from sysobjects where xtype='u'
2.系统表(系统创建)和用户表(普通,临时表(#局部,##全局))
*/
create database caowen
--如果这里没有用primary指定主数据库文件,那么第一个数据库文件就是主数据库文件,后面的是次数据库文件
--on primary 这是指定了主数据库文件的格式
on(
name='caowenmdf',--这是文件指定逻辑名称
filename='D:\go\caowen.mdf',--文件指定操作系统文件名。
size=10mb,--指定定义的文件的大小。如果主文件的 <filespec> 中没有提供 SIZE 参数,那么 SQL Server 将使用 model 数据库
--中的主文件大小。如果次要文件或日志文件的 <filespec> 中没有指定 SIZE 参数,则 SQL Server 将使文件大小为 1 MB。
maxsize=20mb,--定义的文件可以增长到的最大大小。可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 后缀。
--默认值为 MB。指定一个整数,不要包含小数位。如果没有指定 max_size,那么文件将增长到磁盘变满为止。
filegrowth=10%--定义的文件的增长增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。
),
--这是第一个次数据库文件
(
name='caowenndf1',
filename='D:\go\caowen1.ndf',
size=1mb,
maxsize=2mb,
filegrowth=10%
),
(
name='caowenndf2',
filename='D:\go\caowen2.ndf',
size=1mb,
maxsize=2mb,
filegrowth=10%
)
log on(
name='caowenldf1',
filename='D:\go\caowen1.ldf',
size=1mb,
maxsize=2mb,
filegrowth=10%
);
use caowen;
select * from sysfiles;
--select * from sysfiles;这是查询当前数据库的数据文件的位置
--select * from sysobjects where xtype='u';--这是查询当前数据库所含有的数据库表
--bbs的用户表
go
create table tbl_bbs_user(
userid int identity(1,1) ,
username varchar(30),
password varchar(30),
status int
);
go
select * from tbl_bbs_user;
go
--板块表
create table tbl_bbs_board(
boardid int identity primary key,
boardname varchar(50),
boarddesc varchar(20),
pid int
);
select * from tbl_bbs_board;
go
--版主表(一个版块对应多个版主)
create table tbl_board_master
(
boardid int ,
userid int
);
go
--主帖表
create table tbl_bbs_topic
(
tid int identity, --帖子编号
title varchar(50), --标题
userid int , --发帖人
createtime datetime , --创建时间
boardid int , --所在版块
content varchar(1000), --内容
status int , --帖子状态(是否锁定)
isok int , --是否精华 1:yes 0:no
istop int --是否置顶
);
go
--增加主键约束
alter table tbl_bbs_user
add constraint pk_bbs_user primary key(userid);
--增加唯一约束
alter table tbl_bbs_user
add constraint unique_bbs_user unique(username);
--增加check约束
alter table tbl_bbs_user
add constraint check_bbs_user check(status in (0,1));
--联合主键
alter table tbl_board_master
add constraint pk_bbs_board_master primary key(boardid, userid);
--增加外键约束
alter table tbl_board_master
add constraint fk_bbs_board_master_userid foreign key(userid) references tbl_bbs_user(userid);
--增加非空约束,
alter table tbl_board_master alter column userid int not null;
alter table tbl_board_master alter column boardid int not null;
--上面的增加约束(主键、唯一约束、check约束、联合主键、增外键约束),其实他们的语法都差不多
--alter table 表名 add constraint 约束名 相关的约束
--但是非空约束有点不同alter table 表名 alter column 列名 相关的约束,其实把这里的非空约束看成
--是下面的修改字段的约束就好理解了
--给一个表增加一个字段
alter table tbl_bbs_user
add bbb int not null;
--删除一个字段
alter table tbl_bbs_user
drop column aaa;
--修改一个字段
alter table tbl_bbs_user
alter column bbb varchar(20) null;
select * from tbl_bbs_user;
--总结上面对字段的处理,其实他们的语法都差不多,alter table 表名 drop/alter column 约束条件
--但是在增加一个字段的时候,千万注意不能add column不需要这个column
--创建一个新用户,第一个参数是用户名,第二个参数是密码
exec sp_addlogin 'caohuan','wenbin';
exec sp_grantdbaccess
use caowen;
exec sp_revokedbaccess 'caohuan';
--将当前数据库的访问权限赋予给'caohuan'这个新用户,并且取一个别名,这个别名必须要存在,否则下面的赋予权限就会存在问题
exec sp_grantdbaccess 'caohuan', 'ccc';
--这是赋予dep表的select权限给ccc这个别名的用户
grant select on dep to ccc;
grant insert, delete on dep to ccc;
grant all on dep to ccc;
--这是移除ccc用户访问dep表的select权限
revoke select on dep from ccc;
--第一个参数是旧密码,第二个参数是新密码,第三个参数是用户名
sp_password aaa, bbb, ccc;