SQL SERVER设计与高级查询 第二章 学习笔记

来源:互联网 发布:网络言论自由议论素材 编辑:程序博客网 时间:2024/05/21 09:46

SQL SERVER设计与高级查询

第二章  数据库实现

【基础回顾】

数据库文件的组成:  主文件 *.mdf  次要文件 *.ndf  日志文件 *.ldf

(当主文件存满后,数据将存入次要文件)

 

SQLServer三层安全模型:

1.     需要登陆到SQLServer系统,即需要登陆帐户

2.     需要访问某个数据库,即需要成为该数据库的用户

3.     需要访问数据库中的表,需要受权操作

 

【创建/删除数据库】

判断数据库是否已经存在,数据库清单存放在master数据库sysdatabases表中

 

use master

--判断数据库是否存在,如果存在则删除数据库

if exists (select * from sysdatabases where name = 'exam')

drop database exam

 

--创建数据库

create database exam

on

(

/*-数据文件具体描述-*/

name = 'exam',  --主数据文件逻辑名称

filename = 'd:/exam.mdf',  --主数据文件的物理名称

size = 5mb, --主数据文件初始大小

maxsize = 100mb,  --主数据文件增长最大值

filegrowth = 10%  --主数据文件增长率,当指定数据为0,表示文件不增长

)

log on

(

/*-日志文件具体描述-*/

name = 'exam_log',

filename = 'd:/exam.ldf',

size  = 3mb,

filegrowth = 1%

)

go

 

【问题】

deletedrop的区别:delete删除的是数据,drop删除表,数据库

 

【创建/删除表】

SQL中常见数据类型:

Int float numeic char varchar nchar nvarchar

判断表是否已经存在,表清单存放在数据库系统表sysobjects

 

use exam

--判断表是否存在,如果存在则先删除表

if exists(select * from sysobjects where name = 'username')

drop table username

 

--创建用户表

create table username

(

--格式 列名 数据类型 列特征

id int identity(1,1), --标识列自增长,从开始递增

uName varchar(10) not null, --用户名不能为空

uAge int not null, --年龄

uSex int not null, --性别

uDept  int not null, --部门

userID numeric(18,0), --身份证号(180)表示位数,小数点后有0

uAdd text  --用户地址允许为空

)

 

 

【问题】

数据类型 char varchar nchar nvarchar 的区别:

char 长度固定, varchar 长度是可调节长度

例如:

一个char 数据类型‘sql语言   ’(注意空格),它的长度会要将空格计算在内. Len= 10

varchar 数据类型 ‘sql语言   它将自动删除空格部分.len= 7

nchar nvarchar Unicode字符型数据,用双字节结构存储每个字符.(字符串长度与字节长度不相等)

 

【创建/删除表约束】

--创建约束语法

alter table tableName

add constraint constraintName constraintType Explain

--删除约束语法

alter table tabelName

drop constraint constraintName

 

--约束类型

primary key  --主键约束

unique      --唯一约束

default      --默认约束

check       --检查约束

foreign key  --外键约束

 

例句:

--创建主键约束

alter table username

add constraint PK_id primary key (id)

--创建唯一约束

alter table username

add constraint UQ_userID unique (userID)

--创建默认约束,默认为'地址不详'

alter table username

add constraint DF_uAdd default ('地址不详') for uAdd

--创建检查约束,年龄只能在-40之间

alter table username

add constraint CK_uAge check (uAge between 15 and 40)

--创建外键约束,主表username与从表dept建立关系

alter table dept

add constraint FK_dept

foreign key (dept) references username(udept)

go

 

--删除约束

alter table username

drop constraint PK_id

 

【问题】

CK_username这个约束中,

alter table username

add constraint CK_uAge check (uAge between 15 and 40)

between 指定的范围是开区间还是闭区间: 闭区间

 

【创建登陆】

1.创建登陆帐户

/*-windows账户调用Server内置系统存储过程sp_grantLogin-*/

exec sp_grantLogin 'windows域名/域账户'

 

/*-Sql账户调用系统存储过程sp_addLogin-*/

exec sp_addLogin '账户名','密码'

 

2.创建数据库用户

/*-调用系统存储过程sp_grantdbaccess-*/

--当前数据库

exec sp_grantdbaccess '登陆账户','数据库用户名'

 

3.给数据库用户授权

语法:grant popedom no TableName to SqlUserName

常用权限包括:insert,select,update,delete,create Table等操作

 

 (如果有不对的或需要补充的地方,还请老师和同学们帮忙指出来,谢谢!)

2010/3/12 整理

原创粉丝点击