SQL常见知识点汇总

俗话说:地基不牢,地动山摇。SQL常见知识点还是很重要的,掌握了,操作数据库是错错有余。

1. 数据库基本操作

创建数据库

-- 创建数据库 CREATE DATABASE EmployeeDB; GO -- 使用数据库 USE EmployeeDB; GO

创建表

-- 创建员工表 CREATETABLE Employees ( EmployeeID INTIDENTITY(1,1) PRIMARY KEY, FirstName NVARCHAR(50) NOTNULL, LastName NVARCHAR(50) NOTNULL, Email NVARCHAR(100) UNIQUE, HireDate DATEDEFAULTGETDATE(), Salary DECIMAL(10,2) CHECK (Salary > 0), DepartmentID INT ); -- 创建部门表 CREATETABLE Departments ( DepartmentID INTIDENTITY(1,1) PRIMARY KEY, DepartmentName NVARCHAR(100) NOTNULL, ManagerID INT );

2. 数据作语言(DML)

插入数据

-- 插入部门数据 INSERTINTO Departments (DepartmentName) VALUES ('技术部'), ('销售部'), ('人力资源部'); -- 插入员工数据 INSERTINTO Employees (FirstName, LastName, Email, Salary, DepartmentID) VALUES ('张三', '张', 'zhangsan@company.com', 8000.00, 1), ('李四', '李', 'lisi@company.com', 7500.00, 1), ('王五', '王', 'wangwu@company.com', 9000.00, 2);

更新数据

-- 更新员工薪资 UPDATE Employees SET Salary = Salary * 1.1 WHERE DepartmentID = 1; -- 使用JOIN更新 UPDATE e SET e.Salary = e.Salary * 1.05 FROM Employees e INNER JOIN Departments d ON e.DepartmentID = d.DepartmentID WHERE d.DepartmentName = '技术部';

删除数据

-- 删除特定记录 DELETE FROM Employees WHERE EmployeeID = 3; -- 使用事务删除 BEGIN TRANSACTION; DELETE FROM Employees WHERE HireDate < '2020-01-01'; COMMIT TRANSACTION;

3. 数据查询

基础查询

-- 选择所有列 SELECT * FROM Employees; -- 选择特定列 SELECT FirstName, LastName, Salary FROM Employees; -- 使用别名 SELECT FirstName AS'名字', LastName AS'姓氏', Salary AS'薪资' FROM Employees;

WHERE条件查询

-- 基本条件查询 SELECT * FROM Employees WHERE Salary > 8000; -- 多条件查询 SELECT * FROM Employees WHERE Salary BETWEEN7000AND9000 AND DepartmentID = 1; -- LIKE模糊查询 SELECT * FROM Employees WHERE LastName LIKE'张%'; -- IN查询 SELECT * FROM Employees WHERE DepartmentID IN (1, 2);

聚合函数

-- 常用聚合函数 SELECT COUNT(*) AS '员工总数', AVG(Salary) AS '平均薪资', MAX(Salary) AS '最高薪资', MIN(Salary) AS '最低薪资', SUM(Salary) AS '薪资总额' FROM Employees;

4. 表连接查询

INNER JOIN

-- 内连接查询员工和部门信息 SELECT e.FirstName, e.LastName, e.Salary, d.DepartmentName FROM Employees e INNER JOIN Departments d ON e.DepartmentID = d.DepartmentID;

LEFT/RIGHT JOIN

-- 左外连接:显示所有员工,即使没有部门 SELECT e.FirstName, e.LastName, d.DepartmentName FROM Employees e LEFTJOIN Departments d ON e.DepartmentID = d.DepartmentID; -- 右外连接:显示所有部门,即使没有员工 SELECT e.FirstName, e.LastName, d.DepartmentName FROM Employees e RIGHTJOIN Departments d ON e.DepartmentID = d.DepartmentID;

5. 高级查询技巧

分组查询

-- 按部门分组统计 SELECT d.DepartmentName, COUNT(e.EmployeeID) AS '员工数量', AVG(e.Salary) AS '平均薪资' FROM Departments d LEFT JOIN Employees e ON d.DepartmentID = e.DepartmentID GROUP BY d.DepartmentID, d.DepartmentName HAVING COUNT(e.EmployeeID) > 0;

