热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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 type,sum(price),avg(price),count(*) from titles group by type having type in('business','psycheology')


简单子查询:嵌套子查询、相关子查询;子查询的select语句中不能使用order by子句,roder by子句只能对最终查询结果排序。
嵌套子查询:执行过程,先执行子查询,子查询得到的结果不被显示,而是传给外层查询,作为外层查询的条件,然后执行外层查询,并显示结果。
嵌套子查询的执行不依赖于外层查询,子查询只执行一次。
带有比较运算符的子查询,带有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 'ut' 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 procedure book_num (@book_name varchar(26),@starttime datetime,@endtime datetime,@total int output)
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
使用存储过程:
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提供的数据传输服务。使用户可以将来自完全不同数据源的数据析取、转换并合并到单个或多个目的。

分离与附加:创建可移动的数据库。
推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 微软小娜企业版发布新版本,提供构建自定义技能的套件
    微软将向企业级市场发布微软小娜企业版的新版本,该版本提供了构建自定义技能的套件,使企业员工可以更方便地使用数字助理。目前该套件仍处于内测期间,只有部分企业可以获得,其他有兴趣的企业需要继续等待。新版本的套件可以帮助员工构建各种自定义技能,如检查休假余额、创建服务凭证等。微软通过让多个开发人员编辑和管理机器人通道注册配置来改善开发者的体验,团队可以自行访问和更改技能注册,满足企业实际需求。微软小娜企业版已经在各个行业得到采用,能够帮助员工专注于优先事项,将非优先处理的任务交给微软小娜处理。 ... [详细]
author-avatar
不会遗忘528_757
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有