sql读写文件的函数有哪些?

TCP协议下的套接字通信

什么是进程和什么是线程两者之间的区别

守护进程与守护线程之间的差异

OSI七层协议的简要说明
  • 为了实现计算机系统的互连,OSI参考模型将整个网络的通信功能划分为七个级别,并且还定义了级别与每个层中所包含的服务以及每个层的功能之间的相互关系。 。 OSI从低到高的七个层分别是:物理层,数据链路层,网络层,传输层,会话层,表示层,应用程序层,接下来的三层(物理层,数据链路层,网络层)分别是面向数据通信,上三层(会话层,表示层,应用层)面向资源子网,而传输层是七层中最重要的一层。它位于上下层之间,是上下层之间的链接。
什么是C/S和B/S体系结构
  • C/S体系结构是典型的两层体系结构,其全名是Client/Server体系结构,即客户机/服务器体系结构,其客户机包含在用户计算机上运行的一个或多个程序,并且服务器-方面有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端数据。另一个是Socket服务器端,服务器端程序通过Socket与客户端程序进行通信。
  • B/S体系结构的全名是Browser/Server,即浏览器/服务器结构。浏览器是指Web浏览器。很少有事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。浏览器客户端,WebApp服务器端和数据库端构成了所谓的三层体系结构。 B/S体系结构系统不需要特殊的安装,只需要Web浏览器
简要描述TCP三向握手和四波的过程。
    • 第一次握手:客户端的申请流程会主动打开并将请求段发送给客户端。在其标题中:SYN = 1,seq = x。
    • 第二次握手:服务器应用程序进程被被动打开。如果客户的请求得到同意,则会发送回确认消息。在其标头中:SYN = 1,ACK = 1,ack = x + 1,seq = y。
    • 第三次握手:客户端收到确认消息后,它通知上层应用程序进程已建立连接,并向服务器发送确认消息。它的标头:ACK = 1,ack = y +1。当服务器从客户端收到确认消息时,它还会通知其上层应用程序进程已建立连接。
    • 第一波:数据传输结束后,客户端的应用程序进程将发送连接释放段并停止发送数据。其标头:FIN = 1,seq = u。
    • 服务器收到连接释放消息段后,会发送一条确认消息,其标题为:ack = u + 1,seq = v。这时,连接已进入半关闭状态,客户端没有不再将数据发送到服务器。服务器将继续发送。
    • 第三波:如果服务器没有要发送给客户端的数据,则它的应用程序进程通知服务器释放TCP连接。服务器在此阶段发送的最后一条消息的标头应为:FIN = 1,ACK = 1,seq = w,ack = u +1。
    • 第四波:收到连接释放段后,客户端必须发送一个确认:ACK = 1,seq = u + 1,ack = w +1。经过2MSL(最长消息寿命)后,此TCP连接真的结束了,沟通的双方都已经告别了。

    如果已建立TCP连接但客户端突然失败,该怎么办?

    • TCP还具有一个保持活动计时器。显然,如果客户端发生故障,服务器将无法永远等待,浪费资源。服务器每次收到客户端请求时都会重置此计时器。时间通常设置为2小时。如果客户端在两个小时内没有收到来自客户端的任何数据,则服务器将发送一个探测段。每秒发送一次。如果连续发送10条探测消息后仍然没有响应,则服务器认为客户端已失败,然后关闭连接。
  • ARP的全名是”地址解析协议”,即地址解析协议。
  • 通过LAN中的IP地址实现主机的MAC地址。
  • 48位MAC地址主机的物理地址在LAN中是唯一的。
  • ARP协议类似于DNS服务,但是无需配置服务。
  • ARP协议是三层协议。
  1. 面向TCP连接(例如在拨打电话之前进行拨号以建立连接); UDP是无连接的,即在发送数据之前不需要连接
  2. TCP提供可靠的服务。换句话说,通过TCP连接传输的数据没有错误,没有丢失,没有重复并按顺序到达。 UDP尽最大努力进行传送,即不能保证可靠的传送
  3. UDP具有更好的实时性能,并且其工作效率高于TCP。适用于高速传输和实时通信或广播通信。
  4. 每个TCP连接只能是点对点的; UDP支持一对一,一对多,多对一和多对多的交互式通信
  5. TCP需要更多的系统资源,而UDP需要更少的系统资源。
