第一篇:SQLServer数据库入门学习总结
SQL Server数据库入门学习总结
经过一段时间的学习,也对数据库有了一些认识。
数据库基本是由表,关系,操作组成;对于初学者首先要学的:
1.数据库是如何存储数据的表,约束,触发器
2.数据库是如何操作数据的
insert,update,delete T-sql 函数 存储过程 触发器
3.数据库是如何显示数据的select
SQLServer数据库学习总结
1.SQL基础
SQL Server2000安装、配置,服务器启动、停止,企业管理器、查询分析器
第一代数据库--网状数据库和层次数据库;第二代数据库--关系数据库
数据库(DB);数据库管理系统(DBMS);数据库系统(DBS)
SQL Server 2000 提供了不同版本:企业版、标准版、个人版、开发版
SQL Server中的数据类型:整数:int,smallint,tinyint,bigint;浮点数:real,float,decimal;二进制:binary,varbinary;逻辑:bit;字符:char,nchar,varchar,nvarchar;文本和图形:text,ntext,image;日期和时间:datetime,smalldatetime;货币:money,smallmoney
数据库的创建和删除;数据库表的创建、修改和删除
数据完整性:实体完整性:Primary Key,Unique Key,Unique Index,Identity Column;域完整性:Default,Check,Foreign Key,Data type,Rule;参照完整性:Foreign Key,Check,Triggers,Procedure;用户定义完整性:Rule,Triggers,Procedure;Create Table中得全部列级和表级约束
SQL Server中有5种约束:主键约束(Primary Key Constraint)、默认约束(Default Constraint)、检查约束(Check Constraint)、唯一性约束(Unique Constraint)、外键约束(Foreign Key Constraint).关系图
数据库设计的步骤:需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行和维护
两个实体之间的联系:一对一(1:1)、一对多(1:n)、多对多(m:n)
实体关系模型--E-R图
数据库规范化:将数据库的结构精简为最简单的形式;从表中删除冗余列;标识所有依赖于其他数据库的数据。
数据库三范式:第一范式就是无重复的列;第二范式就是非主属性非部分依赖于主关键字;第三范式就是属性不依赖于其他非主属性
2.SQL语句
SQL全称是“结构化查询语言(Structured Query Language)”
SQL的4个部分:
数据定义语言DDL(Data Definition Language)用来定义数据的结构:create、alter、drop。
数据控制语言DCL(Data Control Language)用来控制数据库组件的存取许可、存取权限等得命令:grant、revoke。
数据操纵语言DML(Data Manipulation Language)用来操纵数据库中得数据的命令:insert、update、delete。
数据查询语言DQL(Data Query Language)用来查询数据库中得数据的命令:select。
SQL中得运算符
:算术运算符、位运算符、比较运算符、逻辑运算符、通配运算符、字符串连接符、赋值运算符
3.查询
简单查询,使用TOP子句
查询结果排序order by
带条件的查询where,使用算术表达式,使用逻辑表达式,使用between关键字,使用in关键字,模糊查询like
在查询中使用聚合函数:sum(x),avg(x),min(x),max(x),count(x),count(*)使用分组查询group by,having子句
distinct关键字
列别名
select top 6 * from sales order by qty desc select au_id,au_fname,au_lname
from
authors
where
state in('ks','ca','mi')
select au_fname,au_lname,phone from authors where au_id like '72[234]-%' select
简单子查询:嵌套子查询、相关子查询;子查询的select语句中不能使用order by子句,roder by子句只能对最终查询结果排序。type,sum(price),avg(price),count(*)
from
titles
group
by
type
having
type in('business','psycheology')嵌套子查询:执行过程,先执行子查询,子查询得到的结果不被显示,而是传给外层查询,作为外层查询的条件,然后执行外层查询,并显示结果。
嵌套子查询的执行不依赖于外层查询,子查询只执行一次。
带有比较运算符的子查询,带有in和not in的子查询,带有any或all的子查询
相关子查询:子查询为外层查询的每一行执行一次,外层查询将子查询引用的列的值传给了子查询。
相关子查询的执行依赖于外层查询,子查询需要重复的执行。
带有exists和not exists的相关子查询。
多表联接查询:内联接(inner join)、外联接((left、right、full)outer join)、自联接(self join)和交叉联接(cross join)
在查询上创建新表:select into语句首先创建一个新表,然后用查询的结果填充新表。
表别名
select coursename from course where courseid in(select distinct courseid from grade where grade>10)
select studname from student where sudbirthday > any(select studbirthday from student where class = '信息系')and class<>'信息系'
select studname from student where exists(select * from grade where studid = student.studid and courseid = '01')
select stud1.* from student as stud1 join student as stud2 on stud2.studname = 'mm' and stud1.studsex = stud2.studsex
select * into girls from student where studsex='m'
4.视图、索引和事务
视图是由一个或多个数据表(基本表)导出的虚拟表或者查询表,是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制。
视图的好处:能够简化用户的操作;视图能够对机密数据提供安全保护。
创建视图时,视图的名称存在sysobjects表中。有关视图中所定义列的信息添加到syscolumns表中,而有关视图相关性的信息添加到sysdepends表中。另外,create view语句的文本添加到syscomments表中。
在通过视图向表中插入数据时,如果insert语句列表中包含有视图中没有选择的列和不允许为空值的列,这种操作是不允许的。
创建视图:create view view_employee as select emp_id,fname,lname from employee 使用视图:select * from view_employee
修改视图:alter view view_employee as select emp_id,fname,job_id from employee where job_id>10
删除视图:drop veiw view_employee 查看视图结构:exec sp_help view_employee
查看视图定义信息:exec sp_helptext 'view_employee'
索引提供了一种基于一列或多列的值对表的数据行进行快速访问的方法。索引提供的是表中得逻辑顺序。
聚集索引基于数据行的键值在表内排序和存储这些数据行。当数据表以某列为关键字建立聚集索引时,表中得数据行就以该列(聚集索引键)的排序次序进行存储。每个表只能有一个聚集索引。
非聚集索引具有完全独立于数据行的结构,一个表可以建立多个非聚集索引。
创建聚集索引:create clustered index studid_ind on stud(studid)
创建非聚集索引:create unique index studfullname_ind on stud(fname desc,lname)删除索引:drop index stud.studid_ind 查看stud表上得索引:exec sp_helpindex stud
事务是一种机制,是一个操作序列,它包含了一组数据库操作命令,并且所有的命令作为一个整体一起向系统提交或撤销操作请求。
事务的特性:原子性(Atomicity)、一致性(Consistenty)、隔离性(Isolation)、永久性(Durability)。事务分类:显示事务、隐性事务、自动提交事务。
视图、索引和事务的创建、使用、修改和删除
5.Transact—SQL编程
全局变量:由系统定义和维护,其名称以@@字符开头
局部变量:由用户定义和赋值,其名称以@字符开头
输出语句:print
逻辑控制语句:begin...end;break;case;continue;goto;if...else;return;while 常用函数:行集函数,聚合函数,标量函数
转换函数:convert(dt,e,s),cast()
数学函数:绝对值abs(n),向上取整ceiling(n),向下取整floor(n),指定次幂power(n,y),四舍五入round(n,length),求符号sign(n),平方根sqrt(n)日期
和
时
间
函
数
:dateadd(datepart,num,date),datediff(datepart,date1,date2),datename(datepart,date),datepart(datepart,date),getdate(),year(date),month(date),day(date)
字符串函数:lower(e),upper(e),left(e,i),right(e,i),replace(s1,s2,s3)用3替换1中的2,replicate(e,i)重复指定次数,stuff(s1,start,length,s2)用2替换1中指定位置,substring(expression,start,length)元数
据
函
数
:db_id('database_name'),db_name(datebase_id),object_id('obj_name'),object_name(obj_id),col_length('table','column'),col_name(table_id,col_id)聚合函数:avg(expr),count(expr),count(*),max(expr),min(expr),sum(expr)select au_lname,au_fname,contory = case state when 'u
t' then 'utah' when 'ca' then 'california' else 'world'
end,city from authors order by state desc
while(select avg(price)from titles)<30 begin
update titles set price = price * 2
if(select max(price)from titles)>50 break else continue end
print '价格太高'
begin
insert into jobs values('a',80,234)if @@error<>0 print '数据插入失败' else goto M end
M:print '数据插入成功'
6.游标
游标是一种能从包含多条数据记录的结果集中每次提取一条记录的机制。将批操作变成行操作,对结果集中得某行进行操作。
declare author_csr cursor read_only for--定义只读游标
select au_fname,au_lname from authors where state = 'ca' order by au_fname,au_lname declare @lname varchar(20),@fname varchar(20)--定义变量
open author_csr--打开游标
fetch next from author_csr into @lname,@fname--执行一次数据读取操作
while @@fetch_status=0--循环游标读取数据
begin
print 'author name:'+@lname+''+@fname fetch next from author_csr into @lname,@fname end
close author_csr--关闭游标
deallocate author_csr--释放游标
7.存储过程
存储过程(stored procedure)类似c语言中的函数,是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字饼给出参数来执行它。
常用的系
统
存
储
过
程
:sp_database,sp_helpdb,sp_renamedb,sp_tables,sp_column,sp_help,sp_helpconstraint,sp_helpindex,sp_stored_procedure,sp_password 创建存储过程:
create as
select @total=count(jy.askbookid)from book,jyls jy where bookname like @book_name and book.isbn=jy.isbn and jy.starttime>=@starttime and endtime<=@endtime procedure book_num
(@book_name
varchar(26),@starttime
datetime,@endtime datetime,@total int output)使用存储过程:
declare @book_name char(26),@total int
set @book_name='面向对象分析和设计'
exec book_num @book_name,'2007-01-01','2007-11-01',@total output select @book_name as bookname,@total as num
8.触发器
触发器是一种特殊类型的存储过程,主要是通过实践进行触发而被执行。
触发器的主要作用就是能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。其他功能:强化约束,跟踪变化,级联运行,存储过程调用。
SQL Server 2000支持两种类型触发器:
after触发器:要求只有执行某一操作之后,触发器才被执行,且只能在表上定义。
instead of触发器:表示并不执行其所定义的操作,而仅是执行触发器本身。既可以在表上定义,也可以在视图上定义,但对同一操作只能定义一个instead of触发器。
工作原理:
当触发insert触发器时,新的数据行就会被插入到触发器表和inserted表中。触发器通过检查inserted表来确定是否执行触发器动作或如何执行。
当在定义有触
发器的表上执行update语句时,原始行被移入到deleted表,更新行被移入inserted表。触发器检查deleted表和inserted表以及被更新的表,来确定是否更新了多行以及如何执行触发器动作。
当触发deleted触发器后,从受影响的表中删除的行将被放置到一个特殊的deleted表中。
create trigger update_smoke_t_sale on smoke_t_sale for update as
declare @newsalenum int,@smokeproductname varchar(40)select @newsalenum= salenum from inserted
select @smokeproductname=smokeproductname from inserted if update(salenum)--判断是否更新
begin update smoke_t_sale
set
saletotalprice=@newsalenum
*
saleprice
where smokeproductname=@smokeproductname
insert into smoke_log(logContent)values('更新成功')end else
print '未更新'
9.数据库高级管理
SQL Server安全体系结构,4个等级:客户机操作系统的安全性,SQL Server的登录安全性,数据库的使用安全性,数据对象的使用安全性 SQL Server验证模式:windows身份验证模式和混合模式(windows身份验证和SQL Server身份验证)
登录账户:用户登录(连接)SQL Server服务器的账户和密码。
角色管理:服务器角色(负责管理和维护SQL Server的组);数据库角色(是对某个数据库具有相同访问权限的用户账户和组的集合)
数据库用户:对于每个要求访问数据库的登录账户,必须在要访问的数据库中建立该数据库的访问账户,且与其登录账户链接关联,才可进入该数据库访问。
权限管理:是指用户是否能进行访问数据库资源的相应操作。权限包括:语句权限、对象权限和暗示权限。
授予权限:
grant 语句 [...] to 安全账户[...]
grant 权限 [...] on 表或视图[(列[,...])]|on 存储过程|on用户自定义函数 to 安全账户[,...] 拒绝权限:
deny 语句 [...] to 安全账户[...]
deny 权限 [...] on 表或视图[(列[,...])]|on 存储过程|on用户自定义函数 to 安全账户[,...] 撤销权限:
revoke 语句 [...] from 安全账户[...]
revoke 权限 [...] on 表或视图[(列[,...])]|on 存储过程|on用户自定义函数 from 安全账户[,...]
备份和恢复:
数据库备份设备,在进行数据库备份之前,首先要创建备份设备。包括:磁盘、磁带和命名管道
SQL Server 备份策略:只备份数据库、备份数据库和事务日志、差异备份。
backup database medicaldb to disk='medical_bk1' with name='medicaldb backup' description='medicaldb fullbackup' init restore database medicaldb from medical_bk1
导入导出:
DTS(Data Transformation Service)是SQL Server提供的数据传输服务。使用户可以将来自完全不同数据源的数据析取、转换并合并到单个或多个目的。
分离与附加:创建可移动的数据库。
第二篇:如何学习数据库_怎么入门 你一定要知道
如何学习数据库,怎么入门
很多新手在数据库学习的时候,由于学习难度较大,往往不知所措,打击学习的自信心,没有学习的兴趣,这些都是比较难避免的,今天 小编就和大家分享一些学习的心得。
如果一点数据库知识也没有的话,先把你要学习的数据库环境搭建起来(网上很多教程)。
先不要看书,环境搭建成功后在网上搜罗一些demo,sql脚本之类,直接动手敲进去一点一点体会。
能搜到的简单sql语句都练到了,再结合疑问去翻书,并系统学一下基础。到此为止的效率,远比先抱着一本书硬啃高多了(还容易犯困,半途而废)。
入门级书籍,个人认为只要尽量没有错误,都是可以的。找个名声好些的出版社的书。进阶的书籍再好好挑也不迟。
说一下我的个人经历吧,我是从一个应届生毕业生毕业就到了国内一个在美国上市的互联网公司做MySQLDBA。如果是你想毕业之后从事DBA的工作,我个人觉得在校的时候应该加强学习以下几个方面:
1.学习linux操作系统,企业的MySQL都是跑在linux环境下的,学会linux常用命令,能写shell程序就会更好了!
2.学习好数据库系统原理,针对于MySQL的学习多动手,多看官方手册,在校的时候打好SQL的基础,最好自己动手去搭MySQL的复制环境去测试,熟悉工作原理。
3.学习一门脚本语言,3P(Python,PHP,Perl)当中学一门即可,MySQL一般来说是互联网公司用得比较多,所以有一门编程语言在手,对大规模的自动化运维是很有帮助的,有条件的朋友也可以参加一些技术培训,比如数据库培训 之类的,这些老师会相对尽职一些。
对于应届生来说,企业看重的是基础是否扎实,对所要诉求的岗位是否有兴趣,所以加油吧。
努力学习,客服学习上的苦难,好好准备,机会总是给有准备的人的。不懂的话多向其他人学习,大家也会很乐意帮助你的。
第三篇:数据库 学习总结
数据库学习总结
XX班 姓名 学号
摘要:在当今信息化的社会里,数据库可以说已经融入到我们生活的方方面面中,如交通运输、银行金融、工商企业等等。只要有大量的数据要管理或者需要有大量数据支持的工作,都要使用到数据库,它为我们的生活带来了便捷。关键词:数据库,功能、SQL Server的特点
在学习《数据库原理及应用》这门课之前,就和课本上提到的一个观点一样,认为它只是存放数据的仓库而已,但是现在我深深体会到这个观点是多么的片面。数据库是长期存储在计算机内,有组织、可共享的大量的数据集合,前者只能表达它的一方面而已。
数据库技术发展到今天已经是一门非常成熟的技术,它的技术水平、应用水平多比初始时都有了很大的改变,但是它的最基本的特征却没有变,概括起来有以下几个方面:
第一点:数据库是相互关联的的数据集合;即在数据库中不仅要能够表示数据本身,还要能够表示数据与数据之间的关系。
第二点:数据库用综合的方法组织数据,保证尽可能高的访问效率;即根据不同的需要按不同的方法组织数据,例如顺序组织方法、索引组织方法、倒排数据组织方法等。
第三点:数据库具有较小的数据冗余,可供多个用户共享;即通过共享共用的数据,降低数据的冗余度,这也能保证数据的一致性。
第四点:数据库具有较高的数据独立性;即令数据的组织和存储方法与应用程序互不依赖,降低应用程序的开发代价和维护代价。
第五点:数据库能够保证数据的安全、可靠;即拥有(1)、安全控制机制,这可以有效地防止数据库中数据被非法使用或非法修改;(2)、完整的备份和恢复机制,这能保证当数据遭到破坏时(软件或硬件故障引起的),能立刻将数据完全恢复,从而保证系统能持续、可靠地运行。
第六点:数据库允许并发地使用,能有效、及时地处理数据,并能保证数据的一致性和完整性;即当多个用户同时使用相同的数据时,数据库能够协调一致,保证不发生冲突和矛盾。那么对于上面数据库的各种功能和特性是如何实现的呢?当然它不是数据库中的数据固有的,是靠管理或支持数据库的系统软件——数据库管理系统(DataBase Management System)提供的。下面我将结合我所学习的内容,谈谈关于数据库管理系统——Mircrosoft SQL Server。
Mircrosoft SQL Server是一个高性能的、多用户的关系型数据库管理系统,它专为客户/服务器计算环境设计,它提供的内置数据复制功能、强大的管理工具和开放式的系统体系结构为基于事物的企业级信息管理方案提供了一个卓越的平台。
首先作为一个数据库管理系统,Mircrosoft SQL Server应该具备如下功能:
1、数据库定义功能:可以定义数据库的结构和数据库的存储结构,可以定义数据库中数据之间的联系,可以定义数据的完整性约束条件和保证完整性的触发机制等;
2、数据库操作功能:可以完成对数据库中数据的操作,可以装入、删除、修改数据,可以重新组织数据库的存储结构,可以完成数据库的备份和恢复等操作;
3、数据库的查询功能:可以以各种方式提供灵活的查询功能,使用户可以方便地使用数据库中的数据;
4、数据库的控制功能:可以完成对数据库的安全性控制、完整性控制、多用户环境下的并发控制等各方面的控制;
5、数据库的通信功能:在分布式数据库或是提供网络操作功能的数据库中还必须提供数据库的通信功能。
其次是Mircrosoft SQL Server中系统数据库的作用,每个SQL Server实例包括四个系统数据库(master、model、tempdb和msdb)以及一个或多个用户数据库。下面是关于四个系统数据库的介绍:
1、master数据库:用于存储SQL Server系统的所有系统级信息,包括所有的其它数据库的信息、所有数据库注册用户的信息以及系统配置设置等。
2、tempdb数据库:用以保存所有的临时表和临时存储过程,还可以满足任何其它的临时存储要求,例如存储SQL Server生成的工作表。
3、model数据库:它是一个模板,当使用CREATE DATABASE命令建立新的数据库时,新的数据库的一部分总是通过复制model数据库中的内容创建,剩余部分由空页填充。
4、msdb数据库:用于SQL Server代理程序调度报警和作业等系统操作。同时在安装SQL Server时,还建立了一个pubs数据库,这是一个用户数据库,是一个可以用于练习的示例数据库。在建立数据库时,每个数据库至少有两个文件:一个主文件(存储数据库的启动信息、用户数据和系统表,以.mdf为扩展名)和一个事物日志文件(用来保存恢复数据库的日志信息,以.ldf为扩展名)。
接下来是SQL Server的数据库结构:
在SQL Server数据库中,数据被组织为用户可以看得见的逻辑组件,主要包括基本表、视图、存储过程、触发器和用户等。SQL Server在发出CREATE DATABASE命令建立数据库时,会同时发出建立操作系统文件、申请物理存储空间的请求;当CREATE DATABASE命令成功执行后,在物理上和逻辑上都建立了一个新的数据库。这就可以在数据库库中建立各种用户所需的逻辑组件,如基本表、视图等。
然后是Mircrosoft SQL Server管理中的几个特点:
1、数据库镜像:通过数据库镜像,将自动失效转移建立到一个待用服务器上增强SQL服务器系统的可用性。
2、在线检索操作:即在指数数据定义语句(DDL)执行期间,允许对基地表格或集簇索引数据和任何相关的检索,进行同步修改。例如,当一个集簇索引正在重建时,可以对基低数据继续进行更新、查询。
3、快速回复:新的、速度更快的恢复选项可以改进SQL服务器数据库的可用性,管理人员将能够在事物日志向前滚动之后,重新连接到正在恢复的数据库。
4、快照隔离:通过快照隔离,使用者能够使用与传统一致的视野观看数据库,存取最后执行的一行数据,这也为服务器提供了更大的可升级性。
5、专门的管理员连接:即即使在一个服务器被锁住,或者因为其他原因不能使用时,管理员可以通过这个连接,接通这个正在运行的服务器。这一功能能让管理员,通过操作诊断或Transact-SQL指令,找到并解决发现的问题。最后是关于学习过程中的体会,数据库能给我们生活带来便捷,但它的学习肯定不会那么一帆风顺,总会遇到问题。我想解决问题最好的方法是理解它,从多方面理解、掌握它。
首先是对概念的理解,例如关于游标的使用,最基本的操作语句如定义游标:DECLARE CURSOR、打开游标:OPEN、从游标中读记录:FETCH、关闭游标:CLOSE、释放游标:DEALLOCATE、执行:EXEC等,如果都不明白这些语句含义,如何掌握它?其次是对数据结构的理解,数据库就象房子,也有地基、承重墙(框架)、门、窗、内部家俱饰品等,对应到数据库里,一样可以找到相应的东东。地基就象数据库的系统表,不论以后要盖多少房子,多高多大的房子,都要在地基上开始;框架(承重墙)可以是每张表,也可以是每张表中的字段,是不可逾越而又相互交叉的;门窗就是数据库中的通道,就是索引、访问权限、视图等;内饰、家具就是最终的用户数据,是放在数据库这所房子里的东西。然后是在思维上的理解,东西方的思维方式上存在差异,比如在多表查询、数据库结构优化时需要多考虑这种理解和实施层面的“差异性”。
第四篇:数据库学习总结(模版)
电子商务数据库技术----SQL Server 篇
学习总结
------60951P南信院这学期我们学习了数据库的SQL Server 篇,具体内容提纲如下:
1、数据库系统的基本概念
2、SQL语言
一、数据库的基本概念
1、数据库
1)数据库是统一管理并长期储存在计算机内优结构的大量共享的数据集合。
2)现在所有的数据库都是关系型数据库(二维表)
3)数据独立性:物理独立、逻辑独立
4)实现数据独立性:三级模式、二级映射
三级模式:外外模式、概念模式、内模式
二级映射:外模式/概念模式
概念模式/内模式
5)逻辑结构:表结构(外模式)
Eg:S(sno,sname)
物理结构:数据库存取的方式位置(内模式)
Eg:P(sno char(8)
Snamechar(10))
逻辑结构比物理结构少了数据类型
2、数据库管理系统(DBMS)功能:
1)数据定义
2)数据操纵
3)安全与备份
3、六个约束
主键约束、非空约束、检查约束、默认约束、外键约束、唯
一性约束
4、任何一张表必须有且只有一个主键(PK),一个主键可以有多个
字段组成5、关系性质
1)每个字段的每个值都是单值
2)每个字段里的值都具有相同的数据类型
3)行顺序无关紧要
4)列顺序无关紧要
5)行不能重复
6)列不能重复
二维表必须满足以上关系性质才是关系
关系:二维表结构
6、数据完整性
1)实体完整性
2)参照完整性
3)用户自定义完整性
二、SQL语言
1、SQL功能:数据定义、数据操纵、数据控制
2、单表查询
固定格式:Select...from…where3、Select子句
*表示一个表中的所有字段
Eg:查询计算机系所有学生的姓名、学号、性别、年龄、专业Select * from students where sdept=”computer”
4、Where子句
1)多条件(And,Or连接)
2)Between...and...3)In(等于期中的某一个)
Like模糊查询(条件不完整)
Eg:查询姓王的学生的学号、姓名、专业
Select sno,sname,sdept from students where sname
like ‘王%’
5、统计函数
Count(*)个数包含null
Count(列名)个数去掉null
Sum(列名)和
Avg(列名)平均值
Max(列名)最大值
Min(列名)最小值
6、分组Group by
1)包含Group by子句的查询语句中Select子句指定的列名,要么是统计函数,要么是包含在Group by子句中的列名。
2)分组条件
Having 必须和Group by一起使用,不可单独。
7、排序Order by
ASC(升序)(默认)
DESC(降序)
8、多表查询
1)内连接(两张表或以上连接)
2)外连接(两张表连接)
Eg:查询所有学生的选课情况,结果包括学号、课程、姓名 内连接:Select students.sno, cno , sname from students ,enrollment where students.sno*=enrollment.sno
外连接:Select students.sno, cno , sname from students
left join enrollment on student.sno=enrollment.sno9、嵌套查询
Eg:查询与Sue选修同样课程学生的学号、课程号、姓名Select students.sno,cno,sname from students,
第五篇:数据库原理-理论教学-SQLServer数据完整性
SQL Server数据完整性
一、完整性的概念
之所以要引入数据完整性是为了在数据的添加、删除、修改等操作中不出现数据的破坏或多个表数据不一致
数据完整性是指存储在数据库中的数据正确无误并且相关数据具有一致性
二、完整性的类型 1)实体完整性
实体:表中的记录,一个实体就是指表中的一条记录。实体完整性:在表中不能存在完全相同的记录,且每条记录都要具有一个非空且不重复的主键值。
实现实体完整性的方法:设置主键、惟一索引、惟一约束 2)域完整性
域完整性:向表中添加的数据必须与数据类型、格式及有效的数据长度相匹配。
实现域完整性的方法:CHECK约束、外键约束、默认约束、非空定义、规则以及在建表时设置的数据类型
3)参照完整性 参照完整性:又称为引用完整性。是指通过主键与外键相联系的两个表或两个以上的表,相关字段的值要保持一致。
实现实体完整性的方法:外键约束 4)用户定义的完整性 用户定义的完整性:是根据具体的应用领域所要遵循的约束条件由用户自己定义的特定的规则。
三、约束的类型
约束:SQL Server提供的自动强制数据完整性的一种方法。它通过定义列的取值规则来维护数据的完整性。
常用约束:NOT NULL,CHECK、UNIQUE、PRIMARY KEY、FOREIGN KEY、DEFAULT 1)主键约束:在表中定义一个主键来惟一标识表中的每行记录
特点:每个表中只能有一个主键,主键可是一列,也可是多列;主键不能为空;主键值不能重复
2)UNIQUE约束:它主要用来限制表的非主键列中的值不能重复。特点:一个表中可以定义多个惟一约束
3)NOT NULL约束:它用来设定某列值不能为空。
特点:如果设定某列为NOT NULL,则在添加记录时,则此列必须插入数据。4)CHECK约束:它使用逻辑表达式来限制表中的列可以接受哪些数据值。
例如:成绩值应该在0-100之间,则可以为成绩字段创建CHECK约束,使取值在正常范围内。
5)DEFAULT约束:它为表中某列建立一个默认值,当为表中添加记录时,如果没有提供输入值,则自动以默认值赋给该列。
特点:默认值可以为常量、函数或表达式。使用默认值可以提高数据输入的速度。6)FOREIGN KEY约束
外键:是指一个表中的一列或列组合,它虽不是该表的主键,但是另一个表的主键。特点:实现两表之间相关数据的一致性。