您的位置:首页 > 数据库

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

2012-08-04 12:18 435 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: