Mysql的基本用法(上)非常详细、快速上手

news2024/11/19 6:44:44

上篇结束了java基础,本篇主要对Mysql中的一些常用的方法进行了总结,主要对查询方法进行了讲解,包括重要的多表查询用到的内连接和外连接等,以下代码可以直接复制到可视化软件中,方便阅读以及练习;


SELECT *FROM employees;
SELECT employee_id,salary*(1+IFNULL(commission_pct,0))*12 "年工资"FROM employees;
#着重号:表名和关键字重合了需要用:
SELECT *FROM `order`;
#查询常数:会自动在前面加一列:
SELECT "hello",123,employee_id FROM employees;
#显示表结构:表的信息:
DESCRIBE employees;
#去重复:distinct:
SELECT job_id FROM employees;
SELECT DISTINCT job_id FROM employees;
#where条件查询:一定要在from结构的后面:
SELECT *FROM employees WHERE last_name='kING';
SELECT *FROM employees WHERE department_id=90;
#运算符:此处判断是否等于不用两个==,一个=即可;
SELECT employee_id FROM employees WHERE employee_id %2=0;
SELECT 1=0,1!=0;
#安全等于<=>,专门为null而使用;以下是例子:首先null参与比较的话结果全是null,无论是1=null还是1>null结果都是null;如果用安全等于,就会结果正常值;
SELECT 1=NULL;
SELECT 1<=>NULL;
SELECT employee_id,salary,commission_pct FROM employees WHERE commission_pct=NULL;
SELECT employee_id,salary,commission_pct FROM employees WHERE commission_pct<=>NULL;
#运算符:isnull is not null isnull()这个是一个方法;
SELECT employee_id,salary,commission_pct FROM employees WHERE commission_pct IS NULL;
SELECT employee_id,salary,commission_pct FROM employees WHERE isnull(commission_pct);
SELECT employee_id,salary,commission_pct FROM employees WHERE commission_pct IS NOT NULL;
#between and:
SELECT employee_id,salary FROM employees WHERE salary BETWEEN 6000 AND 8000;
#in not in:例如查询部门号为10,20,30的员工信息:
SELECT employee_id,salary,department_id FROM employees WHERE department_id=10 OR department_id=20 OR department_id=30;
SELECT employee_id,salary,department_id FROM employees WHERE department_id IN(10,20,30);
#LIKE 模糊查询:
#查询last_name中包含字符串‘a’的员工信息:注意 % 代表前面后面有不确定个字符;例如以a开头:a%;以a结尾:%a;下划线代表一个不确定的字符,例如查询lastname第二个字符是a的员工信息可以用:_a%;
SELECT  employee_id,salary,last_name FROM employees WHERE last_name LIKE '%a%';
#排序order by 默认是从低到高;从高到低是用ASC; 
SELECT employee_id,last_name,salary FROM employees order BY salary DESC;
#此处计算出来了年薪然后起别名annual_salary;
#一定要注意,列的别名只能在order by中使用,不能在where中使用;
SELECT employee_id,last_name,salary,salary*12 annual_salary FROM employees order BY annual_salary DESC;
#二级排序:按照department_id升序排序,此时可能有想同的,那对于相同的按照salary降序排序:一样的三级排序就是在后面在加上一部分
SELECT employee_id,last_name,salary FROM employees order BY employee_id ASC,salary DESC;
#limit实现分页显示:在后面加上即可;例如查询32、33这两条数据:limit后面第一个参数是第几个的前一个,然后第二个参数代表每几个为一页;
SELECT *FROM employees LIMIT 31,2;
#多表查询:分为等值连接和非等值连接;自连接和非自连接;内连接和外连接三种类型;
#例如想查询一个数据,需要先从一个表中找到对应信息,然后根据这个对应信息再去查询另一个表中查询重要信息,
#然后根据这个重要信息再去查找另一个表最终得到数据;因此,这种方法非常麻烦,所以想将表进行连接,多表查询;

#以下department_name在departments表中,employee_id在employees表中,然后共同的属性是departent_id,但是
#这样查询是错误的,得到的是笛卡尔积,缺少了多表的连接条件;
SELECT employee_id,department_name FROM employees,departments;
#正确方式:此处多查询一下department_id,这两个表中都有这个属性,查询的时候要指明是哪个表里的;
SELECT employee_id,department_name,employees.department_id
FROM employees,departments 
WHERE employees.department_id=departments.department_id;
#三表连接:查询employee_id,last_name,department_name,city;
SELECT employee_id,last_name,department_name,city
from employees,departments,locations
WHERE employees.department_id=departments.department_id AND locations.location_id=departments.location_id
#非等值连接:上面例子是等值连接,下面是非等值连接:
SELECT last_name,salary,grade_level
FROM employees,job_grades
WHERE salary BETWEEN lowest_sal AND highest_sal;
#自连接和非自连接:
#想查询员工id和姓名,以及其管理者的id和姓名,这两个都在一张表中,要自己和自己连接:这时必须要起别名;
#!!!注意,如果对表起别名后,select和where语句必须要使用别名,不能使用原来的表名;
SELECT emp.employee_id,emp.last_name,manager.employee_id,manager.last_name
FROM employees emp,employees manager
WHERE emp.manager_id=manager.employee_id;
#!!!内连接和外连接:
#内连接:合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行;上面那种就是内连接;
#外连接:有的员工可能没有部门,也有的部门建好了,但是还没有员工,此时想把这些数据也查出来;
#上面的多表查询都是都是内连接,并且用的都是SQL92语法的,最好是要用SQL99语法:举例:三表连接:
SELECT employee_id,last_name,department_name,city
FROM employees JOIN departments
ON employees.department_id=departments.department_id
JOIN locations
ON departments.location_id=locations.location_id;
#外连接分为左外连接,右外连接,满外连接;
#左外连接:两个表在连接过程中除了返回满足连接条件的行以外还返回左表中不满足条件的行;右外连接就是返回了右表中不满足条件的行;
#练习:查询所有的员工的employee_id,last_name,department_name;!!!注意是所有的,说明就是要用外连接;
#Mysql不支持SQl92实现外连接,只能用SQL99语法:
#左外连接:也就是练习答案:
SELECT employee_id,department_name
FROM employees LEFT OUTER JOIN departments#此处要用左外连接,可以看到就查询到了除了符合的,也查询到了没有部门的那个员工;
ON employees.department_id=departments.department_id;
#右外连接:
SELECT employee_id,department_name
FROM employees RIGHT OUTER JOIN departments#查询到了没有人员的部门
ON employees.department_id=departments.department_id;
#满外连接:sql不支持ful,因此需要重新实现:
#SELECT employee_id,department_name
#FROM employees FULL JOIN departments
#ON employees.department_id=departments.department_id;
#引入UNION,返回两个查询结果集的并集,去除重复记录(中间交集部分);UNIONALL效率更高,没有去重,也就是中间交集部分加了两遍;

下面按照本图进行外连接查询的练习:

#左中图(左外连接去除交集部分):参考word文档,
SELECT employee_id,department_name
FROM employees LEFT JOIN departments
ON employees.department_id=departments.department_id
WHERE departments.department_id IS NULL;#右边没有就用右表null;
#右中图(右外连接去除交集部分):
SELECT employee_id,department_name
FROM employees RIGHT JOIN departments
ON employees.department_id=departments.department_id
WHERE employees.department_id IS NULL;#左边没有就用左表null;
#左下图:满外连接:左上图(左外连接) UNION ALL 右中图(去除交集的右外连接):
SELECT employee_id,department_name
FROM employees LEFT OUTER JOIN departments
ON employees.department_id=departments.department_id
UNION ALL 
SELECT employee_id,department_name
FROM employees RIGHT JOIN departments
ON employees.department_id=departments.department_id
WHERE employees.department_id IS NULL;
#右下图(右中图UNION ALL左中图)
SELECT employee_id,department_name
FROM employees LEFT JOIN departments
ON employees.department_id=departments.department_id
WHERE departments.department_id IS NULL
UNION ALL
SELECT employee_id,department_name
FROM employees RIGHT JOIN departments
ON employees.department_id=departments.department_id
WHERE employees.department_id IS NULL;

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

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