为什么基于tcp协议的通信比基于udp协议的通信更可靠
  • TCP是一种面向连接的传输协议。每次您需要建立可信任的连接时,都会有一个三向握手过程。而且UDP是无连接传输协议,无需建立安全连接,
  • 局域网(LAN),称为LAN,是指由特定区域中的多台计算机互连的一组计算机。 “某个区域”是指通常在几公里之内的同一办公室,同一建筑物,同一公司,同一所学校等。局域网可以实现诸如文件管理,应用软件共享,打印机共享,扫描仪共享,工作组计划,电子邮件和传真通信服务之类的功能。局域网是封闭的,可以由办公室中的两台计算机组成,也可以由公司中的数千台计算机组成。
  • 广域网(Wide Area Network,简称WAN)是跨越大型区域网络的计算机网络的集合。通常跨省,市甚至一个公司/地区。 WAN包含不同大小的子网。子网可以是局域网或小型WAN。
    • 范围不同,WAN比LAN宽
什么是套接字?简要描述基于tcp协议的套接字通信过程?
  • 套接字通常也称为\\ u插座;用于描述IP地址和端口,是通信链的句柄。
    1. 服务器创建一个ServerSocket对象,指定端口号,然后ServerSocket对象等待客户端的连接请求。
    2. 客户端创建一个Socket对象,指定主机地址和端口号,并将连接请求发送到服务器。
    3. 服务器接收客户端的连接请求,建立TCP连接,然后创建一个Socket对象以与客户端的Socket对象进行通信。
    4. 服务器和客户端分别创建一个字节输入流和一个字节输出流,通过字节输入流从另一方获取数据,并通过字节输出流将数据发送到另一方。
    5. 当一方决定结束通信时,它将发送结束消息给另一方;另一方收到结束消息后,双方将关闭各自的TCP连接。
    6. ServerSocket对象停止等待客户端连接请求。
什么是粘性包装?粘小包的原因?
  • 粘性数据包:多个数据包连续存储在一个连续的缓冲区中。当读取数据分组时,由于不能确定发送者的发送者,因此使用一定的估计值来读出数据。如果双方的大小不一致,则意味着发送方发送的某些数据包数据将在接收方收到时粘贴到数据包中。在接收缓冲区中,后一个数据包的数据的开头紧跟着前一个数据包的数据的结尾。
  • 产生粘滞现象的原因很多。这可能是由发送者或接收者引起的。
    • 由发送方引起的粘性数据包是由TCP协议本身引起的。为了提高TCP的传输效率,发送方通常必须在发送数据包之前收集足够的数据。如果连续几次发送的数据很少,通常TCP将根据优化算法将这些数据合成为一个数据包,然后一次发送出去,以便接收方接收到粘性数据包数据。
    • 接收方造成的粘包是因为接收方的用户进程没有及时接收到数据,导致粘包现象。这是因为接收器首先将接收到的数据放入系统接收缓冲区中,而用户进程则从缓冲区中获取数据。如果下一个数据包到达时,用户进程尚未提取前一个数据包,则将下一个数据包放入系统接收缓冲区时,它将接收前一个数据包,然后用户进程将获取系统会根据预设的缓冲区大小从系统接收缓冲区接收数据,以便一次获取多个数据包。
  1. 对于由发送方引起的粘连现象,用户可以通过编程避免它。 TCP提供操作命令推送,以强制立即传输数据。收到操作命令后,TCP软件立即发送该段的数据。无需等待发送缓冲区已满;
  2. 对于由接收方引起的粘性数据包,可以优化程序设计,简化接收过程的工作量,并增加接收过程的优先级以使其及时接收数据,从而避免产生粘性包尽可能多;
  3. 它由接收器控制,并将数据包划分为结构字段。人工控件分为多个接收,然后合并。这种方法可以避免粘性数据包。
  • I/O复用用于提高效率。单个进程可以同时监视多个网络连接IO。
  • 与多进程和多线程技术相比,I/O复用技术的最大优点是系统开销很小,并且系统不必创建进程/线程或维护这些进程/线程,大大减少了系统。的费用。
什么是防火墙?防火墙的作用是什么?
  • Internet上的防火墙是一种非常有效的网络安全模型,通过它可以隔离风险区域(即Internet或具有一定风险的网络)与安全区域(LAN)之间的连接,而不必阻碍人们接触风险区域。因此,通常将其连接在核心交换机和外部网络之间。
    1. 过滤进入和离开网络的数据
    2. 管理访问网络和访问网络的行为
    3. 通过防火墙记录信息内容和活动
简短描述进程,线程,协程和应用程序场景之间的差异
    1. 线程是操作系统的调度单元
    2. 流程切换所需的资源很大,效率很低
    3. 线程切换所需的资源是平均的,效率是平均的(不考虑GIL
    4. 协程切换任务的资源非常小且效率很高
    5. 根据不同的CPU内核,多进程,多线程可能是并行的,但是协程位于一个线程中,因此是并发的。 )
    1. 协程:当程序中有很多不需要CPU的操作时,协程适用
    2. 计算密集型,使用过程。 IO密集型,使用线程。
如何在python中使用进程池和线程池
 
  • 为每个线程创建一个独立的空间,以便该线程在其自己的空间中对数据进行操作(数据隔离)。
如何在流程之间进行通信?
  • 并发性:指可以交替执行不同任务的应用程序,实际上并发性与多线程原理相似,多线程并不是要同时执行多个任务,如果同时运行两个线程来执行,您几乎不可能注意到这两个任务之间不断切换的速度已经达到”同时执行效果”,这是不正确的,但是计算机的速度太快了,我们无法注意到。
  • 并行:意味着应用程序可以同时执行不同的任务,
  • 并发是指同时执行多个事件,而并行是指在同一时间执行多个事件。
    • 同步:发出函数调用时,直到获得结果后,该调用才会返回。
    • 异步:发出异步过程调用时,调用者将不会立即获得结果。实际处理此呼叫的部分是在发出呼叫后通过状态和通知通知呼叫者,或通过回调函数处理呼叫。
    • 阻塞:阻塞调用意味着当前线程将在调用结果返回之前被挂起。该函数仅在获得结果后返回。
    • 非阻塞:在无法立即获得结果之前,该函数不会阻塞当前线程,而是会立即返回。
  • 阻塞,非阻塞:进程/线程要访问的数据是否准备就绪,以及进程/线程是否需要等待;
  • 同步与异步:在访问数据的方式中,同步需要主动读写数据,并且在读写数据过程中仍然会阻塞;异步仅要求通知I/O操作完成,并且不主动读取和写入数据。系统内核完成数据的读取和写入。
路由器和交换机之间的差异
  • 交换机是用于转发电信号的网络设备。路由器是一种链接Internet中各种局域网和广域网的设备。
    1. 交换机在第二层(数据链路层)工作,而路由器在第三层(网络层)工作。
    2. 路由器提供防火墙服务。
    3. 传统交换机只能设置冲突域的样式,而不能拆分广播域。两个路由器可以拆分广播域。
  • 域名解析是一项将域名指向网站空间IP的服务,使人们可以通过注册域名轻松访问该网站。 IP地址是用于标识网络上站点的数字地址。为了方便存储,使用域名代替IP地址来标识站点地址。域名解析是从域名到IP地址的转换过程。
