数据库技术发展的三个阶段
人工管理阶段、文件系统阶段、数据库系统阶段 数据库的基本概念
Data Base数据库是为了实现一定的目的、按某种规则组织起来的〃数据〃的
”集合〃,简而言之,它是有结构的数据集合。 数据库系统的三级模式结构(考) 外模式、模式、内模式
外模式/模式映射保证逻辑独立性 模式/内模式映射保证物理独立性 数据模型的要素及其特点 层次模型、网状模型、关系模型 要素: 数据结构:
数据操作:关系代数、关系演算、具有关系代数和关系演算双重特点的语言(SQL ) 完整性约束:实体完整性、参照完整性和用户定义的完整性 关系的特点:
1、 每列数据项不可再分解
2、 同一个关系中,不能岀现相同的属性名 3、 同一个关系中,不能有完全相同的元组 4、 所有元组格式相同,长度相同;属性类型相同
5、行列顺序无关紧要
关系的完整性(插入):实体完整性、参照完整性 关系的完整性(删除):参照完整性规则 关系的完整性(修改)二删除+插入 实体之间的关系: (1) 一对一关系
(2) 一对多关系 (3) 多多关系
常见数据库:fox pro、access, sql server, mybase、oracle
第—章 —
SQL Server 2008新特性:可信、高效率、智能 SQL (结构化查询语言):
数据定义语言(DDL ) CREATE. DROP、ALTER
数据操作语言(DML) SELECT、INSERT、UPDATE. DELETE 数据控制语言(DCL ) GRANT. REVOKE
r Create Table/Alter Table/Drop Table-定义基本表
(DDL 彳 Create View/Drop View:视图操作
Create Index/Drop Index:索引操作 r Insert
DML
SQL \\
Delete Select < Update
Grant 匚 Revoke
记录操作
DCL
权限管理
嵌入式SQL
的使用规定
特点:一体化、高度非过程化、以同一种语法格式提供两种使用方式、语言简捷, 易学易用
SQL标识符
1. 标识符的首字母必须是以下两种情况之一所有在统一码(Unicode)2.0标准 规定的字
符,包括26个英文字母a-z和A-Z,以及其他一些语言字符,如 汉字。下划线〃_〃、〃@〃或〃#〃。
2. 后续字符:除首字母约定外,还有数字字符及〃$\"。 3. 不允许是「SQL的保留字
4. 不允许嵌入空格或其他特殊字符(@、#、##、@@)
常规标识符:符合标识符的格式规则
分隔标识符:使用了双引号(〃“)或方括号([])等分隔符号,既可以遵守标识 符命名规则,也可以不遵守标识符命名规则。
第3章创建和管理数据库
数据库:是按照数据结构来组织、存储、和管理数据的仓库,是存储在一起的相 关数据的集合。
SQL Server2008的数据库对象主要包括表(table \\视S( view \\索引(index \\
存储过程(stored procedure )、触发器(trigger)和约束(constraint)等。
SQL Server 2008数据库主要由文件和文件组组成。
文件主要分为3类:主要数据文件、次要数据文件和事务日志文件。 文件组主要分为两种类型:主文件组和用户定义文件组。 数据库对象的全名应该由服务器名、数据库名、拥有者名和对象名 两种类型的实例:默认实例和命名实例( <计算机名称〉\\<实例名称〉) 数据库操作(使用SSMS和T-SQL创建、修改、删除数据库)
新创建的数据库,系统对数据文件的默认值为:初始大小3MB,最大大小不限 制,增量为1 MB。
对日志文件的默认值为:初始大小1MB ,最大大小不限制,增长方式为按10% 长。
DROP DATABASE
数据表操作(使用SSMS和「SQL创建、修改、删除数据表)
createdatabase userdbl on (
name=userdb4_dataf
filename=1E:\\sql_data\b4.mdf1, size=5, maxsize=10,
filegrowth=l logon name=userdb4_logf
filename=1E:\\sql_data\b4.ldf !,
比例增size=2 , maxsize=5 , filegrowth=l )
创建、修改、删除约束(根据完整性规则应用SSMS和T-SQL设置表的主码、 约束和外码等) 添加日志文件:
use booksys
--使用数据库
--修改数据库
alterdatabase booksys addlogfile --添加「I志文件 (
name-booksys_ldf,
filename=1I:\\sql_data\estl\\booksys.ldf1, size=2mb, maxsize=10mbA filegrowth=2mb )
tofilegroup文件组名一将文件添加到文件组中
添加次要数据文件:
use booksys
alterdatabase booksys addfile (
name=booksys,
filename=1I:\\sql_data\est1\\booksys.ndf1z size-2mb, maxsize=10mb, filegrowth=2mb )
添加文件组:
Al. terdatabase 数据库乞 Addfilegroup文件组名
删除文件:
Al t erdat aba remove file 文件名
删除数据库:
Drop数据库名
创建表:
use booksys createtable book (
bookid varchar (20 ) primarykey, --主键 bookname varchar (60) unique, --唯-哟束 editor char (8)notnull,--非空约束
price numeric (5,2) check (price>20), --检查约束 publish varchar (30) default ( '电子无斗人'),一一默认彳肖 publishdata d&tetime, qty int,
foreignkey (字段)references参照表名(字段[主键]) )
修改列:
ALTER teble 表名 (
ADD列名类型约束,
I ALTERCOLUMN列名数据类型约束, I DROPCOLUMN歹M )
添加约束
altertable borrow
addconstraint pk_id primarykey(bookid,cardid,bdate)
-添加主键约束
添加外键约束
altertable borrow
addconstraint fk_card foreignkey(cardid)references
reader(cardid)
检查约束
ALTERTABLE student
ADDCONSTRAINT CHECK_sex CHECK(sex=11 or sex ='女‘)
默认值
ALTERTABLE student
ADDCONSTRAINT df_sp DEFAULT f HK 1 FOR 歹U名
唯一约束
ALTERTABLE student
ADDCONSTRAINT uq_ID UNIQUE (ID)
删除约束:
ALTERTABLE 衣名 DROP约束名
常见的约束:
1、 NULL/NOT NULL :空甸非空值约束。
2、 PRIMARY KEY :主键约束,等价非空、单值。 3、 CHECK (逻辑表达式):检查约束。 4、 DEFAULT常量表达式:默认值约束。 5、 UNIQUE:单值约束。
6、 foreign key REFERENCES父表名(主键):外键约束
删除表
droptable 表名
数据操作(使用SSMS和「SQL添加、修改、删除数据) 插入数据
insertinto book values ( * TP2001--001', * 数据结构 J华大 学出版社-*2001-1-8 * , 20)
更新数据
update student set classno=1051 where spno=1031
删除数据
delete student where spno=1031
删除列前必须先删除其上的约束
第四章T-SQL编程与应用
DECLARE(考)
DECLARE
*22.00*,,李国庆 J ,清@变量名数据类型,@变量名数据类型[,...n ]
通配符(考) 通配符
[描述
包含零个或更多字符的 任意字符串。
示例
WHERE title LIKE ' Wcoinputer%'
将査找处于书名任意位置的包 含单词
computer的所有书名c
WHERE au fname LIKE ' ean 将
J
(下划线) 任何单个字符。
查找以ean结尾的所有4个 字母的名孑(Dean、Sean等)<=
WHERE au_lname LIKE
([a-f])或集
台([abcdef」)中的任
指定范围 何单个字符。
[C-P] arsen* 将査找以 arsen 结
尾且以介于C与P之间的 任何单个字符开始的作者姓氏, 例如.Carsen、
Larsen、Karsen 等。 WHERE au^lname LIKE '
将查找以de开始且其W的字 母不为
不属于指定范
([a-f])或集合
(Labe def j)的任何单个
字符。
上课例子:
1的所有作者的姓氏。
SELECT * FROM 数据表 WHERE 编号 LIKE ' 00[8]%[A-D]%
可能会查出的编号值为:
A#
A、 006SABC B、 007SFFG C、 08ASX D、 005B
运算符优先级
当一个复杂表达式中包含有多个运算符时,运算符的优先级决定了表达式计算和 比较操作的先后顺序。运算符的优先级由高到低的顺序如下:
(1) + (正)-(负)~ (位反)
(2)*(乘)/ (除)% (取余) (3 ) + (加)+ (字符串串联运算符)■(减) (4)二、>、<、>二、<二、<>、!二、!>、!v (比较运算符)
(5 ) (按位异或)& (按位与)| (按位或)
A
(6 ) NOT (7)AND
(8 ) ALL ANY BETWEEN IN LIKE OR SOME (逻辑运算符) (9 )二(赋值)
第五章数据查询(设计题一定考)
查询语法格式(考)
SELECT列名 INTO新农名 FROMC表或视图〉 WHERE逻辑表达式 GROUPBY 列名 HAVING逻辑表达式
一组级条件 一列级条件
ORDERBY列名asc升序,desc降序
常用的聚合函数(考)
sum () Avg () Max () Min () Count ()
Count(distinct)
GROUP BY注意事项
(1)在SELECT子句的字段列表中,除了聚集函数外,其他所出现的字段一定 要在GROUP BY子句中有定义才行 (2 )SELECT子句的字段列表中不一定要有聚集函数旦至少要用到GROUP BY
子句列表中的一个项目。
(3 )在SQL Server中text、ntext和image数据类型的字段不能作为GROUP BY子句的分组依据。
(4 ) GROUP BY子句不能使用字段别名。
交叉连接(笛卡尔积)
SELECT fieldlist FROM tablel,table2
SELECT fieldlist FROM tablel crossJOIN table2
连接
SELECT fieldlist
FROM tablel [INNER | LEFT | RIGHT| FULL] JOIN table2 ON tablel.column=table2.column
INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 FULL JOIN:只要其中一个表中存在匹配,就返回行
子查询(IN比较运算符EXISTSUNION)(考 选择、填空)
UNION操作符用于合并两个或多个SELECT语句的结果集。UNION内部的 SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每
条SELECT语句中的列的顺序必须相同。
Between :列名 > 二开始值and列名 < 二结束值(考)
(1) NOT:不满足条件 (2) AND :满足所有条件 (3) OR :满足其中任意一个条件
DISTINCT消除重复记录(考)
弟八早
二级存储映象三级模式SQLSERVER数据库对象
Transact-SQL DDL
逻辑独立性 物理独立性
外模式视图(VIEW) 模式基本表(TABLE)
CREATE VIEW CREATE TABLE
内模式数据库(DATABASE) CREATE DATABASE
视图(View )是一个虚拟表。 视图作用(考多选题)
视图能简化用户的操作、提高安全性、逻辑数据独立性 修改数据
注意事项(不能通过视图修改数据):
• Select列表中含有Distinct
• Select列表中含有表达式,如计算列,•在from子句中引用多个表
•引用不可更新的视图
• GROUP BY或Having子句
•视图中不含非空列
创建视图:(考)
CREATEVIEW view_name AS select_statement
修改视图:
ALTERVIEW view_name AS select_statement
删除视图:
DROPVIEW视图名
视图添加数据
Insert into视图名values (列值,列值,…,列值n)
(考)
函数等视图更新数据
update视图名set列=列值,列=列值 Where条件表达式
视图删除数据
DELETEFROM视图名WHERE逻辑表达式
第七章索引与数据完整性 索引优
点(考) 提高数据库的查找速度、保证列的惟一性、加快表与表之间的连接速度、减少 查询中分组和排序的时间、检索数据的过程中使用优化隐藏器,提高系统性能 索引类型(考)
存储结构:聚集索引(物理顺序与索引顺序相同、_个表一个)和非聚集索引(物理 顺序与索引顺序不相同、一个表可有多个) 数据唯一性:唯一索引(UNIQUEIndex)和非唯一索引(Nonunique Index)
唯一索引是指索引值必须是唯一的,不允许数据表中具有两行相同的索引值. 键列的个数:单列索引和多列索引 索引分类(考)
聚集索引、非聚集索引、唯一索引、索引视图、全文索引 关键字
CREATE
[UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX索弓|名
ON 表(视图)名(列名[ASCIDESC]
)
--唯 -S 聚集,非聚集
删除索引
dropindex表名.索弓I名
数据完整性
(1 )数据类型准确无误。 (2 )数据取值符合规定的范围。
(3 )多个数据表之间的数据不存在冲突。
数据完整性机制(考)
实体完整性(行1域完整性(列1引用完整性(表与表1用户定义完整性 以下为了解即可,不知道考不考
(1) 唯一索引(Unique Index)。 (2) 主键(Primary Key)。 (3) 唯一码(Unique Key)。 (4) 标识列(Identity Column)。
域完整性常见的实现机制包括以下几点’
(1) 默认值(Default) o (2) 检查(Check)。 (3) 外键(Foreign Key)。 (4) 数据类型(Data Type)。 (5) 规则(Rule) o
(1)
当主表中没有关联的记录时,将记录添加到相关
表中。
(2) (3)
更改主表中的值并导致相关表中的记录孤立。 从主表中删除记录,但仍存在与该记录匹配的相
关记录。
(1) 规则(Rule) o (2) 触发器(Trigger)。
(3) 存储过程(Stored Procedure)。
(4) 创建数据表时的所有约束(Constraint) □
存储过程优点(考选择题)
允许标准组件式编程,可以嵌套使用,增强重用性和共享性 可以接受并使用参数动态执行其中的SQL语句 比一般的SQL语句执行速度快 具有安全特性 允许模块俯辩设计 减少网络通信流量
可以强制应用程序的安全性 存储过程类别(考)
系统提供的存储过程、用户自走义存储过程和扩展存储过程。 创建语法
CREATEPROCEDURE [proc] procedure_name [ @参数] with [recompile encryption (加密)](考) As sql语句
调用方法
Exec存储过程名参数
变量传值的调用方法:
declare @变量名数据类型 set @变量名
Exec procedure_name @变量名
修改存储过程:
alterPROCEDURE [proc] procedure_name [@参数] As sq丄语句
重新编译)| (删除存储过程
dropproc存储过程名
获得存储过程信息:sp_helptext
查看存储过程的相关性信息:sp.depends 查看存储过程的一般信息:sp_help 例子:
createproc p_stu_avg
@stu_id char (10), @avg_cj intoutput as
select @avg_cj=avg(chengji) from xuanke
where xkid=@stu_id declare @cj int
exec p_stu_avg @stu_id=1090021r @avg_cj=@cj output select @c j 触发器:trigger
触发器分为DML触发器和DDL触发器。
DML触发器可以分为如下5种类型。① UPDATE触发器 ② INSERT触发器 ③ DELETE触发器 ④ INSTEAD OF触发器
根据触发的方式
⑤ AFTER触发器
创建DM L触发器语法:
BS平均成绩
CREATETRIGGER [ schema_name • ]trigger_name ON{table|view}
{FOR| AFTER |INSTEADOF}
{ [ INSERT ] [,] [ UPDATE] [,] [DELETE] } AS
sql_statement
DDL触发器只能在触发事件发生后才会调用执行,即它只能是AFTER触发器。
创建DDL触发器语句(无设计题)
CREATETRIGGER trigger_name ON{ALLSERVER I DATABASE} With encryption
{FORI AFTER }触发的事件类型 AS sql_statement
删除触发器
DROPTRIGGER触发器名
管理触发器
修改触发器、删除触发器、禁用(启用)触发器
第九章事务
系统函数:标量函数,聚合函数,行集函数。(考) 三种用户自定义函数:
标量函数:返回单个数据值。(考设计题)
内连表值函数:返回值是一个记录集合——表。在此函数中z return语句包含 —条单独的select语句。
多语句表值函数:返回值是由选择的结果构成的记录集。 函数不能有输出参数,存储过程可以有输出参数。
创建函数语法:(考设计题)
createfunction函数名(@形参名数据类型[,@形参名数据类型n]) returns返回值数据类型 as begin
命令行或程序块(必须有Return子句) End
调用函数:
Print dbo.函数([实参])或select dbo.函数([实参])
删除自定义函数
dropfunction 函数名
Pivot(必考)
select sex,信息学院计算机学院机械学院
from (select a.studentID,a.sex’a.speciality from student a) as t
pivot(count(studentID)for speciality in(信息学院,
计算机学院机械学院))as b
事务属性:原子性(Atomicity )、一致性(Consistency)、隔离线(Isolation). 持久性(Durability)(考) 事务管理主要使用四条语句(考)
1. BEGIN TRANSACTION (事务的起点) 2. COMMIT TRANSACTION (事务的终点) 3. ROLLBACK TRANSACTION (事务回滚) 4. SAVE TRANSACTION (事务保存点)
类型:系统提供事务、用户定义事务(考) 模式:自动提交事务、显式事务、隐性事务(考)
并发问题: 丢失更新、未确认的相关性(脏读)、不一致的分析(不可重复读X幻象读 死锁条件:互斥条件、请求与保持条件、不剥夺条件、循环等待条件 锁:共享锁S、独占锁X、更新锁U (考)
第十章
SQL Server的安全性管理是建立在验证(authentication )和访问许可 (permission )这两种机制上的。
SQL Server 2008的验证方式包括Windows验证模式与混合验证模式. SQL Server的安全模型中包括以下几部分: • SQL Server身份验证;
•登录账户; •数据库用户; •角色; •权限
在SQL Server中,账号有两种:一种是登录服务器的登录账号,另外一种就是的用户账号.
创建登陆名:createlogin登录名with password^密码, 修改登录名:alterlogin^:录名with password=z 密码, 删除登录名:droplogin登录名
课后作业 --作业二
--IN
显zjxbook表中所有书号、书名和出版社
select bookid,bookname,publish from book —2、 显示所有的书目(DISTINCT)
selectdistinet booknmme from book orderby bookname 一3、 显示年以后出版的书
select*from book where((year)publishdate)>2001 -4、
显示读者信息表中所有计算机系的男同学的信息
select*f rom reader where dept= 1 计算机系 1 and sex='男 1
--5、 显示所有编者姓刘的图书情况
select* from reader wherename1ike'夫U% ' - - 6、 将b o o k中的I !;籍信息按岀版时间先后显示
使用数据库 select*from book orderby publishdate ASC —7、
列出在book表中总共有多少种书
selectcount(bookid)from book —8. 列出水利水电出版社出版的书的种数 SELECT bookname FROM book where publish=,水利水电出版社, GROUPBY bookname
--9、 查找最贵和最便宜的书的价格 SELECTmax(price)FROM book SELECTmin(price)FROM book — 10、各类书的总库存
select booknmme, count (qty) ms总库存from book groupby bookname -IK 统计各出版社的图书库存总量
select publish, count (qty) BS总库存from book groupby publish --12、将进彳亍读者信息表reader和借书情况表borrow两张表进彳亍各种连接 Select*from reader JOIN borrow ON reader ・ cardid=borrow ・ cmtdid selec t
reader Left JOIN borrow ON reader ・ cardid=borrow ・ cardid
selecreader RightJOIN borrow ON reader.cardid-borrow•c&rdid
--创建查询某读者信息的存储过程proc_reader, (cardid在执行存储过程时给出)并调用。 ifexists(select * from sysobjects wherename=1proc_reader1 andtype=1P1) beg in
dropprocedure proc_reader print *已删除! * end else
T1print不存在,可创建!
createprocedure proc_reader Qcardid varchar (20)
select* from reader
where cardid^Gcardici exec proc_reader @cardid=1sOlll --创建DML
(after)触发器tri_borrow,在图书借阅农borrow中添加借阅信息记录(bookid、 cardid)后,
--自动添加借阅ri期为当前,并按天的借阅期限得到该书的应还口期;并且对应的书籍库存鼠 减。 createtrigger tri_borrow on borrow AFTER INSERT as
begin
print *更新触发开始执行
declare @bookid varchar(20),Ocardid varchar(10) SET @bookid=(SELECT bookid FROM inserted) SET @cardid=(SELECT cardid FROM inserted) updaborrow
set bdate=GETDATE() set sdate=GETDATE()+60
where bookid =@bookid and cardid = Gcardid 1
print *增加还书口期1
updatefrom book
set qty=(select qty from book where bookid=@bookid)-1 print1
end
1减少库存数量
因篇幅问题不能全部显示,请点此查看更多更全内容