### SQL内部培训知识点详解 #### 一、SQL SELECT语句基础 **1.1 SQL SELECT语句概述** - **功能**: `SELECT`语句用于从数据库表中选取数据。可以根据需求选择显示全部列(`SELECT *`)或指定列。 - **大小写不敏感**: SQL语句对于关键词的大写或小写不敏感。 - **书写格式**: 可以将SQL语句写成一行或多行,关键字不可简写或拆分到多行。 **1.2 基本SELECT语句结构** - **语法**: `SELECT column1, column2,... FROM table_name;` - **示例**: 查询部门表中的所有列:`SELECT * FROM departments;` **1.3 指定列选择** - **语法**: `SELECT column1, column2,... FROM table_name;` - **示例**: 仅查询部门表中的`department_id`和`location_id`列:`SELECT department_id, location_id FROM departments;` **1.4 算术表达式** - **定义**: 使用算术运算符(如`+`, `-`, `*`, `/`)创建数字和日期数据的表达式。 - **示例**: 查询员工表中员工姓名、薪资及其增加300后的薪资:`SELECT last_name, salary, salary + 300 FROM employees;` **1.5 列别名** - **定义**: 改变列标题的名字,可用于计算结果。 - **语法**: `SELECT column AS alias FROM table_name;` - **示例**: 查询员工表中员工姓名,并将姓名列命名为`name`:`SELECT last_name AS name FROM employees;` **1.6 连接运算符(`||`)** - **定义**: 用于连接两个字符串。 - **示例**: 将员工表中的`last_name`和`job_id`列连接起来:`SELECT last_name || job_id AS Employees FROM employees;` **1.7 DISTINCT去重** - **定义**: 用于删除结果集中的重复行。 - **语法**: `SELECT DISTINCT column FROM table_name;` - **示例**: 查询员工表中不同的`department_id`:`SELECT DISTINCT department_id FROM employees;` #### 二、约束和排序数据 **2.1 WHERE子句** - **定义**: 用于限制返回的行,只显示满足指定条件的行。 - **语法**: `SELECT column FROM table WHERE condition;` - **示例**: 查询部门ID为90的所有员工信息:`SELECT * FROM employees WHERE department_id = 90;` **2.2 字符串和日期的值** - **注意**: 字符串值需用单引号包围,且区分大小写;日期值需按照特定格式输入。 - **示例**: 查询所有姓氏以'S'开头的员工姓名:`SELECT first_name FROM employees WHERE first_name LIKE 'S%';` **2.3 比较条件** - **等于**: `=` - **不等于**: `<>` 或 `!=` - **大于**: `>` - **小于**: `<` - **大于等于**: `>=` - **小于等于**: `<=` **2.4 LIKE条件** - **定义**: 用于模式匹配,常用于字符串查询。 - **语法**: `SELECT column FROM table WHERE column LIKE pattern;` - **示例**: 查询所有姓氏以'S'开头的员工姓名:`SELECT first_name FROM employees WHERE first_name LIKE 'S%';` **2.5 逻辑条件** - **AND**: 两个条件都必须为真。 - **OR**: 至少有一个条件为真。 - **NOT**: 否定条件。 **2.6 圆括号改变优先级** - **示例**: `SELECT last_name, job_id, salary FROM employees WHERE (job_id = 'SA_REP' OR job_id = 'AD_PRES') AND salary > 15000;` #### 三、排序数据 **3.1 ORDER BY子句** - **定义**: 用于按一个或多个列排序结果集。 - **语法**: `SELECT column FROM table ORDER BY column [ASC|DESC];` - **示例**: 按入职日期升序排序员工表:`SELECT last_name, hire_date FROM employees ORDER BY hire_date;` #### 四、函数与表达式 **4.1 字符函数** - **LENGTH(column)**: 返回列的长度。 - **UPPER(column)**: 将列转换为大写。 - **LOWER(column)**: 将列转换为小写。 - **TRIM(column)**: 删除字符串两端的空白字符。 **4.2 数学函数** - **SUM(column)**: 计算列的总和。 - **AVG(column)**: 计算列的平均值。 - **MAX(column)**: 返回列的最大值。 - **MIN(column)**: 返回列的最小值。 **4.3 日期函数** - **SYSDATE**: 返回当前系统日期。 - **ADD_MONTHS(date, number)**: 返回给定日期之后的指定月份。 - **MONTHS_BETWEEN(date1, date2)**: 返回两个日期之间的月份数。 **4.4 组函数** - **COUNT(column)**: 计算列中有多少非NULL值。 - **GROUP BY column**: 对数据进行分组,以便对每组应用组函数。 #### 五、子查询 - **定义**: 子查询是在另一个查询内部执行的查询。 - **示例**: 查询薪资高于平均薪资的员工:`SELECT last_name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);` #### 六、多表关联 - **INNER JOIN**: 返回两个表中具有匹配值的行。 - **LEFT JOIN**: 返回左表中的所有行和右表中匹配的行。 - **RIGHT JOIN**: 返回右表中的所有行和左表中匹配的行。 - **FULL OUTER JOIN**: 返回两个表中的所有行。 #### 七、分析函数 - **ROW_NUMBER() OVER (ORDER BY column)**: 为每一行分配一个唯一的行号。 - **RANK() OVER (ORDER BY column DESC)**: 根据列值对行进行排名,相同值时排名相同。 - **DENSE_RANK() OVER (ORDER BY column DESC)**: 类似于RANK,但不会跳过排名。 通过以上内容的学习,你将能够熟练掌握SQL的基本操作,包括数据的选择、过滤、排序以及简单的函数使用。这些知识将帮助你在数据分析、数据库管理等方面更加得心应手。
- xyq0719092018-12-12很好,很实用,继续学习
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于activiti6和jeesite4的dreamFlow工作流管理设计源码
- 基于Python实现的简单植物大战僵尸脚本设计源码
- 基于Java及Web技术的医药管理系统设计源码
- 基于Objective-C的cordova-plugin-wechat插件开发源码研究
- 基于Python语言的SocialNetworkBackend社交数据分析系统后端设计源码
- 基于Python的pytracking-master目标跟踪dimp方法设计源码
- 基于PHP、JavaScript、CSS的zibll主题美化插件设计源码
- 毕业设计之mimo系统中中最大比合并和空时编码的性能研究
- 本程序对基于matlab对NOMA系统中经典多用户功率分配算法进行了研究
- Phone-1.zip