生产者消费者模型应用场景
    • 生产者仅在仓库未满时进行生产,而生产过程在仓库已满时被阻塞;消费者仅在仓库不空时消费,而消费者过程在仓库空时被阻塞;
  • 应用场景:处理数据非常耗时,线程是专用的,并且生产数据不需要立即反馈。例如,写入日志,将多个线程生成的日志放入队列,然后再写入。
  • cdn代表内容分发网络。目的是允许用户更快地获取请求的数据。
  • cdn用于加速。它允许用户访问附近的数据,以便他们可以更快地获取所需的数据。
守护程序线程,什么是守护程序进程
  • 主进程创建一个守护程序
    1. 当主进程代码完成运行时,守护程序将立即挂断。
    2. 守护程序本身是一个子进程。
    3. 主进程完成后,认为主进程已完成(此时将重新运行守护进程),然后主进程将在非守护子进程完成后等待未守护子进程完成。子进程(否则会生成僵尸进程)在结束之前,
    1. 进程中的所有非守护程序线程运行完毕后,守护程序线程将”挂起”。并非主线程完成运行后,守护进程线程就会挂起。这与守护程序不同!
    2. 守护程序线程守护:当前进程中的所有子线程!
    3. 仅在其他非守护程序线程完成运行之后才结束主线程(此时将回收守护程序线程)。因为主线程的结束意味着进程的结束,所以将恢复进程的全部资源,并且该进程必须确保所有非守护程序线程在结束之前都已完成运行。
简要描述多进程开发中join和deamon之间的区别
  • join:子线程调用join时,主线程被阻塞,并且主线程只能在子线程结束后才能继续执行。
  • deamon:将子进程设置为守护进程时,主进程结束,无论子进程是否完成,它都将在主进程结束时结束。
  • 将降低多线程处理的效率。可以说python是一个单线程程序。
    • 用多个进程替换多个线程
使用yield来实现协程
 
 
对引起线程死锁的方式的简要说明。如何避免呢?
    • 锁定顺序:线程以特定顺序锁定
    • 锁定时间限制:当线程尝试获取锁定时,将添加一定的时间限制。如果超过了时间限制,则放弃对锁的请求,并释放由其持有的锁。
  • asyncio是一种并发方式,是与协程相关的库。也称为异步IO
  • gevent是pythn网络框架,它为各种并发和与网络相关的任务提供了一个简洁的API
  • twisted是一个以python实现的事件驱动的网络引擎框架。
  • LVS是linux虚拟服务器,是虚拟linux集群系统。
  • HAProxy是用C语言编写的免费开源软件,它提供高可用性,负载平衡以及基于TCP和HTTP的应用程序代理
  • 负载平衡建立在现有的网络结构上。它提供了一种廉价,有效且透明的方法来扩展网络设备和服务器的带宽,提高吞吐量,增强网络数据处理能力以及提高网络灵活性和可用性。
  • 负载平衡意味着将其分配给多个操作单元以执行。

?远程过程调用(RPC)是一种协议,程序可以使用该协议从网络上另一台计算机上的程序请求服务

? 1.RPC使用客户端/服务器模型。请求程序是客户端,服务提供者是服务器。

? 2.首先,客户端调用过程将带有过程参数的调用消息发送到服务过程,然后等待回复消息。

? 3.在服务器端,该过程将保持睡眠状态,直到呼叫信息到达为止。呼叫消息到达时,服务器获取过程参数,计算结果,发送回复消息,然后等待下一个呼叫消息。

? 4.最后,客户端调用流程以接收回复消息,获取流程结果,然后调用执行以继续。

