SQL Server总结(基本涵盖Sql的所有操作)
--############################################################################# /* 缩写:
DDL(Database Definition Language): 数据库定义语言
DML(Database Manipulation Language): 数据库操作语言
DCL(Database Control Language): 数据库控制语言
DTM(Database Trasaction Management): 数据库事物管理
知识概要:
|---1.查询Select
|
|---2.数据库定义语言DDL: 对表,视图等的操作, 包括create,drop,alter,rename,truncate
|
数据库操作--|---3.数据库操作语言DML: 对记录进行的操作, 包括insert,delete,update
|
|---2.数据库控制语言DCL: 对访问权限等的操作, 包括grant,revoke
|
|---2.数据库事物管理DTM: 对事物的操作, 包括commit,rollback,savepoint
事物的是由DML(insert,delete,update)开启的;
而引起事物的提交或结束原因有:
.DTM操作: commit,rollback,savepoint
.系统崩溃宕机: 隐式rollback
.正常: 隐式commit
.DDL和DCL操作: DDL(create,drop,alter,rename,truncate)
DCL(grant,revoke)
注意MS-Sql的特殊处:
MS-Sql中的事物: 自动事物(commit)和手动事物(begin transaction).
在Sql中DML(insert,delete,update)会引起自动事物commit, 而Oracle中不会
MS-Sql的参数: 只能返回0或非0(如: 1,2)数字
MS-Sql的存储过程: 一定会有返回值(return value), 默认返回0(成功). 在程序获取改值, 需要创建return参数对象(添加到参数列表), 并设定其方向.
MSSqlServer的登录过程分两种:
. Windows集成验证: windows用户名和口令 -> SqlServer登录列表 -> 映射到用户列表-> 登录成功
. SqlServer验证: Sql用户名和口令 -> 映射到用户列表 -> 登录成功
两种登录方式的连接串:
string connectionStr = "data source=.;database=Test;user id=sa;password=sa"; string connectiongStr ="data source=.\sqlexpress;database=Test;integrated security=true";
数据库设计原则:
. 数据库设计指导原则(关系数据库中的数据通过表来体现): 先确定表后确定业务字段. 每个业务对象在数据库中对应一张表(若业务对象复杂则可对应多张表), 业务对象间每有一个关系也要对应一张表.
注意: 业务字段需要跟项目结合, 例如: 学生的健康情况可以用一个字段(优、良等)表示, 但针对健康普查, 学生的健康情况需进一步划分为身高、体重、血压等
如: 学校中的学生对象: 学院表(学院ID, 专业ID); 专业表: 专业表(专业ID, 专业名);学生表(学生ID, 学院ID,专业ID)
. 数据库设三大计原则:
a. 完整性: 设计方案能够保存项目中的各种信息(要全)
b. 低冗余: 通过主键保证记录的不重复、通过表间关系减少冗余字段
c. 尽可能满足3范式(NormalForm):
1NF: 1个字段只能包含一个业务信息片(即项目中的业务字段表示的信息不可再分)
NF: 能找到1个或多个字段的组合, 用来唯一的确定表中的记录(即必须有主键).
NF: 主键唯一且直接确定表中的其他字段(即无传递依赖, 如: 教师id, 办公室id, 办公室电话关系中存在传递依赖)
注意事项: 尽可能不用业务字段做主键, 通常的手段为自增列当主键, 并且末尾添加默认时间字段(getdate()).
尽量采用SQL92代码, 保证可移植性. 如: 在Sql2000中, top函数只能跟常量(Sql2005可跟变量). 通用的解法为拼Query串, 用exec(query串)取结果
备注:
Sql中使用+拼接字符串, Oracle中使用||拼接字符串.
C#数据类型:
整数: sbyte,byte,short,ushort,int,uint,long,ulong
实数: float,double,decimal
字符: char,string
布尔: boolean
日期: datetime
对象: object
全局唯一标识: GUID
Sql数据类型:
整数: bit(0,1),tinyint(8),smallint(16),int(32),bigint(64)
实数: float,real,numeric
字符: char(8000),nchar(4000),varchar(8000),nvarchar(4000),ntext
日期: smalldatetime(1900,1,1-2079,6,6),datetime(1753,1,1-9999,12,31)
货比: money
二进制: binary
图像: image
标识: uniqueidentity
*/
--#############################################################################
######
--创建数据库:
ifexists(select*from sysdatabases where[name]='TestStudent')
dropdatabase TestStudent
go
createdatabase TestStudent
on
(
name ='TestStudent_DB', --数据库逻辑名
filename ='D:\WorkCode\DB\TestStudent.mdf',
size =3,
filegrowth =10,
maxsize =100
)
log
on
(
name ='TestStudent_Log',
filename ='D:\WorkCode\DB\TestStudent.log',
size =3,
filegrowth =10,
maxsize =100
)
go
--############################################################################# ######
use TestStudent
go
--创建表, 约束类型: 主键、外键、唯一、check约束、非空约束
ifexists( select*from sysobjects where[name]='T_Student'and[type]='U') droptable T_Student
go
createtable T_Student
(
Sno intidentity(100,1) primarykey, --可以使用scope_identity获得刚生成的id Sname nvarchar(50) notnull,
Sgender nchar(1),
Sage tinyintcheck(Sage >=20and Sage <=30),
home nvarchar(100) default('北京'),
idcard nvarchar(18) unique
go
ifexists( select*from sysobjects where[name]='T_Score'and[type]='U')
droptable T_Score
go
createtable T_Score
(
id intprimarykey,
Sno intidentity(100,1) foreignkeyreferences T_Student(Sno),
Score tinyint
)
go
--修改表结构
altertable T_Student
add Education nchar(3)
go
altertable T_Student
dropcolumn Education
go
--修改表约束
altertable T_Student
addconstraint PK_Sno primarykey(Sno),
constraint CK_gender check(gender in('男','女')),
constraint DF_home default('北京') for home,
constraint UQ_idcard unique(idcard)
go
altertable T_Score
addconstraint FK_Sno foreignkeyreferences T_Student(Sno)
go
--创建联合主键
altertable T_SC withnocheck
addconstraint[PK_T_SC]primarykeynonclustered(
studentId,
courseId
)
go
--############################################################################# ######
--新增(插入)数据
insertinto T_Student(Sname,Sgender,Sage) values('张三','男',23)
insertinto T_Student(Sname,Sgender,Sage)
select'李四','男',25union
select'王五','女',26union
select'赵六','男',28
go
--删除数据
truncatetable T_Student --只删除表的数据
deletefrom T_Student where sgender ='男'
--修改数据
update T_Student set sgender ='女'where sgender='男'
--############################################################################# ######
--查询数据
select*from T_Student where sgender ='女'
selecttop3*from T_Student --选择前三项, top 3是用来筛选记录的, 所以得紧跟select, 不用考虑字段顺序
selecttop40percent*from T_Student --选择前百分之几的记录
select sname as'姓名', '年龄'= sage from T_Student --起别名的两种方式as和= select*from T_Student where sage >=20and age <=30
select*from T_Student where sage between20and30
select*from T_Student where sage isnull
select sname into T_Stu from T_StuInfo --用T_StuInfo中的sname字段创建新表
--模糊查询呢: 通配符: %(0-任意字符), _(1个字符),[abc](选择含a或b或c),[^abc](选择不含a或b或c)
select*from T_Student where sname like'张%'
select*from T_Student where sname like'王_'
select*from T_Student where sname like'[张李]%'
select*from T_Student where sname like'[^张李]%'
--############################################################################# ######
--排序: order by子句的结果将额外生成一个新表(2字段: 原位置索引字段和排好序的字段)
select*from T_Student orderby Sage desc--默认是升序asc
--############################################################################# ######
--聚合函数: 若有聚合函数, 即使不写group by 子句, 也会默认将表分为一个大组selectsum([sid]) from T_StuScore
selectcount([sid]) from T_StuScore --count(*)表示记录数, 而count(字段)忽略掉null 值
selectavg([sid]) from T_StuScore
selectmax([sid]) from T_StuScore
selectmin([sid]) from T_StuScore
selectdistinct([sid]) from T_StuScore
--############################################################################# ######
--分组函数, where用于对记录的筛选, having用于对组的筛选
select gender,Counter =count(*) from T_Stuinfo groupby gender
select gender,Counter =count(*) from T_Stuinfo groupby gender havingcount(*) >=2
--############################################################################# ######
--表连接: 笛卡尔积(m*n条记录), 内连接, 外连接(左外连接、右外连接、全外连接)
--笛卡尔积
select sname,[sid],cid,score
from T_StuInfo s crossjoin T_StuScore c on s.[sid]= c.[sid]
--内连接: 先从m和n中选择, 然后再连接
select sname,[sid],cid,score
from T_StuInfo s innerjoin T_StuScore c on s.[sid]= c.[sid]
--左外连接(左连接): 内连接 + 左表剩余记录(右表记录置null)
select sname,[sid],cid,score
from T_StuInfo s leftjoin T_StuScore c on s.[sid]= c.[sid]
--右外连接(右连接): 内连接 + 右表剩余记录(左表记录置null)
select sname,[sid],cid,score
from T_StuInfo s rightjoin T_StuScore c on s.[sid]= c.[sid]
--全外连接(全连接): 内连接 + 左表剩余记录(右表记录置null) + 右表剩余记录(左表记录置null)
select sname,[sid],cid,score
from T_StuInfo s fullouterjoin T_StuScore c on s.[sid]= c.[sid]
--############################################################################# ######
--函数: 字符串函数、日期函数、数学函数、系统函数
--字符串函数
printcharindex('1','ab1cd') --Sql中下表从1开始, 类似于C#中indexof、lastindexof, 返回包含'1'的下表位置
printlen('abcd') --C#中的length
printlower('ABCD') --ToLower(), ToUpper()
printupper('abcd') --ToUpper()
printltrim(' abcd') --LTrim()
printrtrim('abcd ') --RTrim()
printrtrim(ltrim(' abcd ')) --Trim()
printright('abcd',2) --从右截取, C#中的SubString(length-3,2)截取下表从0开始的2个
printleft('abcd',2) --SubString(0,2)
printreplace('abcdef','cd','1234') --Replace(), 用1234替换cd
update[card]set[passWord]=Replace(Replace([PassWord] ,'O','0'),'i','1') from T_UserInfo
printstuff('abcdef',2,3,'#') --填充替换, 从第2个开始的3个字符替换成#
printcast('2010-11-08'asdatetime) --数据类型转换
printconvert(datetime,'2010-11-08') --数据类型转换
printstr(67) --数字变字符串
printnewid() --新uniqueidentifier, 它将会为记录临时添加一列, 且内容是随机的printgetdate() --获得当前日期
--日期函数
printgetdate() --DateTime.Now
printdateadd(yyyy,10,'2010-1-2') --增加10年
printdateadd(mm,2,getdate()) --增加月, 其他可以查sql联机丛书
printdatediff(yyyy,'1985-12-13','2010-10-10') --时间差距
printdatediff(dd,'1985-12-13','2010-10-10') --时间差距
printdatename(mm,'2010-10-01') +'2'--返回月份+'2'
printdatepart(mm,'2010-10-01') +'2'--日期10+2,结果为12
--数学函数
printabs(-100) --求绝对值, Abs()
printceiling(10.05) --取整数, 如果有小数则进1
printfloor(10.05) --取整数, 忽略小数
printround(10.567,2) --四舍五入
printpower(10,2) --求幂运算
printsqrt(108) --求平方根
printrand(10) --只能选择0-1之间的数, Random.Ran(0,1)
printrand(10)*10--随机0-10之间的数
printsign(30) --只返回±1
print'abcd'+convert(nvarchar(10),5) --ToString()
print'abcd'+cast(5asnvarchar(10)) --同上
printdatalength('1+1=2') --返回表达式的字节数
printcurrent_user--返回当前登录的角色
printhost_name() --返回当前计算机名
printsystem_user--返回当前用户id
printuser_name() --给定用户id返回其角色名
printisnull(filedname,0) --替换null为0
raiserror('抛出异常',16,1) --抛出异常, 1-15被系统占用, 对应C#中的throw
select*from sysobjects whereobjectproperty(id,N'IsUserTable') =1--判断是否用户表(y=1,n=0), N表示后边的串为unicode字符串.
select*from sysobjects where type='U'--等价于上一行
select databasepropertyex('Northwind','IsBrokerEnabled') --查询该库是否开启缓存技术中的通知机制, 1为开启, 0为关闭
alterdatabase northwind set enable_broker --开启数据库中, 缓存技术中的通知机制--注意以下三个函数的用法 eg: 结果集(1,5,11,17,19,25)
select row_number() over(orderby[sid]) from T_StuInfo --1,2,3,4,5,6
select rank() over(orderby[sid]) from T_StuInfo --1,1,1,4,5,6
select dense_rank() over(orderby[sid]) from T_StuInfo --1,1,1,2,3,4
select ntile(2) over(orderby[sid]) from T_StuInfo --1,5 11,17 19,25
select row_number() over(orderby[sid]) as sequence, sname, age, (case gender when'0'then'男'else'女'end) gender
from T_StuInfo s leftjoin T_StuScore c on s.sid = c.sid
go
--############################################################################# ######
--范式: 1NF: 原子性, 2NF: 单主键, 3NF: 去除传递依赖
--E-R模型(表间关系): 1对1:任何一个表添加外键; 1对多: 在多的一方添加外键; 多对多: 需要第三个表, 添加前两表的外键
--############################################################################# ######
--变量
--系统变量:
select*from T_StuInfo
print@@identity; --获得结果集最大标识值
print@@error; --有错误, 返回大于0的数; 无错误返回0
print@@rowcount; --返回结果集的行数
declare@agetinyint
declare@age2tinyint
declare@namenvarchar(20)
declare@name2nvarchar(20)
set@age=15--一次只能对一个量变赋值
select@name='张三',@name2='李四'--一次性给多个变量赋值
select@age2=max(age) from T_StuInfo --可以用在查询语句中
print@age
print@age2
print@name
print@name2
--############################################################################# ######
--条件表达式
declare@ageint
set@age=1
if (@age<20)
begin
set@age=@age+1
end
else
begin
set@age=@age-1
end
--循环
declare@indexint
declare@sumint
set@index=1
set@sum=0
while (@index<11)
begin
set@sum=@sum+@index
set@index=@index+1
end
print@sum
--批处理Sql语句: 练习---打印三角形, 即成批处理语句+go即可, 只访问一次数据库declare@rowint
declare@colint
declare@nint--总行数
declare@resultnvarchar(2000)
set@row=0
set@col=0
set@n=10--可以修改n的值
set@result=''
while (@row<@n)
begin
set@col=0--复位
set@result=''
while (@col<@n+@row)
begin
if (@col<@n-@row-1)
begin
set@result=@result+''
end
else
begin
set@result=@result+'*'
end
set@col=@col+1
end
print@result
set@row=@row+1
end
go
--case when
--搜索case when(用于一个范围)
select'评语'=casewhen SqlServer>=90then'优秀'
when SqlServer >=80and SqlServer <90then'良'
when SqlServer >=60and SqlServer <80then'及格'
else'不及格'
end
from T_StuInfo
--简单case when(类似swtich, 用于一个定值)
declare@genderbit
set@gender='true'
printcase@genderwhen'true'then'男'else'女'end
--############################################################################# ######
--事物: 事物的特性ACID(一致性(Consistency)、原子性(Atomicity)、隔离性(Isolation)、持久性(Durability))
declare@errorcountint
set@errorcount=0
begintransaction--if控制事物的提交
begin
update T_StuInfo set age = age +1where gender ='男'
set@errorcount=@@error--@@error无错误返回0, 有错误返回非0的数
update T_StuInfo set age = age -1where cardno ='女'
set@errorcount=@errorcount+@@error
if(@errorcount=0)
begin
commit
end
else
begin
rollback
end
end
begintransaction--异常控制事物提交, raiserror('XXXXX',16,1)用于抛出xxxx的异常begin
begin try
update T_StuInfo set age = age +1where gender ='男'
update T_StuInfo set age = age -1where cardno ='女'
commit
end try
begin catch
raiserror('性别字段输入了不合适的字符',16,1) --1-15级为系统使用
rollback
end catch
end
--############################################################################# ######
--索引: 聚集索引(Clustered Index)或称物理所引,非聚集索引(Nonclustered Index)或称
逻辑索引,唯一索引(Unique Index),主键索引(PK Index)
--优缺点: 查询快, 但增删改慢.
--何时用: 数据量特别大的情况适合建索引; 经常查找的字段建索引(聚集索引, 此时要求取消主键索引)
--注意事项:
-- 使用索引时, 需要注意查询时的where子句: 若有索引, 先查索引, 之后再根据索引查找原表记录位置, 拼接结果; 若无索引, 则不查索引, 直接拼结果.
-- 如此, 针对索引字段, 若从带where的查询结果中去掉前5项(不带where), 则会出现错误(真分页有类似情况).
-- 解决方案: 在子查询中也添加排序字段的永真where条件, 如: where sortfield > -1 selecttop20 sortfiled, filed1 from T_S where sortfiled notin (selecttop5 sortfiled from T_S where sortfiled >-1)
createclusteredindex idx_age on T_StuInfo(age) --创建聚集索引(每表仅一份), 将对记录排序, 而且索引将会和表保存在一起(采用二分查找)
createnonclusteredindex idx_age on T_StuInfo(age) --创建非聚集索引(任意多个), 不排序但会创建独立表(含2列: 原表中的位置索引,已排序的字段)
--############################################################################# ######
--视图: 将会创建一张虚拟表, 且对视图的insert、delete和update操作会修改源数据, 但工作中禁止通过视图修改源数据.
-- 视图就是个Sql语句, 也就是Select结果的虚表, 视图相当于虚表的别名而已.
-- 注意: 视图的别名的使用.
--优点: 代码易读; 经过预编译(存储过程也是预编译的), 效率高; 屏蔽了表结构, 比较安全性; 缺点: 增加管理开销
ifexists(select*from sysobjects where[name]='V_SnoName'and[type]='V')
dropview V_SnoName
go
createview V_SnoName
as
select[sid],sname from T_StuInfo
go
select*from V_SnoName
select*from T_StuInfo
insertinto V_SnoName(sname) values('候八')
--############################################################################# ######
--存储过程(Stored Procedure): sp_help查看SP以及sp参数的信息, sp_helptext查看SP内部代码
ifexists(select*from sysobjects where[name]='P_Triangle'and[type]='P') dropprocedure P_Triangle
go
createprocedure P_Triangle(
@nint
) with encryption --加密, 不影响编译但将无法查看SP内部代码(sp_helptext) as--局部变量
declare@rowint
declare@colint
declare@resultnvarchar(2000)
begin
set@row=0
set@col=0
set@result=''
while (@row<@n)
begin
set@col=0--复位
set@result=''
while (@col<@n+@row)
begin
if (@col<@n-@row-1)
begin
set@result=@result+''
end
else
begin
set@result=@result+'*'
end
set@col=@col+1
end
print@result
set@row=@row+1
end
end
go
exec P_Triangle 10
sp_help P_Triangle --查看SP及其参数的信息
sp_helptext P_Triangle --查看SP内部代码
declare@resultint--以下代码证明, SP默认返回值为0
set@result=-1
exec@result= P_Triangle 15
print@result
--存储过程 + 事物 + 输出参数
ifexists(select*from sysobjects where[name]='P_InsertRecord'and[type]='P') dropprocedure P_InsertRecord
go
createprocedure P_InsertRecord(
@snamenvarchar(20),
@gendernchar(1) ='男', --等号后边是默认值
@agetinyint,
@statusnchar(2),
@birdatedatetime,
@retrunsidint output --用以保存该记录的主键
)
as--局部变量
begintransaction
begin
begin try
insertinto T_StuInfo(sname,gender,age,[status],birdate)
values(@sname,@gender,@age,@status,@birdate)
set@retrunsid=@@identity
commit
return0
end try
begin catch
raiserror('插入数据异常',16,1)
rollback
return1
end catch
end
go
declare@sidint--保存输出参数
declare@returnint--保存返回值
exec P_InsertRecord '测试2','男',35,'毕业','1977-06-07',@sid output
exec@return= P_InsertRecord '测试2','男',35,'毕业','1977-06-07',@sid output --用@return接受SP返回值
print@sid
print@return
--############################################################################# ######
--触发器: 执行时将自动创建inserted或deleted临时表(update, 同时创建两表), 且均
是只读的; 因为无调用痕迹, 系统调试时增加困难
ifexists(select*from sysobjects where[name]='TR_DelStu'and[type]='TR') droptrigger TR_DelStu
go
createtrigger TR_DelStu --级联删除
on T_StuInfo
instead ofdelete--(for,after,instead of), 注意for和after效果是一样的
as
declare@currentidint
begintransaction
begin
begin try
--set @currentid = (select [sid] from deleted) --insert和update会用到临时表inserted
select@currentid=[sid]from deleted
deletefrom T_StuScore where[sid]=@currentid
deletefrom T_StuInfo where[sid]=@currentid
commit
end try
begin catch
raiserror('删除失败操作异常',16,1)
rollback
end catch
end
deletefrom T_StuInfo where[sid]=3
--############################################################################# ######
--用户定义函数(User Defined Function): 标量函数、内嵌表值函数、多语句表值函数--标量函数(Scalar Functions)
ifexists(select*from sysobjects where[name]='GetCountByGender'and[type]='FN') dropfunction GetCountByGender
go
createfunction GetCountByGender
(
@gendernchar(1) --函数的参数列表
)
returnsint--函数的返回值类型
as
begin
declare@countint--返回值变量
set@count= (
selectcount([sid])
from T_StuInfo
where gender =@gender
)
return@count--执行返回
end
go
select dbo.GetCountByGender('男') as 数量 --调用函数时, 必须加上所有者
--内嵌表值函数(Inline Table-valued Functions)
ifexists(select*from sysobjects where[name]='GetInfoByStatus'and[type]='IF') dropfunction GetInfoByStatus
go
createfunction GetInfoByStatus
(
@statusnchar(2) --参数列表
)
returnstable--返回值为数据表
as
return
(
select*
from T_StuInfo
where[status]=@status
)
go
select*from dbo.GetInfoByStatus('毕业') --调用函数时, 必须加上所有者
go
--多语句表值函数(Multistatement Table-valued Functions)
ifexists(select*from sysobjects where[name]='GetNameBySegAge'and[type]='TF') dropfunction GetNameBySegAge
go
createfunction GetNameBySegAge
(
@firstageint, --18岁
@secondageint, --18-30岁
@thirdageint--30岁以上
)
returns@infotabletable--定义返回值变量(table类型), 以及返回值表的字段
(
AgeSegment nvarchar(30),
countnum int
as
begin
--局部变量, 用于填充返回值表
declare@currentcountint--当前年龄段的计数
declare@currentdescnvarchar(30) --当前年龄段的描述
set@currentcount= (selectcount([sid]) from T_StuInfo
where age<@firstage)
set@currentdesc='小于(含)-'+Convert(nvarchar(10),@firstage)+'岁'
insertinto@infotable(AgeSegment,countnum) values(@currentdesc,@currentcount)
set@currentcount= (selectcount([sid]) from T_StuInfo
where age>=@firstageand age<@secondage)
set@currentdesc=Convert(nvarchar(10),@firstage)+'岁(含)-'+Convert(nvarchar(10),@secondage)+'岁'
insertinto@infotable(AgeSegment,countnum) values(@currentdesc,@currentcount)
set@currentcount= (selectcount([sid]) from T_StuInfo
where age>=@secondageand age<@thirdage)
set@currentdesc=Convert(nvarchar(10),@secondage)+'岁(含)-'+Convert(nvarchar(10),@thirdage)+'岁'
insertinto@infotable(AgeSegment,countnum) values(@currentdesc,@currentcount)
set@currentcount= (selectcount([sid]) from T_StuInfo
where age>=@thirdage)
set@currentdesc=Convert(nvarchar(10),@thirdage)+'岁(含)-不限'
insertinto@infotable(AgeSegment,countnum) values(@currentdesc,@currentcount)
return--执行已定义的返回值表的返回操作
end
go
select*from dbo.GetNameBySegAge(20,30,40) --调用函数时, 必须加上所有者
--############################################################################# ######
--游标:
begintransaction MoveUserInfoTrans
begin
declare@errcountint
set@errcount=0
declare MoveUserInfoTwo cursor--声明游标
select userid,userpwd from UserInfoTwo
open MoveUserInfoTwo --打开游标,准备开始读取操作
declare@useridnvarchar(20),@userpwdnvarchar(30)
fetchnextfrom MoveUserInfoTwo into@userid,@userpwd--执行读取while(@@fetch_status=0)
begin
insertinto UserInfoOne(userid,userpwd) values (@userid,@userpwd)
if(@@error!=0) --验证单次操作的是否成功
begin
set@errcount=@errcount+1
break
end
fetchnextfrom MoveUserInfoTwo into@userid,@userpwd--取下一条
end
close MoveUserInfoTwo --完成游标操作,关闭游标
deallocate MoveUserInfoTwo --释放游标
if(@errcount=0) --用if验证事务的操作过程
begin
committransaction MoveUserInfoTrans
print'事务已成功提交!'
end
else
begin
rollbacktransaction MoveUserInfoTrans
print'执行过程出错,事务已回滚!'
end
end
go
大学计算机考试重点 1、CAD是指_计算机辅助设计。 2、CAM是指_计算机辅助制造 3、在计算机工作时,内存用来存储当前正在使用的程序和数据。 4、机器语言和汇编语言是低级语言。 5、 CAI是指计算机辅助教学。 6、关掉电源后,RAM的存储内容会丢失_。 7、只读存储器简称ROM。 8、 8位二进制数所表示的最大的无符号十进制整数为255。 9、电子元件的发展经过了电子管、晶体管、集成电路和大规模集成电路4个阶段。 10、计算机病毒一般具有破坏性、传染性、隐蔽性、潜伏性等特点。 11、根据规模大小和功能强弱,计算机可分为巨型机、大型机、中型机、小型机和微型机。12、 bit的意思是位_。 13、计算机可分为主机和外设两部分。 14、随机存储器简称内存。 15、计算机主要是运算速度快,存储容量大,精度高。 16、存储器分为内存储器和外存储器两类。 17、运算器和控制器合称为中央处理器。 18、在微型计算机中常用的总线有地址总线、数据总线和控制总线。 19、计算机的存储容量通常都使用KB、MB或GB等单位来表示。 20、在计算机内部,一切信息均表示为二进制数。 21、根据软件的用途,计算机软件一般分为系统软件和应用软件。 22、计算机系统硬件包括运算器、控制器、存储器、输入设备和输出设备。 23、常用鼠标器有机械式和光电_式两种。 24、随机存储器的英文缩写是RAM。 25、汇编语言是一种低级的计算机语言。 26、计算机中的数,除十进制、二进制、八进制外,还常用十六进制_。 27、将十进制数-35表示成二进制码11011101,这是补码码表示。 28、中央处理器是计算机系统的核心。 29、计算机的语言可分为机器语言、汇编语言和高级语言3类。 30、八进制数126对应的十进制数是86_。 31、控制器_是对计算机发布命令的“决策机构”。 32、程序必须位于_内存内,计算机才可以执行其中的指令。 33、将十进制数34转换成二进制数是101110_。 34、CPU在存取存储器中的数据时是按字节_进行的。 35、微型计算机的字长取决于总线宽度宽度。 36、软盘的每一面包含许多同心圆,称为磁道。 37、软盘上的写保护口可以防止用户将非法数据写到磁盘上。 38、常用的鼠标器有两种:机械式和光电式鼠标。 39、目前,局域网的传输介质主要是双绞线、同轴电缆和光纤。 40、用户要想在网上查询WWW 信息,必须安装并运行一个被称为浏览器的软件。 41、Internet 称为国际互联网。
SQL Server 数据库基本知识点一、数据类型
二、常用语句 (用到的数据库Northwind) 查询语句 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。例如,下面的语句查询Customers 表中公司名称为“Alfreds Futterkiste”的ContactName字段和Address字段。 SELECT ContactName, Address FROM Customers WHERE CompanyName='Alfreds Futterkiste' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示Customers表中所有列的数据: SELECT * FROM Customers 2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT ContactName, Address FROM Customers 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题 as 列名 列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT ContactName as 联系人名称, Address as地址 FROM Customers 4、删除重复行
SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 SELECT DISTINCT(Country) FROM Customers 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT 时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: SELECT TOP 2 * FROM Customers SELECT TOP 20 PERCENT * FROM Customers (二)FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在Orders和Customers表中同时存在CustomerID列,在查询两个表中的CustomerID时应 使用下面语句格式加以限定: select * from Orders,Customers where Orders.CustomerID =Customers.CustomerID 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名 表名别名 select * from Orders as a,Customers as b where a.CustomerID =b.CustomerID SELECT不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。 例如: select * from Customers where CustomerID in (select CustomerID from Orders where EmployeeID=4) 此例中,将SELECT返回的结果集合给予一别名CustomerID,然后再从中检索数据。 (三) 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据:select CustomerID from Orders where EmployeeID=4
动态语句基本语法 1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_executesqlN'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL declare @fnamevarchar(20) set @fname = 'FiledName' Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。exec('select ' + @fname + ' from tableName') -- 请注意加号前后的单引号的边上加空格 当然将字符串改成变量的形式也可 declare @fnamevarchar(20) set @fname = 'FiledName' --设置字段名 declare @s varchar(1000) set @s = 'select ' + @fname + ' from tableName' exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from tableName' exec(@s) -- 成功 exec sp_executesql @s -- 此句正确 3. 输出参数 declare @numint, @sqlsnvarchar(4000) set @sqls='select count(*) from tableName' exec(@sqls) --如何将exec执行结果放入变量中? declare @numint, @sqlsnvarchar(4000) set @sqls='select @a=count(*) from tableName ' execsp_executesql @sqls,N'@aint output',@num output select @num 1 :普通SQL语句可以用Exec执行例: Select * from tableName Exec('select * from tableName')
计算机基础知识教程(硬件篇) 1、计算机的cpu: (1)运算器和控制器组成(3—5个月更新一次) (2)Intel和AMD公司为主流CPU (3)Intel的赛扬与奔腾已过时,目前为酷睿i系列为主流;AMD 略 (4)Cpu的核心类型:即芯片中的电路设计方案 (5)生产工艺:纳米技术,精细到何种程度,越小说明月先进,产品越精密 (6)核心数量:cpu小红处理核心的数量(牵涉到超线程技术) (7)缓存:集成在cpu中的高速储存器,临时存储,提高cpu的处理速度。一般分为三 级缓存,L2或L3的缓存越大性能越好 (8)品牌与系列确定后,相同系列的区别参数:主频率,cpu内核工作的时钟频率,GHz, 越高处理速度越快 (9)Cpu接口:cpu与主板连接的插口(不同时期的cpu接口不同),intel主流LGA 1155 (1155个金属针脚)接口。Intel与AMD的接口不同。 (10)是否集成了显示处理芯片(注意集成显卡类型) (11)T DP技术、功率、超线程技术等。 (12)C pu配有散热器,温度很高,很容易烧坏cpu:类型有风冷式(主流)、水冷式等。 (风冷式原理:通过散热片传递热量,然后利用风扇将热量吹散到空气中)。注意 风扇风量以及噪音。散热器与不同的cpu相对应。 2、计算机的主板: (1)连接各部件的物理通道、数据传输的逻辑通道,微机系统中最大的电路板。知名品牌:华硕(元器件质量较为稳定),根据cpu所制定 (2)适用类型:台式、笔记本 (3)(芯片厂商是指南北桥芯片)南北桥芯片:主板上的核心部件,影响着整个主板的性能。近期趋向于简化南桥芯片,保留北桥芯片(有散热器)。插槽较多所 包围的芯片,为北桥芯片。 (4)支持的cpu类型(一般会有注明) (5)主板的构架:主板各元器件的大小、形状以及排列次序,所使用的电源规格等制定的通用标准。A TX是目前最主流的构架(扩展插槽较多,PCI插槽有4—6 个)。Micro A TX又称Mini ATX是A TX的简化版(扩展槽较少,PCI插槽在3 个以及3个以下)。PCI:PCI插槽是基于PCI局部总线(Peripheral Component Interconnection,周边元件扩展接口)的扩展插槽,是主板的主要扩展插槽,通 过插接不同的扩展卡可以获得电脑能实现的几乎所有功能,是名副其实的“万用” 扩展插槽(内存插槽除外)。 (6)PCI是通用总线接口,已经逐步淘汰,目前用于各类慢速窄带宽的设备,如声卡,网卡,TV卡等............PCI显卡是99年以前普遍使用的显卡,目前已很少使用。 PCI-E是增强型通用总线接口,是04年以后发展起来的替代AGP和PCI的新式 总线接口,目前已经开始普及。PCI-EX16显卡是取代AGP显卡的新显卡。 (7)AGP(Accelerate Graphical Port),加速图形接口。随着显示芯片的发展,PCI 总线日益无法满足其需求。英特尔于1996年7月正式推出了AGP接口,它是 一种显示AGP显卡图片卡专用的局部总线。严格的说,AGP不能称为总线, 它与PCI总线不同,因为它是点对点连接,即连接控制芯片和AGP显示卡,但
计算机基础知识知识点归纳: 1、世界上第一台电子计算机诞生于 1946年 世界第一台电子计算机的英文名称是。(答案O A.ENIAC B.IBM https://www.doczj.com/doc/9e715773.html, D.PC ' 世界第一台电子计算机于 _____________ 年诞生。(答案:B ) A.1940 B.1946 C.1960 D.1980 .体系。(答案:B ) A.比尔?盖茨 B.冯?诺依曼 C.唐纳德?希斯 D.温?瑟夫 2、世界上首次提出存储程序计算机体系结构的是 B _ 型计算机。 B 冯?诺依曼 C 温?瑟夫 D 唐纳德?希斯 【计算机的特点】 1.处理速度快 '现代计算机的运算速度可以达到每秒钟数千亿次 (通常以每秒钟完成基本加法指令的数目来 '表示计算机的运算速度),这不仅使得许多大型数据处理工作时间大大缩短,促成了天气预 '报、数值模拟等技术的广泛应用,更使得许多实时控制、在线检测等处理速度要求较高的工 '作得以实现。同时,计算机具有很高的逻辑运算速度, 这使得计算机在非数值数据领域中得 '到了广泛的应用。 ' 2 .运算精度高 '计算机一般都有十几位甚至更多位的有效数字,加上先进的算法,可得到很高的计算精度。 '例如,对圆周率n 的计算,在没有计算机的情况下, 数学家要经过长期的努力才能算到小数 '点后500多位,而使用第一台计算机仅仅用了 40秒钟就打破了这一记录。 ' 3 .具有逻辑运算和记忆能力 :计算机的存储器具有存储数据和程序的功能, 它可以存储的信息量越来越大。计算机不仅可 '以进行算术运算,而且可以进行逻辑运算,可以对文字、符号等进行判断、比较,因而可解 '决各种不同类型的问题。 ' 4 .具有自动控制能力 '计算机内部的操作、 运算是在程序的控制下自动进行的, 它能够按照程序规定的步骤完成指 定的任务,而不需要人工干预。 ' 5 .通用性强 '计算机是靠存储程序控制进行工作的。 在不同的应用领域中, 只要编写和运行不同的应用软 :件,计算机就能在任一领域中很好地完成工作。针对不同的需要, 设计不同的程序,这就能 '使计算机具有很强的通用性。 'I 计算机的特点有 A.运算速度快 B.具有逻辑判断功能 C.存储容量大 D.计算精度高 【计算机的发展历程】 1.第一代:电子管计算机(1946年—1958年) 1946 年 2 月,世界上第一台电子数字计算机 ENIAC (Electronic Numerical Integrator And 现代的计算机系统都属于 冯?诺依曼 现代计算机时 A 比尔?盖茨 。(答案:ABCD )
计算机应用基础知识点第一、二章 1.计算机产生:1946年2月由美国宾夕法尼亚大学研制成功的ENIAC是世界上第一台电子数字计算机。“诞生了一个电子的大脑”致命缺陷:没有存储程序。 2.计算机发展:电子技术的发展促进了电子计算机的更新换代:电子管、晶体管、集成电路、大规模及超大规模集成电路 电子计算机发展时间: 第一代1946-1958 电子管计算机,主要应用科学计算和军事计算 第二代1958-1964 晶体管计算机,主要应用于数据处理领域 第三代1964-1971 集成电路计算机,主要应用于可科学计算,数据处理,工业控制等领域 第四代1971年以来至今超大规模集成电路计算机,深入到各行各业,家庭和个人开始使用计算机 3.计算机应用:科学计算;数据处理;过程控制;计算机辅助;人工智能;通信与网络 1.科学计算(主要是科学研究等数学计算问题) 2.数据及事务处理(非科技方面的数据管理和计算处理) 3.过程控制(主要用于工业生产过程中的机械控制,多用于航空 航天领域) 4.计算机辅助(计算机辅助设计(CAD)计算机辅助制造(CAM) 计算机辅助教学(CAI)计算机辅助测试(CAT)...) 5.人工智能(主要是只能机器人方向) 6.通信与网络(上网听歌看电影玩游戏,qq聊天等) 计算机的特点:计算机运算速度快、计算精度高、具有自动控制能力、记忆和逻辑判断功能力强、存储容量大、通用性强。 4.计算机信息处理:计算机中的一切信息均采用二进制。(十六进制H,八进制O,十进制D,二进制B) 1.十进制转二进制:整数部分除以2取余,直至商为0;小数部分乘以2取整,直至 小数部分为0或达到所需精度为止。 2.十进制转八进制:方法同上。整数部分除以8,小数部分乘以8。 3.十进制转十六进制:方法同上。整数部分除以16,小数部分乘以16。 二进制的特点:逻辑性强、工作可靠、简化了运算 字符普遍采用的编码是ASCII码,一个字节,8位;汉字使用的编码是GB2312-80,两个字节,16位 5.计算机系统组成:硬件系统和软件系统 ,硬件系统分为主机和外围设备,软件系统分为系统软件和应用软件。 五大硬件:运算器、存储器、控制器、输入设备和输出设备(裸机) CPU的组成:运算器和控制器 (1)运算器:完成算术运算和逻辑运算 (2)存储器 ①分类内存被CPU直接访问,存储容量小、速度快、价格贵
大学计算机基础知识点总结 第一章计算机及信息技术概述(了解) 1、计算机发展历史上的重要人物和思想 1、法国物理学家帕斯卡(1623-1662):在1642年发明了第一台机械式加法机。该机由齿轮组成,靠发条驱动,用专用的铁笔来拨动转轮以输入数字。 2、德国数学家莱布尼茨:在1673年发明了机械式乘除法器。基本原理继承于帕斯卡的加法机,也是由一系列齿轮组成,但它能够连续重复地做加减法,从而实现了乘除运算。 3、英国数学家巴贝奇:1822年,在历经10年努力终于发明了“差分机”。它有3个齿轮式寄存器,可以保存3个5位数字,计算精度可以达到6位小数。巴贝奇是现代计算机设计思想的奠基人。 英国科学家阿兰 图灵(理论计算机的奠基人) 图灵机:这个在当时看来是纸上谈兵的简单机器,隐含了现代计算机中“存储程序”的基本思想。半个世纪以来,数学家们提出的各种各样的计算模型都被证明是和图灵机等价的。 美籍匈牙利数学家冯 诺依曼(计算机鼻祖) 计算机应由运算器、控制器、存储器、 输入设备和输出设备五大部件组成; 应采用二进制简化机器的电路设计; 采用“存储程序”技术,以便计算机能保存和自动依次执行指令。 七十多年来,现代计算机基本结构仍然是“冯·诺依曼计算机”。 2、电子计算机的发展历程 1、1946年2月由宾夕法尼亚大学研制成功的ENIAC是世界上第一台电子数字计算机。“诞生了一个电子的大脑”致命缺陷:没有存储程序。 2、电子技术的发展促进了电子计算机的更新换代:电子管、晶体管、集成电路、大规模及超大规模集成电路 3、计算机的类型 按计算机用途分类:通用计算机和专用计算机 按计算机规模分类:巨型机、大型机、小型机、微型机、工作站、服务器、嵌入式计算机 按计算机处理的数据分类:数字计算机、模拟计算机、数字模拟混合计算机 1.1.4 计算机的特点及应用领域 计算机是一种能按照事先存储的程序,自动、高速地进行大量数值计算和各种信息处理的现代化智能电子设备。(含义) 1、运算速度快 2、计算精度高 3、存储容量大 4、具有逻辑判断能力 5、按照程序自动运行 应用领域:科学计算、数据处理、过程与实时控制、人工智能、计算机辅助设计与制造、远程通讯与网络应用、多媒体与虚拟现实 1.1.5 计算机发展趋势:巨型化、微型化、网络化、智能化
SQL Server数据库入门学习总结 经过一段时间的学习,也对数据库有了一些认识。 数据库基本是由表,关系,操作组成;对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2.数据库是如何操作数据的 insert,update,delete T-sql 函数存储过程触发器 3.数据库是如何显示数据的 select SQLServer数据库学习总结 1.SQL基础 SQL Server2000安装、配置,服务器启动、停止,企业管理器、查询分析器 第一代数据库--网状数据库和层次数据库;第二代数据库--关系数据库 数据库(DB);数据库管理系统(DBMS);数据库系统(DBS) SQL Server 2000 提供了不同版本:企业版、标准版、个人版、开发版 SQL Server中的数据类型:整数:int,smallint,tinyint,bigint;浮点数:real,float,decimal;二进制:binary,varbinary;逻辑:bit;字符:char,nchar,varchar,nvarchar;文本和图形:text,ntext,image;日期和时间:datetime,smalldatetime;货币:money,smallmoney 数据库的创建和删除;数据库表的创建、修改和删除 数据完整性:实体完整性:Primary Key,Unique Key,Unique Index,Identity Column;域完整性:Default,Check,Foreign Key,Data type,Rule;参照完整性:Foreign Key,Check,Triggers,Procedure;用户定义完整性:Rule,Triggers,Procedure;Create Table中得全部列级和表级约束 SQL Server中有5种约束:主键约束(Primary Key Constraint)、默认约束(Default Constraint)、检查约束(Check Constraint)、唯一性约束(Unique Constraint)、外键约束(Foreign Key Constraint). 关系图 数据库设计的步骤:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护 两个实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n) 实体关系模型-- E-R图
第一章计算机及信息技术概述 1.电子计算机的发展历程 ①1946年2月由宾夕法尼亚大学研制成功的ENIAC是世界上第一台电子数字计算机。“诞生了一个电子的大脑”致命缺陷:没有存储程序。 ②电子技术的发展促进了电子计算机的更新换代:电子管、晶体管、集成电路、大规模及超大规模集成电路 电子计算机发展时间: ?第一代 1946-1958 电子管计算机,主要应用科学计算和军事计算 ?第二代 1958-1964 晶体管计算机,主要应用于数据处理领域 ?第三代 1964-1971 集成电路计算机,主要应用于可科学计算,数据处理,工业控制等 领域 ?第四代 1971年以来超大规模集成电路,深入到各行各业,家庭和个人开始使用计算 机 2.计算机的类型 按计算机用途分类:通用计算机和专用计算机 按计算机规模分类:巨型机、大型机、小型机、微型机、工作站、服务器、嵌入式计算机按计算机处理的数据分类:数字计算机、模拟计算机、数字模拟混合计算机 3.计算机的特点及应用领域 计算机是一种能按照事先存储的程序,自动、高速地进行大量数值计算和各种信息处理的现代化智能电子设备。(含义) A.运算速度快运算速度用MIPS(百万条指令每秒)来衡量,是计算机性能的指标之一 B.计算精度高应用于数值计算 C.具有逻辑判断能力信息检索、图形识别 D.记忆性强 E.可靠性高、通用性强应用于数据处理、工业控制、辅助设计(CAD)、辅助制造(CAM) 办公自动化。 应用领域:1)数值计算(主要是科学研究等数学计算问题) 2)数据及事务处理(非科技方面的数据管理和计算处理) 3)自动控制与人工智能(多用于航空航天领域) 4)计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助教学(CAI) 5)通信与网络 4.计算机发展趋势:巨型化、微型化、网络化、智能化 1、光计算机 2、生物计算机 3、量子计算机 5.常用的数制 基数:R进制的基数=R 位权:在数制中,各位数字所表示值的大小不仅与该数字本身的大小有关,还与该数字所在的位置有关,我们称这关系为数的位权。 位权:一个与数字位置有关的常数,位权=Rn
§3.1实验一Sql Server2005的基本操作(2学时) 3.1.1 实验目的 1.熟悉SQL Server2005企业版的安装过程。 2.了解企业管理器的功能,掌握企业管理器的操作方法。 3.掌握数据库服务器的注册、配置、连接等操作。 3.1.2 实验内容和步骤 上机前先阅读本实验的详细内容,简要了解SQL SERVER2005,并完成以下操作: 1. SQL Server2005的安装 参考详细内容进行安装,在安装过程中记录安装的选择,并且对所作的选择进行思考,为何要进行这样的配置,对今后运行数据库系统会有什么影响。 2.启动和停止服务 3.启动SQL Server Management Studio 4.查看数据库属性,了解数据文件、事务日志、权限 注意事项: 1.安装时选择混合方式登录; 2.赋予sa密码。
实验一Sql Server2005的基本操作(详解) 一、安装 下面以Windows xp平台为例,介绍如何安装SQL Server 2005个人开发版。 1.根据安装机器软硬件的要求,选择一个合适的版本,以下以开发版为例 2.将SQL Server 2005 DVD 插入DVD驱动器。如果DVD驱动器的自动运行功能无法启动安装程序无法启动安装程序,请导航到DVD的根目录然后启动splash.hta。 3.在自动运行的对话框中,单击“运行SQL Server 安装向导”。 4.在“最终用户许可协议”页上,阅读许可协议,再选中相应的复选框以接受许可条款和条件。接受许可协议后即可激活“下一步”按钮。若要继续,请单击“下一步”若要结束安装程序,请单击“取消”。如下图: 5.在“SQL Server 组件更新”页上,安装程序将安装SQL Server 2005 的必需软件。有关组件要求的详细信息,请单击该页底部的“帮助”按钮。若要开始执行组件更新,请单击“安装”。更新完成之后若要继续,请单击“完成”。
Microsoft SQL SERVER 2000使用手册 在网络环境下进行数据库系统的应用开发,需要选择具体的DBMS。本章首先介绍当前流行的关系数据库系统Microsoft SQL Server的基本知识,接着以Microsoft SQL Server 2000为背景,介绍数据库系统设计的方法和SQL Server的高级应用技术。 1 SQL Server简介 Microsoft SQL Server是高性能、客户/服务器的关系型数据库管理系统RDBMS,能够支持大吞吐量的事务处理,也能在Microsoft Windows 2000 Server网络环境下管理数据的存取以及开发决策支持应用程序。由于Micriosoft SQL Server是开放式的系统,其他系统可以与它进行完好的交互操作。 1.1 SQL Server 2000的特点 (1)对操作系统的要求低 SQL Server 2000除了继续支持Windows 2000 Server外,还新增了SQL Server 2000桌面版(Desktop Edition),此版本可以安装在Windows 95/98/2000专业版上,用来建立数据库,这使得SQL Server 2000变得非常通用,可以在任何大小的计算机上运行,包括膝上机、台式机和高档服务器。 (2)管理自动化 许多关键性的工作、数据库调整和最佳化处理等都由系统自动完成,减少了人为手工调整。例如,系统会动态调整内存需求,自动缩减库和增加数据库所占文件的空间大小,自动更新统计数据等等。 (3)新的Enterprise Manager 它以MMC(Microsoft Management Console)为基础加以设计,其界面和其他微软服务器产品一致,看上去很像Windows的资源管理器。 (4)简化了SQL Server 2000数据库与Windows文件系统之间的关系,具有更好的可伸缩性在SQL Server 2000中,数据库驻留在操作系统文件上,而不再位于SQL Server的逻辑设备中,取消了以前必须先建立设备(Device),再在设备上建立数据库的观念,现在仅使用CREATE DATABASE 语句即可创建数据库及其所有文件,从而简化了数据库设计和管理的工作。SQL Server 2000允许数据库自动扩展,不再需要管理员发出额外的ALTER语句命令。 (6)提供数据库挖掘功能 在SQL Server 2000中加入的OLAP(On-Line Analytical Processing)服务,可以帮助公司建立决策分析的应用。 1.2 SQL Server 2000环境介绍 1)系统目录用途介绍 若使用默认值,安装程序会把大部分SQL Server 2000系统文件存放在启动盘的MSSQL目录下,并且在此目录下将创建多个子目录,用于存放不同的目的文件,列举如下:\BACKUP 存放备份文件 \Binn 存放客户端和服务器端可执行文件与DLL文件 \Data 存放数据库文件,包括系统数据库、实例数据库和用户数据库 \FTDATA 存放全文索引目录文件 \Install 存放有关安装方面的信息文件 \JOBS 存放工作文件
计算机基础知识 一.计算机发展史略 世界上第一台电子数字式计算机于1946年2月15日在美国宾夕法尼亚大学正式投入运行,它的名称叫ENIAC(埃尼阿克),是电子数值积分计算机(The Electronic Numberical Intergrator and Computer)的缩写。它使用了17468个真空电子管,耗电174千瓦,占地170平方米,重达30吨,每秒钟可进行5000次加法运算。虽然它的功能还比不上今天最普通的一台微型计算机,但在当时它已是运算速度的绝对冠军,并且其运算的精确度和准确度也是史无前例的。以圆周率(π)的计算为例,中国的古代科学家祖冲之利用算筹,耗费15年心血,才把圆周率计算到小数点后7位数。一千多年后,英国人香克斯以毕生精力计算圆周率,才计算到小数点后707位。而使用ENIAC进行计算,仅用了40秒就达到了这个记录,还发现香克斯的计算中,第528位是错误的。 ENIAC奠定了电子计算机的发展基础,开辟了一个计算机科学技术的新纪元。有人将其称为人类第三次产业革命开始的标志。 ENIAC诞生后,数学家冯·诺依曼提出了重大的改进理论,主要有两点:其一是电子计算机应该以二进制为运算基础,其二是电子计算机应采用"存储程序"方式工作,并且进一步明确指出了整个计算机的结构应由五个部分组成:运算器、控制器、存储器、输入装置和输出装置。冯·诺依曼的这些理论的提出,解决了计算机的运算自动化的问题和速度配合问题,对后来计算机的发展起到了决定性的作用。直至今天,绝大部分的计算机还是采用冯·诺依曼方式工作。 ENIAC诞生后短短的几十年间,计算机的发展突飞猛进。主要电子器件相继使用了真空电子管,晶体管,中、小规模集成电路和大规模、超大规模集成电路,引起计算机的几次更新换代。每一次更新换代都使计算机的体积和耗电量大大减小,功能大大增强,应用领域进一步拓宽。特别是体积小、价格低、功能强的微型计算机的出现,使得计算机迅速普及,进入了办公室和家庭,在办公室自动化和多媒体应用方面发挥了很大的作用。目前,计算机的应用已扩展到社会的各个领域。 电子计算机还在向以下四个方面发展: 巨型化天文、军事、仿真等领域需要进行大量的计算,要求计算机有更高的运算速度、更大的存储量,这就需要研制功能更强的巨型计算机。 微型化专用微型机已经大量应用于仪器、仪表和家用电器中。通用微型机已经大量进入办公室和家庭,但人们需要体积更小、更轻便、易于携带的微型机,以便出门在外或在旅途中均可使用计算机。应运而生的便携式微型机(笔记本型)和掌上型微型机正在不断涌现,迅速普及。 网络化将地理位置分散的计算机通过专用的电缆或通信线路互相连接,就组成了计算机网络。网络可以使分散的各种资源得到共享,使计算机的实际效用提高了很多。计算机联网不再是可有可无的事,而是计算机应用中一个很重要的部分。人们常说的因特网(INTERNET,也译为国际互联网)就是一个通过通信线路联接、覆盖全球的计算机网络。通过因特网,人们足不出户就可获取大量的信息,与世界各地的亲友快捷通信,进行网上贸易等等。 智能化目前的计算机已能够部分地代替人的脑力劳动,因此也常称为"电脑"。但是人们希望计算机具有更多的类似人的智能,比如:能听懂人类的语言,能识别图形,会自行学习等等,这就需要进一步进行研究。 二.计算机的应用 (1) 科学计算如:计算量大、数值变化范围大的天文学、量子化学、空气动力学、核物理学和天气预报等领域中的复杂运算。 (2) 数据处理是计算机应用的一个重要方面,如:办公自动化、企业管理、事务管理、情报检索等非数值计算的领域。
一、语句建库、表 1.回顾 1)数据库文件 主数据文件(.mdf) 次数据文件(.ndf) 日志文件(.ldf) 2.建库 1)语法
2)必要属性 存储位置 初始大小 增长速度 3)示例 4)注意事项 单位必须完整(必须具有”B”,eg:KB、MB等) 数据库的逻辑名称不能出现重复
5)建议 将数据文件和日志文件进行分开存放 数据库的初始大小及增长速度计算后在定义 3.删除数据库 1)语法 2)示例 3)建议 删除数据库之前尽量使用判断语句检查数据库是否存在。 4.建表 1)数据类型 字符类型 ?Char :非unicode的固定长度的字符类型 ?Varchar :非unicode的可变长度的字符类型 ?Nchar :unicode的固定长度的字符类型
?Nvarchar :unicode的可变长度的字符类型 ?Text 数值 Int、float、decimal、number 布尔类型 Bit 日期类型 Datetime 二进制 Image 2)语法 注:特征—非空(Not null)、自增(Identity) 3)示例
4)数据完整性 实体完整性 ?要求 唯一标识每行记录 ?实现 主键、唯一、自增 域完整性 ?要求 保证列数据的有效性 ?实现 数据类型、非空、默认值、检查 引用完整性 ?要求 引用完整性约束保证两(多)表之间数据的有效性 ?实现 引用关系 自定义完整性 ?要求 通过编写自定义的逻辑或规则实现数据的验证。 ?实现 存储过程、触发器、规则
5)约束(Constraint) 主键约束(Primary Key Constraint) 作用:数据唯一且不允许出现null值 唯一约束(Unique Key Constraint) 作用:数据唯一但允许出现一次null值 检查约束(Check Constraint) 作用:数据符合规则 引用约束(Foreign Key……References) 作用:保证两表之间数据的有效性 默认值约束(Default Constraint) 作用:提供默认的字段值 6)命名规则 缩写_列名 7)分类 行内约束
使用脚本生成sqlserver作业的方法: CREATE PROCEDURE JB_name -- 存储过程名称 AS BEGIN TRANSACTION DECLARE @JobID BINARY(16) DECLARE @ReturnCode INT SELECT @ReturnCode = 0 IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[Uncategorized (Local)]') < 1 EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]' -- —删除同名的警报(如果有的话)。 SELECT @JobID = job_id FROM msdb.dbo.sysjobs WHERE (name = N' JB_name ') IF (@JobID IS NOT NULL) BEGIN -- 检查此作业是否为多重服务器作业 IF (EXISTS (SELECT * FROM msdb.dbo.sysjobservers WHERE (job_id = @JobID) AND (server_id <> 0))) BEGIN -- 已经存在,因而终止脚本 RAISERROR (N'无法导入作业“JB_name”,因为已经有相同名称的多重服务器作业。', 16, 1) GOTO QuitWithRollback END ELSE -- 删除[本地]作业 EXECUTE msdb.dbo.sp_delete_job @job_name = N' JB_name ' SELECT @JobID = NULL END BEGIN --—添加作业 EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N' JB_name ', @owner_login_name = N'SERVER\Administrator', @description = N'没有可用的描述。', @category_name = N'[Uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 2, @delete_level= 0 IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
计算机基础知识点汇总文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)
计算机基础知识点汇总 一、计算机的诞生及发展 (一)计算机的诞生 1.时间:1946年 2.地点:美国宾夕法尼亚大学 3.名称:ENIAC (二)计算机的发展 二、计算机系统的组成 现代的计算机系统由计算机硬件系统及软件系统两大部分构成。 三、计算机的工作原理 冯·诺依曼提出了“存储程序、程序控制”的设计思想,同时指出计算机的构成包括以下几个方面: (1)由运算器、存储器、控制器、输入设备、输出设备五大部件组成计算机系统。 (2)计算机内部采用二进制表示的数据和指令。 (3)采用“存储程序和程序控制”技术(将程序事先存在主存储器中,计算机在工作时能在不需要人员干预的情况下,自动逐条取出指令并加以执行)。 四、计算机的分类 五、计算机硬件 (一)中央处理器 1.简介 中央处理器又称为微处理器,是一块超大规模的集成电路,是一台计算机的运算核心和控制核心。
(1)控制器 实现计算机各部分的联系并自动执行程序的部件。功能是从内存中一次取出指令,产生控制信号,向其他部件发出命令指挥整个计算过程。 (2)运算器 对二进制数码进行算术运算和逻辑运算。 (二)存储器 1.内存储器 (1)作用 内存储器又称主存储器,简称内存。内存位于系统主板上,可以直接与CPU进行信息交换,内存储器主要用于存放计算机系统中正在运行的程序及所需要的数据和中间计算结果以及与外部存储器交换信息时作为缓冲。 (2)特点 速度较快,容量相对较小。 (3)分类 只读存储器ROM:永久保存数据,存储微型机的重要信息。 随机存储器RAM:断电丢失数据,存储当前运行的程序信息(SRAM、DRAM)。 2.外存储器 (1)作用 外存储器又称辅助存储器,简称外存。CPU不能直接访问。主要用于存放等待运行或处理的程序文件。 (2)特点 存储容量大,存取速度相对内存要慢得多。
SQLServer数据库基本介绍 数据库用于存储结构化数据。数据的组织有多种数据模型,目前主要的数据模型是关系数据模型,以关系模型为基础的数据库就是关系数据库。一,数据库的概述1)关系数据库术语 表:用于存储数据,它以行列式方式组织,可以使用SQL从中获取、修改和删除数据库。表是关系数据库的基本元素记录:记录是指表中的一行,在一般情况下,记录和行的意思是相同的。字段:字段是表中的一列,在一般情况下,字段和列所致的内容是相同的。关系:关系是一个从数学中来的概念,在关系代数中,关系是指二维表,表既可以用来表示数据,也可以用来表示数据之间的联系索引:索引是建立在表上的单独的物理结构,基于索引的查询使数据获取更为快捷。索引是表中的一个或多个字段,索引可以是唯一的,也可以是不唯一的,主要是看这些字段是否允许重复。主索引是表中的一列和多列的组合,作为表中记录的唯一标识。外部索引是相关联的表的一列或多列的组合,通过这种方式来建立多个表之间的联系。视图:视图是一个真实表的窗口,视图不能脱离表。视图和表的区别是,表是实际存在的(需要存储在计算机中,占用存储空间),而视图是虚拟表(仅存储真实表的视图表现形式),它用于限制用户可以看到和修改的数据量,以简化数据的表达。存储过程:存储过程是一个编译过的SQL程序。在该过程中,可以嵌入条件逻辑、传递参数、定义变量和执行其他编程任务。 2)数据库管理系统提供的功能数据库管理系统简称为DBMS,是一种操作和管理数据库的大型软件,用于建立、使用维护数据库。基本功能如下
数据定义功能:定义数据库结构数据存取功能:提供数据操纵语言,实现对数据库数据的 基本存储操作数据库运行管理功能:提供数据控制功能,即数据的安全性,完整性和并发控制等对数据库运行进行有效的控制和管理数据库的建立和维护功能:包括数据库初始数据的嵌入,数据库的转储、恢复、重组织、系统性能监视、分析等功能数据库的传输:实现用户程序与DBMS之间的通信 3)数据库的存储结构 数据库文件主数据文件(Primary):是数据库的关键文件,用来存放数据,包含数据库启 动信息,每个数据库都必须包含也只能包含一个主数据文件,默认扩展名是.mdf次数据文件(Secondary):又称辅助文件,包含除主数据文件外的所有数据文件。次数据文件是可选的,有些数据库没有次数据文件,有些数据库则包含多个次数据文件.默认扩展名是.ndf事务日志 文件(Transaction Log):用来存放事务日志信息。事务日志记录了SQL Sever所有的事务 和由这些事务引起的数据库的变化。SQL Sever遵循先写日志再进行数据库修改的规则,所以 数据库中数据的任何变化在写到磁盘之前,这些改变先在事务日志中做了记录,每个数据库至 少有一个事务日志文件Lof File,也可以不止一个。默认扩展名是.ldf数据库文件组主文件组:包含主数据文件和所有没有被包含在其他文件组里的文件用户定义文件组:默认文件组: