2015年数据库学习笔记.pdf
数据库学习笔记第 1 章 数据库基础概述1.1 数据库系统概述 数据密集型应用的三个特点:人涉及的数据量大人数据不随程序的结束而消失人数据被多个应用程序共享一、数据管理技术产生和发展的3 个阶段:人工管理阶段、文件系统阶段、数据库系统阶段 人工管理阶段:没有存储设备、没有管理数据的软件特点:人数据不保存人应用程序管理数据人数据不共享人数据不具有独立性 文件系统阶段:有了存储设备,有了操作系统和高级语言有专门用于管理数据的软件文件系统/操作系统的文件管理部分特点:人数据可以长期保存在磁盘上,也可以反复使用。人 程 序 和 数 据 之 间 有 了 独 立 性。人文件的形式多样化,文件之间是独立的。人数据的存取基本上以记录为单位。缺陷:人数据冗余度大人数据独立性差,应用程序依赖性,编写应用程序不方便人数据间联系弱人不支持对文件的并发访问人难以按用户视图表示数据人无安全控制功能数据库系统阶段:有了管理数据的专门软件系统数据库管理系统人相互关联的数据的集合。人较小的数据冗余人数据具有较高的独立性人保证数据的安全、可靠人最大限度地保证数据的正确性一I数据完整性人数据可以并发使用并能同时保证数据的一致性二、数据库系统的组成 DBS 数据库系统 DataBase System人 D B 数据库DataBas人 D B M S 数据库管理系统 DataBase Management System人 DBA 数据库管理员 DataBase Administrator人开发工具人应用系统 D B M S 的功能:人数据库定义功能人数据库操纵功能人数据库维护功能人数据库控制功能人数据库通信功能人数据库服务功能1.2数据模型一、概念、分类、构成1.数据模型应满足3 个条件:人能比较真实地模拟现实世界;人容易被人们理解;人便于在计算机上实现。2.3 个领域人现实世界人信息世界人机器世界3.数据模型的分类:2 个层次人概念层数据模型实体联系模型人组织层数据模型关系数据模型层次模型网状模型面向对象模型概念层数据模型组织层数据模型从数据的语义视角来抽取模型从数据的组织层次来描述数据按用户的观点来对数据和信息进行建模按计算机系统的观点对数据进行建模主要用在数据库的设计阶段主要用于D B M S 的实现与 D B M S 无关与 D B M S 有关数据库系统的核心和基础4.数据模型的构成元素:3 部分人数据结构描述静态属性数据的组成、特性及其相互间联系人人数据操作描述动态属性数据检索、更新数据的约束条件描述静态属性二、实体联系模型1.概念:实体联系模型-E-R 模 型(Entity-Relationship)E-R图使用的工具2.要素:3 个实体、联系、属性实体:客观存在并可以相互区分的客观事物或抽象事件人矩形框属性:某一特性入椭圆框/圆角矩形框人标识属性下加下划线联系人实体内部的联系组成实体的各属性之间的联系。人实体之间的联系指不同实体之间联系。菱形框(1)一对一联系(1:1)如果实体A 中的每个实例在实体B 中至多有一个(也可以没有)实例与之关联,反之亦然,(2)一对多联系(l:n)如果实体A 与实体B 之间存在联系,并且对于实体A 中的一个实例,实体B 中有n 个实例与之对应;而对实体B 中的任意一个实例,在实体A 中至多有一个实例与之对应,(3)多对多联系(m:n)如果实体A 与实体B 之间存在联系,并且对于实体A 中的一个实例,实体B 中有n 个实例与之对应;而对实体B 中的一个实例,在实体A 中也有m 个实例与之对应三、关系数据模型用关系(表格数据)表示实体和实体之间联系的模型 3 个要素:关系数据结构、关系数据操作、关系完整性约束1.关系模型的数据结构基本术语:关系二维表人每一列都是不可再分的基本属性;人表中各属性不能重名;人表中的行、列次序并不重要。元组:每一行是一个元组,一个记录值。属性:每一列是一个属性值集,列可以命名,称为属性名。两套标准术语:表、歹 I、行关系、属性、元组 关系模式二维表的结构 候选关键字/侯选码/候选键:人能唯一确定一个关系的元组而又不含有多余属性的习属性集。人(简言之)能够唯一确定一个元组的最小属性集。人一个关系可以有多个侯选码/候选键 主关键字/主码/主键(Primary key):人一个关系可以有多个候选关键字,则可以选择一个为主关键字/主码/主键。人每个关系有且只有一个主关键字 主属性:所有组成候选关键字的属性 非主属性:不包含在侯选关键字中的属性/除主属性之外的其他属性 外部关键字/外码/外键人一个属性集不是所在关系的关键字,但是其他关系的关键字人通过外部关键字使两个关系相联参照关系和被参照关系入主/父关系被参照关系人从/子关系参照关系2.关系模型的数据操作:人包括:查询、插入、删除、修改人数据操作是基于集合的操作,操作对象和操作结果都是集合(或关系)。人 只 需 要 指 出“需要什么”,而不必详细说明“怎样干”。3.关系模型的数据完整性约束人数据完整性数据库中存储的数据是有意义的或正确的。实体完整性一针对主关键字必须满足人目的:保证关系中的每个元组都是可识别和唯一的。人内容:若属性A 是基本关系R 的主属性,则属性A 不能取空值。参照完整性一一针对外部关键字(引用完整性)必须满足人定义了外部关键字与主关键字之间的参照规则。人内容:如果属性(或属性组)F 是关系R 的外部关键字,它与关系S 的主关键字K 相对应,则对于关系F 上的值必须为:或者取空值或者K 的某个值。用户定义的完整性(域完整性,语义完整性)不用必须满足,用户定义4.实体联系模型向关系模型的转换 要解决的问题:如何确定这些关系模式的属性和关键字。转换目的:从概念层结构向组织层转换 转换规则:人 AB 1:1 A力 口 至IB B力 口 至1 J A人AB 1 :n A加到B(1加到n)人A-B m:n创建一个新的A-B,A,B都加到A-B1.3关系数据理论一、“不好的”数据库:解决方法:“膜式分解|”人数据冗余问题人数据更新问题人数据插入问题人数据删除问题二、规范化目的:设 计“好的”数据库1.函数依赖及相关术语(1)函数依赖Y=f(X)给定一个X值,就会有一个Y值和它对应,称X 函数决定Y,或 Y 函数依赖于X。表示为:X f Y(2)决定因素:X-Y X为决定因素(3)非平凡/平凡的函数依赖X f Y Y包含于X-平凡Y不包含于X非平凡如,R(A,B,C)学生(学号,姓名,年龄)A-C 非平凡(学号,姓名)f姓名(A,C)fC 平凡 学号一姓名(4)完全/部分函数依赖若X-Y,且X的任意一个真子集X,Y,Y完全依赖于X X f fY若X-Y,且X的有真子集r -Y,Y不完全依赖于X Xp Y如,R(A,B,C)中存 在(A,B)f C,但不存在B f C 和 A-C 完全存 在(A,B)fC,B-C 不完全(5)传递函数依赖若X f Y,Y-Z,Z传递依赖于X X ftY如,R(A,B,C)中存 在 A f C,且存在A-B,B fC 传递2.解决问题的办法一一模式分解人把一个关系模式分解成两个或多个关系模式人 消 除“不良”依赖关系,获得好的关系模式人消除部分依赖和传递依赖3.第一范式(1NF)关系R 的所有属性都是不可再分的数据项,则RR1NF人所有关系模式至少是1NF4.第二范式(2NF)本质是消除部分依赖 R E 1N F,且 R 中的每个非主属性都疆依赖(不部分依赖)于主关键字,则 R62NF主要看主关键字是单属性?多属性?人主关键字是单属性时,R 一定W2NF人主关键字是多个属性时,任意真子集不决定非主属性,R 2NF例:R(A,B,C)至少满足1NFR(A,B,C),不存在A f C 且 B f C 至少满足2NFR(A,B,C)至少满足2NF5.第三范式(3NF)本质是消除传递依赖 R G 2N F,且 R 中的每个非主属性都斥藕依赖于主关键字,则R E 3 N F主要看非主属性有几个入R E 2 N F,最多只有一个非主属性,R 一定E 3 N F人 R S 1 N F,没有非主属性,R 一定 3 N F例:R(A,B,C),存在 B f C 或 C-B满 足2NFR(A,B,C),不存在 B C 和 C f B满 足3NFR(A,B)足3NFR(A,B,C),不存在 A f C 且 B-C满 足3NFR(A,B,C)满 足3NF1.4 数据库系统结构内部体系结构(从数据库管理角度看)三级 模 式 外 模 式模式内模式至少至少至少满至少至少二级映像外模式/模式映像模式/内模式映像外 部 体 系 结 构(从数据库用户角度看)客户/服务器结构Client/Server C/S结构浏览器/服务器结构Brower/Server B/S结构分布式结构集中式结构文件服务器结构一、内部体系结构三级模式两级映像应用程序t一视图数据结构的描述I外模式/模式映像I一式|*表I模式/内模式映像用 户 模 式 用 户 对提供逻辑独立性提供物理独立性内模式 一物 理 文 件.mdf.Idf 存 储 模 式 数 据的内存结构描述数据库二、外部体系结构1.客户/服务器结构 C/S结构 客户端的程序包括:人提供用户界面人采集数据人输出结果人向服务器发出处理请求 服务器的程序包括:人数据管理人数据处理人业务处理人向客户端发送处理结果 优点:人将应用程序合理分配到客户端和服务器端人充分利用两端软硬件环境优势人简化了应用程序开发人降低了网络通信量。(服务器传给客户机的是处理的结果)人优化了网络利用率人较低费用实现较高性能缺点:人需要在客户端安装部署应用程序人部署和维护成本较高人代码复用困难,可重用性差适用:人用户较少人数据处理量较大人交互性较强人数据查询灵活人安全性要求较高人基于局域网2.浏览器/服务器结构 B/S结构优点:人不用在客户端安装部署软件,只在服务器部署人只需有上网用的浏览器软件人维护和升级方便人代码可重性高人可跨平台操作,任何一台计算机上只要有浏览器即可人良好的开发性和可扩充性适用:人用户多人数据处理量不大人地点灵活人基于广域网第 2 章 SQL Server 2008 概述一、SQL Server 2008的组件包括3 类:服务器组件、管理工具和文档。服务器组件:人 数据库引擎服务(Database Engine)全文搜索(Full-text Filter Daemon Launcher)人 分析服务(Analysis Services)人 才 艮 表 服 务 (Reportine Services)人 整合服务(Integration Services)管理工具:人 SQL Server Management Studio、人 SQLServer配置管理器人 SQL Server Profiler人数据库引擎优化顾问人 Business Intelligence Development Studio人连接组件 文档:人 SQL Server联机丛书:SQL Server的核心文档二、实例配置 SQL Server 2008支持多实例 默认实例:实例名与计算机名相同 命名实例:计算机名 实例名如,计算机名称为:MYHOME,如果选择命名实例,并命名实例名为:SQLServer2008,请 求 连 接 该 SQL Server时服务器名称应输入:MYHOMESQLServer2008。注意:1 台服务器只能承载1 个默认实例。人计划安装单个SQLServer实例,则该实例应为默认实例。人计划在同一台计算机上安装多个实例,应使用命名实例。三、身份验证模式3 种:(SQL Server 2008有 2 种)仅 SQL用 户(win98以后不再)人 Windows身份验证模式-仅接受Windows用户,不接受非Windows 用户人混合模式-允许Windows,允许SQL Server四、安装目录中的几个文件夹:2008:MSSQL10.2008、MSAS10.2008()MSRS 10.2008 100(Analysis Services)(Reporting Services)2005:902000:80人所有实例使用的公共文件在文件夹svstemdrive:ProgramFilesMicrosoft SQL Server100,都是重要的系统文件,一般不要修改。人 每 个 实 例 还 有 单 独 一 个 文 件 夹 MSSOL.n:ProgramFilesMicrosoft SQL ServerMSSQL.n,n 是 SQL Server 实例的序号,如 1或 2。五、注意:SQLServer的启动方式2 种:手工启动、自动启动 要在客户端访问远程的SQL Server服务器,须在客户端计算机和服务器端计算机上配置相闻的网络协议 删除SQL Server前,关闭所有SQL Server程序和工具,停止所有 SQL Server服务第 3 章 数据库的创建与管理3.1 数据库概述1.数据库类型 一个实例有5 个系统,若干个用户系统数据库(5 个)系统自动维护 存放维护系统正常运行的信息人 m aster所有系统级别的信息,系统对象不在master中人 msdb SQLServer代理用来记录作业、警报、备份历史的信息人 m o d el模板。人 tempdb临时性,每次启动都重新创建,断开自动删除不允许进行备份、还原操作人 resource|只 读 系统对象系统对象在SQL Server中以两种形式存在:分散在.sys架构下统一在 resource 中用户数据库(若干个)用户维护存放与用户业务有关的信息创建、维护数据库指的是用户数据库人在创建用户数据库时,包含系统表的model数据库自动被复制到新建数据库中。3.1.2数据库文件1.组 成(2 部分)至少1 个主要数据文件,1 个日志文件.数据文件用于|存放数据库函提人 主 要 数 据 文 件 逊(1 个):包含数据库启动信息,也可存储数据人次要数据文件血(0 或多个):存放主要不能存放的,主要、次要,可存放在相同位置,也可存在不同位置用户不必担心存放位置,系统会选择最高效的方法日志文件画(1或多个)一|记录页的分配和痒画、对数据库H据的修改操作2.名 称(2 个)逻辑名称:DBMS管理T-SQL语句引用文件时使用的。醺物理名称:操作系统管理存放在目录路径的物理文件名3.存储数据文件存储的基本单位:圆日志文件I不包含页,由一系列|日志记阚组成人多个数据文件最好存储在多个磁盘上页区管理页 统一区:为单个对象所有混合区:最多可由8 个对象共享。人 1 页=8kb=8*1024 字节人 1 区=8页入1M=128页=16区人行最大开销8kb(8060字节)人页按顺序编号,首页是日人行不能跨页,但行的部分可以移出所在的页H:数据库表有10000行,每行3000字节。求此表所需的空间。.每行3000字 节,且一页大小为8kb一页可以存放2 行10000行需要5000页来存放表所需的空间为:5000*8kb=40000kb=40MB3.2创建数据库第一行:主要数据文件,后面再建的:都是次要数据文件 master数据库,只有系统管理员才能使用 数据库只读:指定值时,数据库不能处于使用状态 限制访问:人多个,允许多个用户同时访问人一个,一次只允许一个用户访问人限制,只有 db_owner,dbcreator,sysadmin 才能使用 查看数据库属性:表建完后:人可以修改的属性:|逻辑名称|、|初始大小|、|自动增长方式人不可修改的属性:文件类型、文件组、陋、|物理文件名 使用数据库之前,须设当前数据库3.3维护数据库空间扩大数据库空间的方法:人扩大已有文件的大小人增加新文件收缩数据库空间收缩操作内容:收缩数据库、收缩文件收缩操作方式:自动收缩、手动收缩人收缩数据库时,从末尾开始收缩,直到没有剩余的可用空间人手动收缩文件,主要数据文件迤收缩到叵 model数据库中主要数据文件的大小人手动收缩数据库,收缩后数据库的大小小熊小引数据库文件的眼区b最小大小:|创建时指定的初始大小 或上一次使用“手动收缩数据库中的文件”时设置的大小3.4 删除数据库人不能删除系统数据库人删除之前,取消日记传送操作人文件数据从磁盘中删除。3.5 分离和附加数据库 作用:数据库移植到另一台服务器上/改变文件的物理位置 分离:从实例中删除,不是从磁盘上删除,保留数据文件和日志文件,可以在需要的时候,附加 无法执行分离的情况:人数据库正在使用,而且无法切换到SINGLEJJSER模式。人数据库处于可疑状态。人数据库为系统数据库。第 4 章 SQ L 语言基础4.1 T-SQL 简介 SQL-Structured Query Language 结构化查询语言 最新的标准:SQL-9 9 或 SQL3 T-SQL的分类人数据定义语言人数据操纵语言人数据控制语言人事务管理语言人其他附加语言元素 T-SQL的特点人一体化:上述各种语言于一体人两种使用方式:交互、嵌入高级语言中人非过程化语言:人简洁4.2 T-SQL数据类型系统数据类型人数字数据类型人货币数据类型人日期和时间数据类型 人字符串数据类型 用户自定义数据类型1.数字数据类型整 型 bigint大整型8 字节int整型4 字节smallint小整型2 字节tinyint微整型1 字节非整型精确数字 decimal/numeric (p ,s)p:小数点左边和右边的位数和默认18,最大38s:小数点右边的小数位数默认0非精确数字 float (D)n:1-53,1,24 默认 24,25,53 默认 53人不需要用单引号()括起来2.货币数据类型money:8 字节 精确到货币单位的千分之十(元的万分之一)smallmoney:4 字节 精确到货币单位的千分之十。人 带 4 位小数的decimal人不需要用单引号()括起来人可以带有适当的货币符号。100o3.日期时间数据类型datetime 8 字节 YYYY-MM-DD hh:mm:ss .nnnsmalldatetime 4 字节 YYYY-MM-DD hh:mm:ssss始终为0 0 精度为1分钟秒没有小数=29.999深入=29.998date 3 字节 YYYY-MM-DDtime(n)5 字节 hh:mm:ss.nnnnnnn精 度 为 100纳 秒,n 是秒的小数部分,0-7,默认7人使用特定格式的字符日期值表示例如:04/15/2009,2009-04-15 12:35:29,20090415,人用单引号()括起来。CASTC2007-05-08 12:35:2912:35:00CASTC2007-05-08 12:35:3012:36:00CASTC2007-05-08 12:59:59.998,ASsmalldatetime)2007-05-08ASsmalldatetime)2007-05-08ASsmalldatetime)2007-05-0813:00:00CAST(2007-05-08 12:35:29.1234567 AS time(7)12:35:29.1234567CAST(2007-05-08 12:35:29.1234567 AS date)2007-05-08CAST(,2007-05-08 12:35:29.123 AS smalldatetime)2007-05-0812:35:00CAST(2007-05-08 12:35:29.123 AS datetime)2007-05-0812:35:29.1234.字符串数据类型人用单引号()括起来。人 用 两 个()表示字符串中的()。如,T m Tom 9编码字符字节范围SH h默认8000人 前 面 有n,表示统一编码人 前 面 有v a r,表示可变长度4.2.2用户定义数据类型创建用户定义数据类型,明确三个参数人名称人依据的系统数据类型人是否允许空值4.3 T-SQL的语法元素1.使用约定(1)语法格式约定约定用于大写关键字。1 (竖线)只能使用其中一项。分隔括号或大括号中的语法项。(方括号)可选语法项。不要键入方括号。(大括号)必选语法项。不要键入大括号。,n指示前面的项可以重复n次。各项之间以逗号分隔。.n指示前面的项可以重复n次。每一项由空格分隔。:=语法块的名称。此约定用于对可在语句中的多个位置使用的过长语法段或语法单元进行分组和标记。(2)对象引用规范对象名的T-SQL引用由四部分组成,具体格式如下:服务器名称.数据库名称.架构名称.I数据库名称.架构名称.I架构名称.对象名引用对象名的格式说明server.database.schema.object 4 个部分的名称server.database.object省略架构名称server.schema.object省略数据库名称server.object省略数据库和架构名称database.schema.object省略服务器名database.object省略服务器和架构名称schema.object省略服务器和数据库名称object省略服务器、数据库和架构名称(3)注释的规范程序代码中不执行的文本字符串两种类型:人单行注释-开始到行尾与代码可在一行,也可另起一行人 批 注 释/*/*到*/之间 与代码可在一行,也可另起一行,还可在I代码内部2.保留字不能使用,如使用,需要用分隔标识符。如 ORDER3.标识符常规标识符分 隔 标 识 符(“)或符合格式规则的,可用或可不用分隔标识符不符合规则的,必须使用分隔标识符4.变量 种类人全局变量:变 量 名 系 统 定 义 系 统 内 部 使 用 任 何 程 序可随时调用不能定义与全局变量同名的局部变量用全局变量来测试系统的设定值或者T-SQL命令执行后的状态值人局部变量:鳗变量名 用户自己定义 本程序内部使用先声明后使用 声明局部变量 DECLARE 局 部 变 量 名 数 据 类 型,n 赋值|SET/SELECTl 局部变量名=变量值I表达式 声明后值为NULL输出变量值 PRINT/SELECT 局部变量名5.语句批 以 画为结束标记6.脚本 脚本文件扩展名:H4.4 流程控制语句分类:顺序、分支、循环1.BEGIN END 语句BEGINT-SQL语句序列END2.IF语句I F 布尔表达式语句块1 ELSE语句块2 3.CASE表达式|不是语句,是袤运式分类:搜索CASE表达式简单CASE表达式(1)搜索CASE表达式CASEWHEN布尔表达式1 THEN结果表达式1W HEN布尔表达式2 TH EN结果表达式2 n ELSE结果表达式n+1 END人一次只能返回一个结果表达式人如有多个为TRUE,只返回第一个TRUE的表达式(2)简单CASE表达式CASE测试表达式W H E N 测试值1 THEN结果表达式1WHEN测试值2 THEN结果表达式2.nELSE结果表达式n+1END人 测 试 表 达 式 与 测 试 值 类 型 相 同人 简单CASE搜索CASE 都可以搜索CASE简单CASE 不一定4.WHILE语句 T-SQL|唯一|的循环语句WHILE条件表达式循环体语句块4.5 内置函数人 聚合函数人 日期和时间函数人 字符串函数人 类型转换函数1.聚合函数人 聚合函数对一组值执行计算并返回单一的值。人 聚合函数经常与SELECT语句的GROUP B Y子句一同使用。人 所有的聚合函数都为确定性函数。AVG、COUNT、MAX、MIN、SUM2.日期和时间函数(1)GETDATE()当前日期时间返回值类型:|datetime(2)DATEADD(datepart,number,date)时间的加减 加上一个时间间隔后的新值detepart:指定要返回新值的日期类型Year年Weekday一周中的第几天Quarter季度Week周Month月Hour小时Dayofyear一年中的第几天Minute分钟Day一月中的第几天Second秒number:用于与datepart相加的值。非整数值,舍弃小数部分,不进行舍入date:用于返回datetime或 smalldatetime值或日期格式的字符串返回值类型:R ate参数的数据类型字符串文字除外。字符串文字的返回数据类型为Idatetimd。(3)DATEDIFF(datepart,startdate,enddate)两个时间的差返回值类型:S(4)DATENAME(datepart,date)返回日期时间字符串返回值类型:Invarchar(5)DATEPART(datepart,date)返回日期时间整数返回值类型:H(6)DAY(date)MONTH(date)=DATEPART(day,date)=DATEPART(month,date)YEAR(date)=DATEPART(year,date)返回值类型:03.字符串函数(1)|CHARINDEX|(expression!,expression!,startocation )索引、查找字符串的位置检索串I 3|开始位置未指定、负数、o,从开头开始搜。返回值类型:整型。如找不到,则返回0。(5 )SUBSTRING(value_expression|engthj_expression)取字符串廊Jstartj_expression,取多长(8 )REPLACE(string_expressionl,string_expression2,string_expression3)替换字符串S 3|被替换串I gg f(2)LEFT(character_expression,integer_expression)取左,左边的空格有效。(3)RIGHT(character_expression,integer_expression)取右,右边的空格有效。(4)LEN(string_expression)字符串长度,有多少个字符,不包含尾随空格返回值类型:整型(6)LTRIM(character.expression)删除字符串左边(前导)的空格(7)RTRIM(character_expression)删除字符串右边(尾随)的空格4.类型转换函数CAST(expression s|data一 type)CONVERT(data_type口 expression)功能相同,语法格式不相同。第 5 章 表的创建与管理5.1 表的概述 SQLServer中的表分为三类:/系统表/用户自定义表/临时表系统表 是 SQL Server数据库引擎使用的表。存储了定义服务器配置及其所有表的数据。格式取决于SQL Server内部体系结构的要求。不允许用户进行修改的,但会随着SQL Server版本的不同而不同。用户自定义表 是指用户创建的表,是 SQL Server中最常见的表。通常,该类表中的字段包含了用户所需的数据格式,而表中记录的是用户的数据。用户可以根据所拥有的权限创建、修改和删除用户自定义表。临时表,存储在tempdb中,而不是存储在用户的数据库中。在用户不使用时,自动被SQL Server删除。有两种类型,即本地临时表和全局临时表。区别:本地临时表只和创建该表的用户相关全局临时表却与使用该表的所有用户有关。本地临时表 在 SQLServer中,创建本地临时表和普通表相同。本地临时表的名称以开头。/仅对表的创建者可见,而其他用户却不能访问和使用/本用户断开连接时,就被SQL Server删除。全局临时表,在 SQL Server中,创建全局临时表和普通表相同。全局临时表的名称以开头。全局临时表对所有连接的用户都是可见的:/本地临时表仅对表的创建者可见;/所有用户都断开连接时,才能删除。5.2 创建表创建表就是定义表中各个列的结构:列名、数据类型、约束等表的结构列名:为列取的名字,支持中文和英文名数据类型:系统数据类型、用户自定义数据类型约束:入主关键字约束人外部关键字约束人取值范围约束人列取值是否允许为空;人列取值是否有默认值。人列取值是否唯一。创建表的三种方式:,使用 SQL Server Management Studio 创建表/使用模板创建表/使 用 T-SQL语句创建表 注意:人 使用SQL Server Management Studio创建表时,多个属性组成的主关键字的设置方式:按 shift或 Ctrl不放,选中所有属性人有外部关键字的表的创建顺序:先创建被参照表再创建参照表 使用T-SQL语句创建表 有括号()CREATE T A B L E 表名(列名 数据类型 列级完整性约束 ,列名 数据类型 列级完整性约束 ,n,v表级完整性约束 5.3管理表5.3.1 修改表结构 无括号()ALTER TABLE 表名A D D 列名 数据类型 列级完整性约束 IA D D(表级完整性约束ID R O P C O L U M N(列名ID R O P 完整性约束名 1ALTER COLUMN列名 数据类型 (列级完整性约束ALTER COLUMN修改已有列的定义,只能修改为兼容数据类型或重新定义是否为空值。5.3.2删除表 无 括 号()DROP T A B L E 表名有外部关键字的表的删除顺序:先 删 除 参 照 表(有外部关键字)一一再删除被参照表5.4数据完整性约束的创建和管理表1约束说明列级表级系统检查实 体 完 整性约束PRIMARYKEY不重复、非空有有插 入、更新参 照 完 整性约束FOREIGNKEY列 的 取 值 受 其他 列 的 取 值 范围约束有有参照表:插 入、更新被 参 照 表:删除、更新唯 一 性 约束UNIQUE限 制 列 的 取 值惟一有有插 入、更新默 认 值 约DEFAULT设 置 列 的 默 认有无插入束值检查约束CHECK限制列的取值是唯一的有有插入、更新NOTNULL限制列不能取空值表 2约束创建表时 列级创建表时 表级在已创建表上添加PRIMARYKEYPRIMARY KEY(只适合于单属性主关键字)PRIMARY KEY(主关键字属性集)ALTERTABLE.ADD PRIMARYKEY(主关键字属性集)FOREIGNKEYFOREIGNKEY(外 部关键字)REFERENCES被参照表(主关键字)FOREIGNKEY(外部关键字)REFERENCES被参照表(主关键字)ALTERTABLE.ADD FOREIGNKEY(外 部关键字)REFERENCES被参照表(主关键字)列级约束:只用于该列UNIQUEUNIQUEUNIQUE(列名集)ALTERTABLE.ADD UNIQUE例名集)DEFAULTDEFAULT 默认值XALTERTABLE.ADD DEFAULT默 认 值 F O R 列名CHECKCHECK(逻 辑 表达式)(只适合于单列)CHECK(逻 辑 表达式)ALTERTABLE.ADD CHECK(逻辑表达式)表级约束:一个约束中包含多列时 涉及一列,既可用列级,也可用表级5.4.1 实现数据完整性约束5.4.1.1 实体完整性约束目的:要保证关系中的每个元组都是可识别和唯一的。PRIMARY KEY注意:每个表只能有一个PRIMARY KEY约束;用 PRIMARY KEY约束的列的取值必须是不重复的(由多列构成的主关键字,这些主关键字列组合起来的取值不能重复),不允许为空值。1.创建表时定义主关键字列级约束的定义语法格式为:CREATE TABLE 表名(歹U名 数据类型PRIMARY KEY.)表级约束的定义语法格式为:CREATE TABLE 表名(列名 数据类型,PRIMARY KEY(列名L.n)2.修改表时添加主关键字语法格式为:ALTER TABLE 表名ADD PRIMARY KEY(歹 lj名 ,n)注意:被修改为主键的列必须先设置为not null3.系统对实体完整性约束的检查插入、更新5.4.1.2参照完整性约束目的:要保证外部关键字的取值不超出所参照的主关键字的取值范围。FOREIGN KEY注意:外部关键字列参照的列必须是有PRIMARY KEY约束或者UNIQUE约束的列。1.创建表时定义外部关键字 列级约束的定义语法格式为:CREATE TABLE 表名(.歹!J名 数据类型 FOREIGN KEY REFERENCES 被参照表表名(列名)ON DELETE NO ACTION I CASCADE I SET NULL I SETDEFAULTON UPDATE NO ACTION I CASCADE I SET NULL I SETDEFAULT.)表级约束的定义语法格式为:CREATE TABLE 表名(=!=可与NOT 一起用(2)逻辑查询:格式:NOT布尔表达式布尔表达式1 AND布尔表达式2 AND-AND布尔表达式n布尔表达式1 O R 布尔表达式2 OR-O R 布尔表达式n顺序:NOT、AND、OR注意:建议使用括号改变优先级(3)确定范围 BETWEEN AND/NOT BETWEEN AND格式:列 名 I 表达式BETWEEN 下限值 AND 上限值=(列名I 表达式=下限值)AND(列名|表达式 上限值)作用:查找在或不在指定范围内说明:BETWEEN后是范围的下限(低值)AND后是范围的上限(高值)适用:一般用于对数值型数据、日期型数据的比较注意:列名/表达式的类型与下限值/上限值的类型相同。(4)确定集合IN/NOT IN格式:列名I表 达 式NOT IN(常 量1,常量2,,常 量n)IN=(列名I表达式=常 量1)OR(列名I表达式=常量2)O R OR(列名I表达式=常 量n)NOT IN=(列名I表达式 常 量1)AND(列名I表达式 常量2)AND AND(列名I表达式 常量n)作用:用来查找属性值属于指定集合的元组注意:IN里必须是一个确定的值/常量(5)字符匹配 LIKE/NOT LIKE格式:列名I字 符 串 表 达 式NOT LIKE,匹配串,作用:确定特定字符串是否与指定匹配串相匹配适用:只适用于字符串只知道部分字符。(不能准确匹配)知道全部字符(能准确匹配)时,不要用LIKE。因为:(涉及到最后一个字符是,字符没有占满字符定义的长度)LIKE不能清除空格,需要用RTRIM清除后再使用字符串定义为定长char,varchar时 一,才涉及到此问题。如定义为变长nchar,nvarchar不涉及此问题匹配串:可以是完整的字符串,也可以含有通配符。通配符有4种:人 _ (下划线):匹配任意单个字符人%:匹配0个或多个字符串人口:匹配口中的任意单个字符。口中是多个字符。口中的字符不要用“,”分割如:张,王,李 表示查姓张、王、李、口中的字符是有序的,可使用连字符。如:张王李,012345=0-5,abcde=a-e人:不匹配口中的任意单个字符。如:人张王李(6)空值。IS NULL IS NOT NULL格式:列名I表达式IS NOT NULL表示:未知、不适用、将在以后添加不同于空白或。值没有两个相等的空值比较两个空值,空值与其他值相比,均返回未知注意:不能用比较运算符=或 ,因为:空值不是一个确定的值,不可以用等于或不等于来比较,只能说是空值(IS NULL)或不是空值(IS NOT NULL)o三、ORDER B Y 子句对查询结果排序格式:ORDER BY 歹 名 ASC I DESC ,nASC(升序)、DESC(降序)默认为ASC注意:永远放在最后一句NULL值作为最小值,最低的可能值各排序语句不能共享,各管各的。指定多个排序依据列,往后排,排序的先后顺序为:从左到右四、TOP关 键 字 限 制 结 果 集作用:限制返回到结果集中的行数。格式:TOP(n)PERCENT WITH TIES n为非负整数;TOP(n):表示取查询结果的前n行;TOP(n)PERCENT:表示取查询结果的前n%行;WITH TIES:表示包括并列的结果。只 能 在SELECT语句中且只有在指定ORDER B Y子句之后,才能使用“WITH TIES”。位置:写在SELECT单词的