sql2005的表结构修改和数据库创建和授权的讲解

来源:互联网 发布:软件测试工资待遇2015 编辑:程序博客网 时间:2024/05/17 20:26

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;

原创粉丝点击