master数据库是最重要的系统数据库
model数据库是一个模板数据库
msdb是与SQLServerAgent服务相关的数据库
tempdb是一个临时数据库,用于存储查询过程中所使用的中间数据或结果
Microsoft SQL Server Management Studio:将各种图形化工具和多功能的脚本编辑器组合在一起,完成访问、配置、控制、管理和开发SQL Server的所有工作,大大方便了技术人员和数据库管理员对SQL Server系统的各种访问。
SQL Server Profiler:可以对Microsoft SQL Server 2008系统的运行过程进行摄录
create login [将要创建的基于Windows登录名的登录名] //方括号必须的
from windows
go
(2)创建有默认数据库的登录名
create login [将要创建的基于Windows登录名的登录名]
from windows
with default_database = AdventureWorks
go
如果没有为新建的登录名明确的指出默认数据库,那么默认数据库是master数据库
(3)创建SQL Server登录名
create login Peter
with password = '11111'
alter login Peter
with name = roudo
(2)修改roudo登录名的密码
alter login roudo
with password = '11111'
(3)禁用和启用登录名
//禁用登录名
alter login roudo disable
//启用登录名
alter login roudo enable
sp_addsrvrolemember ‘login-name’, 'role-name'
- 如果希望指定的登录名成为某个固定服务器角色的成员,可以使用is_srvrolemember
- 如果希望把固定服务器角色的某个成员删除,可以使用sp_dropsrvrolemember
create user peter_user
from login peter
(2)创建带有默认架构的数据库用户
create user bobbie_hrm
from login [ ]
with default_schema = hrmanager
注意:数据库中的每一个用户可以对应多个架构,但是只能对应一个默认架构
dbo是数据库的默认用户
create schema SaleManager
authorization peter_user
(3)创建架构的同时创建一个表
create schema Manager
authorization peter_user
create table elecTravelHuman(Emp ID INT, EmpName Varchar(126))
(4)创建架构的同时创建表和管理权限
create schema Manager
authorization peter_user
create table elecTravelHuman(Emp ID INT, EmpName Varchar(126))
grant select to guest
create role
(2)sp_addrolemember为角色添加成员
sp_addrolemember 'role_name', 'security_account'
(3)其他操作
与sp_addrolemember存储过程相对应的是sp_droprolemember存储过程,后者可以删除指定数据库角色中的成员。
8. 常用对象的权限
(1)授予权限
使用grant语句将安全对象的权限授予指定的安全主体
grant control to tomson_hrm
对数据库的control权限授予给了tomson_hrm用户
grant create table to peter_user
该用户拥有了可以在当前数据库中执行创建表的操作
grant create table to cleon with grant option
可以使cleon用户可以将create table权限转授给其他用户。
(2)收回权限
使用revoke语句可以从某个安全主体处收回权限
revoke select on sales.customer
from cleon
使用revoke语句收回授予的权限
create database 名字
(2)使用create database语句创建数据库
create database LCBCom
on {
name = LCBCom_DATA,
filename = 'D:\......',
size = 6,
maxsize = 20,
filegrowth = 10%
}
log on {
name = LCBCom_LOG,
filename = 'D:\....',
size = 2MB,
maxsize = 10MB,
filename = 1MB
}
alter database
(1)更改数据库名称
alter database database_name modify name = new database_name
(2)创建数据库快照
create database database_snapshot_name
on (
name = source_database_logical_file_name,
filename = 'os_file_name',
)
as snapshot of source_database_name
RAID它就是将多个独立的硬盘进行组合,并将其容量叠加在一起,再利用个别硬盘提供数据所产生的加成效果,提升整个硬盘系统性能。 同时,还可以通过存储冗余数据来增加容错能力,以获得更加安全的数据存储环境
declare @yearCounter INT
SET @yearCounter = 1
WHILE (@yearCounter < 2012)
SET @yearCounter = @yearCounter + 1
PRINT @yearCounter
create table students(
studentNumber int not null,
studentName varchar(32) not null,
gender char(2) null,
birthday datetime null,
birthplace varchar(32) null,
telphone_no varchar(32) null,
address varchar(128) null,
others varchar(256) null
)
当在表名称前面使用一个#符号时,表示创建的表是本地临时表,该表只能由创建者使用。如果表名称前面使用了两个#符号,那么表示该表是全局临时表,在其生存期间可以为所有的用户使用。
2. 增加或删除列
alter table abc_table
add column_b varchar(20) not null
create table abc_table(
column_a int, column_b varchar(20)null)
alter table abc_table
drop column column_b
alter table table_name alter column column_name new_type_name
注意:如果表中没有数据,那么对表中列的数据类型的更改可以是任意的。但是,如果表中已经包含了数据,对表中列的数据类型的更改将涉及到这些列中的数据是否能够与新数据类型一致的问题。因此,这时要求更改后的列的数据类型应该是更改前的数据类型可以隐式转换的数据类型。
4. 创建和修改标识符列
标识符列是唯一标识表中每一行数据的符号。
(1)IDENTITY
作用范围是表
使用IDENTITY属性的列是IDENTITY列,每一个表中最多只能有一个IDENTITY列。
IDENTITY(seed, increment)
seed:指定该列的种子值
increment:指定该列的增量值
这两个值得默认值都是1
可以在create table 语句或alter table语句中使用IDENTITY属性。由于IDENTITY属性是作为列得属性在列上定义,因此对IDENTITY列得数据类型有所限制,SQL Server系统要求IDENTITY列得数据类型可以是整数数据类型或者是可以转换为整数数据的数据类型,并且不允许是空值。
(2)ROWGUIDCOL列
ROWGUIDCOL列是全局唯一标识的符号,每一个表中最多允许创建一个ROWGUIDCOL列。ROWGUIDCOL列的值是不能自动生成的,一般使用newId函数来为该列提供数据。
创建分区表的主要步骤如下:
group by
子句cross join
inner join连接运算符和on关键字指定连接条件
left outer join
、right outer join
、full outer join
索引
索引是一种与表或视图关联的物理结构,可以用来加快从表或视图中检索数据行的速度。
为什么创建索引?
(1)创建唯一性索引,可以保证每一行数的唯一性。
(2)可以大大加快数据的检索速度。
(3)可以加速表和表之间的连接。
(4)在使用group by 和order by子句进行数据检索时,可以显著减少查询中分组和排序的时间。
(5)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能
不利之处
(1)创建索引和维护索引要耗费时间
(2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间。
(3)对表中的数据进行增加、删除和修改时,索引也要动态的维护,这样就降低了数据的维护速度。
索引的类型和特点
(1)聚集索引和非聚集索引
聚集索引是一种数据表的物理顺序与索引顺序相同的索引,非聚集索引则是一种数据表的物理顺序与索引顺序不相同的索引。
当创建聚集索引时,应该考虑下列因素:
(2)非聚集索引与聚集索引的区别?
使用create table 语句定义default约束:
create table students(
student ID INT,
studentName VARCHAR(60),
gender CHAR(1) DEFAULT 'M',
birthdate DATETIME,
SSL CHAR(18)
)
使用 alter table 语句定义default约束:
alter table students
ADD constraint D_student_birthdate
DEFAULT '1990-01-01',
FOR birthdate
当使用default约束时,需要考虑下列因素:
(2)CHECK约束
使用create table 语句定义check约束
create table students(
student ID INT,
studentName VARCHAR(60),
gender CHAR(1) DEFAULT 'M' CHECK (gender = 'F' OR gender = 'M'),
birthdate DATETIME,
SSL CHAR(18)
)
使用alter table 语句定义check约束
alter table students
ADD CHECK (birthdate >= '1980-01-01' AND birthdate <= '1990-12-31')
当使用检查约束时,需要考虑下列因素:
create table students(
student ID INT PRIMARY KEY,
studentName VARCHAR(60),
gender CHAR(1) DEFAULT 'M' CHECK (gender = 'F' OR gender = 'M'),
birthdate DATETIME,
SSL CHAR(18)
)
定义包含了两个列的逐渐约束
create table nationalStudents(
university ID INT NOT NULL,
student ID INT NOT NULL,
PRIMARY KEY(university ID, student ID),
studentName VARCHAR(60),
gender CHAR(1)
birthdate DATETIME,
SSL CHAR(18)
)
当使用主键约束时,应该考虑下列因素:
(4)UNIQUE约束
使用alter table 语句定义unique约束
alter table students
ADD UNIQUE(SSL)
在创建unique约束时,需要考虑下列因素:
(5)外键约束
视图的概念
视图是查看数据库表中数据的一种方式,是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。
视图的特点。
视图中的数据并不属于视图本身,而是属于基本的表,对视图可以像表一样进行insert,update,delete操作。
视图不能被修改,表修改或者删除后应该删除视图再重建。
视图的数量没有限制,但是命名不能和视图以及表重复,具有唯一性。
视图可以被嵌套,一个视图中可以嵌套另一个视图。
视图不能索引,不能有相关联的触发器和默认值,sql server不能在视图后使用order by排序。
①简化数据操作:视图可以简化用户处理数据的方式。
②着重于特定数据:不必要的数据或敏感数据可以不出现在视图中。
③视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限。
④提供向后兼容性:视图使用户能够在表的架构更改时为表创建向后兼容接口。
⑤自定义数据:视图允许用户以不同方式查看数据。
⑥导出和导入数据:可使用视图将数据导出到其他应用程序。
标准视图、索引视图、分区视图
.一般情况下我们使用的视图都是标准视图
,它是一个虚拟表
,不占物理存储空间
.如果要提高聚合多行数据
的视图性能,可以创建索引视图
.索引视图
是被物理化
的视图,它包含经过计算的物理数据.使用分区视图
可以连接一台或多台服务器中成员表的分区数据
,使得这些数据看起来就像来自一个表中一样.create VIEW view_name
as
select_statement
如果希望加密定义文本,可以在定义视图时使用with encryption 子句
如果不希望更改视图的基表,可以在定义新视图时使用with schemabinding子句
删除视图:DROP VIEW view_name
存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,
经过第一次编译后调用不需要再次编译
,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 存储过程是数据库中的一个重要对象。
(1)存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而
一般SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速
度。
(2)当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
(3)存储过程可以重复使用,可减少数据库开发人员的工作量
(4)安全性高,可设定只有某此用户才具有对指定存储过程的使用权
存储过程的类型有3种:用户定义的存储过程、扩展存储过程和系统存储过程
存储过程的优点:
(1)减少网络通信量。
(2)执行速度更快。
(3)更强的适应性。
(4) 分布式工作。
create procedure procedure_name
parameter_name data_type, ...
with producedure_option
as
aql_statement
(2)创建一个简单的存储过程
create procedure HumanResources.Get EmployeeFullName
AS
select lastName, firstName, Department
from humanResources, vEmployeeDepartment
(3)创建一个带参数的存储过程
create procedure HumanResources.Get EmployeeInfo
@LastName VARCHAR(50)
@FirstName VARCHAR(50)
AS
SELECT LastName, FirstName, JobTitle, Department
From HumanResources.Get EmployeeFullName
where lastname = @lastname
AND firstname = @firstname
(3)创建带有output类型参数的存储过程
create procedure dbo.ComputePlus
@FirstPara decimal(10, 2),
@SecondPara decimal(10, 2),
@PlusResult decimal(10,2) output
AS
SET @PlusResult = @FirstPara + @SecondPara
execute
语句执行存储过程EXEC HumanResources.Get EmployeeFullName
(2)为存储过程直接提供参数值
EXEC HumanResources.Get EmployeeInfo
'Glimp', 'Diane'
(3)为存储过程间接提供参数值
declare @LastName VARCHAR(50)
declare @FirstName VARCHAR(50)
set @LastName = 'Glimp'
set @FirstName = 'Diane'
EXEC HumanResources.Get EmployeeInfo
@LastName, @FirstName
(4)使用output参数执行存储过程
declare @result decimal(10, 2)
EXEC dbo.ComputePlus 123, 568, @result output
print @result
drop procedure HumanResources.Get EmployeeInfo
(2)修改存储过程
alter procedure
object_definition
create trigger trigger_name
on table_name_or_view_name
with encryption
{for|after|instend of}{[delete][,][insert][,][update]}
as sql_statement
(2)创建DDL触发器
create trigger trigger_name
on {all server|database}
with encryption
{for|after}{event_type}
as sql_statement
sp_addumpdevice 'device_type',’logical_name‘,’physical_name‘
EXEC sp_addumpdevice 'disk', 'testfile', 'c:\temp\testfile.bak'
5. 创建临时性备份文件
backup database master
to disk = 'c:\temp\masterBackup_1215.bak'