随笔分类 - 数据库 / MySQL
MySQL数据库
摘要:1.相关子查询 示例1:查询员工中工资大于本部门平均工资的员工的last_name,salary和其department_id。 在子查询中使用到了外部的表,并进行条件关联,每执行一次外部查询,子查询都要重新计算一次。 2.在from中使用子查询 必须要给from中的子查询起别名,当成一张临时表 S
阅读全文
摘要:1.多行子查询 也称为集合比较子查询,内查询返回多行,使用多行比较操作符。 | 操作符 | 含义 | | | | | IN | 等于列表中的任意一个 | | ANY | 和子查询返回的某一个值比较,需要和单行比较操作符一起使用 | | ALL | 和子查询返回的所有值比较,需要和单行比较操作符一起使
阅读全文
摘要:1.子查询编写技巧 (1)从里往外写 (2)从外往里写 比较操作符:=、>、>=、<、<=、<> 2.子查询示例 **(1)**查询工资大于149号员工工资的员工的信息。 先查出149号员工工资,再比较 SELECT employee_id,last_name,salary FROM employe
阅读全文
摘要:1.SQL标准 SQL有两个主要的标准,分别是 (1)SQL92:92年提出的标准规范,SQL92的形式更简单,但是写的SQL语句会比较长,可读性差。也被叫做SQL-2标准。 (2)SQL99:相比于SQL92,语法更加复杂,但可读性更强。也被叫做SQL-3标准。
阅读全文
摘要:1.谁的工资比Abel的高? 方式一:先查询Abel的工资,再查比Abel工资高的员工 SELECT salary FROM employees WHERE last_name = 'Abel'; SELECT last_name,salary FROM employees WHERE salary
阅读全文
摘要:1.自然连接 NATURAL JOIN : 它会帮你自动查询两张连接表中所有相同的字段,然后进行等值连接。 不够灵活。 SELECT employee_id,last_name,department_name FROM employees e JOIN departments d ON e.`dep
阅读全文
摘要:两个表关联有这7种情况 1.内连接 SELECT employee_id,department_name FROM employees e JOIN departments d ON e.`department_id` = d.`department_id`; 2.左外连接 SELECT emplo
阅读全文
摘要:1.UNION 合并多条SELECT语句的查询结果,两个表对应的列数和数据类型必须相同,并且相互对应。 会执行去重操作。 2.UNION ALL 不会执行去重操作 如果明确知道合并数据后的结果数据不存在重复数据,或者不需要去除重复的数据, 则尽量使用UNION ALL语句,以提高数据查询的效率。 查
阅读全文
摘要:区别:内连接只取两张表中满足where条件的部分(交集部分),外连接除了取满足的部分还会取不满足的部分。因此外连接又可以分为:左外连接、右外连接、全外连接。 1.内连接 SQL92内连接 SELECT employee_id,department_name FROM employees e,depa
阅读全文
摘要:区别:多表查询时是否和自身连接(自恋) 1. 自连接 查询员工 last_name 和他的领导名称 SELECT CONCAT(worker.last_name,'的领导是',manager.last_name) FROM employees worker,employees manager WHE
阅读全文
摘要:区别:多表查询中的where条件是否相等 1.等值连接 查询员工的employee_id,last_name,department_name,city SELECT e.last_name,d.department_name,l.city FROM employees e,departments d
阅读全文
摘要:1.常见的查询结构 方式1: SELECT ...,...,... 选择的字段 FROM ...,...,... 从哪些表中筛选 WHERE ...AND... 多表的连接条件,不包含组函数的过滤条件 GROUP BY ...,... HAVING 包含组函数的过滤条件 ORDER BY ...AS
阅读全文
摘要:1.筛选条件 WHERE可以使用表中的字段作为筛选条件 SQL语法结构树中 WHERE...GROUP BY...HAVING WHERE排除的记录不会包括在分组中,WHERE在GROUP BY之前无法对分组结果进行筛选,不能使用分组中的计算函数作为筛选条件。 像这种方式是错误的 HAVING可以把
阅读全文
摘要:1.HAVING子句使用 行已经被分组 使用了聚合函数 满足HAVING子句中条件的分组将被显示 HAVING不能单独使用,必须要跟GROUP BY一起使用 查询部门最高工资,比10000高的部门 SELECT department_id,MAX(salary) FROM employees GRO
阅读全文
摘要:1.GROUP BY分组使用 例:求员工表中各部门的平均工资 使用GROUP BY子句将数据按部门分 SELECT department_id,AVG(salary) FROM employees GROUP BY department_id; SELECT d.department_name,AV
阅读全文
摘要:1.AVG和SUM函数 AVG()函数取平均值,SUM()函数取数据总和,可以对数值型数据使用 SELECT AVG(salary), -- 6461.682243 SUM(salary), -- 691400.00 FROM employees; 2.MIN和MAX函数 MIN()函数取最小值,M
阅读全文
摘要:1.MySQL中的函数分类 多行函数即为聚合函数,或称为聚集、分组函数,输入的是一组数据,输出的是单个值 2.聚合函数 聚合函数作用于一组数据,并对一组数据返回一个值 例:求员工表中的最高工资 3.聚合函数都有哪些 AVG() SUM() MAX() MIN() COUNT() 4.使用注意 聚合函
阅读全文
摘要:1.MySQL信息函数 用于查询MySQL信息 | 函数 | 用法 | | | | | VERSION() | 返回当前MySQL的版本号 | | CONNECTION_ID() | 返回当前MySQL服务器的连接数 | | DATABASE(),SCHEMA() | 返回MySQL命令行当前所在的
阅读全文
摘要:使用加密解密函数可以对存入数据库中的数据进行加密和解密处理,防止他人窃取。 | 函数 | 用法 | | | | | PASSWORD(str) | 返回字符串str的加密版本,41位长的字符串。加密结果不可逆,常用于用户的密码加密 | | MD5(str) | 返回字符串str进行MD5加密后的值,
阅读全文
摘要:使用if等函数根据不同的条件,执行不同的处理流程 | 函数 | 用法 | | | | | IF(value,v1,v2) | 如果vlaue的值为true,返回v1,否则返回v2 | | IFNULL(v1,v2) | 如果v1不为null,返回v1;否则返回v2 | | CASE WHEN 条件1
阅读全文