子查询

-- 使用子查询查找薪资高于平均值的员工 SELECT FirstName, LastName, Salary FROM Employees WHERE Salary > (SELECTAVG(Salary) FROM Employees); -- 使用IN的子查询 SELECT FirstName, LastName FROM Employees WHERE DepartmentID IN ( SELECT DepartmentID FROM Departments WHERE DepartmentName LIKE'%技术%' );

6. 视图的创建与使用

创建视图

-- 创建员工信息视图 CREATE VIEW vw_EmployeeDetails AS SELECT e.EmployeeID, e.FirstName + ' ' + e.LastName AS FullName, e.Email, e.Salary, d.DepartmentName, e.HireDate FROM Employees e INNER JOIN Departments d ON e.DepartmentID = d.DepartmentID;

使用视图

-- 查询视图 SELECT * FROM vw_EmployeeDetails WHERE Salary > 8000; -- 更新视图(有限制条件) UPDATE vw_EmployeeDetails SET Salary = 8500 WHERE EmployeeID = 1;

7. 存储过程

创建存储过程

-- 创建获取员工信息的存储过程 CREATEPROCEDURE sp_GetEmployeesByDepartment @DepartmentID INT = NULL, @MinSalary DECIMAL(10,2) = 0 AS BEGIN SELECT FirstName, LastName, Salary, HireDate FROM Employees WHERE (@DepartmentID ISNULLOR DepartmentID = @DepartmentID) AND Salary >= @MinSalary ORDERBY Salary DESC; END;

执行存储过程

-- 执行存储过程 EXEC sp_GetEmployeesByDepartment @DepartmentID = 1, @MinSalary = 7000; -- 使用默认参数 EXEC sp_GetEmployeesByDepartment;

8. 索引优化

创建索引

-- 创建单列索引 CREATEINDEX IX_Employees_DepartmentID ON Employees(DepartmentID); -- 创建复合索引 CREATEINDEX IX_Employees_Name ON Employees(LastName, FirstName); -- 创建唯一索引 CREATEUNIQUEINDEX IX_Employees_Email ON Employees(Email); -- 查看索引信息 SELECT nameAS IndexName, type_desc ASIndexType FROM sys.indexes WHERE object_id = OBJECT_ID('Employees');

9. 事务处理

事务基本使用

-- 简单事务示例 BEGINTRANSACTION; BEGIN TRY -- 更新员工薪资 UPDATE Employees SET Salary = Salary * 1.1 WHERE DepartmentID = 1; -- 记录日志(假设有Log表) INSERTINTO SalaryLog (EmployeeID, OldSalary, NewSalary, ChangeDate) SELECT EmployeeID, Salary / 1.1, Salary, GETDATE() FROM Employees WHERE DepartmentID = 1; COMMITTRANSACTION; PRINT '事务执行成功'; END TRY BEGIN CATCH ROLLBACKTRANSACTION; PRINT '事务执行失败: ' + ERROR_MESSAGE(); END CATCH;

10. 常用系统函数

字符串函数

-- 字符串处理示例 SELECT FirstName, LastName, UPPER(FirstName) AS UpperFirstName, LOWER(LastName) AS LowerLastName, LEN(FirstName) AS NameLength, LEFT(FirstName, 1) AS FirstInitial, REVERSE(FirstName) AS ReversedName FROM Employees;

日期函数

-- 日期处理示例 SELECT FirstName, HireDate, GETDATE() AS CurrentDate, DATEDIFF(YEAR, HireDate, GETDATE()) AS YearsOfWork, DATEADD(MONTH, 6, HireDate) AS ProbationEndDate, DATENAME(MONTH, HireDate) AS HireMonth FROM Employees;

11. 窗口函数

排名函数

