编程学习笔记——中级
- 格式:doc
- 大小:772.50 KB
- 文档页数:69
大二第二学期计算机学习笔记大二第二学期计算机学习笔记在2023年的今天,我来和大家分享一下我在大二第二学期计算机学习中所做的笔记。
这个学期,我学习了各种编程语言、算法以及计算机网络等知识,每一部分都有相应的学习重点,下面就来详细地介绍一下。
一、编程语言1. JavaJava是一种面向对象的编程语言,广泛应用于Web开发、Android开发和企业级应用开发等领域。
在学习Java时,我们需要掌握Java的基本语法、类的定义以及异常处理等知识,同时需要了解Java的内存管理和多线程编程等高级特性。
在学习过程中,我们通过完成一些小项目来加深对Java语法的理解和应用能力的培养。
同时,我们还需要阅读一些经典Java开发书籍,比如《Core Java》和《Effective Java》,以便我们掌握更加高效和规范的Java编程技巧。
2. PythonPython是一种简单易学的解释型编程语言,广泛应用于数据分析、人工智能和Web开发等领域。
在学习Python时,我们需要掌握Python的基本语法、控制流和数据类型等知识,同时需要掌握Python 编程中常用的几个框架,比如Django和Flask等。
在学习Python过程中,我们需要多做Python项目,学习如何运用Python库进行数据分析和机器学习等任务。
同时,还需要学习如何与数据库进行交互,了解有关Python的并发编程和异步编程的知识。
二、算法在计算机学习中,算法是非常重要的一个方面。
学习算法有助于我们更好地理解计算机程序的执行过程,也为我们解决日常问题提供了工具。
1. 排序算法排序算法是常见的算法之一,包括冒泡排序、插入排序、快速排序等。
在学习时需要掌握排序算法的基本思想和流程,以及它们的时间复杂度和空间复杂度等基本性质。
2. 查找算法查找算法是另一个常见的算法,包括线性查找、二分查找等。
在学习时需要掌握查找算法的基本思想和流程,以及它们的时间复杂度和空间复杂度等基本性质。
UG编程学习笔记一、常规设置1、刀具延展量一般为40%;2、粗加工内外公差0.03,精加工内公差0.005,外公差0.01;3、跟随周边切削参数策略里“岛清根”必勾选;底壁铣加工侧壁要勾选“只切削壁”;4、切削参数连接优化里短距离移动时的进给150%;5、毛坯余量可以将刀路放大,在选底面加工轮廓时必须增加毛坯余量;6、拐角修顺的半径为刀具直径的10%;7、如果策略框不见了,按两下F3;8、普通的螺旋的斜坡角度一般在2- 5度,比较硬的材料斜坡角度在0.5-1度之间,不超过1度,软的材料5-15度之间;9、最小斜面长度设为70%,刀具防顶刀加工最小孔径的计算方法为刀具直径×70%+刀具直径(100%肯定不顶刀);平底刀20-30%,球刀0;10、沿形状斜进刀斜坡角度一般在3度以里,最大宽度为300%,正常为无;11、线性进刀的长度一般设为60%,最小安全距离为0;12、选取刀路后模型编淡黄色,可以右键刀路——重播;13、拐角光顺半径为刀具直径的10%;14、移动毛坯、实体为Ctrl+t;15、轮廓加工无接刀痕迹的方法:切入为靠近R角的圆弧位置,切出为“线性相对于切削”;二、铣结构面各个策略不同的设置1、底壁铣倒角编程:建立倒角刀,底壁铣策略“指定壁几何体”中选择需要倒角的面,刀轴+ZM轴,切削模式轮廓,在切屑参数刀具延展量100%,空间范围里勾选“精确定位”,想要倒角刀下去,就设置“Z向深度偏置”;如果倒角的顺序没有按选择的顺序加工,可以在切削参数连接里排序改成“标准”就好了;2、带边界面铣:可以在指定面边界中定义毛坯各个边的余量来改变毛坯大小,实现扩大边界的作用;想一刀切平面,可以将直径平面百分比设为100%;3、带边界面铣:不同区域可以选用不同的策略——在切削模式里选择“混合”,计算刀路,出现的对话框可以按区域选择加工策略;也可以在创建工序里选择手工面铣,这个是专门做混合的策略;4、如果加工轮廓两端没有直着出去,可以通过勾选“只切削壁”或把拐角改成延伸两种方式;5、平面铣各边界含义:部件边界:1、切削区域(封闭)2、避让范围(岛屿使用)毛坯边界:定义毛坯的范围(建议开放区域使用,例如铣平面)检查边界:不想加工的区域修剪边界:修剪不想要的刀路指定底面:定义加工深度(最好选“按某一距离”,可以看到留的余量或者设定的深度值)6、在策略-选项对话框中点击编辑显示,将刀轨显示改为“填充”,右键重播刀路,可以看到刀路填充工件,余量显示的很明显;7、平面铣倒角编程:在部件边界里选要倒角的线,指定底面(加工深度负个距离),切削模式为轮廓,部件余量设置为倒角的大小(负余量);需要注意凹角位置可能会过切,如下图:8、保存毛坯的方法:选择最后一条刀路进行模拟,模拟完后,在IPW位置点击保存,然后点击创建;后面需要用到这个毛坯的时候,在选取毛坯的时候,选择“几何体”,过滤器位置选择“小平面体”,然后确定。
《C#并发编程经典实例》学习笔记—2.5 等待任意⼀个任务完成Task.WhenAny问题执⾏若⼲个任务,只需要对其中任意⼀个的完成进⾏响应。
这主要⽤于:对⼀个操作进⾏多种独⽴的尝试,只要⼀个尝试完成,任务就算完成。
例如,同时向多个 Web 服务询问股票价格,但是只关⼼第⼀个响应的。
⽂中举的是向多个Web服务询问股票价格的例⼦。
我曾在过往的⼯作中遇到另⼀个不太相似的例⼦。
⼀个问答项⽬,在问题详情页⾯,重要的是问题展⽰和回答展⽰。
在该页⾯有相关房型推荐和类似问题推荐等等多个模块展⽰。
也就是说在请求问题数据之外还需要请求多个接⼝,按理说这个时候最适合的是使⽤Task.WhenAll,但是当时情形下因为服务器性能受限导致页⾯加载过慢影响⽤户访问,所以其时最快需要解决的是页⾯加载过慢的问题,所以这时使⽤Task.WhenAny或许也算得上是⼀个应急折中的⽅案,当然这⾥不提缓存等其他优化⽅案。
Task.WhenAny与Task.WhenAll⽐较:相同点:参数都是⼀批任务不同点:Task.WhenAny返回的是完成的任务。
关于返回值的描述有点不太好理解。
结合代码很容易就能明⽩。
// 返回第⼀个响应的 URL 的数据长度。
private static async Task<int> FirstRespondingUrlAsync(string urlA, string urlB){var httpClient = new HttpClient();// 并发地开始两个下载任务。
Task<byte[]> downloadTaskA = httpClient.GetByteArrayAsync(urlA);Task<byte[]> downloadTaskB = httpClient.GetByteArrayAsync(urlB);// 等待任意⼀个任务完成。
Task<byte[]> completedTask = await Task.WhenAny(downloadTaskA, downloadTaskB);// 返回从 URL 得到的数据的长度。
2011软考网络工程师学习笔记―第一章第1章交换技术主要内容:1、线路交换2、分组交换3、帧中继交换4、信元交换一、线路交换1、线路交换进行通信:是指在两个站之间有一个实际的物理连接,这种连接是结点之间线路的连接序列。
2、线路通信三种状态:线路建立、数据传送、线路拆除3、线路交换缺点:典型的用户/主机数据连接状态,在大部分的时间内线路是空闲的,因而用线路交换方法实现数据连接效率低下;为连接提供的数据速率是固定的,因而连接起来的两个设备必须用相同的数据率发送和接收数据,这就限制了网络上各种主机以及终端的互连通信。
二、分组交换技术1、分组交换的优点:线路利用率提高;分组交换网可以进行数据率的转换;在线路交换网络中,若通信量较大可能造成呼叫堵塞的情况,即网络拒绝接收更多的连接要求直到网络负载减轻为止;优先权的使用。
2、分组交换和报文交换主要差别:在分组交换网络中,要限制所传输的数据单位的长度。
报文交换系统却适应于更大的报文。
3、虚电路的技术特点:在数据传送以前建立站与站之间的一条路径。
4、数据报的优点:避免了呼叫建立状态,如果发送少量的报文,数据报是较快的;由于其较原始,因而较灵活;数据报传递特别可靠。
5、几点说明:路线交换基本上是一种透明服务,一旦连接建立起来,提供给站点的是固定的数据率,无论是模拟或者是数字数据,都可以通过这个连接从源传输到目的。
而分组交换中,必须把模拟数据转换成数字数据才能传输。
6、外部和内部的操作外部虚电路,内部虚电路。
当用户请求虚电路时,通过网络建立一条专用的路由,所有的分组都用这个路由。
外部虚电路,内部数据报。
网络分别处理每个分组。
于是从同一外部虚电路送来的分组可以用不同的路由。
在目的结点,如有需要可以先缓冲分组,并把它们按顺序传送给目的站点。
外部数据报,内部数据报。
从用户和网络角度看,每个分组都是被单独处理的。
外部数据报,内部虚电路。
外部的用户没有用连接,它只是往网络发送分组。
《C++ Primer》第17章学习笔记第17章:用于大型程序的工具——异常处理,命名空间,多重继承与虚继承@学习摘录204:概念——大规模编程对程序设计语言的要求往往比小程序员团队更高。
——1. 更严格的正常运转时间以及更健壮的错误检测和错误处理。
——2. 能够用各种库(可能包含独立开发的库)构造程序。
——3. 能够处理更复杂的应用概念。
第一节:异常处理@学习摘录205:异常处理的作用——通过异常我们能够将问题的检测和问题的解决分离,这样程序的问题检测部分可以不必了解如何处理问题。
@学习摘录206:抛出类型的异常——异常是通过抛出(throw)对象而引发(raise)的。
被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个。
——执行throw的时候,不会执行跟在throw后面的语句,而是将控制从throw转移到匹配的catch.@学习摘录207:被抛出的对象——被抛出的对象将会自动转换为一个指针,不存在数组或函数类型的异常。
——如果抛出一个数组,被抛出的对象转换为指向数组首元素的指针。
——如果抛出一个函数,函数被转换为指向该函数的指针。
@学习摘录208:异常对象——在处理异常的时候,抛出异常的块中的局部存储不存在了。
——因为在处理异常的时候会释放局部存储,所以被抛出的对象就不能再局部存储了,而是用throw表达式初始化一个称为异常对象的特殊对象。
——异常对象将传给对应的catch,并且在完全处理了异常之后撤销。
——当抛出一个表达式的时候,被抛出对象的解态编译时类型将决定异常对象的类型。
@学习摘录209:异常与指针——用抛出表达式抛出静态类型时,比较麻烦的一种情况是,在抛出中对指针解引用。
——抛出指针的时候,必须确定进入处理代码时指针所指向的对象存在。
——如果抛出指向局部对象的指针,而且处理代码在另一函数中,则执行处理代码时指针所指向的对象将不再存在。
——抛出指针通常是个坏主意:抛出指针要求在对应处理代码存在的任意地方存在指针所指向的对象。
少儿计算思维养成记:六个孩子的编程学习笔记
1.让孩子学习编程的重要性:学习编程可以帮助孩子们更好地
理解计算机的工作原理,掌握计算机的基本技能,培养孩子们的创新思维,激发孩子们的创造力,有助于孩子们更好地应对未来的挑战。
2.学习编程的步骤:学习编程可以分为四个步骤:规划、编码、调试和测试。
规划阶段,学习者要熟悉编程的基本概念,分析问题,构思解决方案;编码阶段,学习者要学习编程语言,根据规划的方案编写程序;调试阶段,学习者要检查程序,查找错误,改正;测试阶段,学习者要测试程序,验证程序的正确性,确保程序的可靠性。
3.学习编程的技巧:
(1)多实践:多练习,多实践,熟练掌握编程语言,提高编
程能力。
(2)积极思考:学习者要积极思考,灵活运用编程技巧,解
决问题。
(3)细心检查:学习者要细心检查自己的程序,及时查找并
修正错误。
(4)多思考:学习者要多思考,灵活运用编程技巧,分析问题,提出有效的解决方案。
4.编程学习的记录:学习者应该定期记录自己的学习进度,记录自己学习的内容,把自己的编程作品记录下来,记录自己的思考过程,以便日。
32位汇编语言学习笔记3leal和算术运算指令32位汇编语言学习笔记在学习汇编语言的过程中,我们已经了解了一些基本指令和寄存器的用法。
本文将继续介绍两个重要的指令:leal指令和算术运算指令。
通过深入了解和学习这两个指令,我们将更好地理解和掌握汇编语言编程的技巧和方法。
一、leal指令leal指令用于将一个有效地址(Effective Address,EA)加载到目标操作数中。
它的一般格式为:leal Source, Destination。
在这个指令中,Source表示源操作数,可以是寄存器、内存或立即数。
Destination表示目标操作数,只能是寄存器。
leal指令在源操作数的基础上进行计算,将计算结果存储到目标操作数中。
下面是一些leal指令的示例:1. leal (%eax,%ebx,4), %edx这条指令将地址(%eax + %ebx * 4)的结果存储到%edx寄存器中。
其中,%eax是个基址寄存器,%ebx是个变址寄存器,4表示缩放因子。
2. leal -8(%ebp), %ecx这条指令将地址(%ebp - 8)的结果存储到%ecx寄存器中。
其中,%ebp是个基址寄存器,-8是个偏移量。
需要注意的是,leal指令只能进行地址计算,并将结果存储到目标操作数中,不能进行实际的加载操作。
二、算术运算指令在汇编语言中,算术运算指令主要用于进行数值的计算和操作。
常见的算术运算指令包括add、sub、mul、div等。
这些指令可以对数据寄存器和内存中的数据进行四则运算。
下面是一些常用的算术运算指令及其示例:1. add指令:用于将两个操作数相加,并存储结果到目标操作数中。
一般格式为:add Source, Destination。
示例:add %eax, %ebx这条指令将%eax和%ebx寄存器中的值相加,结果存储到%ebx中。
2. sub指令:用于将第一个操作数减去第二个操作数,并将结果存储到目标操作数中。
郝斌c语言详细笔记郝斌C语言详细笔记C语言是一门广泛应用于系统编程、嵌入式系统和游戏开发等领域的高级编程语言。
郝斌老师的C语言详细笔记是一份非常优秀的学习资料,它详细介绍了C语言的基础知识和高级应用,对于初学者和进阶者都非常有帮助。
一、基础知识1. 数据类型C语言中的数据类型包括基本数据类型和派生数据类型。
基本数据类型包括整型、浮点型、字符型和布尔型,而派生数据类型包括数组、结构体、共用体和指针等。
在使用数据类型时,需要注意它们的取值范围、精度和存储空间等方面的问题。
2. 运算符C语言中的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符等。
在使用运算符时,需要注意它们的优先级和结合性等方面的问题。
3. 控制语句C语言中的控制语句包括条件语句、循环语句和跳转语句等。
在使用控制语句时,需要注意它们的语法和逻辑结构等方面的问题。
二、高级应用1. 函数函数是C语言中的重要概念,它可以将程序分解为多个模块,提高程序的可读性和可维护性。
在使用函数时,需要注意它们的参数传递、返回值和作用域等方面的问题。
2. 数组和指针数组和指针是C语言中的重要数据结构,它们可以用于处理复杂的数据类型和数据结构。
在使用数组和指针时,需要注意它们的声明、初始化和访问等方面的问题。
3. 文件操作文件操作是C语言中的重要应用之一,它可以用于读写文件、处理文本和二进制数据等。
在使用文件操作时,需要注意文件的打开、关闭和读写等方面的问题。
总之,郝斌老师的C语言详细笔记是一份非常优秀的学习资料,它涵盖了C语言的基础知识和高级应用,对于初学者和进阶者都非常有帮助。
在学习C语言时,我们需要认真阅读笔记中的内容,理解其原理和应用,同时还需要进行实践和练习,以提高自己的编程能力。
文章标题:解锁Python编程技能:成为黑马程序员的必备笔记第一部分:引言1.1 什么是Python编程Python编程语言是一种高级、通用、解释型编程语言。
它在机器学习、人工智能、数据分析等领域有着广泛的应用,被誉为是学习编程的最佳入门语言之一。
对于想要成为优秀程序员或者黑马程序员的人来说,掌握Python编程技能至关重要。
第二部分:入门篇2.1 Python基础语法在学习Python编程之前,了解Python的基础语法是必不可少的。
Python的变量、数据类型、条件语句、循环等。
只有掌握了这些基础知识,才能够更好地理解和应用Python编程。
2.2 Python函数和模块函数和模块是Python编程中非常重要的概念。
函数可以让代码更加模块化和可复用,而模块则可以让代码更加清晰和可维护。
通过学习函数和模块的知识,可以使我们的Python代码更加高效和灵活。
2.3 Python面向对象编程面向对象编程是一种重要的编程范式,而Python是一种面向对象的编程语言。
掌握面向对象编程的知识,可以让我们更好地组织和管理代码,提高代码复用性和可维护性。
第三部分:进阶篇3.1 Python文件操作在实际开发中,文件操作是无法回避的部分。
学习如何使用Python 进行文件读写操作,可以让我们更好地处理数据和文件,实现更丰富的应用场景。
3.2 Python异常处理异常是编程中一种常见的情况,学习如何处理异常可以让我们的代码更加健壮和可靠。
Python提供了丰富的异常处理机制,学习这些知识可以让我们更好地处理各种异常情况。
3.3 Python常用库和框架Python拥有丰富的第三方库和框架,如NumPy、Pandas、Django等。
学习这些常用库和框架,可以让我们更好地开发各种应用,提高开发效率和质量。
第四部分:个人观点和总结4.1 个人观点作为一名编程人员,我深刻理解Python编程技能在今天的重要性。
Python的简洁易读的语法、丰富强大的库和框架、广泛的应用场景,使其成为成为黑马程序员不可或缺的技能之一。
前言面向对象中间件体系结构a)主机基础设施中间件:封装socket,线程等不同主机的实现,形成统一的接口。
如java,ACEb)分布式中间件:连接管理,内存管理,整编,解编,端点和请求的多路分离,同步,多线程等,使程序员象开发独立应用程序一样开发分布式应用程序。
分布式中间件的核心是ORB(Object Requests Broker对象请求代理),如:COM+,JAVA RMI,CORBA 1通信设计空间1.1面向连接协议需要做出如下设计:●数据成帧策略●连接多路复用策略1.链接多路复用:多个线程复用同一个TCP链接2.非多路复用:多个进程使用多个链接。
系统开销大1.2同步和异步消息交换1.3消息传递与共享内存消息传递:消息中间件共享内存:●本地共享内存:shmget(),shmat(). 内存映射文件●分布式共享内存:虚拟内存,是本地共享内存的一种抽象。
2SOCKET API 概述3ACE Socket wrapper façade3.1ACE_Addr运算符== , !=addr_type, addr_size3.2ACE_INET_Add3.3ACE_IPC_SAP为其他ACE对象提供了基本的“I/O”句柄操作能力enable()disable()get_handle()set_handle()3.4ACE_SOCK继承自ACE_IPC_SAP,get _local_addr()set_local_addr()open()close()get_remote_addr()set_option()get_option()3.5ACE_SOCK_Connecter主动连接模式,是一个工厂类。
发起一个连接,并在连接成功后初始化一个ACE_SOCK_Stream对象。
可以通过“阻塞”“非阻塞”“定时”方式发起。
以下是非阻塞模式以下是非阻塞模式3.6ACE_SOCK_Stream数据传输角色的实现。
数据库高级查询数据库设计数据库的基本设计步骤收集信息标识对象标识每个对象需要存储的详细信息标识对象之间的关系实体关系图矩形表示实体集椭圆表示属性菱形表示关系集直线用来连接属性和实体集,也用来连接实体集和关系集规范设计第一范式第一范式的目标是确保每列的原子性,如果每列(或者每个属性值)都是不可在分的最小数据单元,则满足第一范式(1NF)。
第二范式第二范式在第一范式的基础上,更近一层,其目标是确保表中的每列都和主键相关,如果一个关系满足1NF,并且除了主键以外的其他列,都依赖于该主键,则满足第二范式(2NF)。
第三范式第三范式在第二范式的基础上,更进一层,第三范式的目标是确保每列都和主键列之间相关,而不是间接相关。
T-SQL1、添加数据INSERT [INTO] 表名(字段1,字段2,字段3,…) V ALUES (值1,值2,…)2、修改数据UPDA TE 表名SET 字段1=值1,字段2=值2, … WHERE (条件)3、查询数据SELECT 字段1,字段2,字段3 … FROM 表名WHERE (条件) ORDER BY字段名4、删除数据DELETE FROM 表名WHERE (条件)创建数据库T-SQL创建数据库CREA TE DA TABASE 数据库名ON [PRIMARY](<数据文件参数>[<文件组参数>])[LOG ON](<日志文件参数>)文件的具体参数:([NAME=逻辑文件名,]FILENAME=物理文件名,[SIZE=大小][MAXSIZE=最大容量][FILEGROWTH=增长量])参数涵义说明:数据库名:数据库的名称,最长为128个字符PRIMARY:指定主文件组中的文件LOG ON:指明事物日志文件的明确定义NAME:指定数据库的逻辑名称FILENAME:指定数据库所在文件的操作系统文件名称和路径SIZE:指定数据库的初始容量大小MAXSIZE:指定操作系统文件可以增长到的最大尺寸FILEGROWTH:指定文件每次增加容量的大小删除数据库DROP DA TABASE 数据库名SQL Server将数据库的清单放在master系统数据库的sysdatabases表中,在此表中即可检测是否存在数据库例:IF EXISTS (SELECT * FROM sysdatabases WHERE name=数据库名)DROP DA TABASE 数据库名说明:EXISTS 检测某个查询是否存在,如果查询的语句返回的记录结果不为空,则表示存在创建表CREA TE TABLE 表名(字段1 数据类型列的特征,字段2 数据类型列的特征)删除表DROP TABLE 表名添加约束--添加主键约束USE studentALTER TABLE stuInfoADD CONSTRAINT pk_Id PRIMARY KEY (id)--删除主键约束USE studentALTER TABLE stuInfoDROP CONSTRAINT pk_Id--添加唯一约束USE studentALTER TABLE stuInfoADD CONSTRAINT uq_name UNIQUE(name)--删除唯一约束ALTER TABLE stuInfoDROP uq_name--创建默认约束USE studentALTER TABLE stuInfoADD CONSTRAINT df_sex DEFAULT('男') FOR sex--删除默认约束ALTER TABLE stuInfoDROP CONSTRAINT df_sex--添加检查约束USE studentALTER TABLE stuInfoADD CONSTRAINT ck_age CHECK(age>'1990-1-1'AND age<'2010-1-1')--删除检查约束ALTER TABLE stuInfoDROP CONSTRAINT ck_age--添加外键约束USE studentALTER TABLE scoreADD CONSTRAINT fk_stuId FOREIGN KEY(stuId) REFERENCES stuInfo(id) --删除外键约束ALTER TABLE scoreDROP CONSTRAINT fk_stuId说明:主键约束:要求主键列数据唯一,且不允许空唯一约束:要求该列唯一,允许空,但只能出现一个空值检查约束:某列取值范围、格式限制等默认约束:某列默认值外间约束:用于在两表之间建立关系,需要制定引用主表的哪一列创建登陆账户添加Windows登陆账户需要调用SQL Server内置的系统存储过程sp_grantlogin 例:EXEC sp_grantlogin …windows 域名/域账户‟添加SQL登陆账户需要调用系统存储过程sp_addlogin例:EXEC sp_addlogin …账户名‟,‟密码‟创建数据库用户创建数据库用户需要调用系统存储过程sp_grantdbaccess例:EXEC sp_grantdbaccess …登录账户‟,‟数据库用户‟其中,“数据酷用户”为可选参数,默认为登陆账户,即数据库用户默认和登陆账户同名。
注:SQL Server中的dbo用户是具有在数据库执行所有活动的权限的用户,表示数据库的所有者(owner),一般来说,如果创建了某个数据库,就是该数据的所有者,即dbo用户,dbo 用户是一个比较特殊的用户,无法删除,且此用户始终出现在每一个数据库中。
数据库用户授权GRANT 权限[ ON 表名] TO 数据库用户例:GRANT SELECT ,INSERT ,UPDA TE , ON 表名TO 用户T-SQL编程局部变量(自定义变量)变量声明:DECLARE @变量名数据类型变量赋值:SET @变量名=值SELECT @变量名=字段名FROM 表名注:SET赋值语句一般用于赋给变量指定的数据常量SELECT赋值语句一般用于从表中查询数据,然后再赋值给变量。
SELECT语句需要确保筛选的记录不多于一条,如果查询的记录多于一条,将把最后一条记录的值赋给变量。
全局变量(系统变量)IF-ELSE条件语句IF(条件)BEGIN语句或语句块ENDELSEBEGIN语句或语句块ENDWHILE循环语句WHLIE(条件)BEGIN语句或语句块[BREAK]ENDBREAK关键字从最内层的WHLIE循环中退出。
CASE多分支语句CASEWHEN 条件1 THEN 结果1WHEN 条件2 THEN 结果2WHEN 条件3 THEN 结果3[ELSE 其他结果]END批处理一般将一些逻辑相关的业务操作语句,放置在同一批中,批处理是一条或多条SQL语句的集合,SQL Server将批处理语句编译成一个可执行单元,次单元成为执行计划。
高级查询子查询SELECT … FROM 表1 WHERE 字段1 >(子查询)注:将子查询和比较运算符结合使用,必须保证子查询返回的值不能多于一个。
EXISTS子查询例:IF EXISTS (SELECT * FROM sysDatabases WHERE name=‟stuDB‟)DROP DA TABASE stuDBCREA TE DA TABASE stuDBEXISTS 可以作为WHERE语句的子查询,但一般用于IF语句的存在检测,如果子查询的结果非空,则EXISTS返回真(true),否则返回假(false)事务事务是指一个工作单元,该单元可以包含多个步骤来完成所需的任务,一个事务作为一个整体,要么成功,要么失败。
如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。
如果事务遇到错误且必须取消或回滚,则所有的数据更改均被清除。
事务是一种机制、一个操作序列,它包含一组数据库操作命令,并且所有的命令作为一个整体一起想系统提交或撤销操作请求。
事务具有:原子性、一致性、隔离性、持久性。
创建事务开始事务:BEGIN TRANSACTION提交事务:COMMIT TRANSACTION回滚事务:ROLLBACK TRANSACTION事务分类显式事务:用BEGIN TRANSACTION明确指定事务的开始隐式事务:通过设置SET IMPLICIT_TRANSACTIONS ON语句,将隐式事务模式设置为打开。
当以隐式事务操作时,SQL Server将在提交或回滚事务后自动启动新事务。
无法描述事务的开始,只需提交或回滚每个事务。
自动提交事务:这是SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事物,如果成功执行,则自动提交,如果错误,则自动回滚。
例:索引索引的作用SQL Server中的数据是按页(4K)存放的索引是SQL Server编排数据的内部方法。
它为SQL Server提供一种方法来编排查询数据索引页:数据库中存储索引的数据页;索引页类似于汉语字(词)典中按拼音或笔画排序的目录页。
索引的作用:通过使用索引,可以大大提高数据库的检索速度索引的类型唯一索引:不允许两行具有相同的索引值如果现有数据中存在重复的键值,则一般情况下大多数数据库不允许创建唯一索引,当新数据使表中的键值重复时,数据库页拒绝接受此数据。
例:如果在stuInfo表中的学员身份证号(stuID)列上创建了唯一索引,则所有学员的身份证号不能重复。
主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。
主键索引要求主键中的每个值时唯一的,当在查询中使用主键索引时,还允许快速访问数据。
主键索引要求主键中的每个值是唯一的,并且不能为空。
聚集索引:表中各行的物理顺序与键值的逻辑(索引)顺序相同,没个表中只能有一个。
非聚集索引:非聚集索引指定表的逻辑顺序。
数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。
可以有多个,小于249个。
UNIQUE指定唯一索引CLUSTERED、NONCLUSTERED指定是聚集索引还是飞聚集索引。
FILLFACTOR表示填充因子,指定一个1——100的值,该值指示索引页填满的空间所占的百分比。
创建索引使用索引查询视图视图是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。
可以包含全部的行和列,但是视图并不是数据库中存储的数据值的集合。
它的行和列来自查询中引用的表。
在执行时,直接显示来自表中的数据。
定义视图的查询可以基于一个或多个表、也可以基于其他视图、当前数据库或其他数据库。