SQLServer2000学习笔记
(完整word版)SQLServer2000基础教程

安装
新建数据库
也能够使用导游来创立数据库:
表设计Class:
主键拘束
Unique 拘束新加一个索引:
Check 拘束
默认值、用户定义的数据种类
新建 Student 表:
外键
关系图
在关系图中设计表:增添 Age 列:
增添 Teacher 表:
增添表记列:
增添主外键关系:
视图设计
储存过程设计
在查问剖析器中履行储存过程:
备份数据库或许用导游进行备份:
复原数据库
经过拷贝MDF 和 LDF 文件的方式备份前需要分别数据库,不然提示:
数据库保护计划
生成数据库构造脚本
删除数据库后,可经过履行导出的SQL 脚原来重修数据库:
SaleManagement 实例操练
1、创立数据库
2、创立数据库表
Product 表:
创立其余表3、关系图:
4、输入数据Dept:
Employee:
Product:
SaleForm:SaleFormDetail :
5、创立查问视图
按部门查察销售业绩:
按产品查察销售额:
6、创立储存过程。
sql2000教程

SQL2000教程介绍SQL(Structured Query Language),结构化查询语言,是一种用于管理和操作关系型数据库的编程语言。
SQL2000是Microsoft SQL Server 2000的简称,是一种流行的关系型数据库管理系统(RDBMS)。
本教程将带您了解SQL2000的基本概念和常用操作。
目录1.安装SQL20002.连接到SQL Server3.创建数据库4.创建表5.插入数据6.查询数据7.更新数据8.删除数据9.数据库备份和还原10.结束语1. 安装SQL2000在开始学习SQL2000之前,您需要先安装SQL2000数据库管理系统。
请按照官方文档或指南来完成安装步骤。
2. 连接到SQL Server安装完成后,您需要连接到SQL Server以开始使用SQL2000。
您可以使用SQL Server Management Studio这样的图形化工具,或者使用命令行工具如SQLCMD来连接。
•使用图形化工具:打开SQL Server Management Studio,输入服务器名称、身份验证方式和登录凭据,点击连接即可连接到SQL Server。
•使用命令行工具:打开命令提示符或PowerShell,输入以下命令连接到SQL Server:sqlcmd -S 服务器名称 -U 用户名 -P 密码3. 创建数据库连接上SQL Server后,您可以创建自己的数据库来存储数据。
使用以下的SQL语句来创建数据库:CREATE DATABASE database_name;请将database_name替换为您要创建的数据库名称。
4. 创建表在数据库中,表是用于组织和存储数据的基本单位。
使用以下的SQL语句来创建表:CREATE TABLE table_name (column1 datatype,column2 datatype,...);请将table_name替换为您要创建的表名,column1、column2等为表的列名,datatype为列的数据类型。
SQLSERVER重要知识点归纳

1,数据模型:由数据结构、数据操作和数据的完整性约束组成。
2,在E-R概念模型中,信息由实体型、实体属性和实体间联系3种概念单元来表示。
3,第一范式(1NF):设R是一个关系模式,如果R中的每个属性都是不可分解的,则称R 是第一范式;第二范式(2NF):如果关系模式R是第一范式,且每个非码属性都完全依赖于码属性,则称R是第二范式;第三范式(3NF):如果关系模式是R第二范式,且没有一个非码属性传递依赖于码,则称R是第三范式。
4,Transact-SQL语句的分类如下所示:○1变量声明Transact-SQL语言可以使用两类变量,局部变量和全局变量。
○2数据定义语言(Data Definition Language,DDL),用来建立数据库及数据库对象,绝大部分以Create开头,如Create Table等○3数据控制语言(Data Control Language,DCL),用来控制数据库组件的存取访问、权限等命令,如GRANT、REVOKE等○4数据操纵语言(Data Manipulation Language,DML),用来操纵数据库中数据的命令,如SELECT、UPDATE等○5流程控制语言(Flow Control Language,FCL),用于控制应用程序流程的语句,如IF、CASE 等。
5,数据类型:整数型:bigint(8个字节,-263~263-1),int(4个字节,-231~231-1),smallint(2个字节,-215~215-1),tingyint(1个字节,0~255);小数数据类型:decimal [(p[,s])] p精度:指定小数点左边和右边可以存储的十进制数字的最大个数。
1~38 s小数位数:0~p之间的值;numeric [(p[,s])]近似数值型:float[(n)] n:1~53 取值范围:-1.79308~1.79308real 取值范围:-3.4038~3.4038字符型(字符常量必须包含在单引号或双引号中):char[(n)]:长度为n个字节的固定长度且非Unicode的字符数据,存储大小为n个字节。
《SQL_Server_2000_实验指导》课后作业

