1、企业管理器是microsoft管理控制台(Microsoft management console)的一个插件。插件是运行在MMC中的部件、他不能独立运行,但必须包含着MMC中。企业管理器提供MMC形式的界面。像IIS、MTS也是MMC插件
2、查询分析器右边有模板选项卡,可以创建现成的模板,非常方便。查询分析器的对象选项卡,可以选定制定的数据表查看现成的查询,插入,修改,删除语句,更改相关字段即可,非常方便。
3、时间探查器和数据转换服务DTS(data transformation service)可以在企业管理器中的工具选项卡里打开
4、DTS支持多种异结构之间进行数据导入导出服务,更包括电子表格和文本文件,可以设置立即执行或者过段时间执行
5、sa=system administrator
6、model数据库是一个系统数据库,用于SqlServer2000拷贝新的数据库,设置于model数据库的一些选项将被用于企业管理器及查询分析器创建新数据库时的属性。数据文件有所属文件组。。最右边,而事务文件没有,事物文件记录一些数据的修改,方便我们进行回滚,事物文件的空间增长不大。
7、RAID是独立磁盘用于阵列,是具有多个磁盘的系统。通常可以见数据文件,事务日志和程序文件放于不同的磁盘上
8、设置数据磁盘的增长最好按百分比,防止出错及被迅速用尽
9、SqlServer2000不允许在所有系统数据库上创建新的数据文件、事物日志和文件组
10、我们可以把不同的用户表定义在不同的文件组中,这样可以提高应用程序的效率、我们可以定义一个文件组为默认文件组,代表所有创建的表都将默认到文件组中,如果不定义,表将被定义到PRIMARY中
11、查询分析器中删除数据库'SQLSpaNet'
use master go if exists (select name from master.dbo.sysdatabases where name='SQLSpaNet') drop database [SQLSpaNet] go 执行后会出现两条删除数据库文件的提示。所有的数据库处理,如drop和create都应该在master中执行
12、DDL(data definition language)数据库定义语言
DML(data manipulation language)数据处理语言
13、查询分析器中创建数据库SQLSpyNet
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
use master
go
create database SQLSpyNet
on primary(name='SQLSpyNet_Data',Filename='X:\SQLSpyNet_Data_MDF',size=5mb,filegrowth=10%)
log on(name='SQLSpyNet_Log',Filename='X:\SQLSpyNet_Log_LDF',size=5mb,filegrowth=10%)
go
go:立即执行代码
14、表的设计中应该尽量避免null值,有些可以设置默认值防御
15、1/3只能为整形0,如果转为浮点型相除float(1)/float(3) 结果为0.333..
16、查询表中重复出现的行
select a,b,c from 表名 group by a,b,c having count(*)>1
17、创建表ActivityType
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
Create Table ActivityType
{
ActivityTypeId int indentity(1,1) not null
//indentity(1,1)标识种子1,1 不允许为空
Constraint PK_ActivityTypeId
'Constraint 主键约束
Primary key Clustered,
//Clustered指出磁盘上的数据物理存储按id顺序来
Description varchar(50) not null,Uploaddate datetime notnullDefault(getdate()),//default的作用是Uploaddate为空时,插入默认值age int not nulldefault 18check(age>=18)// check添加约束,确保输入年龄大于18岁
}
18、为表table1创建唯一索引
Create unique nonclustered index IDX_table1
on table1(name,age)
19、select查询中应该尽量避免*,因为*会查询系统表中所有符合条件的列,对于大型项目来说非常影响效率
20、and和or的优先级and高于or
21、select排序
Select MemberID,MemberName,birthday from table1 order by MemberName desc,birthday
查询将先按照membername降序排练
22、插入数据
Insert into table1(MemberName,age,birthday)
values('张三',18,'1989-1-1')
SQL中出数字及NULL外其他所有值都要用引号
23、变量的定义
Declare @a int,@b varchar(40),@c datetime
Declare @a int
Declare @b varchar(40)
24、变量的赋值
Declare @a int
set @a=1
/'第一种赋值方法*/
Select @a=1
/'第二种赋值方法*/
set @a=(select RId from table1 where c=1)
25、IF...ELSE
Declare @a datetime
set @a=getdate
IF @a=getdate
print 'it is today'
else
print 'it is not today'
/*print 打印出字*/
26、convert(char(2),1)将1从INT转换为长度为2的字符
27、break语句
Declare @a int
set @a=1
while @a<10
begin
print 'now is'+convert(char(2),@a)
if @a=7
begin
print 'it's good'
break
end
end
28、试图的作用和表一样,试图其实就是一个虚拟表。也可以进行插入,删除,更新,查询等操作
创建试图
Create VIEW VIEW_BT AS
select a.line1,b.line2,a.line3 from
table1 a
inner join table2 b
a.RId=b.RId
inner join table3 c
a.RId=c.RId
inner join将两个表集合到一些,只显示2个表完全匹配的数据
left outer join 将返回from表中所有的数据,链接表中可能会出现null,如果连接表中有两个符合条件的数据,from表中同一数据将会出现两次
right outer join 将返回链接表中所有的数据,from表中可能会出现null
full outer join 将返回所有数据,很少用到
29、试图的缺点
试图的select语句不能运用order by 语句
不能像试图传递动态参数来改变查询的结果
只有试图参照单个表时才能基于视图进行更新
30、存储过程的创建
Create Procedure SpyMemberInsert
@a int,
@b varchar(10),
@c char(1)=null
as
declare @d int
insert into table1 (e,f,g)
values(@a,@b,@c)
31、执行存储过程
EXEC SpyMemberInster 1,'好',null
32、触发器
一个表中可以有多个触发器触发相同的事件
33、删除对象
数据库对象建议不要直接修改、先删除再创建,把create改成drop即可
34、函数分为确定性函数和非确定性函数,非确定性函数即使参数相同也有可能得到不同的结果
35、函数
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
/*1、convert函数*/
/*把数字22转为数据类型为varchar(10)的字符串*/
convert(varchar(10),22)
/*转换结果'22'*/
convert(varchar(10),22,1) /*这里多了一个格式参数1*/
CAST函数的作用跟convert一样,不过cast函数参数较少,他没有类型参数
/*2、count函数*/
/*count函数是一个聚合函数,如果只对null值进行count,将返回0*/
select count(a) from table1 /*统计所有a的数量*/
select count(distinct a) from table1 /*统计具有唯一的a的数量*/
/*3、SUM函数*/
select sum(a) from table1 /*求出a列的和*/
select sum(distinct a) from table1 /*求出唯一的a值列的和*/
/*4、Avg函数*/
select Avg(a) from table1 /*求出a列的平均值*/
36、stuff函数
37、定义一个格式化日期函数
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
Create Function DateFormater
(@datc datetime,@datesperator char(1))
return varchar(20)
as
begin
declare @returnstr varchar(20)
set @returnstr=convert(varchar(2),day(@date))+@datesperator+datename(month,@date)+@datesperator+convert(varchar(4),year(@date))
return(@returndate)
end
38、datename函数
39、调用自定义函数
/*调用自定义函数需要加上前缀dbo.*/
Select dbo.dateformatter(dob,'-') as dbc
from person
40、规则
Create rule a
as
@b<dateadd(year,-16,getdate())
/*规则建立*/
EXEC sp_bindrule 'a','Personage'
/*规则绑定,现在personage列符合a规则*/
41、默认值
Create default a as 'unknown'
/*创建默认值*/
EXEC sp_defaultbind 'a','b'
/*绑定默认值,将默认值a绑定到列b*/
go
42、创建用户自定义数据类型
43、事务
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
/*假如符合条件的b=3*/
Select a,b,c from table1 where a=4
/*b=3*/
begin transaction
update table1 set b='4' where a=4
Select a,b,c from table1 where a=4
/*b=4*/
rollback transaction
/*回滚,撤销此事务所做的修改*/
Select a,b,c from table1 where a=4
/*b=3*/
44、锁
45、捕获错误
运用@@ERROR语句,如果一切运行正常返回0
IF @@ERROR<>0
begin
--perform some action
end
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
ALTER PRCEDURE PersonBadGuylnsert
@Firstn加e VARCHAR(50),
@Surname vARCHAR [50),
@DOB DATETIHE =NuLL
@KnovnAs VARCHAR(25)=NULL,
@ISActive BIT =l
DECLARE @LocalError
Begin TRANsACti0N
INSERT INto Person (firstname,surname,dob)
VALuS (@Firstname,@Surnname,@Dob)
5ET @LocaLError =@@ERROR
DECLARB @PersonID INT
Set @PersonID =IDeNT_cuRRENT('Person')
INSERY INto badGuy (PersoniD,Knownas,IsActlve
vALUeS [@PersonID,@KnownAs,oIsActive)
set @Localerror =@LocalError 十@@ERROR
IF @LocalError=O
BEGIN
COmmIT tRANSACtloN
PRINt 'you have succe5sh]11y idded
and thelr Bad guy detall s'
BEGIN
roLLBACKtRANSACTl0N
PRINT '00ps an error'
END