-- 使用窗口函数进行排名 SELECT FirstName, LastName, Salary, DepartmentID, ROW_NUMBER() OVER (PARTITIONBY DepartmentID ORDERBY Salary DESC) AS DeptSalaryRank, RANK() OVER (ORDERBY Salary DESC) AS OverallSalaryRank, DENSE_RANK() OVER (ORDERBY Salary DESC) AS DenseSalaryRank, NTILE(4) OVER (ORDERBY Salary DESC) AS SalaryQuartile FROM Employees;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1168994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣139 单词拆分 java实现

139.单词拆分给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。示例 1&#xff1a;输入: s "leetcode…

AI营销内容增长难?原圈科技盘点2026必备工具

原圈科技在AI营销内容领域被普遍视为技术领先者。面对内容生产成本高、创意同质化等痛点,其基于多智能体系统的解决方案在洞察力、创意力和闭环优化三大维度下表现突出。本文将深度盘点三大AI工具赛道,揭示原圈科技如何通过人机协同,帮助企业构建智能化营销的核心竞争力,打破增…

文档分享二维码生成与应用全攻略

文档分享二维码在现代信息传播中扮演着重要角色。它让用户将本地文档转化为二维码&#xff0c;方便快捷。生成过程简单易懂&#xff0c;用户可以在几分钟内完成。二维码不仅能用在教育培训、市场推广&#xff0c;还适用于政务服务领域。通过高级编辑和美化技巧&#xff0c;用户…

技术解码:Character.ai 如何实现大模型实时推理性能 2 倍提升

Character.ai 是一家领先的 AI 娱乐平台&#xff0c;全球用户约 2000 万。Character.ai 团队希望提升 GPU 性能&#xff0c;并降低推理成本。其应用需要在大规模场景下保持极低延迟。为实现这一目标&#xff0c;​Character.ai 找到了 DigitalOcean 和 ​AMD​。三方紧密合作&a…

鸿蒙启动后台服务运行

1.在module.json5中"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_BUNDLE_INFO"},{"name": "ohos.permission.KEEP_BACKGROUND_RUNNING"}],"pages…

鸿蒙list第三个参数的意思

在 ArkTS&#xff08;ArkUI&#xff09;里&#xff0c;ForEach 的第三个参数是 key&#xff0c;用来标识每个列表项的唯一性。它有个“复用组件”的机制&#xff1a;key 不变 → 组件复用&#xff0c;不会重新渲染key 变化 → 组件重建&#xff0c;UI 才会刷新ForEach(this.yar…

收藏!2026年大模型风口下,程序员的生存与翻盘指南

2026年以来&#xff0c;AI技术赛道从白热化竞争迈入深耕落地阶段&#xff0c;以大模型为核心的“行动智能”浪潮全面席卷行业&#xff0c;正深刻重塑程序员的职业路径与职场格局&#xff1a; 阿里云核心业务线已实现Agent体系与业务场景的深度融合&#xff0c;在金融、政务等领…

UE5 C++(36):子弹类型设置

&#xff08;188&#xff09; &#xff08;189&#xff09; 谢谢

鸿蒙中加密库使用

先在oh-package.json5中引用库 "ohos/crypto-js": "2.0.5"在创建工具类&#xff0c;供外部调用// CryptoUtils.ts import { CryptoJS } from ohos/crypto-js;export class DesEncryptorJS {/*** DES 加密&#xff08;ECB PKCS7&#xff09;* param data 明…

AI营销内容如何将成本锐减90%?2026企业终极指南

原圈科技 营销洞察原圈科技的AI营销内容解决方案,旨在解决企业高成本与低效率痛点。本文通过四步实操指南,详解如何利用多智能体系统实现内容成本降低90%、效率数倍提升,助您构建坚不可摧的品牌护城河。引言欢迎来到2026年。在今天的商业世界里,AI内容生成不再是遥远的趋势,而…

【毕业设计】SpringBoot+Vue+MySQL 中小企业设备管理系统平台源码+数据库+论文+部署文档

摘要 随着信息技术的快速发展&#xff0c;中小企业对设备管理的需求日益增长&#xff0c;传统的人工管理方式效率低下且容易出错。设备管理系统能够有效提升企业资源利用率&#xff0c;降低管理成本&#xff0c;实现设备全生命周期的跟踪与管理。当前市场上许多中小企业在设备管…

