SQL_Server_2005_学习笔记【经典】(1)
第5章sql server 2005基础知识
5.1.1 SQL Server 2005的服务组件 的服务组件
SQL Server 2005
Services(通知服务) 2、Notification Services(通知服务) 该服务允许将通知(如消息)发送到目标区域( 该服务允许将通知(如消息)发送到目标区域(如SMS 或任何在侦听的进程),这样当特定动作发生时便能“ ),这样当特定动作发生时便能 或任何在侦听的进程),这样当特定动作发生时便能“获 悉”,能够向不同的连接和移动设备发布个性化、及时的信 能够向不同的连接和移动设备发布个性化、 息更新。 息更新。
5.2 SQL Server 2005的安装 的安装
SQL Server 2005
5.2.1 SQL Server 2005的版本 的版本 1、企业版(Entprise Edition,32 位和 64 位) 、企业版( , 支持超大型企业进行联机事务处理 (OLTP)、高度复杂 、 的数据分析、 的数据分析、数据仓库系统和网站所需的性能水平 2、标准版(Standard Edition,32 位和 64 位) 、标准版( , Standard Edition 是适合中小型企业的数据管理和分析 平台
5.1.2 SQL Server 2005的的新特性 的的新特性
SQL Server 2005
3、XML技术 XML技术 数据, SQL Server 2005 完全支持关系型和 XML 数据,这样 企业可以以最适合其需求的格式来存储、管理和分析数 企业可以以最适合其需求的格式来存储、 据。 4、数据库镜像 数据库镜像允许事务日志以连续的方式从源服务器传 递到单台目标服务器上。 递到单台目标服务器上。 5、Microsoft Office System 的集成 Services的报表服务器提供的报表可运 Reporting Services的报表服务器提供的报表可运 行在 Microsoft SharePoint Portal Server 和 应用程序的上下文中。 Microsoft Office System 应用程序的上下文中。
SQLServer2005
第一章 数据库的基本操作
一、新建数据库
语法格式:
CREATE DATABASE 数据库名 [ON {[PRIMARY] (NAME=‘逻辑文件名’ (NAME=‘逻辑文件名’, FILENAME=‘物理磁盘文件名’ FILENAME=‘物理磁盘文件名’ [,SIZE=文件初始大小] [,SIZE=文件初始大小] [,MAXSIZE={文件最大长度 [,MAXSIZE={文件最大长度 |UNLIMITED}] [,FILEGROWTH=文件增长方式]) [,FILEGROWTH=文件增长方式])
第三章 表数据的基本操作
一、数据的添加、修改和删除 1、数据的添加(INSERT命令) 语法格式: INSERT INTO 表名(列名1,列名2,列名 3,……) VALUES(值1,值2,值3,……) /* 列名列表可省略 */ 或 INSERT INTO 表名 (SELECT 子句)
•例: (1)INSERT INTO xsda(sno,sname,sex,birth,grade) VALUES (‘S01’,‘张三’,‘男’,‘1980-1-13’,135.5) (2)INSERT INTO xsda VALUES(‘S02’,‘李四’,‘女’, ‘981-2-20’,124.5) (3)INSERT INTO xsda (SELECT * FROM xsda1 WHERE sex=‘男’)
注意:如果同时约束表中的多列最好用表级约束, 注意:如果同时约束表中的多列最好用表级约束,例如, 创建下表的主键同时为sno和cno 创建下表的主键同时为 例3:创建xscj表结构 CREATE TABLE xscj ( sno CHAR(3) FOREIGN KEY REFERENCES xsda(sno), cno CHAR(3) FOREIGN KEY REFERENCES kc(cno), grade DECIMAL(4,1) CHECK(grade between 0 and 100), score INT DEFAULT 0, PRIMARY KEY (sno,cno) )
SQL SERVER2005课程学习笔记
--insert into student values(2,'张三','2008-10-1',30)
--insert into student(name,tid,birthday,age) values('张三',2,'2008-10-1',30)
--数据删除
--语法:delete from 表名 where 字段名=字段值 {and|or} [字段名=字段值...]
,MDF,NDF,LDF)
四、表的创建、数据类型、主键的设置、默认值(getdate())、标识
五、关系和约束(唯一约束、主键约束、外键约束、非空约束、check约束)
主键约束:必须加在主键列上,唯一、非空
唯一约束:不能有重复
非空约束:该列值不允许有空值(=null)出现
check约束:限制某列的值在某一个范围段内
begin tran
--delete from Student where id > 20
--delete from Student where id in (1,3,7)
--commit
select * from Student
--rollback
--数据修改
a. ([age]>(0) AND [age]<(100))
b. name is not null and name <> ''
外键约束:必须作用在有父子关系的表上(至少是2张表)
六、索引(主键索引、唯一索引、一般索引。按存储方式分:聚集索引和非聚集索引) 索引的作用?加快数据查找的速度。
第1章SQLServer2005入门教程
后来,Ashton-Tate公司退出了SQL Server 的开发。
而在Windows NT推出后,Microsoft与 Sybase在SQL Server的开发上就分道扬镳 了:
–Microsoft将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server的 Windows NT版本;
32
•在IIS中配置SQL XML支持(Configure SQL XML Support in IIS)
•IIS(Internet Information Services 因 特网信息服务),此工具可以在运行IIS的 计算机上定义、注册虚拟目录,并在虚拟目 录和SQL Server 实例之间创建关联。
9
客户机/服务器方式
客户机/服务器方式是在后端使用专门的 服务器,在服务器中建立大型数据库系 统,如常用的SQL Server, Oracle和 Informix等,该服务器称为数据库服务器. 前端客户应用系统可以是各种软件工具 开发的系统。
10
文件服务器和客户机/服务器 方式的比较
文件服务器方式: 客户端向文件服务器 发出数据库请求,文件服务器通过网络 向客户端发送完成的文件拷贝,造成网 络中传输冗余的数据,负载多.
19
2. 新的数据类型
• SQL Server 2005 中增加了3 种新的数据类型: BIGINT、SQL_VARIANT和TABLE。
3. 数据行中的Text类型数据
• SQL Server 2005 中可以将TEXT 和IMAGE 类型 的数据直接存放到表的数据行中,而不是存放到 数据页中,这就减少了用于存储TEXT 和IMAGE 类型的空间,并相应减少了磁盘处理这类数据的 I/O 数量。
SQL Server 2005基础知识整理
SQL Server 2005基础知识整理1. ACID:指数据库事务正确执行的四个基本要素缩写:1.原子性2.一致性3.隔离性4.持久性2.数据库对象:表(table)视图(view)存储过程(stored procedure)函数(function)索引(index)3.SQL Server 2005中包含master、model、msdb、tempdb四个系统数据库。
4.使用T-SQL语句创建数据库:CREATE DATABASE [ApressFinacial] ON PRIMARY( NAME = N'ApressFinacial', FILENAME = N'I:\Program Files\Microsoft SQL Server\MSS QL.1\MSSQL\DATA\ApressFinacial.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )LOG ON( NAME = N'ApressFinacial_log', FILENAME = N'I:\Program Files\Microsoft SQL Server\ MSSQL.1\MSSQL\DATA\ApressFinacial_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10 %)5.T-SQL语句删除数据库:drop database[数据库名]6.常见的约束类型:主键约束、唯一约束、检查约束、默认约束、外键约束。
7.添加约束的语法:Alter table 表名Add constraint 约束名约束类型具体的约束说明8.删除约束:alter table 表名Drop constraint 约束名9.授权语法: grant 权限[on 表名] to 数据库用户例:grant select insert updateOn students to zhangsan10.T-SQL语句创建登录名:Create login[yuan]With password='130125'Go11.数据库完整性分为:实体完整性、域完整性、参照完整性、用户自定义完整性。
SQL Server 2005 复习
第一章小结SQL Server 2000是数据库产品, 而SQL Server 2005是一款整合数据库和数据分析服务的平台。
SQL Server 2005包含5个版本,分别适用于不用的用户群。
SQL Server 2005平台包括数据库引擎、分析服务、集成服务、复制、报表服务、通知服务、服务代理和全文搜索8个主要部分。
SQL Server 2005可以用于构建C/S或者B/S模式的数据库系统。
桌面型和网络型数据库的学习有本质的区别。
网络是基础,数据库是核心,两者缺一不可。
TCP/IP协议是SQL Server 2005网络的底层基础。
IP地址是网络中计算机惟一的身份证。
端口用于区分同一台物理计算机上的不同网络服务。
服务器的端口是静态的,客户机的端口是动态分配的。
知识点服务器和客户机物理(硬件)角度客户机(Client):指一些适合家庭和办公环境使用的PC。
这些PC上网的目的是享受各种网络服务,如电子邮件服务、网站浏览服务等。
服务器(Server):是指一些有别于普通用户使用的PC的特殊的计算机。
这些计算机在网络中提供各种网络服务。
为了适应大容量的数据存储和频繁的客户机的访问操作,这些计算机一般都配备有大容量的硬盘、24h不间断的UPS电源等高性能硬件设备,并具备可热插拔功能等。
逻辑(软件)角度客户机(Client):指一些安装了享受网络服务的软件的计算机。
服务器(Server):指一些安装了提供网络服务的软件的计算机。
桌面数据库与网络数据库Access2000(2003)、V isual FoxPro 6.0(7.0, 8.0)、Excel 2000(2003)小型数据库产品被称为桌面关系型数据库系统,其主要特点包括:广泛应用于单机环境。
计算机操作系统为桌面型操作系统,如Windows 98/XP等。
不提供或仅仅提供有限的网络应用功能。
没有或仅有较弱的安全方案。
开发的数据库应用系统主要目的是日常小型办公需要。
sql+sqlserver2005学习笔记
sql+sql server 2005学习笔记Sql+sql server 2005 学习笔记示例数据库(sample)表示的是一个公司及其包含的部门和员工。
每个员工只确切的属于一个部门,每个部门则可能含有一个或多个员工。
员工从事的工作则以所属的项目为中心,每个员工在同一时间可以为一个或多个项目工作,而从事每个项目的有一个或多个员工。
示例数据库由四张表组成:department、employee、project、works_on 1(SQL组件1.1SQL的基本对象常量或字面量(用’’或””)定界符(用””)标识符(字母,数字,_,@(变量),#(表名或存储过程的开头,表示一个临时对象),$)保留字注释(--或/**/)1.2数据类型数值型:整数值TINYINT 1字节SMALLINT 2字节INT 4字节BIGINT 8字节定点值DECIMAL(p,[s]) p总位数,s小数点后位数NUMERIC(p,[s]) p总位数,s小数点后位数浮点值REALFLOAT[(p)] p<25单精度(4字节),p>=25双精度(8字节)货币值MONEY 8字节DECIMALSMALLMONEY 4字节DECIMAL串型:字符串值CHAR[(n)] (定长) 0<n<=8000 1字节NCHAR[(n)] (定长) 0<n<=4000 2字节 Unicode字符 VARCHAR[(n)] (变长) 0<n<=8000 1字节NVARCHAR[(n)] (变长) 0<n<=4000 2字节 Unicode字符 TEXT[(n)] (定长) 1字节NTEXT[(n)] (变长) 2字节二进制串值BINARY[(n)] (定长) 0<n<=8000VARBINARY[(n)] (变长) 0<n<=8000IMAGE[(n)] (定长)BIT注:是过时特性,应该用新数据类型TEXT,IMAGEVARCHAR(MAX),NVARCHAR(MAX),VARBINARY(MAX)日期/时间型:DATETIME 4字节SMALLDATETIME 2字节例如:’28/5/1959’,’may 28,1959’,’1959 may 28’,’18:45 am’,’4 pm’派生型:TEMESTAMPSYSNAME混杂型:CURSOR 允许在存储过程中创建光标变量(不能把该数据类型用作表中列的数据类型)UNIQUEIDENTIFIER 以16个字节二进制串形式存储的唯一的标识号SQL_VARIANT 用来同时存储不同数据类型的值(唯一不能存储的数据类型是文本/ 图像类型和TIMESTAMP)TABLE 用来存储具有几个不同值的行(限制于:1.作为局部变量2.作为用户自定义函数的返回值)用户自定义型(UDT)1.3谓词定义了一种应用于表中行的逻辑条件,具有两个值(true,false)的常见逻辑条件在SQL语言中又进一步被扩展,加入了第三个值(unknow(未知的)或not applicable(不适用的))所有关系运算符BETWEEN运算符 IN运算符LIKE运算符NULL运算符ALL和ANY运算符 EXISTS函数1.4聚集函数一般应用于某列中的一组数据值(几多行),总是返回单个值。
SQLSERVER2005学习笔记
1.SQLServer2005系统表相信很多人都很奇怪SQLServer2005的系统表到哪去了,在使用SQL2000的日子里,不幸的SQL Server 2000数据库管理员们,需要浏览深奥的系统表,这是这项使用数据库管理系统的工作中最糟糕的一部分。
SQL Server 2005中的系统数据现在存储在隐藏的“资源”表中,这个表只能被服务器自身直接访问。
低级用户(和数据库管理员)必须使用新的一系列的分类视图,这些视图显示了从各种我们看不到也不能调用的隐藏表和各种隐藏函数中获得的数据。
以前版本的SQL Server 中的系统表现在作为一系列所谓的(也相当正确的)“兼容视图”的形式实现。
分类视图和它们的伙伴,动态管理视图(下面进行解释),代表了一种处理元数据的方式,这些元数据是完全重新设计和重新思考出来的。
没有了那些只会给数据库管理员一些底层数据的微小感觉的神秘的表,现在的SQL Server提供了丰富的资源:SQL Server 2005中有超过200个分类和管理视图,取代了以前版本中大约50个的系统表。
所有这些视图都可以在系统计划中找到。
(计划是在SQL Server 2005中大大扩展了的安全特性。
但是这是另一篇贴士的话题。
)要看到可用视图的完全列表,SQL Server Management Studio扩展了所有数据库的系统视图树。
或者通过T-SQL 从视图自身选择一个列表,并找出友好的易于理解的名字:sys.all_views有所有的视图sys.tables包含有所有表的信息sys.columns包含数据库中所有的列的属性等等,是不是比SQL2000系统表要更能让人接受?所以现在我们可以用一条这样的语句来查询某个表T_TT的所有字段的信息select * from sys.columns,sys.tables where sys.tables.object_id=sys.columns.object_id and ='T_TT'2.[SQL Server]SQL2005:向系统表说再见微软的SQLServer数据库管理员,快快想一下!在不使用任何的文档的情况下,编写一个查询,从SQLServer2000系统表中抽取索引的列表,然后列举每个索引中的字段,并判断这个字段是否按照升序或者降序进行排序。
SQL Server 2005的相关基础知识
本章主要介绍SQL Server 2005的相关基础知识,包括:●SQL Server的发展历史;●SQL Server 2005各版本的应用环境与功能比较、SQL Server 2005的新特性;●安装Microsoft SQL Server 2005的硬件条件和软件环境;●Microsoft SQL Server 2005的安装与卸载;●Microsoft SQL Server 2005工具的简介。
2.1 SQL Server 2005简介Microsoft的SQL Server作为众多数据库软件的一种,是网络世界的一个支撑。
从20世纪80年代后期开发SQL Server,到2005年底SQL Server 2005的发布,Microsoft历经十几年的磨练,使SQL Server从无到有,从小到大,而且新一代的SQL Server 已经开始逐渐成为Windows操作系统未来的核心,成为主流数据库软件。
2.1.1 SQL Server的发展历史1987年,由Microsoft、Sybase和Aston-Tate三家公司共同开发了Sybase SQL Server。
1988年,由Microsoft公司、Sybase公司和Aston-Tate公司共同开发了运行于OS/2平台的SQL Server。
1992年,由Microsoft公司和Sybase公司共同开发了运行于Windows NT平台,包含较少的功能,与Windows集成,提供了易于操作的用户界面的桌面数据库系统SQL Server。
1994年,Microsoft公司与Sybase公司,各自开发自己的SQL Server。
前者开发基于Windows NT平台上的SQL Server,而后者开发基于UNIX平台上的SQL Server。
随后Microsoft公司推出了其独自开发的SQL Server 6.0。
本书所提的SQL Server若无特别说明,则专指Microsoft 公司开发的产品。
SQLserver2005学习笔记
数据库学习大纲目录数据库存储 (4)1.表的相关数据 (4)2.create table 命令 (4)3.什么是约束 (5)check约束 (5)default 约束 (5)唯一约束 (6)not null约束 (8)4.表和约束的异同 (8)5.什么是关系 (8)6.主键定义 (10)7.外键定义 (11)数据库查询 (11)1.计算列 (11)2.distinct【不允许重复的】 (12)3.between【在某个范围】 (12)4.in【属于若干个孤立的值】 (12)5.top【最前面的若干个记录专属于SqlServer的语法,不可移植到其他数据库】 (12)6.null【没有值空值】 (13)7.order by【以某个字段排序】 (13)8.模糊查询【搜索时经常使用】 (14)9.聚合函数【多行记录返回至一个值通常用于统计分组的信息】 (15)10.group by【分组难点】 (17)11.having【对分组之后的信息进行过滤难点】 (18)12.连接查询 (20)1.select ... from A, B 的用法 (21)2. select ... from A, B where ...的用法. (21)3. select ... from A join B on ... 的用法.. (22)4. select ... from A, B where ...与select ... from A join B on ...的比较.. (22)5. 习题集: (25)内连接复习小结: (27)查询的顺序 (29)13.外连接[参见ppt] (31)14.完全连接[参见ppt] (31)15.交叉连接[参见ppt] (31)16.自连接 (31)17.联合 (32)18.分页查询 (32)19.嵌套查询 (32)20.主键如何设置 (32)视图 (33)事务【重要参见ppt】 (35)分页查询 (36)什么是数据库SQL = = Structured Query Language结构化查询语言,第四代语言(1机器语言, 2汇编语言, 3 C系),主要用于对外存数据的存储和操作,由于其局限性(其中大多是命令),较复杂的功能实现不了,依赖于第三代语言来实现;第三代语言主要处理内存数据。
SQL SERVER2005数据库笔记
SQL SERVER2005数据库笔记基础部分Ⅰ第一章企业管理器1.1数据表的管理SQL Server2005的数据类型一个数据库可以存放很多张表,而一张表是由行和列组成,每一行表示一个实体,而每一列表示实体的属性。
表1.1 SQL Server2005的数据类型1.2数据的完整性数据的完整性包括数据的可靠性和数据的准确性,创建表保证数据的完整性,其实就是创建约束,所谓创建约束就是保证数据的可靠和准确。
在SQL Server2005中,数据的完整性包括:1.实体完整性指保证在一张表中不可以有两行完全相同。
2. 域完整性指保证一张表中的数据是合法的数据。
3. 引用完整性指保证一张从表中的某列来自于另外一张主表中的列。
1.3 创建约束1.主键所谓主键是指能够唯一的表示一列的列就叫做主键。
选择主键的原则:(1)尽量选择单个键作为主键(2)尽量选择值更新较少的列作为主键。
2.检查约束为了满足域完整性,可以通过设定检查约束来保证。
3.外键为了满足引用完整性。
所谓外键是指一张表(从表)中的一列数据必须取自于另外一张表(主表)中主键列的数据。
我们将这一列称之为外键。
当两张表存在主外键关系时,那么它们就具有以下特点:(1).当主表中没有对应的记录时,不能将记录添加到子表;(2).不能更改主表中的值,而导致子表中的数据孤立存在;(3).子表中如果存在与主表对应的记录,则不能从主表中删除该行;(4).删除主表前,应该先删除子表。
4.默认约束为某张表的某列添加默认值。
就是默认约束。
5.标识列标识列的值由系统生成一组有规律的数字。
7.唯一约束唯一约束用于指定一个或者多个列的组合值具有唯一性,以防止在列中输入重复的值。
唯一键允许为空,但是系统为保证其唯一性,最多只可以出现一个NULL值。
当使用唯一约束时,需要考虑两个因素:(1).使用唯一性的约束的字段允许为空值(2).一个表中可以允许有多个唯一性约束。
第二章查询分析器2.1 SQL和T-SQL2.2 创建数据库2.3 删除数据库删除数据库的语法如下:drop database T eacherGO2.4创建表其中,列的特征包括该列是否为空(NULL)、是否是表示列、默认值、主键等。
SQL Server 2005简要复习
SQL Server 2005服务器的组成主要包括数据库引擎和数据库两部分。
服务器是SQL Server 2005数据库引擎存放的地方。
MSDB数据库该数据库是代理服务数据库,为其报警、任务调度和记录操作员的操作提供存储空间。
实例SQL Server 2005的实例实际上就是虚拟的SQL Server服务器。
每个实例都包括一组私有的程序和数据文件,同时也可以和其他实例共用一组共享程序或文件。
Master数据库该数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息。
Master数据库还记录了所有其他数据库的存在、数据库文件的位置以及SQL Server的初始化信息。
主键主键可以由表中一个或多个列构成,利用主键既可以唯一确定存储在表中每个行的一个或一组列,又能够迅速关联多个表中的数据,并把数据组合在一起。
外键数据库表应该保留与其他表相互连接的少量公用信息。
数据库所有者数据库所有者(DBO)就是有权限访问数据库的用户,即登陆数据库的网络用户。
数据库所有者是唯一的,拥有该数据库中的全部权限,并能提供给其他用户访问权限和功能。
数据完整性数据完整性是指数据的精确性和可靠性,是为防止数据库中存在不符合语义规定的数据,防止因错误信息的输入、输出而造成无效的操作或错误信息而提出的。
数据库关系图数据库关系图(Database Diagram)是数据库中对象的图形表示形式。
在数据库设计过程中,可以利用数据库关系图对数据库对象如表、列、键、索引、关系和约束等进行进一步设计和修改。
数据库关系图包括表对象、表所包含的列以及它们之间的相互关联的情况。
OLTP数据库联机事务处理(OnLine Transaction Processing ,OLTP)是专门用于实时运行所有发生的业务事务的数据处理系统。
交叉连接交叉连接是指在没有WHERE子句的情况下,产生的表的笛卡儿积,两个表作交叉连接时结果集大小为二者行数之积。
SQL Server 2005 学习笔记(二)
--创建数据库create database WaterMargins/*四大名著英语翻译:《西游记》Pilgrimage to the West; Journey to the West《三国演义》The Romance of the Three Kingdoms《红楼梦》A Dream in Red Mansions (The Story of the Stone) 《水浒传》Heroes of the Marshes; Water Margins*/--创建表use WaterMargins--使用某个数据库go--执行create table hero--创建表(heroId int,--排名heroName varchar(50),--名字heroNickName varchar(50),--外号gender char(2),--性别salary int--工资)--删除一张表(把表的结构和表的数据一起删除)drop table hero--使用sql语句来添加数据insert into hero values(1,'宋江','及时雨','男',20000)insert into hero values(2,'卢俊义','玉麒麟','男',18000)insert into hero values(3,'吴用','智多星','男',15000)insert into hero values(4,'公孙胜','入云龙','男',13000)--使用sql语句来查询数据,这是最简单的查询select*from hero--①查询工资低于的herosselect*from hero where salary < 16000--②把工资低于的heros的工资提高%(update)--语法:update 表名set 字段名= ?,字段名= ?where 条件update hero set salary = salary*1.1 where salary < 16000--③请删除性别为女的herodelete from hero where gender ='女'--表名规范--表名以字母和_开头--长度不能超过个字符--不要使用sql server关键字和保留字--只能使用A-Z,a-b,-9,$,#,_等--支持的数据类型/*字符型<纯中文时:char和varchar>①char:定长,最大个字符(非unicode编码)②char(10) '小韩':前个字符放‘小韩’,后面添个空格补全③varchar:变长,最大字符(非unicode编码)④varchar(10) '小韩':sql server分配个字符,这样可以节省空间如果一个字段的长度是确定的,则使用char,因为char的速度更快只有在不知道字段长度的情况下用varchar的①ntext 变长unicode数据,最大长度为的次方-1(,,,)个字符②text 变长非unicode数据,最大长度为的次方-1(,,,)个字符区别:text是字节格式存储英文的,也可以存放中文但有时候会显示乱码ntext是多字节格式存储unicode的,也就是存储各种字母用的<可以含中文:nchar和nvarchar>①nchar:定长,最大个字符(unicode编码)②nchar(10) '小韩':前个字符放‘小韩’,后面添个空格补全③nvarchar:变长,最大字符(unicode编码)④nvarchar(10) '小韩':sql server分配个字符,这样可以节省空间*//*unicode 编码:用两个字节表示一个字符(可以是英文字母,也可以是汉字)-->>对汉字支持比较OK非unicode 编码:用一个字节表示一个字母,用两个字节表示一个汉字big5码:支持繁体iso-8859-1编码:支持欧文gb2312编码:国标码针对中国汉字gbk编码:可以支持更多汉字*//*数字型①bit:范围到②int:范围-2的次到+2的次方-1③bigint:范围-2的次方到+2的次方-1④float:存放小数,不推荐使用⑤numeric:小数(更加精确,好控制)强烈建议如果要去存放小数,最好使用numeric *//*日期类型①datetime(表示日期,可以精确到毫秒)②timestamp(时间戳)一般情况下用datetime表示日期sql server为我们提供了一个专门的函数--getdate()*//*图片image:保存图片,但是很少用,一般用路径保存图片,在软件公司往往使用图片服务器和图床技术视频binary:字段可以存放,但是我们往往将视频文件保存在文件服务器上,sql server中保留文件路劲,存取效率高*//*sql server 建议表的设计者,最好给表定义一个主键,用来标示唯一的一条记录。
SQL2005课堂笔记整理
SQL2005课堂笔记整理/*创建数据库*/create database 数据库名on(name=库名_dat,filename='文件路径',size=10,maxsize=50,filegrowth=5)log on(name=库名_log,filename='文件路径',size=5,maxsize=25,filegrowth=5)go/*数据库备份*/backup database 数据库名to disk='文件路径' with format,name='别名'创建表studentcreate table student(userid int identity(1,1) primary key,username varchar(20),userpwd varchar(20))/*查询一张表*/select * from student/*插入数据insert into 表名(列名1,列名2,….)values(值1,值2,….) */insert into student values('javacai',123)/*修改数据update 表名set 列名=新值where条件*/update student set userpwd='8888' where userid=1/*插入带日期的数据*/update student set birthday=getdate()/*删除数据delete from 表名student where 条件*/delete from student where username='javacai3'/*对表进行操作,增加和修改表中的列增加列alter table 表名add 列名数据类型*/alter table studentadd telphone int/*删除列alter table 表名drop column 列名*/alter table studentdrop column userpwd/*添加外键为test表添加外键约束alter table 表名add constraint 约束名foreign key 外键列references 主键表(主键列)主键表指持有主键(primary key)的表*/alter table testadd constraint fk foreign key(userid) references student(userid)/*多表查询(两张表的联合查询)查询的时候,在本例中是通过主外键的方式来获取结果集(student 表中的userid 和test 表中的userid)select 列名from 表1,表2 where 条件1 and 条件2 and 条件3 */select ername ,t.idfrom student s, test twhere erid=erid and erid=1/*删除一张表drop table 表名针对主外键关系的表的删除1.如果存在主外键关系,需要先删除外键表再删除主键表2.删除外键约束后再删除表*/drop table testselect * from student/*为表建立一个唯一的索引,索引名称是nameidex,将确保表中的username列唯一*/create unique index nameindex on student(username)/*建立一个按照名称字母规则升序ASC(降序DESC)的索引*/ create unique index nameindex2 on student(username asc) create unique index nameindex2 on student(username desc)/*删除索引drop index 表名.索引名*/drop index inde/*查询表中的2列,如果是查询所有的则使用*号*/ select userid,username from student/*lower:将大写字母改成小写*/select lower(username) from studentupdate student set username='CAI' where userid=1 /*sum:求和*/select sum(userid) from student/*avg(列名):求平均数*/select avg(userid) from student/*upper(列名)大写转换*/select upper(username) from student/*order by:排序函数*/select * from student order by userid/* 区间查询*/select * from student where not userid>2select * from student where userid between 2 and 5/*模糊查询一个_符号,只代表一个字符*/select * from student where username like '_avacai1'/*%:表示任意字符,没有数量的限制*/select * from student where username like 'j%2'/**/select * from student where username like 'jav%'ESCAPE'1'/*ltrim:去空格函数从字符串的左边开始rtrim:去空格函数从字符串的右边开始*/select ltrim(username) from studentselect rtrim(username) from student/*用as关键字可以为列重新命名*/select max(userid) as 最大ID from studentselect min(userid) as 最小ID from student/*去除重复的值*/select distinct(telphone) from student/*利用关键字top取数据集中的前N条其中的*号表示所有的列select top n* from 表名*/select top 1* from student/*count是计数函数*/select count(*) as 数据总数from student/*group by:分组行,列先按照username 进行分组,分组完毕后,在按照出现的次数进行查询*/select username from student group by usernamehaving count(*)>1select top 2* from studentselect * from student/*分页的简单实现,如何动态传递参数,进行分页*/select top 2* from student where useridnot in(select top 2 userid from student)/*取并集union关键字*/select * from studentunionselect * from student2/*插入数据后,及时获取自动增长列的值*/insert into student2 values('66')select @@identity as userid/*将数或列转换成整数该转换只在查询结果中有效不改变表结构*/select cast(10.1 as int)/*将telphone列转换成整数*/select cast(telphone as int)from student/*convert()的转换*/select convert(int ,telphone) from student/*创建视图*/create view stu_vie as select * from student/*修改视图*/alter view stu_vie as select * from student where username='caiyunlong'/*删除视图*/drop view stu_vie/*视图的使用*/select * from stu_vie/*修改视图*/update stu_vie set username='Ladygaga' where userid=5/*增加数据*/insert into stu_vie values('sky')/*视图内容的删除*/delete from stu_vie where userid=6/*用脚本定义当前所要使用的数据库*/use aagoselect * from student where username='caiyunong' or username='cai' select * from student where username is nullupdate student set username=null where userid=1/*sql 语句块*/declare @count intset @count=0while(@count<100)begininsert into student values('java',@count,@count,getDate(),'zz');set @count=@count+1;end;/*补充知识点1.连接查询2.利用系统自带的存储过程操作对象*/use aagoselect * from studentselect * from studentcoptb/*内连接*/select *from student s inner join studentcoptb scon erid=eridand erid=2/*创建studentinfo表*/create table studentinfo(userid int ,usertelphone int,userage int,useraddress varchar(20)/*不通过修改表的方式直接给表添加外键*/ constraint sfk foreign key(userid) references student(userid))drop table studentinfoselect * from studentinfo/*为表studentinfo添加外键*/alter table studentinfoadd constraint sfk foreign key(userid)references student(userid)/*inner join查询语法:select 查询内容from 表名别名inner join 表名别名on 2表条件and 条件2*/select erid,ername ,ertelphone,erage from student s inner join studentinfo sfon erid=eridand erid=2/*左联接查询*/select erid,ername ,ertelphone,erage from student s left join studentinfo sfon erid=eridand erid=2/*右联接查询*/select erid,ername ,ertelphone,erage from student s right join studentinfo sfon erid=eridand erid=2/*试用库命令USE 库名*/use tclass/*添加外键*/alter table selectCourseadd constraint sc_ref foreign key(stuno) references newstudent(stuno)/*在外键表中式持有主键表的id还是具体的例子,取决于实际运用*/存储过程/*创建存储过程create procedure 存储过程名(参数类型输入|输出)as(可声明变量如:)begin语句块end;*//* if else 的使用*/if (1=2)select 2 as 页数elseselect 3 as 页数/*不带参数的存储过程*/create procedure getstudent2asselect * from student/*调用存储过程*/exec getstudent2/*带参数的存储过程alter 是用来修改存储过程的set 和select都可以用来赋值*/alter proc getstudent @stunum int outputasbeginset @stunum=(select count(*) from student);print @stunumend/*同过命令的方式手动调用带有输出参数的存储过程*/ declare @stunum intexec getstudent @stunum outputprint @stunum/*创建一个带输入和输出参数的存储过程通过输入参数stuid 传入学生id通过stuname返回学生姓名如果参数varchar(20)后面的(20)不写的话就会影响返回值*/create proc getStuName @stuid int ,@stuname varchar(20) outputasbeginselect @stuname=(select username from student where userid=@stuid) end;/*执行存储过程的时候注意参数的位置需要一一对应对于输出参数,在执行的时候,必须对输出参数进行声明如下代码所示:1.代表输入参数@stuname则是输出参数*/declare @stuname varchar(20)exec getStuName 1, @stuname outputprint @stuname/*语法根据旧表创建新表*/select * INTO [newtb] from [oldtb]通过旧表创建新表数据也会随之插入到新表中*/select * into student3 from student/*通过旧表创建新表数据不会随之插入到新表中只会创建表结构*/select * into student4 from student where 1=2/*用存储过程实现分页*/create proc getpage @page intasbeginselect top 2* from student where useridnot in(select top (@page*2-1*2) userid from student)exec getpage 1/*用存储过程实现分页@page 第几页@pagesize :页大小*/create proc getpage2 @page int,@pagesize intasbeginselect top (@pagesize )* from student where useridnot in(select top (@page*@pagesize-@pagesize) userid from student) endexec getpage2 1,4/*用存储过程实现分页@page 第几页@pagesize :页大小*/create proc getpage3 @page int,@pagesize int ,@total int outputbeginset @total=(select count(*) from student);select top (@pagesize )* from student where useridnot in(select top (@page*@pagesize-@pagesize) userid from student) endexec getpage2 1,4/*用存储过程实现分页@page 第几页@pagesize :页大小@total :总条数@count :总页数*/create proc getpage@page int,@pagesize int ,@total int output,@count int outputasbeginset @total=(select count(*) from student);select top (@pagesize )* from student where useridnot in(select top (@page*@pagesize-@pagesize) userid from student); if @total%@pagesize=0select @count=@total/@pagesize ;elseselect @count=@total/@pagesize+1 ;end/*执行存储过程*/declare @total int ,@count intexec getpage 1,4,@total output,@count outputprint @count;print @total;/*删除存储过程*/drop proc getpage/*分页的简单实现,如何动态传递参数,进行分页*/select top 2* from student where useridnot in(select top 4 userid from student)/*用存储过程实现分页@page 第几页@pagesize :页大小@total :总条数@count :总页数参数默认的为in,如果是输出则要指定output */alter proc getpage @page int,@pagesize int,@total int output,@count int outputas/*变量需要在这个地方(as...begin中)声明*/ declare @temp intbegin/*select @total=count(*) from student;*/set @total=(select count(*) from student);set @temp=@total%@pagesize;if (@temp>0)set @temp=@total/@pagesize+1;elseset @temp=@total/@pagesize;select top (@pagesize) * from student where useridnot in(select top (@pagesize*(@page-1)) userid from student);set @count=@temp;end触发器/*创建INSERT触发器当原始表student中插入新数据的时候,拷贝表studentcoptb中也插入同样的数据*/create trigger insert_trigger on studentfor insertasbegininsert into studentcoptb values('aa',123,11,getdate(),'dd');end;insert into student values('cai2',123,11,getdate(),'dd');/*修改触发器用alter*/alter trigger insert_trigger on studentfor insertasbeginselect userid from inserted;insert into studentcoptb values('aa',123,11,getdate(),'dd'); end;/*触发器中使用变量*/create trigger insert_trigger2 on studentfor insertasdeclare @temp varchar(20)beginset @temp=(select name from inserted);insert into studcoptb values(@temp);end;insert into student values('cai2');/*创建DELETE触发器*/create trigger studDelete_trigger on studentfor deleteasdeclare @userid intbeginset @userid=(select userid from deleted);insert into logtb values('student',@userid,'caiyunl'); end;/*触发器中可以调用存储过程,配合执行业务逻辑*/ use aagocreate procedure getAllUserasbeginselect * from student;endalter trigger studDelete_trigger on studentfor deleteasdeclare @userid intbeginset @userid=(select userid from deleted);exec getAllUserinsert into logtb values('student',@userid,'caiyunl');end;delete from student where userid=101/*Delete触发器raiserror:相当如抛出异常其中有异常信息错误级别和状态*/create trigger Stuinfo_Delete on dbo.stuinfofor deleteasif(select count(*) from deleted) >1beginraiserror('you cannot delete more than one stuinfo at a time',16,1); rollback transactionend/*删除触发器*/drop trigger Stuinfo_Delete/*提交事务(操作有效)*/begin transactioninsert into student value();commit;/*回滚事务(操作无效)*/begin transactioninsert into student value();ROLLBACK TRANSACTION;/*怎样修改列名*/use tclassgoALTER TABLE TableA ADD A4 varchar(30) --添加修改后的列名、数据类型goUpdate TableA SET A4=A3 --把原来列的数据复制到新列goALTER TABLE TableA DROP COLUMN A3 --删除原来的列go。
sqlserver2005个人复习笔记
end as 列名,.... from 表名 where 条件
select ... from 表名 where 列名>=/<=/....(select语句)
列名 in/not in(select语句)
{
......
}
类名.方法名();
sealed
枚举
public enum 枚举名
{
常量1=10,常量2,.....
}
枚举名.常量名
(int)枚举名.常量名
结构
public struct 结构名
{
字段
属性
方法
}
索引器
public 返回值类型 this[数据类型 参数名]
try-catch-finally throw new 异常类名(....)
第二章--第四章
类:
对象:
类名 对象名=new 类名()
对象名.字段名
对象名.属性名
对象名.方法名(.....)
class 类名
{
public 类名()
{
......
}
public 类名(.....)
public
值类型:int short long float double bool byte char 结构、枚举
引用类型:类、接口、string,数组
值类型-->引用类型:装箱
引用类型-->值类型:拆箱 (int)object
readonly
const
static
访问修饰符 static 返回值类型 方法名()
SQL Server 2005基础应用(入门到精通·循序渐进·案例详解·适合初学者)
SQL Server 2005基础应用一.数据库的基本操作--创建数据库create database new_db2on primary(name='new.mdf',filename='e:\new.mdf',size=5mb,maxsize=50mb,filegrowth=10%)--收缩数据库alter database new_dbmodify file(name='new_db',size=15mb)--压缩数据库dbcc shrinkdatabase('new_db',1)--重命名数据库exec sp_renamedb'new_db','Jasxu_db'--删除数据库drop database new_db2二.数据库表的基本操作--创建数据库create database st_dbon primary(name='st.mdf',filename='e:\st,mdf',size=5mb,maxsize=50mb,filegrowth=20%)--删除Jasxu_db数据库drop database Jasxu_db--在st_db数据库中编辑use st_db--创建表create table table_name(学号int primary key identity,--这里的identity意思就是将标志规范设置为递增名称char(6)not null,专业方向varchar(10)not null,系部代码char(2)not null,备注varchar(50))--查看表的基本信息exec sp_help table_name--重命名表exec sp_rename'table_name','new_table'--重命名列exec sp_rename'new_table.备注','其他','column'--添加新列alter table new_table add新列char(10)--更改列的数据类型alter table new_tablealter column新列int not null--删除列alter table new_tabledrop column新列--删除表drop table new_table--案例解析create table t2(id int not null,us varchar(30))--查询表里面的内容select*from t1--删除表的所有数据truncate table t1--创建主键约束alter table t1add constraint pkprimary key clustered(id)--创建外键约束alter table t2add constraint wzforeign key(id)references t1(id)--references代表参照哪个表的主键设置外键三.数据库表的增加、删除、修改--创建系部表create table系部(系部代码char(6)not null primary key,系部名称varchar(30)not null,系主任char(8))--创建专业表create table专业表(专业代码char(4)not null primary key,专业名称varchar(20)not null,系部代码char(6)constraint wz11 references系部(系部代码))--创建班级表create table班级表(班级代码char(9)not null primary key,班级名称varchar(20),专业代码char(4)constraint wz1 references专业表(专业代码),系部代码char(6)constraint wz2 references系部(系部代码),备注varchar(50))--创建学生表create table学生表(学号char(12)not null primary key,姓名char(8),性别char(2),出生日期datetime,入学时间datetime,班级代码char(9)constraint wz3 references班级表(班级代码),系部代码char(6)constraint wz4 references系部(系部代码),专业代码char(4)constraint wz5 references专业表(专业代码))--在new_table表中添加数据insert into new_table values('Jasxu','计算机','01','无')--选择性的插入数据insert into new_table(名称,专业方向,系部代码)values('xsw','软件工程','02') --省略values的insert语句insert into new_table (名称,专业方向,系部代码)select名称,专业方向,系部代码from new_table--修改new_table表update new_table set系部代码='01'update new_table set专业方向='软件工程'where专业方向='计算机'--删除new_table中的内容delete new_table where专业方向='软件工程'delete new_table where学号='10'四.数据库表的简单查询--查询new_table表中所有信息内容select*from new_tableselect学号,名称,专业方向,系部代码,其他from new_table--输出表中的部分字段select学号,名称from new_table--选择表中若干记录(去掉结果中的重复行)select distinct系部代码from new_table--限制返回的行数select top 3 *from new_table--查询学号大于的信息select*from new_table where学号>13--确定范围(between and)select*from new_table where学号between 12 and 16--确定集合(in,not in)select*from new_table where学号in(12,13,14,15)select*from new_table where学号not in(12,13,14,15)--字符匹配select*from new_table where名称like'徐_'--两个字的姓名select*from new_table where名称like'徐__'--三个字的姓名select*from new_table where名称like'徐%'--%代表任意长度select*from new_table where名称like'徐\%'escape'\'--通配符的转换--清空数据truncate table new_table--插入数据insert into new_table values('张学友','网络','01','没有','411')insert into new_table values('刘德华','计算机','02','没有','412') insert into new_table values('舒淇','计算机','01','没有','413')insert into new_table values('梁咏琪','动漫','02','没有','431')insert into new_table values('杨千嬅','计算机','01','没有','465') insert into new_table values('李宇春','动漫','02','没有','485')insert into new_table values('蔡依林','网络','01','没有','468')insert into new_table values('郑源','计算机','02','没有','510')insert into new_table values('陈楚生','动漫','01','没有','550')insert into new_table values('张韶涵','计算机','02','没有','421') insert into new_table values('猛非','动漫','01','没有','423')insert into new_table values('郑秀文','网络','02','没有','411')insert into new_table values('林俊杰','计算机','01','没有','511') insert into new_table values('羽泉','计算机','01','没有','500')insert into new_table values('郭富城','网络','02','没有','400')insert into new_table values('黄品源','动漫','02','没有','589')insert into new_table values('梁朝伟','计算机','02','没有','530') insert into new_table values('李克勤','网络','01','没有','520')insert into new_table values('陈小春','国际金融','02','没有','512') insert into new_table values('刘若英','证券期货','02','没有','421') insert into new_table values('刘嘉玲','房地产金融','01','没有','428') insert into new_table values('谭咏麟','房地产金融','02','没有','498') insert into new_table values('张学友','证券期货','01','没有','454') insert into new_table values('张卫健','证券期货','02','没有','515') insert into new_table values('周传雄','房地产金融','01','没有','532') insert into new_table values('周星驰','国际金融','02','没有','423') insert into new_table values('游鸿明','房地产金融','02','没有','447') insert into new_table values('言承旭','国际金融','02','没有','488') insert into new_table values('许志安','国际金融','01','没有','582') insert into new_table values('叶倩文','房地产金融','01','没有','495') insert into new_table values('叶世荣','房地产金融','02','没有','499') insert into new_table values('张雨生','证券期货','02','没有','531') insert into new_table values('周润发','国际金融','01','没有','531') insert into new_table values('张信哲','证券期货','01','没有','424') insert into new_table values('周渝民','证券期货','02','没有','412') insert into new_table values('太极乐队','证券期货','02','没有','423') --查询new_table表select*from new_table--涉及空值的查询select*from new_table where其他is nullselect*from new_table where not其他is null--用指定使用结果值来创建一个表(注意:在表前加一个#创建出来的是临时表)select学号,名称,高考分数into score_table from new_tableselect*from score_table--对结果进行分组select系部代码from new_table group by系部代码select专业方向from new_table group by专业方向select专业方向from new_table group by专业方向having专业方向<>'动漫'--having起到筛选作用--排序查询(asc升序desc降序)select*from new_table order by高考分数ascselect*from new_table order by高考分数desc五.数据表中对数据进行统计--查询数据库表new_table中的信息select*from new_tableselect*from new_table order by高考分数descselect top 3 *from new_table order by高考分数desc--查询总人数select count(*)as总人数from new_table--这里的as是为列重命名select count(学号)as总人数from new_tableselect count(其他)as总人数from new_table--计算整个班级高考的总分数select sum(高考分数)as总分from new_table--计算整个班级高考的平均分数select avg(高考分数)as平均分from new_table--计算整个班级高考的最大值select max(高考分数)as最大值from new_table--计算整个班级高考的最小值select min(高考分数)as最小值from new_table--对查询结果集中的所有记录进行汇总统计,并显示所有参加汇总记录的详细信息select*from new_table order by专业方向compute sum(高考分数)select专业方向,count(*)as总人数from new_table group by专业方向--统计专业方向一共多少select专业方向,count(*)as总人数from new_table group by专业方向compute count(专业方向)--统计系部总人数select专业方向,count(*)as总人数from new_table group by专业方向compute sum(count(*))六.数据库中表的连接查询--插入数据这里的go起到连接作用insert into系部(系部代码,系部名称,系主任)values('01','计算机系','老张') goinsert into系部(系部代码,系部名称,系主任)values('02','经济管理系','老陈') goinsert into系部(系部代码,系部名称,系主任)values('03','机械系','老李')goinsert into系部(系部代码,系部名称,系主任)values('04','计算机系','老梁') goinsert into专业表(专业代码,专业名称,系部代码)values('0101','软件工程','01')goinsert into专业表(专业代码,专业名称,系部代码)values('0102','网络工程','01')goinsert into专业表(专业代码,专业名称,系部代码)values('0103','信息工程','01')goinsert into专业表(专业代码,专业名称,系部代码)values('0201','工商管理','02')goinsert into专业表(专业代码,专业名称,系部代码)values('0202','物流管理','02')goinsert into专业表(专业代码,专业名称,系部代码)values('0301','模具加工','03')goinsert into专业表(专业代码,专业名称,系部代码)values('0302','机电一体化','03')goinsert into专业表(专业代码,专业名称,系部代码)values('0401','应用数学','04')goinsert into专业表(专业代码,专业名称,系部代码)values('0402','金融数学','04')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注)values('010101','软件工程班','0101','01','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注)values('010102','软件工程班','0101','01','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注)values('010103','网络工程班','0102','01','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注)values('010104','网络工程班','0102','01','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注)values('010105','信息工程班','0103','01','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注)values('010106','工商管理班','0201','02','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注)values('010107','物流管理班','0202','02','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注)values('010108','模具加工班','0301','03','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注)values('010109','应用数学班','0401','04','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注) values('0101010','金融数学班','0402','04','暂无')goinsert into班级表(班级代码,班级名称,专业代码,系部代码,备注) values('0101011','金融数学班','0402','04','暂无')goinsert into学生表values('010*********','刘德华','男','1988-5-5','2010-9-1','010101','01','0101')goinsert into学生表values('010*********','张学友','男','1988-1-4','2010-9-1','010102','02','0102')goinsert into学生表values('010*********','梁静茹','女','1988-2-1','2010-9-1','010103','03','0103')goinsert into学生表values('010*********','陈奕迅','男','1983-5-3','2010-9-1','010104','04','0201')goinsert into学生表values('010*********','张韶涵','女','1987-8-6','2010-9-1','010105','01','0202')goinsert into学生表values('010*********','林俊杰','男','1988-6-6','2010-9-1','010106','02','0301')goinsert into学生表values('010*********','孙燕姿','女','1984-5-3','2010-9-1','010107','03','0302')goinsert into学生表values('010*********','周华健','男','1986-8-6','2010-9-1','010108','04','0401')goinsert into学生表values('010*********','尚雯婕','女','1988-6-6','2010-9-1','010109','01','0402')goinsert into学生表values('010*********','任贤齐','男','1984-5-3','2010-9-1','0101010','02','0101')goinsert into学生表values('010*********','魏晨','男','1986-8-6','2010-9-1','0101011','03','0102')goinsert into学生表values('010*********','庞龙','男','1988-6-6','2010-9-1','010101','04','0103')goinsert into学生表values('010*********','刘若英','女','1988-5-3','2010-9-1','010102','01','0201')goinsert into学生表values('010*********','李圣杰','男','1989-8-6','2010-9-1','010103','02','0202')goinsert into学生表values('010*********','吴克群','男','1989-2-9','2010-9-1','010104','03','0301')go--连接查询(交叉查询)select*from学生表cross join班级表--列举学生表中的学生姓名和性别班级表中的班级名称select学生表.姓名,学生表.性别,班级表.班级名称from学生表cross join班级表--将两个表中相同列合为一列select学生表.姓名,学生表.性别,班级表.班级名称from学生表cross join班级表where学生表.班级代码=班级表.班级代码--自然连接select*from学生表join班级表on学生表.班级代码=班级表.班级代码select学生表.姓名,学生表.性别,班级表.班级名称from学生表join班级表on学生表.班级代码=班级表.班级代码--表的自身连接(需要取别名)select a.姓名,b.性别from学生表as a join学生表as b on a.学号=b.学号--外连接表查询create table产品(产品编号char(9)not null,产品名称varchar(20)not null)create table产品销售(产品编号char(9)not null,销量int)insert into产品values('001','显示器')insert into产品values('002','键盘')insert into产品values('003','鼠标')insert into产品销售values('001','25')insert into产品销售values('003','35')insert into产品销售values('005','30')select*from产品select*from产品销售--左外连接select*from产品left join产品销售on产品.产品编号=产品销售.产品编号--右外连接select*from产品right join产品销售on产品.产品编号=产品销售.产品编号--完全外连接select*from产品full join产品销售on产品.产品编号=产品销售.产品编号--合并结果集(把重复的过滤掉了)select姓名,性别,出生日期from学生表union select姓名,性别,出生日期from学生表七.数据库中多表查询和子查询--多表连接查询select学生表.学号,学生表.姓名,学生表.性别,班级表.班级名称,专业表.专业名称,系部.系部名称from学生表join班级表on学生表.班级代码=班级表.班级代码join专业表on学生表.专业代码=专业表.专业代码join系部on学生表.系部代码=系部.系部代码select学生表.学号,学生表.姓名,学生表.性别,班级表.班级名称from学生表join班级表on学生表.班级代码=班级表.班级代码and性别='男'--嵌套查询(子查询)带有IN运算符的子查询,in运算符的子查询返回的结果是集合select*from系部select*from学生表where系部代码='01'select*from学生表where班级代码in(select班级代码from班级表where专业代码in(select专业代码from专业表where系部代码in(select系部代码from系部where系部代码in(01))))--带有比较运算符的子查询select*from学生表where出生日期>(select出生日期from学生表where姓名='刘德华')--带有any(满足条件中的任何一个)或all(大于结果中的所有值)的子查询select*from score_table order by高考分数descselect*from score_table where高考分数>any(select高考分数fromscore_table where学号in(29,25))select*from score_table where高考分数>all(select高考分数fromscore_table where学号in(29,25))--带有exists运算符的子查询select*from score_table where exists(select*from score_table where 名称='张学友')八.数据库中数据完整性约束select*from系部where系部代码=(select系部代码from专业表where专业代码=(select专业代码from班级表where班级代码=(select班级代码from学生表where姓名='刘德华')))--使用sql语句创建唯一约束alter table系部add constraint wywy unique nonclustered(系部名称)--创建检查约束alter table score_table add constraint ck_name check(高考分数>300 and高考分数<600)--创建默认约束alter table new_table add constraint df default'我叫徐守威'for'其他' --删除约束alter table score_table drop constraint ck_name九.数据库中数据规则--创建规则create rule gz as @a>300 and @a<600--绑定规则execute sp_bindrule'gz','new_table.高考分数'select*into new_table1 from new_table--解除规则execute sp_unbindrule'new_table.高考分数'--删除规则drop rule gz--创建默认create default df_name as'男'--绑定默认execute sp_bindefault'df_name','学生表.性别'--解除默认execute sp_unbindefault'df_name','学生表.性别'--删除默认drop default df_name十.数据库中索引--创建索引create clustered index索引名on score_table(名称)create unique clustered index索引名on score_table(名称)--查看索引信息execute sp_helpindex score_table--删除索引drop index score_table.索引名十一.数据库视图--创建视图create view v1 asselect学生表.学号,学生表.姓名,班级表.班级名称,专业表.专业名称,系部.系部名称from学生表join班级表on学生表.班级代码=班级表.班级代码join专业表on班级表.专业代码=专业表.专业代码join系部on专业.系部代码=系部.系部代码--创建一般视图create view视图名asselect*from score_table--创建加密视图create view加密视图名with encryptionasselect*from score_table--创建视图及表的架构绑定create view视图及表的架构绑定with schemabindingasselect姓名,性别from dbo.score_table--在视图中增加、删除数据insert into视图名(姓名,性别)values('xushouwei','男')update视图名set姓名='徐守威'where姓名='xushouwei'delete视图名where姓名='徐守威'--删除视图drop view视图名--系统存储过程查看视图execute sp_helptext视图名十二.数据库存储过程--创建存储过程create procedure passelect学生表.学号,学生表.姓名,班级表.班级名称,专业表.专业名称,系部.系部名称from学生表join班级表on学生表.班级代码=班级表.班级代码join专业表on班级表.专业代码=专业表.专业代码join系部on专业表.系部代码=系部.系部代码--执行存储过程execute p--为存储过程加上参数create procedure p1@sex varchar(10),@id varchar(10)asselect学生表.学号,学生表.姓名,班级表.班级名称,专业表.专业名称,系部.系部名称from学生表join班级表on学生表.班级代码=班级表.班级代码and学生表.性别=@sexjoin专业表on班级表.专业代码=专业表.专业代码join系部on专业表.系部代码=系部.系部代码and系部.系部代码=@id--执行带参数的存储过程execute p1'男','01'--创建带返回参数的存储过程create procedure p2@name varchar(10),@getnum varchar(10)outputasselect @getnum=学号from学生表where姓名=@name--执行带返回参数的存储过程execute p2'刘德华',''--查看存储过程execute sp_helptextexecute sp_dependsexecute sp_help--删除存储过程drop procedure pdrop procedure p,p1drop procedure p,p1,p2十三.数据库触发器--创建触发器(执行插入操作)create trigger myinserton产品for insertasdeclare @a char(10)select @a=产品编号from insertedinsert into产品销售values(@a,0)--查询触发器中的数据select*from产品select*from产品销售--执行插入操作insert into产品values('01','电视')insert into产品values('02','电脑')--创建触发器(执行删除操作)create trigger mydeleteon产品for deleteasdeclare @a char(10)select @a=产品编号from deleteddelete产品销售where产品编号=@a--执行删除操作delete产品where产品编号='02'--查看触发器信息execute sp_helptrigger产品--删除触发器drop trigger myinsertdrop trigger mydelete十四.数据库函数--avg求平均分函数select班级名称,avg(学生表.高考分数)from班级表join学生表on班级表.班级代码=学生表.班级代码group by班级名称--max求最大值select班级名称,max(学生表.高考分数)from班级表join学生表on班级表.班级代码=学生表.班级代码group by班级名称--min求最小值select班级名称,min(学生表.高考分数)from班级表join学生表on班级表.班级代码=学生表.班级代码group by班级名称--abs(x)返回绝对值select abs(-8)--ceiling(x)返回大于或等于所给数字的最小整数select ceiling(3)--pi()(pi值)select pi()--power(x,y)返回x的y次方select power(2,3)--rand()返回~1之间的随机数select rand()--返回数据库的版本号select@@version--获取当前语言select@@language--当前时间select getdate()--取出天select day(getdate())--取出月select month(getdate())--取出年select year(getdate())--加三天(“d”表示天,“m”表示月,“y”表示年)select dateadd(d,3,getdate())as Jasxu_dateadd--取出时间的某一部分(“d”表示天,“m”表示月,“y”表示年)select datename(d,'2013-12-12')select datename(d,getdate())--排名函数select姓名,rank()over(order by高考分数desc)as名次,高考分数from学生表。
SQLServer2005 管理与开发复习总结
SQLServer2005 管理与开发复习总结一、数据库系统基础数据库就是长期存储在计算机内的、有组织的、可共享的数据集合。
具有集成性、共享性、海量性、持久性的特点。
数据库系统是由数据库(DB)、数据库管理系统(DBMS)、应用系统、数据管理员和用户构成的。
DBMS是位于用户与操作系统间的数据管理软件,它主要解决的问题是如何科学的组织和存储数据以及如何高效的获取和维护数据。
数据定义功能、数据处理功能、数据安全功能、数据备份功能。
DBA是全面负责数据库正常运转的高级人员,他们主要负责:决定数据库中的信息内容和结构,决定数据库的存储结构和存储策略,定义数据的安全性要求和完整性约束条件,监控数据库的使用和运行以及数据库的改进和重组重构。
数据模型常由数据结构、数据操作和完整性约束三个基本部分组成。
数据库领域常用的四种数据模型1、层次模型2、网状模型3、关系模型4、面向对象的模型。
(关系模型是目前最重要的一种数据模型,它使用的存储结构是多个二位表格,实体和实体间的联系都是用关系来表示。
元组是表中的一行,属性是表中一列,域是属性的取值范围,分量是元组中的一个属性值,一个关系对应一张表,关键字是唯一确定的的一个元组。
关系操作有选择、投影、并、交、差、除、连接等查询操作和增加、删除、修改操作。
关系操作主要特点是集合操作,操作对象和结果都是集合。
实体完整性、参照完整性和用户定义完整性)Microsoft SQL Server 是一种基于客户机和服务器的关系型数据管理系统,用来对存放在计算机中的数据库进行组织、管理和检索,它使用T—SQL语言在服务器和客户及之间传送请求。
SQL Server 是一种介于关系代数与关系演算之间的结构化查询语言。
SQL Server两种使用方式:联机使用方式,嵌入程序方式。
SQL Server 2005 的Internet的要求4.01 IIS5.0的版本。
SQL Server 2005两种身份验证,Windows验证和混合验证。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server 2005 学习笔记【经典】第1章SQL Server 2005关系数据库简介1.1 关系数据库最常用的数据模型有层次模型(Hierarchical Model)、网状模型(Network Model)和关系模型(Relational Model)。
•关系模型就是用二维表格结构来表示实体及实体之间联系的模型。
1.1.1 关系模型的基本概念关系(Relation):一个关系对应一张二维表,每个关系有一个关系名。
在SQL Server中,一个关系就是一个表文件。
元组(Tuple):二维表中水平方向的一行,有时也叫做一条记录。
属性(Attribute):表格中的一列,相当于记录中的一个字段。
关键字(Key):可唯一标识元组的属性或属性集,也称为关系键或主码。
域(Domain):属性的取值范围,如性别的域是(男,女)。
分量:每一行对应的列的属性值,即元组中的一个属性值。
关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,……属性n)。
1.1.2 关系模型的性质(1)关系中不允许出现相同的元组。
因为数学上集合中没有相同的元素,而关系是元组的集合,所以作为集合元素的元组应该是唯一的。
(2)关系中元组的顺序(即行序)是无关紧要的,在一个关系中可以任意交换两行的次序。
因为集合中的元素是无序的,所以作为集合元素的元组也是无序的。
根据关系的这个性质,可以改变元组的顺序使其具有某种排序,然后按照顺序查询数据,可以提高查询速度。
(3)关系中属性的顺序是无关紧要的,即列的顺序可以任意交换。
交换时,应连同属性名一起交换,否则将得到不同的关系。
(4)同一属性名下的各个属性值必须来自同一个域,是同一类型的数据。
(5)关系中各个属性必须有不同的名字,不同的属性可来自同一个域,即它们的分量可以取自同一个域。
(6)关系中每一分量必须是不可分的数据项,或者说所有属性值都是原子的,是一个确定的值,而不是值的集合。
1.1.3 关系数据库完整性1、实体完整性(Entity Integrity)•实体完整性是指主关系键的值不能为空或部分为空。
2、参照完整性(Referential integrity)•如果关系R2的外部关系键X与关系R1的主关系键相符,则X的每个值或者等于R1中主关系键的某一个值,或者取空值。
3、域完整性•域完整性是针对某一具体关系数据库的约束条件。
它反映某一具体应用所涉及的数据必须满足的语义要求。
1.1.4 关系数据库的规范化•第一范式(1NF):元组中每一个分量都必须是不可分割的数据项•第二范式(2NF):不仅满足第一范式,而且所有非主属性完全依赖于其主码•第三范式(3NF):不仅满足第二范式,而且它的任何一个非主属性都不传递于任何主关键字1.2 SQL Server 2005的新特点1、增强的通知服务。
2、增强的报表服务。
3、新增Service Broker技术。
4、增强的数据引擎。
5、增强的数据访问接口。
6、增强的分析服务。
7、增强的集成服务。
8、增强的数据复制服务。
9、改进的开发工具。
1.3 SQL Server2005环境需求1.4 SQL Server2005系统数据库简介SQL Server 2005有4个系统数据库,它们分别为Master、Model、Msdb、Tempdb。
(1)Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息。
这些系统信息包括所有的登录信息、系统设置信息、SQL Server的初始化信息和其他系统数据库及用户数据库的相关信息。
因此,如果master 数据库不可用,则SQL Server 无法启动。
在SQL Server 2005 中,系统对象不再存储在master 数据库中,而是存储在Resource 数据库中。
(2)model 数据库用作在SQL Server 实例上创建的所有数据库的模板。
因为每次启动SQL Server 时都会创建tempdb,所以model 数据库必须始终存在于SQL Server 系统中。
当发出CREATE DATABASE (创建数据库)语句时,将通过复制model 数据库中的内容来创建数据库的第一部分,然后用空页填充新数据库的剩余部分。
如果修改model 数据库,之后创建的所有数据库都将继承这些修改。
例如,可以设置权限或数据库选项或者添加对象,例如,表、函数或存储过程。
(3)Msdb数据库是代理服务数据库,为其报警、任务调度和记录操作员的操作提供存储空间。
(4)Tempdb是一个临时数据库,它为所有的临时表、临时存储过程及其他临时操作提供存储空间。
Tempdb 数据库由整个系统的所有数据库使用,不管用户使用哪个数据库,他们所建立的所有临时表和存储过程都存储在tempdb上。
SQL Server每次启动时,tempdb数据库被重新建立。
当用户与SQL Server断开连接时,其临时表和存储过程自动被删除。
1.4.1 SQL Server 2005管理平台SQL Server 2005管理平台(SQL Server Management Studio)包含了SQL Server 2000企业管理器(Enterprise Manager),以及查询分析器(Query Analyzer)等方面的功能。
此外,SQL Server 2005管理平台还提供了一种环境,用于管理Analysis Services(分析服务)、Integration Services(集成服务)、Reporting Services(报表服务)和XQuery。
1.4.2 商业智能开发平台SQL Server商业智能开发平台(Business Intelligence Development Studio)是一个集成的环境,用于开发商业智能构造(如多维数据集、数据源、报告和Integration Services 软件包),如下图所示。
1.4.3 SQL Server分析器SQL Server分析器(Profiler)是一个图形化的管理工具,用于监督、记录和检查SQL Server 数据库的使用情况。
对系统管理员来说,它是一个连续实时地捕获用户活动情况的间谍。
可以通过多种方法启动SQL Server Profiler,以支持在各种情况下收集跟踪输出。
如下图所示。
1.4.4 数据库引擎优化顾问企业数据库系统的性能依赖于组成这些系统的数据库中物理设计结构的有效配置。
这些物理设计结构包括索引、聚集索引、索引视图和分区,其目的在于提高数据库的性能和可管理性。
SQL Server 2005 提供了数据库引擎优化顾问,这是分析一个或多个数据库上工作负荷的性能效果的工具。
如下图所示。
1.4.5 分析服务Microsoft SQL Server 2005 Analysis Services (SSAS) 为商业智能应用程序提供联机分析处理(OLAP) 和数据挖掘功能。
Analysis Services 允许设计、创建和管理包含从其他数据源(如关系数据库)聚合的数据的多维结构,以实现对OLAP 的支持。
对于数据挖掘应用程序,分析服务允许设计、创建和可视化处理那些通过使用各种行业标准数据挖掘算法,并根据其他数据源构造出来的数据挖掘模型。
1.4.6 SQL Server配置管理器SQL Server 配置管理器是一种工具,用于管理与SQL Server 相关联的服务、配置SQL Server 使用的网络协议以及从SQL Server 客户端计算机管理网络连接配置。
如下图所示。
1.4.7 SQL Server文档和教程SQL Server 2005提供了大量的联机帮助文档(Books Online),它具有索引和全文搜索能力,可根据关键词来快速查找用户所需信息。
SQL Server 2005 中提供的教程可以帮助了解SQL Server 技术和开始项目,如下图所示。
第2章服务器管理2.1 服务器注册2.1.1 创建服务器组在一个网络系统中,可能有多个SQL Server服务器,可以对这些SQL Server服务器进行分组管理。
分组的原则往往是依据组织结构原则,如将公司内一个部门的几个SQL Server服务器分为一组。
SQL Server 分组管理由SQL Server管理平台来进行。
2.1.2 服务器注册与连接在SQL Server管理平台中注册服务器可以存储服务器连接信息,以供将来连接时使用。
有三种方法可以在SQL Server管理平台中注册服务器:(1)在安装管理平台之后首次启动它时,将自动注册SQL Server 的本地实例;(2)可以随时启动自动注册过程来还原本地服务器实例的注册;(3)可以使用SQL Server管理平台的“已注册的服务器”工具注册服务器。
在注册服务器时必须指定以下选项,如图2-3所示:(1)服务器的类型。
(2)服务器的名称。
(3)登录到服务器时使用的身份验证的类型,以及登录名和密码(如果需要)。
(4)注册了服务器后要将该服务器加入到其中的组的名称。
选择服务器连接属性页框,还可以指定下列连接选项,如图2-4所示:(1)服务器默认情况下连接到的数据库。
(2)连接到服务器时所使用的网络协议,要使用的网络数据包大小。
(3)连接超时值,执行超时值等。
要和已注册的服务器实现“连接”,则需要使用右键单击一个服务器,指向“连接”,然后单击“对象资源管理器”,如图2-5所示。
与连接服务器相反的是断开服务器,只要在所要断开的服务器上单击右键,选择“断开”即可。
注意断开服务器并不是从计算机中将服务器删除,而只是从SQL Server管理平台中删除了对该服务器的引用。
需要再次使用该服务器时,只需在SQL Server管理平台中重新连接即可。
2.2 服务器启动、暂停和停止在SQL Server管理平台中,在所要启动的服务器上单击右键,从弹出的快捷菜单中选择“启动”选项,即可启动服务器。
暂停和关闭服务器的方法与启动服务器的方法类似,只需在相应的快捷菜单中选择“暂停(Pause)”或“停止(Stop)”选项即可,如图2-6所示。
2.3 服务器配置选项设置使用SQL Server管理平台配置服务器的操作方法为:在SQL Server管理平台中用右键单击所要进行配置的服务器,从快捷菜单中选择“属性(Properties)”选项,就会出现如图2-7所示的对话框,其中可以进行服务器的属性(配置选项)的设置。
在如图2-7所示的服务器属性对话框中共有7个选项。
这7个选项分别是:常规选项、内存选项、处理器选项、安全性选项、连接选项、数据库设置选项、高级选项。
第3章Transact-SQL语言3.1 数据定义语言数据定义语言(DDL)是指用来定义和管理数据库以及数据库中各种对象的语句,这些语句包括CREATE、ALTER和DROP等。