MySQL基础学习(三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 在实际开发中不建议,可以自己玩没问题。 你可以在DOS命令窗口中想快速的看一看全表数据可以采用这种方式。

1677578646753.png


简单查询


查询一个字段?


select 字段名 from 表名;


查询两个字段,或者多个字段怎么办? 使用逗号隔开“,”


查询所有字段?


使用:select * from 表名;


别把把这种写法写到 Java 程序中,因为到时还要把 * 先转换成字段


缺点:①效率低 ②可读性差。


在实际开发中不建议,可以自己玩没问题。 你可以在DOS命令窗口中想快速的看一看全表数据可以采用这种方式。


给查询的列起别名?


使用 as 关键字,可以省略 select deptno,dname as deptname from dept;


假设起别名的时候,别名里面有空格,怎么办? mysql> select deptno,dname dept name from dept; DBMS看到这样的语句,进行SQL语句的编译,不符合语法,编译报错。 怎么解决? select deptno,dname 'dept name' from dept; //加单引号 select deptno,dname "dept name" from dept; //加双引号


注意:在所有的数据库当中,字符串统一使用单引号括起来, 单引号是标准,双引号在oracle数据库中用不了。但是在mysql 中可以使用。


再次强调:数据库中的字符串都是采用单引号括起来。这是标准的。 双引号不标准。


字段可以使用数学表达式


select ename,sal*12 from emp;


显示时字段名是 sal*12 这样时一般取个别名 select ename,sal*12 year_sal from emp;


条件查询


什么是条件查询?


查询出来符合条件的  语法格式:  select  字段1,字段2,字段3....  from  表名  where  条件;


都有哪些条件?


= 等于 查询薪资等于800的员工姓名和编号? select empno,ename from emp where sal = 800;


<> 或 != 不等于 查询薪资不等于800的员工姓名和编号? select empno,ename from emp where sal != 800;


同理还有:<=,<,>=,>


between … and …. 两个值之间, 等同于 >= and <=


查询薪资在2450和3000之间的员工信息?包括2450和3000?


注意: 使用between and的时候,必须遵循左小右大。 between and是闭区间,包括两端的值。


is null 表示为 null(is not null 不为空)


查询哪些员工的津贴/补助为null? select empno,ename,sal,comm from emp where comm = null;(像这样用=是查不到的) Empty set (0.00 sec)


注意:在数据库当中null不能使用等号进行衡量。需要使用is null 因为数据库中的null代表什么也没有,它不是一个值,所以不能使用 等号衡量。


正确的:select empno,ename,sal,comm from emp where comm is null;


and 并且 查询工作岗位是MANAGER并且工资大于2500的员工信息?


select empno,ename,job,sal from emp where job = 'MANAGER' and sal > 2500;

or 或者


查询工作岗位是MANAGER或SALESMAN的员工?


select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';


and和or同时出现的话,有优先级问题吗?(开发中如不记得优先级,加小括号) 查询工资大于2500,并且部门编号为10或20部门的员工? select * from emp where sal > 2500 and deptno = 10 or deptno = 20; 分析以上语句的问题?


and优先级比or高。 以上语句会先执行and,然后执行or。 以上这个语句表示什么含义? 找出工资大于2500并且部门编号为10的员工,或者20部门所有员工找出来。 正确做法:select * from emp where sal > 2500 and (deptno = 10 or deptno = 20);


in 包含,相当于多个 or (not in 不在这个范围中) 查询工作岗位是MANAGER和SALESMAN的员工? select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN'; select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');


注意:in不是一个区间。in后面跟的是具体的值。


查询薪资是800和5000的员工信息? select ename,sal from emp where sal = 800 or sal = 5000; select ename,sal from emp where sal in(800, 5000); //这个不是表示800到5000都找出来。


not in 表示不在这几个值当中的数据。 select ename,sal from emp where sal not in(800, 5000, 3000);


not 可以取非,主要用在 is 或 in 中 is null is not null in not in


like 称为模糊查询,支持%或下划线匹配 %匹配任意多个字符 下划线:任意一个字符。 (%是一个特殊的符号,_ 也是一个特殊符号)


找出名字中含有O的? mysql> select ename from emp where ename like '%O%';


找出名字以T结尾的? select ename from emp where ename like '%T';


找出名字以K开始的? select ename from emp where ename like 'K%';


找出第二个字每是A的? select ename from emp where ename like '_A%';


找出第三个字母是R的? select ename from emp where ename like '__R%';


找出名字中有“_”的? select name from t_student where name like '%_%'; //这样不行。


正确: select name from t_student where name like '%\_%'; // \转义字符。


对查询结果排序


排序 order by( 默认是升序!!!)


查询所有员工薪资,排序? select ename,sal from emp order by sal;


怎么降序(后面加上desc)?


指定降序: select ename,sal from emp order by sal desc;


可以两个字段排序吗?或者说按照多个字段排序? 查询员工名字和薪资,要求按照薪资升序,如果薪资一样的话, 再按照名字升序排列。 select ename,sal from emp order by sal desc, ename asc; // sal在前,起主导,只有sal相等的时候,才会考虑启用ename排序。


了解内容:根据字段的位置也可以排序 select ename,sal from emp order by 2; // 2表示第二列。第二列是sal 按照查询结果的第2列sal排序。


了解一下,不建议在开发中这样写,因为不健壮。 因为列的顺序很容易发生改变,列顺序修改之后,2就废了


综合一点的案例: 找出工资在1250到3000之间的员工信息,要求按照薪资降序排列。 select ename,sal from emp where sal between 1250 and 3000 order by sal desc;


以上语句的执行顺序必须掌握: 第一步:from 第二步:where 第三步:select 第四步:order by

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
261 5
|
2月前
|
关系型数据库 MySQL 数据管理
Mysql基础学习day03-作业
本内容包含数据库建表语句及多表查询示例,涵盖内连接、外连接、子查询及聚合统计,适用于员工与部门数据管理场景。
58 1
|
2月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01
本课程为MySQL基础学习第一天内容,涵盖MySQL概述、安装、SQL简介及其分类(DDL、DML、DQL、DCL)、数据库操作(查询、创建、使用、删除)及表操作(创建、约束、数据类型)。适合初学者入门学习数据库基本概念和操作方法。
158 6
|
2月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02-作业
本教程介绍了数据库表的创建与管理操作,包括创建员工表、插入测试数据、删除记录、更新数据以及多种查询操作,涵盖了SQL语句的基本使用方法,适合初学者学习数据库操作基础。
76 0
|
2月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day03
本课程为MySQL基础学习第三天内容,主要讲解多表关系与多表查询。内容涵盖物理外键与逻辑外键的区别、一对多、一对一及多对多关系的实现方式,以及内连接、外连接、子查询等多表查询方法,并通过具体案例演示SQL语句的编写与应用。
69 0
|
2月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01-作业
本教程包含三个数据库表的创建练习:学生表(student)要求具备主键、自增长、非空、默认值及唯一约束;课程表(course)定义主键、非空唯一字段及数值精度限制;员工表(employee)包含自增主键、非空字段、默认值、唯一电话号及日期时间类型字段。每个表的结构设计均附有详细SQL代码示例。
71 0
|
2月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02
本课程为MySQL基础学习第二天内容,涵盖数据定义语言(DDL)的表查询、修改与删除操作,以及数据操作语言(DML)的增删改查功能。通过具体SQL语句与实例演示,帮助学习者掌握MySQL表结构操作及数据管理技巧。
105 0
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
137 3
|
11月前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
955 55
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
448 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。

推荐镜像

更多