什么是正向和反向代理?
    • 转发代理就像跳板机一样,并且代理访问外部资源。
    • 转发代理是客户端和原始服务器之间的服务器。为了从原始服务器获取内容,客户端将请求发送到代理并指定目标服务器(原始服务器),然后代理将其发送到原始服务器。转发请求并将获得的内容返回给客户端。客户端必须进行一些特殊设置才能使用转发代理。
      • 访问以前无法访问的资源,例如google
      • 可以用作缓存来加快对资源的访问
      • 授权客户端访问并在线进行身份验证
      • 代理可以记录用户访问记录(在线行为管理),并从外部隐藏用户信息
    • 反向代理(Reverse Proxy)实际上是作为代理服务器来接受Internet上的连接请求,然后将请求转发到内部网络上的服务器,并将从服务器获得的结果返回给Internet请求连接的客户端,代理服务器此时将作为外界的服务器出现
      • 为了确保Intranet的安全,您可以使用反向代理来提供WAF功能以防止Web攻击
      • 负载平衡,通过反向代理服务器优化网站的负载
列出公共关系和非关系数据库。
mysql通用数据库引擎和差异
  • InnoDB:用于事务处理应用程序,具有许多功能,包括ACID事务支持。 (提供行级锁定)
  • MyISAM:默认的MySQL插件存储引擎,它是Web,数据仓库和其他应用程序环境中最常用的存储引擎之一。请注意,通过更改STORAGE_ENGINE配置变量,可以轻松更改MySQL服务器的默认存储引擎。
  • 内存:将所有数据保存在RAM中
对事务及其特征的简短描述
  • 事务是一系列用户定义的数据库操作。这些操作已经完成或根本没有完成,并且是不可分割的工作单元
  • 事务具有四个特征:原子性,一致性,隔离性和连续性。
    • 原子性:事务是数据库中逻辑的工作单元,事务中包含的所有操作必须完成或不执行。
    • 一致性:事务执行的结果必须是将数据库从一种一致性状态更改为另一种一致性状态。
    • 隔离:事务的执行不会受到其他事务的干扰。即,事务中使用的操作和数据与其他并发事务隔离开来,并且并发执行的每个事务都不会相互干扰。
    • 持久性:持久性也称为永久性,这意味着一旦提交了事务,它就应该永久更改数据库中的数据。以下其他操作或故障不应对其执行结果产生任何影响。
触发器,函数,视图和存储过程的简要说明
  • 触发器:触发器是一个特殊的存储过程,它是MySQL在插入,更新和删除时自动执行的代码块。
  • 函数:MySQL提供了许多内置函数,您还可以自定义函数(实现程序员需要sql逻辑处理)
  • 视图:视图是由查询结果形成的虚拟表,并且是该表通过某种操作获得的投影
  • 存储过程:封装一段代码。当要执行这段代码时,可以通过调用存储过程来实现(第一次编译后,无需再次编译就可以再次调用它,这比逐个执行SQL语句效率更高。) >
  • 普通索引:仅加快查询速度
  • 唯一索引:加快查询+唯一列值(可能为null)
  • 主键索引:加速查询+唯一列值(不能为null)+表中仅一个
  • 组合索引:多列值构成一个索引,专门用于组合搜索,比索引合并更有效
  • 全文索引:分词和文本内容搜索
索引何时遵循最左边的前缀规则?
  • 索引多个字段时,将遵循上述原则
  • ABS(x):返回x的绝对值
  • ROUND(x):返回对参数x进行四舍五入的整数
  • TRIM(str):删除字符串两侧的空白
  • COUNT():返回值的数量
  • AVG():返回平均值
列出创建的索引但无法找到索引
  1. 如果条件中存在or,则即使存在带有索引的条件也不会使用它(这就是为什么or的使用尽可能少的原因)
  2. 对于不是第一部分(第一部分)的多列索引,将不使用该索引
  3. 如果列类型是字符串,则必须在条件中用引号将数据引起来,否则就不使用索引
  4. 如果mysql估计使用全表扫描比使用索引更快,则不使用索引
您知道哪些数据库优化解决方案
  1. 减少数据访问-正确创建和使用索引
  1. 在客户端处理许多复杂的操作
  1. char具有固定长度,而varchar是可变长度字符类型
