SQL Server 数据库开发经典案例教程-SQL Server 2008数据库开发经典案例教程全书课件电子教案汇总.ppt

上传人:春哥&#****71; 文档编号:13023107 上传时间:2022-04-27 格式:PPT 页数:292 大小:17.69MB
返回 下载 相关 举报
SQL Server 数据库开发经典案例教程-SQL Server 2008数据库开发经典案例教程全书课件电子教案汇总.ppt_第1页
第1页 / 共292页
SQL Server 数据库开发经典案例教程-SQL Server 2008数据库开发经典案例教程全书课件电子教案汇总.ppt_第2页
第2页 / 共292页
点击查看更多>>
资源描述

《SQL Server 数据库开发经典案例教程-SQL Server 2008数据库开发经典案例教程全书课件电子教案汇总.ppt》由会员分享,可在线阅读,更多相关《SQL Server 数据库开发经典案例教程-SQL Server 2008数据库开发经典案例教程全书课件电子教案汇总.ppt(292页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、0 02 23 3 第二代数据库关系型数据库n关系数据库是建立在关系模型之上的数据库 第三代数据库面向对象数据库n处于发展阶段,未来趋势4 4 产品数据库表5 5行(记录)6 67 7 例如:创建数据库、创建表、创建视图、查询数据和访问数据库等操作,都是由数据库引擎完成的8 89 91010客户端应用程序客户端应用程序SQL Server服务器服务器批处理语句:批处理语句:语句语句1语句语句2GO11111212131314141515n创建登录的方法1616n附加数据库可以将物理文件恢复成数据库18181919数据库数据库主数据文件(.mdf)次要数据文件(.ndf)日志文件(.ldf)20

2、202121mastertempdbmsdbStudentsDBBookShopDB用户数据库用户数据库model4个系统数据库个系统数据库用户自己创建2222n是连接到 SQL Server 实例的所有用户都可用的全局资源,它保存所有临时表和临时存储过程2323BookShopDB.ldfE: BookShopDB.mdfC:Book1.ndf Book2.ndfD: 2424数据库的建立数据库的建立-可视化方式可视化方式2525262627272828292930303131的文件n附加数据库可以将物理文件恢复成数据库n使用帮助文档3333343435353636 将一个表的一列(或列组合

3、)定义为引用其他表的主键,则引用表中的这个列(或列组合)就称为外键3737主键主键外键外键38383939table等等40404141 CREATE TABLE mytable ( col1 char(10) primary key, col2 int not null )CREATE TABLE 表名表名( 字段字段1 数据类型数据类型 列的特征,列的特征, 字段字段2 数据类型数据类型 列的特征,列的特征, 。 )4242USE BookShopDb -将当前数据库设置为BookShopDb GO CREATE TABLE UserInfo -创建用户表( UserID char(3)

4、PRIMARY KEY, -UerID为主键 UserName char(10) not null, Sex char(2) not null, Age int , hiredate datetime, tele char(15), Addr varchar(100)GO 4343TABLE一起使用4444USE BookShopDb -将当前数据库设置为BookShopDb GOCREATE TABLE Publisher( PublisherID int IDENTITY(1,1) PRIMARY KEY, -自动编号(标识列) PublisherName varchar(50) not

5、null -出版社名称,必须输入)GO 4545USE BookShopDb -将当前数据库设置为BookShopDbGO CREATE TABLE BookInfo /*创建BookInfo数据表*/( BookID char(15) PRIMARY KEY, -书号 ,主键 BookName varchar(100) not null, -书名 Author varchar(50) not null, -作者 ISBN char(13) , -ISBN,null可以省略 PublishDate datetime not null, -出版日期 PublisherID int not nul

6、l REFERENCES Publisher(PublisherID),-外键 CategoryID int not null REFERENCES Category(CategoryID), -外键 Price money , -价格 Content text -介绍)GO 4646USE BookShopDb -将当前数据库设置为BookShopDbGO Drop table userInfoCREATE TABLE UserInfo -创建用户表( UserID char(3) PRIMARY KEY CHECK(UserID LIKE 0-90-90-9), UserName char

7、(10) UNIQUE, -用户名,唯一约束 Sex char(2) CHECK(Sex in (男,女), -性别,Check约束 Age int not null, -年龄,非空约束 hiredate datetime , -入职日期 tele char(15), -电话 Addr varchar(100) DEFAULT 广东广州 -地址,默认约束 )GO 【示例示例3-6】重建重建UserInfo表,演示在建表时如何设定约束4747USE BookShopDb -将当前数据库设置为BookShopDb,GO CREATE TABLE SalesMaster /*创建SalesMaste

8、r销售主表*/(SalesMasterID int identity primary key, -销售id,自动增长,主键 SalesDate datetime not null, -销售日期 UserID char(3) not null), CONSTRAINT fk_UserID FOREIGN KEY (UserID) REFERENCES UserInfo(UserID) ON DELETE CASCADE 【示例示例3-7】建立建立SalesMaster销售主表,通过设定外键与UserInfo表之间建立联系4848 默认约束 空值约束 标识列5050 修改表结构、删除表5151AL

9、TER TABLE 表名表名ADD CONSTRAINT 约束名约束类型具体的约束说明约束名约束类型具体的约束说明 USE BookShopDb -选择数据库,以下示例从略选择数据库,以下示例从略GOALTER TABLE UserInfo ADD CONSTRAINT pk_ UserID PRIMARY KEY(UserID)添加主键约束添加主键约束添加外键约束添加外键约束ALTER TABLE SalesDetails ADD CONSTRAINT fk_BookID FOREIGN KEY(BookID) REFERENCES BookInfo(BookID) 5252ALTER TA

10、BLE 表名表名DROP CONSTRAINT 约束名约束名 ALTER TABLE UserInfo DROP CONSTRAINT pk_ UserID 535354545555表。任何用户都不应该直接更改系统表56565757USE BookShopDbGOALTER TABLE UserInfo ADD email char(20) GO 增加列增加列 给UserInfo表增加列email,字符类型长度是20,非空修改列修改列USE BookShopDbGOALTER TABLE UserInfo ALTER COLUMN addr varchar(150) not null增加Use

11、rInfo表的字段addr 长度,将其增加到150,类型不变 5858删除列删除列删除UserInfo表 email列USE BookShopDbGOALTER TABLE UserInfo DROP COLUMN emailGO59596060n修改添加字段Alter table 表名 add 字段名称 数据类型n修改表修改字段 alter table 表名 alter column 字段名称 数据类型n修改表删除字段 alter table 表名 drop 字段名称 删除表 Drop table 表名62626363 数据定义语言(DDL)n用于创建或修改数据库里的对象,如创建Create

12、 table、修改Alter table 、删除Drop table等 数据控制语言(DCL)n用来控制用户对数据库数据的访问权限,如:Grant、Revoke等64646565语法格式 INSERT INTO 表名表名(列名,(列名,n) VALUES (值,值,n) 【例例4-1】 向BookShopDb 数据库的UserInfo表中插入所有列数据USE BookShopDb GO -批处理结束标志,表示执行批处理结束标志,表示执行 INSERT INTO UserInfo(UserID,UserName,Sex,Age,hiredate,tele,Addr) VALUES(001,王琳琳

13、王琳琳,女女,26,2005-1-24,07313677867,湖南长沙湖南长沙)INSERT INTO UserInfo VALUES(002,张家辉张家辉,男男,27,2004-3-5,02034657654,广东广州广东广州)INSERT INTO UserInfo(UserID,UserName) VALUES(003,张田田张田田)插入部分列时列名不能省略 插入所有列时列名可省略 6666 【例例4-3】向UserInfo表插入数据,尝试输入性别为其他内容 INSERT INTO UserInfo(UserID,UserName,Sex,Age,hiredate,tele,Addr)

14、VALUES(004,周晨阳周晨阳,中中,30,2003-4-2,02734652345,湖北宜昌湖北宜昌)标识列字段数据的插入 【例例4-5】向向Category表插入数据, Category带有标识列CategoryID INSERT INTO Category(CategoryName) VALUES(计算机基础理计算机基础理论论)6767【例例4-9】 使用SELECT . INTO拷贝UserInfo表年龄大于等于30的数据 生成一新表CopyUserInfoSELECT * INTO CopyUserInfo FROM UserInfo WHERE Age=30 6868UPDAT

15、E 表名表名 SET WHERE 更新条件更新条件【例例4-10】修改修改UserInfo表数据,把UserID为007的用户的住址改为甘肃酒泉UPDATE UserInfo SET Addr =甘肃酒泉甘肃酒泉 WHERE UserID =0076969 【例例4-11】如图完善UserInfo表数据,把用户号003用户的年龄、参加工作日期分别修改为33,2004-8-30 UPDATE UserInfo SET Age =33, hiredate =2004-8-30 WHERE UserID =003【例例4-12】把用户001的参加工作日期加1天,地址改为湖南湘潭UPDATE User

16、InfoSET hiredate=hiredate+1, Addr=湖南湘潭湖南湘潭WHERE UserID =001 注意:修改数据如果只修改一条记录,一般都按主键字段修改。7070DELETE FROM 表名表名 WHERE 条件条件 【例例4-14】删除参加工作日期在删除参加工作日期在2004-1-1之后的用户信息DELETE FROM UserInfo WHERE hiredate2004-1-1 【例例4-15】 删除BookInfo表中书号是B0001的记录 DELETE FROM BookInfo WHERE BookID=B0001 因为要删除BookInfo表的书号是B000

17、1的记录被SalesDetails表引用,所以必须先删除SalesDetails表的相应记录,才能删除BookInfo表的记录 7171 TRUNCATE TABLE 表名表名【例例4-16】 删除CopyUserInfo表的所有数据 TRUNCATE TABLE CopyUserInfo727274747575查询请求查询请求查询结果集查询结果集结果集结果集76767777 SELECT FROM WHERE ORDER BY ASC或DESC7878 SELECT * FROM BookInfo SELECT BookName,Author,publishDate,CategoryID F

18、ROM BookInfo7979SELECT bookName as 书名书名,Author as 作者作者,publishDate as 出版日期出版日期,CategoryID as 类别类别,price as 价格价格FROM bookInfo 1,用,用as关键字关键字 【例例5-3】 用中文名称来显示书的信息,3种不同使用别名方法 2,用空格,用空格3,用,用=SELECT bookName 书名书名,Author 作者作者,publishDate 出版日期出版日期,CategoryID 类别类别,price 价格价格FROM bookInfoSELECT 书名书名= bookName

19、,作者作者= Author, 出版日期出版日期=publishDate,类别类别=CategoryID , 价格价格=price FROM bookInfo8080【例例5-4】查询2007年以后出版的所有书籍的书名、作者、出版日期和价格SELECT bookName,author,publishDate,price FROM BookInfo WHERE PublishDate2007-01-018181 表5-1 常用T-SQL函数828283838484 SELECT bookName,Author,PATINDEX(%数据库数据库%,bookName) POSFROM BookInfo

20、 WHERE PATINDEX(%数据库数据库%,bookName)0【例例5-8】使用日期函数获取今天的日期时间及明天的日期和时间使用日期函数获取今天的日期时间及明天的日期和时间【例例5-7】使用使用PATINDEX函数查询函数查询BookInfo表中包含表中包含数据库数据库的书名和作的书名和作者以及者以及数据库数据库出现的位置出现的位置 SELECT GETDATE() 今天今天, DATEADD(DAY,1,GETDATE() 明天明天858586868787898990909191【例6-1】 查询BookInfo表中价格低于的书名、作者和价格 SELECT BookName,Auth

21、or,Price FROM BookInfo WHERE Price 40【例6-2】 查询BookInfo表中价格在30到80之间(包括边界) 的书名、价格和说明 SELECT BookName,price,Content FROM BookInfo WHERE Price =30 9292【例6-3】 查询UserInfo中电话(tele)为空的用户信息 SELECT UserID,UserName,Sex,Age,hiredate,tele,Addr FROM UserInfo WHERE tele is null 9393【例6-5】 在BookInfo表中,查询书名长度小于10的图书

22、书名、作者和书名长度 SELECT bookname,Author ,LEN(bookName) FROM BookInfo WHERE LEN(bookname)109494【例6-6】 在BookInfo表中,按出版日期的先后顺序,查询价格低于45的图书的书号、书名、价格、作者和出版日期。 SELECT bookid,bookName,Price,Author,PublishDate FROM BookInfo WHERE Price b.PriceWHERE b.BookID =B0002125125n右外联接以右表为主筛选数据右外联接以右表为主筛选数据 自联接n自联接将表自身通过别名关

23、联自联接将表自身通过别名关联127127128128外部查询内部查询129129SELECT 列名.FROM 表名WHERE 条件 =(SELECT 列名 FROM 表名 WHERE 条件)1301302,把该查询代入外部查询【例8-1】显示价格超过平均价格的图书的书号、书名、作者和价格。SELECT Bookid,bookName,Price FROM BookInfo WHERE Price (SELECT AVG(price) FROM BookInfo) 比较运算符131131 AND YEAR(PublishDate) = (SELECT YEAR(publishDate) FROM

24、 BookInfo WHERE BookName =JavaWeb开发技术详解 )【例8-2】 查询具有和“JavaWeb开发技术详解”相同出版社和相同出版年限的书籍的书号、书名和出版日期解决方法:解决方法:132132133133134134WHERE CategoryName =JAVA) ) 值列表135135 【例8-4】显示同类图书中价格最高的的书籍信息,显示内容包括书号、书名、价格和类别。分析:对BookInfo表的每一条记录,与同类图书的价格比较,求出最高价格的书籍SELECT BookID ,BookName ,Price ,CategoryID FROM BookInfo a

25、 WHERE a.Price =( SELECT max(b.price) FROM BookInfo b WHERE a.CategoryID =b.CategoryID ) 136136【例8-5】查询已销售的书籍信息,显示内容包括书号、书名和作者。SELECT BookID,BookName,Author FROM BookInfo WHERE EXISTS(SELECT * FROM SalesDetails WHERE BookID=BookInfo.BookID)137137用户id用户idSELECT a.UserId,a.UserName,YEAR(a.hiredate) 入职

26、年份入职年份FROM UserInfo a WHERE NOT EXISTS (SELECT * FROM SalesMaster b WHERE b.UserID=a.UserID)138138139139包括重复行 UNION:未指定ALL,返回的结果集中不包括重复行140140SELECT BookID ,BookName,Author,PublisherID FROM BookInfo WHERE PublishERID=(SELECT PublisherID FROM Publisher WHERE PublisherName =机械工业出版社机械工业出版社)SELECT BookI

27、D ,BookName,Author,PublisherID FROM BookInfo WHERE PublishERID=(SELECT PublisherID FROM Publisher WHERE PublisherName =人民邮电出版社人民邮电出版社 )SELECT BookID ,BookName,Author,PublisherID FROM BookInfo WHERE PublishERID=(SELECT PublisherID FROM Publisher WHERE PublisherName =机械工业出版社机械工业出版社)UNION SELECT BookID

28、 ,BookName,Author,PublisherID FROM BookInfo WHERE PublishERID=(SELECT PublisherID FROM Publisher WHERE PublisherName =人民邮电出版社人民邮电出版社)141141SELECT 009 AS 用户用户ID,张三张三 as 用户名用户名, 男男 as 性别性别, 20 as 年龄年龄UNION SELECT UserID ,UserName,Sex,Age FROM UserInfo142142SELECT BookID as 书书ID FROM SalesDetailsINTERS

29、ECT SELECT BookID FROM BookInfo 143143144144SELECT BookID 书书ID ,BookName 书名书名 ,Price 价格价格 ,PublishDate 出版日期出版日期 FROM BookInfo WHERE Price 40EXCEPTSELECT BookID ,BookName ,Price ,PublishDate FROM BookInfo WHERE YEAR(PublishDate) =2006145145 结果集取交集用INTERSECT运算符。 结果集相减用EXCEPT运算符。146146147147本章目标本章目标 了解

30、设计数据库的步骤了解设计数据库的步骤 掌握掌握数据库设计模型数据库设计模型ER模型模型 掌握使用范式规范化数据库掌握使用范式规范化数据库148148为什么需要设计数据库为什么需要设计数据库 给宠物盖个小窝需要设计吗?给宠物盖个小窝需要设计吗? 修建一座大厦需要设计吗?修建一座大厦需要设计吗?149149什么是数据库什么是数据库设计设计? 什么是数据库设计什么是数据库设计?l 数据库设计就是规划和结构化数据库中的数据对象数据库设计就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。以及这些数据对象之间关系的过程。150150数据库数据库设计设计的重要性的重要性 良好的数据库设计良好

31、的数据库设计l 节省数据的存储空间节省数据的存储空间l 能够保证数据的完整性能够保证数据的完整性l 方便进行数据库应用系统的开发方便进行数据库应用系统的开发 糟糕的数据库设计:糟糕的数据库设计:l 数据冗余、存储空间浪费数据冗余、存储空间浪费l 内存空间浪费内存空间浪费l 数据更新和插入的异常数据更新和插入的异常151151设计数据库的方法和步骤设计数据库的方法和步骤一。需求分析:一。需求分析:收集数据库所需要的信息内容和用户对处理收集数据库所需要的信息内容和用户对处理的要求,加以规格化和分析,以书面形式确定下来的要求,加以规格化和分析,以书面形式确定下来二。概念设计:二。概念设计:逻辑结构设

32、计是将概念结构转换为某个逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化所支持的数据模型,并对其进行优化。三。逻辑结构:三。逻辑结构:将概念结构转换为某个将概念结构转换为某个DBMS所支持的数据所支持的数据模型,并对其进行优化。模型,并对其进行优化。四。物理设计:四。物理设计:一个完整的能实现的数据库结构一个完整的能实现的数据库结构。五。数据库的实施:五。数据库的实施:根据物理设计的结果产生一个具体的数根据物理设计的结果产生一个具体的数据库和它的应用程序,并把原始数据装入数据库。据库和它的应用程序,并把原始数据装入数据库。六。数据库的运行和维护:六。数据库的运行和维护

33、:数据库应用系统经过试运行后即数据库应用系统经过试运行后即可投入正式运行可投入正式运行152152E-R模型模型在需求分析阶段根据用户的需求分析出用户真正需要存储的在需求分析阶段根据用户的需求分析出用户真正需要存储的相关数据,以及数据之间的关系。能够标识数据以及关系相关数据,以及数据之间的关系。能够标识数据以及关系的方法即的方法即ER模型。模型。 实体实体(Entity)即客观存在的事物以及一些抽象的概念。而即客观存在的事物以及一些抽象的概念。而实体往往是一些名词实体往往是一些名词。比如学生,老师等。比如学生,老师等 属性属性(Attribute)用于描述实体的特征,比如可以用学号,用于描述实

34、体的特征,比如可以用学号,姓名,年龄等属性描述学生实体的特性。姓名,年龄等属性描述学生实体的特性。 关系关系(Relation)即实体和实体之间的联系。即实体和实体之间的联系。比如一个老师比如一个老师教多个学生。教多个学生。153153绘制绘制E-R图图 E-R(EntityRelationship)实体关系图)实体关系图 符合符合含义含义实体,一般是名词实体,一般是名词属性,一般是名词属性,一般是名词关系,一般是动词关系,一般是动词154154绘制绘制E-R图图学习学习 学生学生姓名姓名学号学号课程号课程号课程名课程名课时课时课程课程155155绘制绘制E-R图图 映射基数映射基数一对一一对

35、一(人:身份证)人:身份证)X X X X Y Y Y Y X X X X Y Y Y Y 一对多(部门:员工)一对多(部门:员工)X X X X Y Y Y 多对一(学生:课程)多对一(学生:课程)X X X X Y Y Y Y 多对多(读者:图书)多对多(读者:图书)156156E-R图图学生管理学生管理系统系统E-R图图 157157将将E-R图转换为表图转换为表u所有的实体转换为表,实体的属性就是表的字段所有的实体转换为表,实体的属性就是表的字段u一对一关系的两个实体最终变为一张表,因为两个实一对一关系的两个实体最终变为一张表,因为两个实体的记录是一一对应的。体的记录是一一对应的。u一

36、对多关系中,在一对多关系中,在“多多”的一端添加的一端添加“一一”的一端的的一端的主键字段作为主键字段作为“多多”端表的一个属性并给该字段添加约端表的一个属性并给该字段添加约束为外键。束为外键。u多对多关系中,创建一个中间表(由关系生成的表)多对多关系中,创建一个中间表(由关系生成的表),该表除了取关系本身的属性做字段外,将关系的,该表除了取关系本身的属性做字段外,将关系的“多多”端的所有的实体的主键字段组合起来作为该表的主键端的所有的实体的主键字段组合起来作为该表的主键158158将将E-R图转化为数据表图转化为数据表学生管理学生管理系统表结构系统表结构159159非规范化数据库非规范化数据

37、库编号姓名年龄籍贯职务基本工资津贴加班时间实际工资E001王军华35辽宁沈阳工程师3000500154250E002李艳45江苏常州总工程师5000150057250E003和晓33甘肃兰州高工400080055200E004张忠国27湖南长沙助工2500200203100E005马国明30甘肃武威高工4000800105600非规范化数据库存在以下问题:非规范化数据库存在以下问题:u数据冗余数据冗余u更新异常更新异常u删除异常删除异常u插入异常插入异常工资表容纳了所有数据,存在什么问题?工资表容纳了所有数据,存在什么问题?160160数据规范化数据规范化 仅有好的仅有好的RDBMS并不足以避

38、免数据冗余,必须在数据并不足以避免数据冗余,必须在数据库的设计中创建好表的结构库的设计中创建好表的结构 Dr E.F.codd 最初定义了规范化的三个级别,范式是具最初定义了规范化的三个级别,范式是具有最小冗余的表结构。这些范式是:有最小冗余的表结构。这些范式是:l 第一范式第一范式(1st NF First Normal Form)l 第二范式第二范式(2nd NFSecond Normal Form)l 第三范式第三范式(3rd NF Third Normal Form)161161第一范式第一范式 (1st NF) 第一范式的目标是确保每列的原子性第一范式的目标是确保每列的原子性 如果每

39、列都是不可再分的最小数据单元(也称为最小的原如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(子单元),则满足第一范式(1NF)籍贯籍贯辽宁沈阳江苏常州甘肃兰州湖南长沙甘肃武威省份省份城市城市辽宁沈阳江苏常州甘肃兰州湖南长沙甘肃武威162162第二范式第二范式 (2nd NF) 如果一个关系满足如果一个关系满足1NF,并且除了主键以外的其他列,都依,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(赖与该主键,则满足第二范式(2NF) 第二范式要求每个表只描述一件事情第二范式要求每个表只描述一件事情职务编号职务名称1工程师2总工程师3高工4助工职务表: 编号加

40、班时间实际工资E001154250E00257250E00355200E004203100E005105600编号姓名年龄省份城市职务编号基本工资E001王军华35辽宁沈阳13000E002李艳45江苏常州25000.职务表职务表工资表工资表员工表员工表163163第三范式第三范式 (3rd NF) 如果一个关系满足如果一个关系满足2NF,并且除了主键以外的其他列,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(都不传递依赖于主键列,则满足第三范式(3NF) 编号姓名年龄省份城市职务编号E001王军华 35辽宁沈阳1E002李艳45江苏常州2职务编号职务名称基本工资津贴1工程师3

41、0005002总工程师50001500.职务表职务表职务表职务表164164规范化和性能的关系规范化和性能的关系 为满足某种商业目标,数据库性能比规范化数据库更重要为满足某种商业目标,数据库性能比规范化数据库更重要l 通过在给定的表中添加额外的字段,以大量减少需要从中搜索信通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间息所需的时间 进行规范化的同时,还需要综合考虑数据库的性能进行规范化的同时,还需要综合考虑数据库的性能l 规范化级别越高,数据冗余越少,插入异常,删除异常,更新规范化级别越高,数据冗余越少,插入异常,删除异常,更新异常也越少,但是查询性能低异常也越少,但是查

42、询性能低165165总结总结 在需求分析阶段,设计数据库的一般步骤为:在需求分析阶段,设计数据库的一般步骤为:l 收集信息收集信息l 标识对象标识对象l 标识每个对象的属性标识每个对象的属性l 标识对象之间的关系标识对象之间的关系 在概要设计阶段和详细设计阶段,设计数据库的步骤为:在概要设计阶段和详细设计阶段,设计数据库的步骤为:l 绘制绘制E-R图图l 将将E-R图转换为表格图转换为表格l 应用三大范式规范化表格应用三大范式规范化表格166166总结总结 为了设计结构良好的数据库,需要遵守一些专门的规则,为了设计结构良好的数据库,需要遵守一些专门的规则,称为数据库的设计范式。称为数据库的设计

43、范式。l 第一范式(第一范式(1NF)的目标:确保每列的原子性。)的目标:确保每列的原子性。l 第二范式(第二范式(2NF)的目标:确保表中的每列,都和主键相关)的目标:确保表中的每列,都和主键相关 。l 第三范式(第三范式(3NF)的目标:确保每列都和主键列直接相关,而不)的目标:确保每列都和主键列直接相关,而不是间接相关是间接相关 。167167168168本章目标本章目标 掌握如何定义变量并赋值掌握如何定义变量并赋值 掌握如何输出显示数据掌握如何输出显示数据 掌握掌握IF、WHILE、CASE逻辑控制语句逻辑控制语句 理解理解SQL中批处理的概念中批处理的概念169169使用变量使用变量

44、变量分为局部变量和全局变量变量分为局部变量和全局变量 局部变量局部变量l 使用使用DECLARE定义定义,声明时必须在变量名前加声明时必须在变量名前加l 局部变量必须先声明后赋值局部变量必须先声明后赋值 如如:变量名变量名vname定义成定义成vname 全局变量全局变量l 标识为两个标识为两个标记标记()l 由由SQL Server提供的,不能由用户创建。提供的,不能由用户创建。l 全局变量提供关于全局变量提供关于SQLServer的当前状态信息的当前状态信息 如如:SQLServer当前版本号当前版本号:version 170170局部变量的声明和赋值局部变量的声明和赋值 局部变量的声明局

45、部变量的声明l 语法语法:l 例如例如: 局部变量的赋值有两种方法局部变量的赋值有两种方法l 语法语法:l 例如例如DECLARE variable_name DataType DECLARE count int -声明一个局部变量声明一个局部变量countDECLARE ename varchar(8) -声明一个局部变量声明一个局部变量ename, 最最多可存储个字符多可存储个字符SET variable_name =value或或SELECT variable_name=valueSET count=10 或或 SELECT count=10SET ename=SMITH 或或 SELE

46、CT ename=SMITH171171局部变量的使用局部变量的使用 SET 赋值语句一般用于赋给变量指定的数据常量赋值语句一般用于赋给变量指定的数据常量 SELECT赋值语句一般用于从表中查询数据,然后再赋给变量。赋值语句一般用于从表中查询数据,然后再赋给变量。 需要注意的是需要注意的是:SELECT语句需要确保筛选的记录不多于一条。如果语句需要确保筛选的记录不多于一条。如果查询的记录多于一条,将把最后一条记录的值赋给变量。查询的记录多于一条,将把最后一条记录的值赋给变量。根据用户名查找和根据用户名查找和“张敏张敏“的地址相同的用户信息的地址相同的用户信息 DECLARE name varc

47、har(20)定义用户名定义用户名DECLARE addr varchar(20)定义地址定义地址SET name=张敏张敏使用使用set给用户名赋值给用户名赋值SELECT addr=addr FROM UserInfo使用使用select存储张敏的地址存储张敏的地址WHERE UserName=nameSELECT * FROM UserInfo WHERE Addr=addr筛选数据筛选数据172172局部变量的特点局部变量的特点 一个一个 SELECT 语句可以初始化多个局部变量。语句可以初始化多个局部变量。DECLARE bookName nvarchar(100),author n

48、varchar(100)-声明多个变量声明多个变量SET bookName=java ,author=孙天琴孙天琴 -使用使用SET给多个变量赋值给多个变量赋值SElECT bookName=c#,author=明日明日 -使用使用SELECT给多个变量赋值给多个变量赋值SET bookName=(SELECT BookName FROM BookInfo) -SET将多个查询的结果赋值给变量出错将多个查询的结果赋值给变量出错SELECT author=Author from BookInfo -使用使用SELECT将查询的最有一个值赋给变量将查询的最有一个值赋给变量SET author=(S

49、ELECT Author FROM BookInfo WHERE Price0)-查询结果不存在时将查询结果不存在时将NULL赋给变量赋给变量SELECT author=林林林林 SELECT author=Author FROMBookInfo WHERE Price10) print convert(varchar(10),saleDate,112)+销售良好销售良好,销售的数量是销售的数量是+cast(quantity as varchar(10)+本本 else if(quantity 50 then 优秀优秀 when SUM(b.quantity) between 30 and 5

50、0 then 良好良好 when SUM(b.quantity) between 10 and 210 then 一般一般 when SUM(b.quantity) between 1 and 10 then 差差 else 没有销售没有销售 END from BookInfo a left join SalesDetails b on a.BookID=b.BookID group by a.BookName order by SUM(b.quantity) desc186186WHILE循环语句循环语句 设置重复执行设置重复执行 SQL 语句或语句块的条件。只要指定的条语句或语句块的条件。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