目录创建数据库 JXSK: .........................................................................................................................- 1 创建 JXSK 中的表: ........................................................................................................................- 1 插入 JXSK 库中各表值: ................................................................................................................- 1 创建数据库 JIAOXUEDB:................................................................................................................- 3 创建 JIAOXUEDB 中的表: ...............................................................................................................- 3 插入 JIAOXUEDB 库中各表值: .......................................................................................................- 3 实验 4:习题 ..................................................................................................................................- 5 实验 5:习题 ..................................................................................................................................- 7 实验 6:习题 ..................................................................................................................................- 7 实验 7:习题 ..................................................................................................................................- 8 实验 8:习题 ................................................................................................................................ - 12 实验 9:习题 ................................................................................................................................ - 17 实验 10:习题 .............................................................................................................................. - 21 实验 11:习题 .............................................................................................................................. - 24 实验 12:习题 .............................................................................................................................. - 26 实验 13:习题 .............................................................................................................................. - 39 -创建数据库 jxsk: CREATE DATABASE jxsk ON (NAME=jxsk_dat,FILENAME='d:\jxsk_dat.mdf') LOG ON (NAME=jxsk_log,FILENAME='d:\jxsk_log.ldf') GO创建 jxsk 中的表: USE jxsk CREATE TABLE S( SNO CHAR(2) NOT NULL, SN CHAR(8) NOT NULL, SEX CHAR(2) NULL, AGE TINYINT NULL, DEPT CHAR(10) NULL) CREATE TABLE T( TNO CHAR(2) NOT NULL, TN CHAR(8) NOT NULL, SEX CHAR(2) NULL, AGE TINYINT NULL, PROF CHAR(10) NULL, SAL SMALLINT NULL, COMM SMALLINT NULL, DEPT CHAR(10) NULL) CREATE TABLE C( CNO CHAR(2) NOT NULL, CN CHAR(10) NOT NULL, CT TINYINT NULL, ID_TC TINYINT NULL) CREATE TABLE SC( SNO CHAR(2) NOT NULL, CNO CHAR(2) NOT NULL, SCORE TINYINT NULL) CREATE TABLE TC( TNO CHAR(2) NOT NULL, CNO CHAR(2) NOT NULL)插入 jxsk 库中各表值: USE jxskINSERT INTO S VALUES('S2','钱尔','男',18,'信息') INSERT INTO S VALUES('S3','孙姗','女',20,'信息')-1-INSERT INTO S VALUES('S4','李思','男',21,'自动化') INSERT INTO S VALUES('S5','周武','男',19,'计算机') INSERT INTO S VALUES('S6','吴丽','女',20,'自动化') INSERT INTO S VALUES('S7','李奇','男',18,'外语') INSERT INTO S VALUES('S8','古明','男',NULL,'计算机') INSERT INTO S VALUES('S9','赵亦','女',17,'计算机') INSERT INTO T VALUES('T5','张兰','女',39,'副教授',1300,2000,'信息') INSERT INTO T VALUES('T4','张雪','女',51,'教授',1600,3000,'自动化') INSERT INTO T VALUES('T3','刘伟','男',30,'讲师',900,1200,'计算机') INSERT INTO T VALUES('T2','王平','女',28,'讲师',800,1200,'信息') INSERT INTO T VALUES('T1','李力','男',47,'教授',1500,3000,'计算机') INSERT INTO C VALUES('C1','程序设计',60,1) INSERT INTO C VALUES('C2','微机原理',80,2) INSERT INTO C VALUES('C3','数字逻辑',60,3) INSERT INTO C VALUES('C4','数据结构',80,4) INSERT INTO C VALUES('C5','数据库',60,5) INSERT INTO C VALUES('C6','编译原理',60,6) INSERT INTO C VALUES('C7','操作系统',60,7) INSERT INTO SC VALUES('S2','C5',57) INSERT INTO SC VALUES('S2','C6',80) INSERT INTO SC VALUES('S2','C7',NULL) INSERT INTO SC VALUES('S3','C1',75) INSERT INTO SC VALUES('S3','C2',70) INSERT INTO SC VALUES('S3','C4',85) INSERT INTO SC VALUES('S4','C1',93) INSERT INTO SC VALUES('S4','C2',85) INSERT INTO SC VALUES('S4','C3',83) INSERT INTO SC VALUES('S5','C2',89) INSERT INTO SC VALUES('S9','C1',90) INSERT INTO SC VALUES('S9','C2',85) INSERT INTO TC VALUES('T2','C5') INSERT INTO TC VALUES('T3','C1') INSERT INTO TC VALUES('T3','C5') INSERT INTO TC VALUES('T4','C2') INSERT INTO TC VALUES('T4','C3') INSERT INTO TC VALUES('T5','C5') INSERT INTO TC VALUES('T5','C7') INSERT INTO TC VALUES('T1','C1') INSERT INTO TC VALUES('T1','C4')-2-创建数据库 jiaoxuedb: CREATE DATABASE jiaoxuedb ON (NAME=jiaoxuedb_dat,FILENAME='d:\jiaoxuedb_dat.mdf') LOG ON (NAME=jiaoxuedb_log,FILENAME='d:\jiaoxuedb_log.ldf') GO创建 jiaoxuedb 中的表: USE jiaoxuedb CREATE TABLE Student( Sno CHAR(10) NOT NULL, Sname CHAR(10) NOT NULL, Sex CHAR(2) NULL, Age TINYINT NULL, Dept CHAR(10) NULL) CREATE TABLE Teacher( Tno CHAR(10) NOT NULL, Tname CHAR(10) NOT NULL, Sex CHAR(2) NULL, Age TINYINT NULL, Prof CHAR(10) NULL, Sal SMALLINT NULL, Comm SMALLINT NULL, Dept CHAR(10) NULL) CREATE TABLE Course( Cno CHAR(10) NOT NULL, Cname CHAR(10) NOT NULL, Chour TINYINT NULL, Ccredit TINYINT NULL) CREATE TABLE SC( Sno CHAR(10) NOT NULL, Cno CHAR(10) NOT NULL, SCORE TINYINT NULL) CREATE TABLE TC( Tno CHAR(10) NOT NULL, Cno CHAR(10) NOT NULL)插入 jiaoxuedb 库中各表值: USE jiaoxuedb /*Insert values to Student Table*/ INSERT INTO Student VALUES('001101','宋大方','男',19,'计算机')-3-INSERT INTO Student VALUES('002102','李王','男',20,'信息') INSERT INTO Student VALUES('991101','张彬','男',18,'计算机') INSERT INTO Student VALUES('991102','王蕾','女',19,'计算机') INSERT INTO Student VALUES('991103','张建国','男',18,'计算机') INSERT INTO Student VALUES('991104','李平方','男',18,'计算机') INSERT INTO Student VALUES('991201','陈东辉','男',19,'计算机') INSERT INTO Student VALUES('991202','葛鹏','男',21,'计算机') INSERT INTO Student VALUES('991203','潘桃芝','女',19,'计算机') INSERT INTO Student VALUES('991204','姚一峰','男',18,'计算机') INSERT INTO Student VALUES('001102','许辉','女',22,'计算机') INSERT INTO Student VALUES('001201','王一山','男',20,'计算机') INSERT INTO Student VALUES('001202','牛莉','女',19,'计算机') INSERT INTO Student VALUES('002101','李丽丽','女',19,'信息') /*Insert values to Teacher Table*/ INSERT INTO Teacher VALUES('000006','许红霞','女',39,'讲师',1100,1200,'计算机') INSERT INTO Teacher VALUES('000007','许永军','男',57,'教授',2000,3000,'计算机') INSERT INTO Teacher VALUES('000008','李贵青','女',65,'教授',2000,3000,'计算机') INSERT INTO Teacher VALUES('000009','王一凡','女',43,'讲师',1200,1200,'计算机') INSERT INTO Teacher VALUES('000010','田峰','男',33,'助教',500,800,'信息') INSERT INTO Teacher VALUES('000001','李英','女',39,'副教授',1500,2000,'信息') INSERT INTO Teacher VALUES('000002','张雪','女',51,'教授',1900,3000,'信息') INSERT INTO Teacher VALUES('000003','张朋','男',30,'讲师',1000,1200,'计算机') INSERT INTO Teacher VALUES('000004','王平','女',28,'讲师',850,1200,'信息') INSERT INTO Teacher VALUES('000005','李力','男',47,'教授',1800,3000,'计算机') /*Insert values to Course Table*/ INSERT INTO Course VALUEs('01001','计算机基础',60,3) INSERT INTO Course VALUEs('01002','程序设计',80,5) INSERT INTO Course VALUEs('02003','数据结构',60,6) INSERT INTO Course VALUEs('02001','数据库',80,6) INSERT INTO Course VALUEs('02002','计算机网络',60,6) INSERT INTO Course VALUEs('01003','微机原理',60,8) INSERT INTO Course VALUEs('02004','操作系统',60,6) INSERT INTO Course VALUEs('03001','软件工程',60,3) INSERT INTO Course VALUEs('03002','大型数据库',48,2) INSERT INTO Course VALUEs('03003','图像处理',48,2) /*Insert values to SC Table*/ INSERT INTO SC VALUES('991101','01001',88) INSERT INTO SC VALUES('991102','01001',93) INSERT INTO SC VALUES('991103','01001',90) INSERT INTO SC VALUES('991101','01002',90) INSERT INTO SC VALUES('991102','01002',98)-4-INSERT INTO SC VALUES('991103','01002',74) INSERT INTO SC VALUES('991104','01002',85) INSERT INTO SC VALUES('001201','01002',64) INSERT INTO SC VALUES('991104','02001',33) INSERT INTO SC VALUES('991104','01001',35) INSERT INTO SC VALUES('991201','01001',76) /*Insert values to TC Table*/ INSERT INTO TC VALUES('000001','02001') INSERT INTO TC VALUES('000008','02002') INSERT INTO TC VALUES('000003','02001') INSERT INTO TC VALUES('000011','02003') INSERT INTO TC VALUES('000001','01001') INSERT INTO TC VALUES('000002','01002') INSERT INTO TC VALUES('000002','01003') INSERT INTO TC VALUES('000004','02002') INSERT INTO TC VALUES('000005','01001') INSERT INTO TC VALUES('000006','01002') INSERT INTO TC VALUES('000003','01003')实验 4:习题 基于 jiaoxuedb 实验 1、 对个表创建实体完整性; USE jiaoxuedb ALTER TABLE Student ADD CONSTRAINT PK_SNO PRIMARY KEY(Sno) ALTER TABLE Teacher ADD CONSTRAINT PK_TNO PRIMARY KEY(Tno) ALTER TABLE Course ADD CONSTRAINT PK_CNO PRIMARY KEY(Cno) ALTER TABLE Student ADD CONSTRAINT UNIQUE_S UNIQUE(Sno) ALTER TABLE Teacher ADD CONSTRAINT UNIQUE_T UNIQUE(Tno) ALTER TABLE Course ADD CONSTRAINT UNIQUE_C UNIQUE(Cno)-5-2、 创建表之间的参照完整性。
SQLServer物化视图学习笔记