MySQL执行计划功能和使用方法
  • 功能:用于查询分析,例如整个查询涉及多少防御,使用了哪些索引,运行时间等。
为什么在数据大时使用限制偏移分页,页面速度较慢,如何优化?
  • 使用限制分页(例如限制10000)时,20表示扫描满足条件的10020行,丢弃前10000行,最后返回20行。问题就在这里。当数据量很大时,将花费大量时间进行扫描。
    • 当数据库表太大,LIMIT偏移量中的偏移值,长度太大时,SQL查询语句将非常慢,您需要增加order by,并且需要对order by字段建立索引。
    • 如果使用子查询优化LIMIT,则子查询必须是连续的。从某种意义上说,子查询不应具有where条件,where条件将过滤数据并使数据失去连续性
  1. 索引合并是将多个索引的范围扫描合并到一个索引中。
  2. 合并索引时,索引将被合并,相交或先相交,然后合并以合并为一个索引。
  3. 需要合并的索引只能是一个表。无法索引合并多个表。

覆盖索引也可以称为索引覆盖。

  1. 说明1:只能从索引中获得选定的数据列,而不能从数据表中读取,换句话说,查询列应由所使用的索引覆盖。
  2. 说明2:索引是一种有效查找行的方法。当索引可用于读取所需数据时,无需读取数据表中的行。如果索引包含(或覆盖)满足查询语句中的字段和条件的数据,则称为覆盖索引。
  3. 解释3:这是一种非聚集复合索引的形式,它包括查询中Select,Join和Where子句中使用的所有列(即,索引字段恰巧覆盖了查询语句[select子句]和查询条件[Where子句]中涉及的字段,即索引包含查询正在查找的所有数据。
数据库读写分离的简短描述
      • 根据业务耦合,低相关性的不同表存储在不同的数据库中
      • 基于\ quot;列”在数据库中,一个表具有许多字段,您可以创建一个新的扩展表,并将不经常使用或具有较大字段长度的字段拆分为扩展表。
    • 水平分割分为库子表和子库子表,这是基于表中数据的内部逻辑关系,同一张表分散在多个数据库或不同条件下的多个表中,每个表它只包含一部分数据,这使得单个表的数据量较小,并实现了分布式效果。
  • 锁共有三种类型:乐观锁,悲观锁和共享锁
  • 与操作系统一样,数据库是多个用户使用的共享资源。当多个用户同时访问数据时,数据库中的多个事务将同时访问同一数据。如果您不控制并发操作,则可以阅读和存储错误的数据,破坏了数据库的一致性。锁定是实现数据库并发控制的一项非常重要的技术。在实际应用中,经常会遇到与锁相关的异常。当两个事务需要一组冲突的锁并且该事务无法继续时,将发生死锁,从而严重影响应用程序的正常执行。
MySQL的半同步的复制原理
  • 半同步复制,介于异步复制和完全同步复制之间,主库不会在执行客户端提交的事务后立即返回到客户端,而是等待至少一个从属接收并写入中继日志只退还给客户。与异步复制相比,半同步复制会牺牲某些性能并提高数据安全性。
  • 异步复制,MySQL的默认复制是异步的。主库将在执行客户端提交的事务后立即将结果返回给客户端。它不在乎从库是否已接收并处理了它。
  • 是最简单的,而性能是最好的,但是主服务器和从服务器之间的数据不一致的可能性很高。

  • 完全同步复制,这意味着当主库执行事务时,所有从属库都会在将事务返回给客户端之前执行该事务。由于您需要等待所有从属服务器在返回之前执行事务,因此完全同步复制的性能将不可避免地受到严重影响。
MySQL添加,删除和更改检查
      • 语法:INSERT INTO表名(字段名1,字段名2,…)VALUES(值1,值2,…);
      • 示例:将值插入学生值(2,” lisi”,62);
      • 语法:INSERT INTO表名[(字段名1,字段名2,…)] VALUES(值1,值2,…),(值1,值2,…),。..(值1,值2,…)
      • 语法:从表名[条件条件表达式]删除
      • 命令:在ID = 7的学生中删除;
      • 命令:更新学生SET等级= 80;
      • 语法:SELECT字段名1,字段名2,…FROM表名(此语法也可以查询某些字段)
      • 语法:SELECT分段名1,分段名2,…来自表名WHERE条件表达式
    • 命令:SELECT ID,来自2和5之间ID的学生的名字;
    • 语法:从表名中选择DISTINCT分支名称;
    • 命令:选择来自Student2的不同性别;
    • 带LIKE关键字的查询
    • 注意:%表示匹配任意长度的字符串,_表示匹配长度字符串
    • 带AND关键字的多条件查询
    • 带OR关键字的多条件查询
    • AND和OR一起使用时,AND的优先级高于OR
    • COUNT()函数:统计记录的条数
    • SUM()函数:求出表中某些分段所有值的总和
    • AVG()函数:求出表中某些细分所有值的预设
    • MAX()函数:求出表中某些相邻所有值的替代
    • MIN()函数:求出表中某些相邻所有值的预设
    • 语法:SELECT扩展名1,分段名2,…来自表名GROUP BY分支名1,分支名2,…[HAVING条件表达式];
    • GROUP BY和聚合函数一起使用
    • 通过和HAVING关键字一起使用
    • 使用限制限制查询结果的数量
    • 语法:SELECT域名(AS)别名[,别名(AS)别名,…] FROM表名;
 
MySQL如何创建索引
      • ALTER TABLE表名添加索引索引名(列列表)
      • 在表名(列列表)上创建索引索引名
      • 在表名(列列表)上创建唯一索引index_name
对SQL注入的原理以及如何在代码级别容纳SQL注入的简短介绍

用外行的话来说,SQL注入的根本原因是:\”用户输入数据\”意外地变成了正在执行的代码。\”用户输入数据\”我可以参考Web前端$ _POST,$ _GET获得的数据或从数据库获得的数据。当然,它不排除程序猿意外使用的特殊字符串。在SQL语句的拼接中,某些包含特殊字符的变量字符在拼接时会破坏SQL语句的结构,从而导致”用户输入数据的引用”意外地变为代码执行。

  1. 语法语法(分析协议级别完全避免了SQL注入)
  2. 字符串转义(不要在sql中拼接字符)#将查询作为sql模板,args是要在execute中传递的参数(query,args = None)
 
简短描述左联接和右联接之间的差异
  • 左连接和右连接非常相似,仅左表和右表的位置不同。
  • 左联接(左联接)返回以包含左表中的所有记录和右表中具有相同连接字段的记录
  • 右连接(右连接)返回以包含右表中的所有记录和左表中具有相同连接字段的记录
索引的作用是什么,有哪些类别,优点和缺点是什么?
  • 功能:为了提高查询速度并改善系统性能
    • 唯一索引:不允许其中任意两行具有相同索引值的索引。
    • 非唯一索引:允许任意两行具有相同的索引值。
    • 主键索引:有一个列或列的组合,其值唯一地标识表中的每一行。
    • 聚集索引:表中行的物理顺序与键的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。
    • 使用索引的唯一性来控制记录的唯一性
    • 您可以加快表之间的连接
    • 减少查询分组和排序的时间
    • 存储索引占用了磁盘空间
    • 执行数据修改操作(INSERT,UPDATE,DELETE)以生成索引维护
  • MySQL的慢速查询日志是MySQL提供的日志记录。用于记录响应时间超过阈值的MySQL语句。特别是,运行时间超过long_query_time值的SQL将记录在慢速查询日志中。in。
}

SQL语句写在文本文件中,在查询分析器中是可以一次执行完成的。但在.net中如何执行呢?是不是要一句一句的读取呢?

}

我要回帖

更多关于 sql是什么文件格式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信