相关文章

CRM市场营销管理功能,如何进行客户细分和数据分析?

CRM管理系统中的营销管理模块&#xff0c;它的锋芒常被销售管理所掩盖&#xff0c;但对于企业的业务来说同样重要。营销部门虽然不像销售人员一样直接面对客户&#xff0c;却是挖掘线索、商机的重要角色。CRM在市场营销领域的关键功能包括&#xff1a;营销漏斗、客户细分、营销…

详解静态网页数据获取以及浏览器数据和网络数据交互流程-Python

目录 前言 一、静态网页数据 二、网址通讯流程 1.DNS查询 2.建立连接 3.发送HTTP请求 4.服务器处理请求 5.服务器响应 6.渲染页面 7.页面交互 三、URL/POST/GET 1.URL 2.GET 形式 3.POST 形式 四.获取静态网页数据 1.requests库 点关注&#xff0c;防走丢&am…

C++上位软件通过Snap7开源库访问西门子S7-1200/S7-1500数据块的方法

前言 本人一直从事C上位软件开发工作较多&#xff0c;在之前的项目中通过C访问西门子PLC S7-200/S7-1200/S7-1500并进行数据交互的应用中一直使用的是ModbusTCP/ModbusRTU协议进行。Modbus上位开源库采用的LibModbus。经过实际应用发现Modbus开源库单次发送和接受的数据不能超过…

基于双闭环PI和SVPWM的PMSM控制器simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 双闭环PI控制器设计 4.2 SVPWM技术 4.3 控制系统实现 5.完整工程文件 1.课题概述 基于双闭环PI和SVPWM的PMSM控制器simulink建模与仿真。系统包括逆变桥、PMSM、park变换、clark变换、SVPWM、PI控…

了解长短期记忆 (LSTM) 网络:穿越时间和记忆的旅程

一、说明 在人工智能和机器学习的迷人世界中&#xff0c;长短期记忆 (LSTM) 网络作为一项突破性创新脱颖而出。LSTM 旨在解决传统循环神经网络 (RNN) 的局限性&#xff0c;尤其是在学习长期依赖性方面的局限性&#xff0c;彻底改变了我们在各个领域建模和预测序列的能力。本文深…

算法分析与设计 第一次课外作业

算法分析与设计 第一次课外作业 文章目录 算法分析与设计 第一次课外作业一. 单选题&#xff08;共8题&#xff0c;80分&#xff09;二. 判断题&#xff08;共2题&#xff0c;20分&#xff09; 一. 单选题&#xff08;共8题&#xff0c;80分&#xff09; (单选题)以下叙述中错误…

【模拟电路】模拟集成电路之神-NE555

一、集成电路NE555简介 二、功能框图与引脚说明 三、比较器&#xff08;运放&#xff09; 四、反相门&#xff08;非门&#xff09; 五、或非门 六、双稳态触发器 七、NE555的工作原理 集成电路NE555的芯片手册 C5157696 一、集成电路NE555简介 NE555起源于上个世纪70年代&a…

CCNP课程实验-03-Route_Path_Control_CFG

目录 实验条件网络拓朴需求 基础配置需求实现1.A---F所有区用Loopback模拟&#xff0c;地址格式为&#xff1a;XX.XX.XX.XX/32&#xff0c;其中X为路由器编号。根据拓扑宣告进对应协议。A1和A2区为特例&#xff0c;A1&#xff1a;55.55.55.0/24&#xff0c;A2&#xff1a;55.55…

java spring boot 获取resource目录下的文档