SQLServer物化视图学习笔记⼀、基本知识索引视图实际上是⼀种将⼀组唯⼀值“物化”为群集索引形式的视图(⽩话是,给视图中的唯⼀值列加聚集索引,然后数据会存储在硬盘中),提⾼查询速度。
通过使⽤来⾃第⼀个索引的聚集键作为参考点,SQL Server还能在视图上建⽴额外的索引。
其限制如下:1. 如果视图引⽤了任何⽤户⾃定义函数,那么这些函数也必须是模式绑定的;2. 视图不可以引⽤任何其他的视图-只能引⽤表和UDF;3. 在视图中引⽤的所有表和UDF必须采⽤两部分的命名约定(例如:dbo..Customers),并且也必须具有和视图相同的所有者;4. 视图和视图引⽤的所有对象必须在相同的数据库中;5. 在创建视图和所有底层表时,必须打开ANSI_NULLS以及QUOTED_IDENTIFIER选项;6. 视图引⽤的任何函数必须是确定的;7、必须要加上WITH SCHEMABINDING, 就是绑定到架构. 8、创建完视图后, 必须紧跟着创建⼀个CLUSTERED聚集唯⼀索引,⽽且必须在第⼀列(第⼀列是唯⼀值,类似于主键那样). 9、只⽀持两部分命名的表或UDF, 如 dbo.SalesOrder.10. 涉及到多个表连接时, 不⽀持left join 或right join的写法, 只能⽤from...where的⽅式或inner join的⽅式连接. (这⼀点有时很要命只能⽤inner join太蛋疼)11. 不⽀持table.*这种懒省事的⽅式, 得⼀个⼀个把想要的列写清楚.--创建模式绑定视图CREATE VIEW PersonAge_vwWITH SCHEMABINDINGASSELECT Age,COUNT_BIG(*) AS CountAge FROM dbo.PersonTenMillionGROUP BY Age--为视图创建索引CREATE UNIQUE CLUSTERED INDEX ivPersonAgeON PersonAge_vw(Age)SQL Server中的索引视图也具有查询重写的功能, 所谓的查询重写,就是如果符合条件的数据在索引视图上,并且查询列都包含在在索引视图上,此时可以直接通过查询索引视图来替代基于原始表的查询。
SQL SERVER2000教程