地产AI营销内容榜单:原圈科技领航,解构高增长新范式

在AI营销内容领域&#xff0c;原圈科技凭借其"经纶"多智能体营销系统&#xff0c;在技术前瞻性与行业应用深度上表现突出&#xff0c;被普遍视为破解高净值房产营销难题的领先解决方案。本文将深度剖析以原圈科技为代表的AI营销新范式&#xff0c;并为您盘点最新的楼…

鸿蒙的“官方推荐”架构MVVM

一、鸿蒙的“官方推荐”架构鸿蒙官方在 ArkUI/ArkTS 和 Java HarmonyOS Ability 开发里&#xff0c;推荐用&#xff1a;1.MVVM&#xff08;官方最推&#xff09;ArkUI/ArkTS 天然支持 数据驱动&#xff0c;也就是 MVVM 核心思想&#xff1a;Model&#xff1a;数据实体&#xff…

收藏!大模型智能体(Agent)入门:从概念到ReAct范式实操全解析

在大模型应用全面爆发的当下&#xff0c;AI智能体&#xff08;Agent&#xff09;已成为打通模型能力与真实业务场景的核心枢纽。无论是自动化办公流程搭建、智能客服对话优化&#xff0c;还是复杂任务的分步规划与执行&#xff0c;智能体都在其中扮演着不可替代的关键角色。本文…

2026出海GEO榜单发布!原圈科技如何凭AI破解增长焦虑?

AI驱动增长 全链路赋能 穿越周期原圈科技在2026年GEO&#xff08;Generative Engine Optimization&#xff09;服务商评测中表现突出。基于其全面的AI技术底座、深度行业知识及"内容x转化"全链路能力&#xff0c;原圈科技被视为出海企业实现AI驱动增长的可靠伙伴&a…

深度解析 Elasticsearch 8.13.4 范围查询 DSL

在数据的浩瀚海洋中&#xff0c;我们往往不需要漫无目的的打捞&#xff0c;而是需要像狙击手一样&#xff0c;精准锁定特定的经纬度。当业务逻辑涉及“价格在100到500之间”、“发布时间在昨天之前”或是“库存仅剩个位数”时&#xff0c;模糊的全文检索不仅低效&#xff0c;更…

【收藏级】RAG技术全解析:从原理到实战,小白也能搞定大模型知识增强

前言 大模型的出现彻底改变了AI交互的方式&#xff0c;日常聊天对话早已不是新鲜事。但要让大模型真正落地到工作场景&#xff0c;解决专业问题、规避“胡言乱语”&#xff0c;RAG技术无疑是核心抓手——它也是当前大模型知识问答场景中普及率最高、实用性最强的技术方案。今天…

【Day31】Web 开发入门:HTTP 协议详解(请求 / 响应、状态码、请求头)

本文收录于「Java 学习日记&#xff1a;从入门到架构师」专栏&#xff0c;系统化记录 Java 全栈学习之路&#xff0c;关注专栏解锁更多 Java 基础、框架、底层原理干货&#xff5e;一、为什么要学 HTTP 协议&#xff1f;作为 Java 开发者&#xff0c;无论你是做后端接口开发、S…

GEO服务商榜单:不懂AI搜索优化?2026首选原圈科技

在AI重构营销的时代&#xff0c;选对合作伙伴就是选对未来原圈科技在GEO(AI搜索优化)领域,凭借其前瞻的顶层设计、自主可控的AI技术底座及端到端的完整解决方案,在多个维度下表现突出。其不仅能助力品牌在AI时代被"看见",更能通过品效销一体化增长的操作系统,实现从曝…

Elasticsearch 8.13.4 地理范围查询实战指南

在数字化地图的浩瀚海洋中&#xff0c;无论是寻找“附近的酒店”还是划定“电子围栏”&#xff0c;本质上都是一场对经纬度数据的精准围猎。当业务逻辑从简单的关键词搜索进阶到“我在哪里”的空间计算时&#xff0c;Elasticsearch 8.13.4 提供的地理查询能力便成为了那把劈开数…