SQL基本语句培训_第1页
SQL基本语句培训_第2页
SQL基本语句培训_第3页
SQL基本语句培训_第4页
SQL基本语句培训_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

未找到bdjsonSQL基本语句培训演讲人:日期:目录ENT目录CONTENT01SELECT查询基础02数据插入与删除03数据更新与过滤04表连接操作05聚合函数应用06排序与结果控制SELECT查询基础01基本SELECT语法标准查询结构`SELECTcolumn1,column2FROMtable_name`是最基础的查询形式,用于从指定表中提取特定列的数据,需注意表名和列名的拼写正确性。带条件筛选通过`WHERE`子句添加条件(如`SELECT*FROMemployeesWHEREsalary>5000`),可精确过滤数据,支持比较运算符(=,<>,>等)和逻辑运算符(AND,OR)。排序结果使用`ORDERBY`(如`SELECTname,ageFROMusersORDERBYageDESC`)对结果升序(ASC)或降序(DESC)排列,多列排序时以逗号分隔。选择特定列操作显式列名指定明确列出需查询的列(如`SELECTid,name,emailFROMcustomers`),减少不必要的数据传输,提升查询效率,尤其在宽表场景下。计算列生成直接在SELECT中嵌入表达式(如`SELECTquantity,price,quantity*priceAStotalFROMorders`),实现动态计算并返回结果,支持加减乘除等运算。列别名设置通过`AS`关键字(如`SELECTproduct_nameASname,priceAScostFROMproducts`)重命名输出列,增强结果可读性,适用于报表或接口数据映射。使用通配符方法通配符限制在复杂查询中过度使用`*`可能导致网络负载增加和执行计划低效,建议仅用于调试或明确需要全字段的场景。部分列通配结合表名前缀(如`SELECTemployees.*FROMemployees`)明确数据来源,多表关联时可避免列名冲突,同时保持查询简洁性。全列查询`SELECT*FROMtable_name`通配符`*`表示返回所有列,适用于快速探查表结构或数据全量导出,但需谨慎在生产环境使用以避免性能问题。数据插入与删除02单行插入语法使用`INSERTINTO表名(列1,列2)VALUES(值1,值2),(值3,值4)`可一次性插入多条记录,显著提升数据导入效率,适用于初始化数据或批量迁移场景。多行批量插入插入查询结果结合`INSERTINTO目标表(列1,列2)SELECT列A,列BFROM源表`语句,可将查询结果直接插入目标表,常用于数据聚合或表间数据同步操作。通过`INSERTINTO表名(列1,列2)VALUES(值1,值2)`实现精确插入,需确保列与值的顺序、数据类型严格匹配,避免因类型不兼容导致执行失败。INSERT语句结构DELETE语句应用条件删除数据级联删除处理全表数据清空通过`DELETEFROM表名WHERE条件`删除满足特定条件的记录,需谨慎编写条件表达式,避免误删关键数据,建议先使用`SELECT`验证条件范围。执行`DELETEFROM表名`将删除表中所有数据,但保留表结构,适用于需要重置数据但保留表定义的场景,注意区分`TRUNCATE`的效率差异。在涉及外键约束的表间操作时,需配置`ONDELETECASCADE`规则,确保主表记录删除时关联从表数据同步清理,避免引用完整性错误。不可逆操作风险`DROPTABLE表名`会彻底删除表结构及数据,执行前必须确认备份完整性,尤其在生产环境中需通过权限管控限制此类高危操作。依赖对象检查删除表前需排查是否存在视图、存储过程或触发器依赖该表,避免引发下游对象失效,可通过系统表查询依赖关系(如`sys.sql_expression_dependencies`)。事务中删除的锁行为在显式事务中执行`DROPTABLE`会持有元数据锁,可能导致阻塞其他会话的查询操作,建议在低峰期操作并设置超时回滚机制。表删除注意事项数据更新与过滤03UPDATE语句用于修改表中已有的记录,通过SET子句指定要更新的字段及其新值,例如`UPDATEemployeesSETsalary=5000WHEREid=101`可将ID为101的员工薪资调整为5000。单字段更新UPDATE可与子查询结合实现复杂更新逻辑,如`UPDATEproductsSETprice=(SELECTavg_priceFROMprice_stats)WHEREcategory='电子产品'`,将电子产品价格同步为统计表中的平均值。基于子查询的更新支持同时更新多个字段,语法为`UPDATEtable_nameSETcolumn1=value1,column2=value2,...`,例如更新客户地址和联系方式`UPDATEcustomersSETaddress='新地址',phone='新号码'WHEREregion='华东'`。多字段批量更新010302UPDATE语句用法必须谨慎使用不带WHERE条件的UPDATE语句,否则会导致全表数据被修改,生产环境建议先使用SELECT验证条件范围。注意事项04WHERE子句基础精确匹配条件WHERE子句通过`column=value`形式进行精确筛选,如`SELECT*FROMordersWHEREstatus='已完成'`可检索所有已完成订单,支持字符串、数值、日期等多种数据类型匹配。01空值检测通过`ISNULL`或`ISNOTNULL`判断字段是否为空,如`SELECTemployee_idFROMhr_recordsWHEREtermination_dateISNULL`可找出在职员工记录。范围条件筛选使用`BETWEEN...AND...`运算符选择值范围内的记录,例如`SELECTproduct_nameFROMinventoryWHEREstock_quantityBETWEEN50AND100`查询库存量在50到100之间的商品。02LIKE运算符配合通配符实现模糊查询,`%`代表任意字符序列,`_`代表单个字符,例如`SELECT*FROMcontactsWHEREnameLIKE'张%'`查找所有张姓联系人。0403模式匹配运算符组合逻辑AND逻辑与组合多个条件要求同时满足,如`SELECT*FROMtransactionsWHEREamount>1000ANDpayment_method='信用卡'`筛选大额信用卡交易。01OR逻辑或满足任一条件即可返回记录,例如`SELECTproduct_codeFROMitemsWHEREcolor='红色'ORcolor='蓝色'`查询红色或蓝色商品。02NOT逻辑非排除特定条件,`SELECTcustomer_nameFROMaccountsWHERENOTsubscription_type='免费版'`可获取付费用户名单。03运算符优先级NOT优先级最高,其次AND,最后OR,可通过括号改变运算顺序,复杂条件如`WHERE(department='销售'ORdepartment='市场')ANDhire_date>'日期:'`需明确逻辑分组。04表连接操作04INNERJOIN通过比较两个表的指定列值,仅返回满足连接条件的行,未匹配的行会被自动过滤。其核心原理是通过哈希匹配、嵌套循环或排序合并算法实现数据关联。INNERJOIN原理基于匹配条件的交集操作为提高INNERJOIN效率,需确保连接字段已建立索引,并避免大表全表扫描。对于多表连接,建议按数据量从小到大顺序关联以减少中间结果集。性能优化关键点适用于需要精确匹配的业务场景,如订单表与商品表关联查询有效订单明细,或员工表与部门表关联获取在职人员信息。典型应用场景LEFTJOIN场景LEFTJOIN以左表为基准,即使右表无匹配记录,仍会返回左表所有行,右表无匹配字段则填充NULL。常用于主表与附属表关联(如用户表与订单表关联统计用户购买行为,包括未下单用户)。保留左表完整数据通过LEFTJOIN可识别左表中未在右表出现的记录(如筛选未签收的快递单),结合WHERE子句对右表字段进行NULL判断实现数据差异分析。数据补全与缺失分析在层级数据模型中(如组织架构),通过LEFTJOIN递归关联同一表可实现树形结构查询,例如查询员工及其所有下级成员。多层级关联扩展RIGHTJOIN区别RIGHTJOIN与LEFTJOIN逻辑相反,优先保留右表全部数据,左表无匹配时填充NULL。实际应用中较少直接使用,通常可通过调换表顺序改用LEFTJOIN实现相同功能。适用于右表数据完整性要求更高的场景,例如供应商表与产品表关联时,需确保所有供应商被列出(即使暂无产品),此时RIGHTJOIN能直观体现右表主体性。RIGHTJOIN仅单边保留数据,而FULLJOIN会保留左右表所有记录(无论是否匹配),后者在数据合并或冲突检测时更有优势,但性能开销更大。右表主导的数据保留特殊业务需求适配与FULLJOIN的对比聚合函数应用05GROUPBY子句实现多列分组支持支持同时对多个字段分组(如`GROUPBYdepartment,job_title`),实现多维度的交叉分析,生成更细粒度的统计报表。数据分组逻辑GROUPBY子句通过指定列名将数据分为多个逻辑组,每组返回一行汇总结果,常用于结合聚合函数统计不同分组的特征值。与SELECT列的匹配规则SELECT中的非聚合列必须包含在GROUPBY子句中,否则会引发语法错误,确保分组逻辑的严谨性。COUNT/SUM函数COUNT计数场景COUNT(*)统计所有行数(含NULL值),COUNT(column)仅统计非NULL值,适用于计算有效数据量或唯一值数量(结合DISTINCT)。SUM数值累加SUM函数对指定列的所有数值进行累加,常用于计算销售总额、库存总量等场景,自动忽略NULL值避免计算干扰。复合聚合计算可在同一查询中组合COUNT与SUM(如`COUNT(order_id),SUM(amount)`),同步输出订单数与交易总额等关联指标。与WHERE的协同WHERE先过滤原始数据减少计算量,HAVING再过滤聚合结果,两者分工明确以优化查询性能。聚合结果筛选HAVING子句在GROUPBY之后对聚合结果进行条件过滤(如`HAVINGSUM(sales)>10000`),而WHERE仅能过滤原始数据行。复杂条件支持支持使用AND/OR连接多个条件(如`HAVINGCOUNT(*)>5ANDAVG(score)<60`),实现多维度聚合结果筛选。HAVING子句过滤排序与结果控制06ORDERBY排序规则单列排序通过指定单个列名(如`ORDERBYcolumn_name`)对查询结果按升序(默认)或降序(`DESC`)排列,适用于数值、日期或字符串类型的数据排序需求。多列排序支持按优先级顺序指定多个列(如`ORDERBYcolumn1,column2DESC`),先按第一列排序,相同值时再按后续列规则处理,常用于复杂数据分析场景。自定义排序结合`CASEWHEN`语句实现条件排序(如`ORDERBYCASEWHENstatus='active'THEN1ELSE2END`),可灵活处理业务逻辑中的特殊排序需求。DISTINCT去重机制使用`SELECTDISTINCTcolumn_name`可消除结果集中指定列的重复值,适用于快速统计唯一值数量或提取不重复列表。单列去重通过`SELECTDISTINCTcolumn1,column2`对多列组合值进行去重,确保返回的行在指定列组合上具有唯一性。多列联合去重在`COUNT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论