SQL SERVER2000教程第一章第一节简介SQL Server 2000是微软公司开发的采用SQL语言的关系型数据库管理系统,它拥有高弹性与多元化的结构,不仅符合业界的需要,更能与现今的互联网紧密集成,而对Windows CE/98/NT/2000/XP/2003等操作系统的全面支持的优越性得到最终程序开发人员的普遍认可。
SQL Server2000是服务器级的数据库管理系统,不论是客户机/服务器、多层结构,还是Database Web应用程序,SQL Server 2000都起着后端数据库的角色。
可以说,SQL Server 2000是所有数据的汇总与管理中心,是整个应用系统的枢纽。
第二节数据库分类逻辑数据库(1)系统数据库:系统数据库作为SQLSERVER默认安装的一部分而安装,由系统表和存储过程组成。
系统数据库、表以及存储过程共同为您提供了设计、创建、部署和维护世界级SQLSERVER数据库的工具和支持。
a)Master数据库:是追踪所有其它数据库和配置信息的关键数据库。
它控制着用户数据库和SQLSERVER的操作。
Master数据库对你的信息绝对重要,所以你应该总是保留Master数据库的最近备份。
b)Msdb数据库:是SQLSERVERAgent的主要支持。
SQLSERVERAgent负责复制、任务调度、警报、系统操作员信息以及备份信息。
因此,Msdb也是非常重要的,哪怕你不使用SQLSERVERAgent,在Msdb中的备份信息也有助于数据库的恢复。
c)Model数据库:是一个创建新数据库的模板,它包含了应该出现在每个用户数据库中的系统表。
在创建一个数据库时,SQLSERVER会把Model数据库的全部内容复制到新数据库中。
因此,如果你想每次创建数据库时自动地创建某些对象、权限和用户,你就可以把它们放在Model数据库中。
d)Tempdb数据库:保存所有临时表和临时存储过程。
临时表可以被程序员显示的创建。
第一章SQL Server 2000基础知识
一个数据库至少有一个主要数据文件和一个事务日 志文件。
1.3.1 SQL Server2000的系统数据库和示例数据库
安装SQL Server2000之后,系统会在Microsoft SQLServer\MSSQL\Data路径下自动创建4个系统数据库 (master、model、msdb、tempdb)和2个示例数据库 (Northwind、pubs)。 • Master数据库:它是SQLServer系统最重要的数据库,它记 录了SQLServer系统所有的系统信息。 • Model数据库:它是所有用户数据库和tempdb数据库的模板 数据库。 • Msdb数据库:它是代理服务数据库,为其警报、任务调度和 记录操作员的操作提供存储空间。 • Tempdb数据库:它是一个临时数据库,它为所有的临时表、 临时存储过程及其他临时操作提供存储空间。 • Northwind和pubs数据库:它们是两个实例数据库,可以作 为学习SQLServer的学习工具。
本章目标
了解数据库基本知识 掌握SQL Server2000的安装 熟悉SQL Server2000的主要管理工具 掌握数据库的基本操作
1.1 数据库基本知识
信息、数据、数据库、数据库管理系统、数据库系 统 关系型数据库的概念
1.1.1信息、数据、数据库、数据库管理系统、数据库系统
① 信息:通俗的讲,信息就是人们最关心事情的消息,信息是可感知的、 信息:
1.2.2 SQL Server2000 的主要管理工具
查询分析器(SQL Server Query Analyzer):是一个图形化 的执行T-SQL查询语句的强大工具。在查询分析器里可以交互式 地输入和执行各种T-SQL语句,并且在一个窗口中可以同时查看 T-SQL语句和其结果集;可以在查询分析器中同时执行多个TSQL语句,也可以执行脚本文件中的部分语句。
SQLSERVER2000培训
含
义
从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到 百分之三秒
可变长度的二进制数据,其最大长度为 2^31 - 1 (2,147,483,647) 个字节 货币数据值介于 -2^63 (-922,337,203,685,477.5808) 与 2^63 - 1 (+922,337,203,685,477.5807) 之间
2、块注释 通过在开始文件的开头放一个注释符(/*),输入注释,然后使用 注释结束符(*/)结束注释,可以创建多行块注释。 语法:/*注释文本*/
运算符
1、算术运算符
运算符 +(加) -(减) *(乘) /(除) %(模) 加法 减法 乘法 除法 返回一个除法的整数余数。12%5=2,因为12除以5余数是 2 含 义
运算符3通配符通配符百分号在该位置处有零个或者多个字符like?john?下划线在该位置处有一个字符like?张?常用函数1集合函数集合函数avg求平均值selectavgpriceavgpricefromtitlescount返回非空值的个数selectcountpricefromtitlescount返回全部记录的个数包含空值selectcountfromtitlesmax求最大值selectmaxpricemaxpricefromtitlesmin求最小值selectminpriceminpricefromtitlessum求和selectsumamountfromtitles常用函数2数学函数数学函数语法举例abs返回给定数的绝对值selectabs10将向用户返回10celing返回大于或等于所给数字表达式的最小整数值selectceling105将向用户返回11floor返回小于或等于所给数字表达式的最大整数值selectfloor105将向用户返回10power返回指定幂次数的乘方selectpower32将向用户返回9round返回数字表达式并四舍五入为指定的长度或精selectround82572将向用户返回826square返回一个数的平方selectsquare4将向用户返回16sqrt返回一个数的平方根selectsqrt9将向用户返回数值3常用函数3字符串函数字符串函数语法及举例char将int整数转换为字符的字符串函数selectchar78返回字符?n?
第四章 管理SQL Server2000数据库
五、创建、修改、删除数据库
五、创建、修改、删除数据库
五、创建、修改、删除数据库
五、创建、修改、删除数据库
五、创建、修改、删除数据库
六、数据库系统表
1、Sysdatabases表: 它对SQL Server系统上的每个系统数据库和用户自 定义的数据库含有一行记录,只出现在master数据库中。 2、Sysobjects表: SQL Server 的主系统表,出现在每个数据库中。每 个数据库对象在这里都对应一行记录。 3、Syscolumns表: 出现在master数据库和每个用户自定义的数据库中, 它对基表或者视图的每个列和存储过程中的每个参数含 有一行记录。
Ssex Ð Ä ® Å ® Å
Sage Sdept 20 SC 19 IS 18 MA
关系数据库
一、SQL Server2000服务器的结构
一、SQL Server2000服务器的结构
1、数据库
数据库是SQL Server2000用以存放数据 和数据库对象的容器。
其中,数据表是一种最重要的数据库对 象,它是数据存储的地方。 数据库不仅包含表,还包含其他的数据 库对象,例如,视图,存储过程和索引等。
第四章
管理SQL Server2000数据库
一、SQL Server2000服务器的结构
二、SQL Server2000数据库的结构
三、管理数据库文件 四、SQL Server2000的系统数据库与示例数据库 五、创建、修改、删除数据库
第四章
用户
管理SQL Server2000数件
•设臵数据文件
从上面讲的我们可以看出数据文件对数
据库系统的运行和性能优化都是非常重要的。
正确设臵数据文件是创建数据库过程中 最为关键的一个步骤,一定要仔细处理。
DELPHI7联接SQL SERVER2000数据库学习入门
PC-200910251923 是计算机名,也就是 SQL 服务器名; Test1 是数据库名
图表 0-6
设置完成后点击测试连接按钮,出现如下图画面时表示数据库连接成功可以点确定结束设置。
图表 0-7
DELPHI7
+ SQL server 2000 数据库学习入门
1. WINDOWS XP 操作系统,只能安装 SQL server 2000 简体中文个人版。 SQL server 2000 简体中文企业版,只能安装在 WINDOWS 服务器版的操作系统中。 2. 安装完成后,配置 SQL Server ODBC 数据源 2.1 在 WINDOWS
end.
Delphi 静态连接 SQL 数据库的方法
本文介绍 Delphi 连接 SQl Server 2000 的方法。其他版本原理基本类似。
1.启动 SQБайду номын сангаас 服务器
启动 SQl 的服务管理器,确认其已正常启动。
图表 0-1 未启动时画面
图表 0-2 启动时画面
服务器名也就是本计算机名, 本计算机在充当服务器,提供 SQL 数据库服务。
//sql server 2000 登录密码 //服务器名 (或 PC 名 MICROSOF-11278E) //数据库名 (文件名 DB02_data.mdf)
procedure TForm1.Button1Click(Sender: TObject); begin adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Add('select * from 表 01'); adoquery1.Open; end;
2.启动 Delphi,放置所需控件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PRIMARY KEY 约束
表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。
这样的一列或
通过它可强制表的实体完整性。
当创建或更改表时可通过定
一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。
由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。
当为表指定 PRIMARY KEY 约束时,Microsoft® SQL Server™ 2000 通过为主键强制数据的唯一性。
当在查询中使用主键时,该索引还可用来对
如果 PRIMARY KEY 约束定义在不止一列上,则一列中的值可以重复,但 PRIMARY KEY 约束定义中的所有列的组合的值必须唯一。
如下图所示,titleauthor 表中的 au_id和title_id列组成该表的组合PRIMARY KEY 约束,以确保au_id和title_id的组合唯一。
当进行联接时,PRIMARY KEY 约束将一个表与另一个表相联。
例如,若要确定作者与书名的对应关系,可以使用authors表、titles表和titleauthor表的三向联接。
因为titleauthor包含au_id和title_id两列,对titles表的访问可由titleauthor和titles 之间的关联进行。
创建聚集索引
在Microsoft® SQL Server™ 数据库中可以创建聚集索引。
在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。
表只能包含一个聚集索引。
聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取
大量的数据。
创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。
可考虑将聚集索引用于:
∙包含数量有限的唯一值的列,如 state 列只包含 50 个唯一的州代码。
∙使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 和 <=。
∙返回大结果集的查询。
聚集索引也叫簇索引。
在文件组上放置索引
默认情况下,索引创建在基表所在的文件组上,该索引即在该基表上创建。
不过,可以在不同于包含基表的文件组的其它文件组上创建非聚集索引。
通过在其它文件组上创建索引,可以在文件组通过自带的控制器使用不同的物理驱动器时实现性能提升。
这样一来,数据和索引信息即可由多个磁头并行读取。
例如,如果文
件组f1 上的Table_A和文件组f2 上的Index_A都由同一个查询使用,就可无争夺地充分利用这两个文件组,因此可以实现性能提升。
但是,如果Table_A 由查询扫描而没有引用Index_A,则只利用文件组f1,因而未实现性能提升。
然而,由于不能预测将要发生的访问类型以及访问时间,因此更安全的决策可能是将表和索引在所有文件组中展开。
这将保证能够访问所有磁盘,因为所有数据和索引在所有磁盘上均匀展开,不受访问数据的方式的限制。
这对系统管理员来说也是更简单的方法。
如果表上有聚集索引,数据和该聚集索引将始终驻留在相同的文件组内。
因此,可以在基表上创建一个聚集索引,指定另外一个文件组,在该文件组上新建索引(然后可以除去该索引,而只在新文件组内保留基表),从而将表从一个文件组移动到另一个文件组。
如果表的索引跨越多个文件组,则必须将所有包含该表及其索引的文件组一起备份,之后还必须创建事务日志备份。
否则,只能备份索引的一部分,导致还原备份时无法恢复索引。
有关更多信息,请参见使用文件备份。
说明单个表或索引只能属于一个文件组,而不能跨越多个文件组。
UNIQUE 约束
可使用 UNIQUE 约束确保在非主键列中不输入重复值。
尽管 UNIQUE 约束和PRIMARY KEY约束都强制唯一性,但在强制下面的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束:
∙非主键的一列或列组合。
一个表可以定义多个 UNIQUE 约束,而只能定义一个 PRIMARY KEY 约束。
∙允许空值的列。
允许空值的列上可以定义 UNIQUE 约束,而不能定义 PRIMARY KEY 约束。
FOREIGN KEY 约束也可引用 UNIQUE 约束。
FOREIGN KEY 约束
外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。
通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。
这个列就成为第二个表的外键。
当创建或更改表时可通过定义 FOREIGN KEY 约束来创建外键。
例如,数据库pubs中的titles 表与publishers表有链接,因为在书名和出版商之间存在逻辑联系。
titles表中的pub_id列与publishers 表中的主键列相对应。
titles表中的pub_id列是到publishers表的外键。
FOREIGN KEY 约束并不仅仅只可以与另一表的 PRIMARY KEY 约束相链接,它还可以定义为引用另一表的 UNIQUE 约束。
FOREIGN KEY 约束不允许空值,但是,如果任何组合 FOREIGN KEY 约束的列包含空值,则将跳过 FOREIGN KEY 约束的校验。
说明 FOREIGN KEY 约束可引用同一数据库中的表或同一表(自引用表)内的列,例如,
一个包含下面三列的雇员表:employee_number、employee_name和manager_ employee_number。
由于经理本身也是雇员,所以从manager_employee_number 列到employee_number 列存在外键关系。
尽管 FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。
例如,如果在publishers表中删除一个出版商,而这个出版商的 ID 在titles表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles表中该出版商的书籍因为与publishers 表中的数据没有链接而变得孤立了。
FOREIGN KEY 约束防止这种情况的发生。
如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。
如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。
若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。
级联删除相关的字段
无论何时删除主表的被引用行,都指示 DBMS 自动删除外键表的行。