主要代码 String filePath"templates/test.xls" ClassPathResource classPathResource new ClassPathResource(filePath); InputStream inputStream classPathResource.getInputStream();目录 主要目录存放再这 代码案例 public void downloadTemplate( HttpS…

是否需要跟上鸿蒙(OpenHarmony)开发岗位热潮?

前言 自打华为2019年发布鸿蒙操作系统以来&#xff0c;网上各种声音百家争鸣。尤其是2023年发布会公布的鸿蒙4.0宣称不再支持Android&#xff0c;更激烈的讨论随之而来。 本文没有宏大的叙事&#xff0c;只有基于现实的考量。 通过本文&#xff0c;你将了解到&#xff1a; Har…

密码学上的经典瞬间:如果当时有Python!

提到“安全”&#xff0c;首先想到的一定是加密。 在如今的互联网环境中&#xff0c;信息加密无处不在&#xff0c;我们早已习惯&#xff0c;甚至毫无感觉。 比如&#xff0c;通过https协议访问的各个网站的内容&#xff0c;QQ&#xff0c;微信等聊天工具之间互相发送的信息等等…

前端开发_JavaScript基础

JavaScript介绍 JS是一种运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互效果 作用&#xff1a; 网页特效 (监听用户的一些行为让网页作出对应的反馈) 表单验证 (针对表单数据的合法性进行判断) 数据交互 (获取后台的数据, 渲染到前端) 服…

Android--Jetpack--WorkManager详解

2024已经到来&#xff0c;愿你安睡时&#xff0c;山河入梦。愿你醒来时&#xff0c;满目春风。愿你欢笑时&#xff0c;始终如一。愿你行进时&#xff0c;前程似锦&#xff0c;坦荡从容。 编程语言的未来&#xff1f; 目录 一&#xff0c;定义 二&#xff0c;特点 三&#xff0c…

【心得】PHP文件包含高级利用攻击面个人笔记

目录 一、nginx日志文件包含 二、临时文件包含 三、php的session文件包含 四、pear文件包含 五 、远程文件包含 文件包含 include "/var/www/html/flag.php"; 一 文件名可控 $file$_GET[file]; include $file.".php"; //用php伪协议 &#xff0…

【Leetcode】2487. 从链表中移除节点

文章目录 题目思路代码 题目 2487. 从链表中移除节点 思路 1、递归移除节点&#xff1a; 如果头节点为空&#xff0c;直接返回空。递归调用函数处理下一个节点 head->next。在递归返回后&#xff0c;判断当前节点的值是否小于之前记录的最大值 maxVal。如果小于 maxVal…

【Unity中的A星寻路】Navigation导航寻路系统四大页签详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

uniapp 使用wx.getFuzzyLocation获取当前的模糊地理位置

前言&#xff1a; 最近在进行一个小程序项目开发的时候&#xff0c;需要用到定位的功能&#xff0c;然后首先是尝试了getLocation方法&#xff0c;但是sccess中的内容始终无法打印&#xff0c;后来才知道是需要申请权限&#xff0c;在连续小程序后台管理员申请权限之后&#x…

【鸿蒙千帆起】《开心消消乐》完成鸿蒙原生应用开发,创新多端联动用户体验

《开心消消乐》已经完成鸿蒙原生应用开发&#xff0c;乐元素成为率先完成鸿蒙原生应用开发的 20游戏厂商之一。作为一款经典游戏&#xff0c;《开心消消乐》已经拥有 8 亿玩家&#xff0c;加入鸿蒙原生应用生态&#xff0c;将为其带来更优的游戏性能和更多创新体验。自 9 月 25…

【Math】重要性采样 Importance sample推导【附带Python实现】

【Math】重要性采样 Importance sample推导【附带Python实现】 文章目录 【Math】重要性采样 Importance sample推导【附带Python实现】1. Why need importance sample?2. Derivation of Discrete Distribution3. Derivation of Continuous Distribution3. An Example 笔者在学…

虹科方案|从困境到突破:TigoLeap方案引领数据采集与优化

导读&#xff1a;在数字化工厂和智能制造的时代&#xff0c;数据已经成为优化机器和流程的关键。然而&#xff0c;如何高效地收集和处理这些数据&#xff0c;特别是在开发、部署和生产阶段&#xff0c;仍是企业面临的一大挑战。虹科TigoLeap平台&#xff0c;作为一款引领行业变…