Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【重学MySQL】十三、基本的 select 语句

【重学MySQL】十三、基本的 select 语句

作者头像
用户11332765
发布于 2024-10-28 08:59:26
发布于 2024-10-28 08:59:26
28800
代码可运行
举报
文章被收录于专栏:编程编程
运行总次数:0
代码可运行
【重学MySQL】十三、基本的 select 语句

基本的SELECT语句是SQL(Structured Query Language,结构化查询语言)中最常用的语句之一,用于从数据库表中检索数据。一个基本的SELECT语句的结构非常直观,主要包括SELECT关键字、要检索的列名(或表达式)、FROM子句来指定数据来源的表名,以及可选的WHERE子句来指定检索数据的条件。

基本结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • SELECT:指定要从表中检索的列名。你可以指定一个或多个列名,或者使用星号(*)来检索表中的所有列。
  • FROM:指定要从中检索数据的表名。
  • WHERE(可选):指定用于过滤结果的条件。只有满足条件的行才会被检索出来。如果省略了WHERE子句,那么会检索表中的所有行。

示例

假设有一个名为Employees的表,其中包含员工的ID、姓名、年龄和部门ID等信息。

检索所有列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM Employees;

这条语句会检索Employees表中的所有列和所有行。

检索特定列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT EmployeeID, LastName, FirstName FROM Employees;

这条语句只会检索EmployeeIDLastNameFirstName这三列的数据。

带有条件的检索

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM Employees WHERE DepartmentID = 5;

这条语句会检索Employees表中所有DepartmentID为5的行。

dual

MySQL中,DUAL是一个虚拟表,它主要用于那些不需要从任何表中检索数据但需要返回一个结果集的场合。DUAL表允许你执行没有指定FROM子句的SELECT语句,这在一些情况下特别有用,比如当你只是想通过SELECT语句来执行一些计算或转换,而不是查询表中的数据时。

然而,值得注意的是,虽然DUALOracle数据库中是一个常见的概念,但在MySQL中,它并不是严格必需的,因为MySQL允许你执行没有FROM子句的SELECT语句。这意味着,在MySQL中,你可以直接写出一个只包含SELECT和可能的一些函数的查询,而不需要显式地引用DUAL表。

例如,在Oracle中,你可能会这样写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT 5 * 10 FROM DUAL;

这条语句会返回50,因为Oracle要求所有的SELECT语句都必须指定一个FROM子句,即使你并不打算从任何表中检索数据。

但在MySQL中,你可以直接写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT 5 * 10;

这条语句同样会返回50,而不需要引用DUAL表。

尽管MySQL不严格要求使用DUAL,但在一些从Oracle迁移到MySQL的数据库项目中,你可能会遇到在代码中显式引用DUAL的情况。在这种情况下,MySQL仍然能够处理这样的查询,因为MySQL会忽略这个DUAL的引用,并直接执行SELECT语句中的计算或函数。

总的来说,DUAL在MySQL中是一个可选的概念,主要用于与那些期望在所有数据库系统中都有DUAL表的概念的代码兼容。但在实际使用中,你通常可以省略它,直接在MySQL中执行你的SELECT语句。

列的别名

在MySQL中,列的别名(Alias)是一个给查询结果集中的列指定的临时名称。使用列的别名可以使结果集更加易于理解,特别是在进行复杂的查询、连接(JOINs)、分组(GROUP BY)和聚合(如SUM、AVG等)操作时。

基本的列别名使用

在SELECT语句中,你可以通过在列名后紧跟AS关键字和别名来指定列的别名。如果省略AS关键字,MySQL也会识别紧随列名之后的标识符为别名,假如中间有空格,可以用一对双引号引起来,不要使用单引号

示例1:使用AS关键字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT employee_name AS Name, salary AS Salary
FROM employees;

在这个例子中,employee_name列的别名被指定为Namesalary列的别名被指定为Salary

示例2:省略AS关键字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT employee_name Name, salary Salary
FROM employees;

这个查询与上一个示例产生相同的结果,只是省略了AS关键字。

别名在表达式中的使用

列的别名还可以在SELECT语句的表达式中使用,但需要注意的是,别名在定义它的SELECT列表中是不可见的,也就是说,你不能在同一个SELECT列表的另一个表达式中直接使用它。然而,你可以在HAVING子句、ORDER BY子句或外部查询中引用它(如果这是一个子查询或视图定义的一部分)。

示例:不能在同一个SELECT列表的表达式中直接使用别名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 错误的用法
SELECT salary AS Salary, Salary + 100 AS SalaryPlusBonus  -- 这里Salary是未知的,因为别名是在它之后定义的
FROM employees;

-- 正确的用法
SELECT salary, salary + 100 AS SalaryPlusBonus
FROM employees;

在ORDER BY子句中使用别名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT employee_name AS Name, salary AS Salary
FROM employees
ORDER BY Salary DESC;  -- 这里使用了别名Salary进行排序

别名在聚合函数中的应用

在使用聚合函数(如SUM、AVG、COUNT等)时,为结果列指定别名尤其有用,因为它可以清晰地表示该列包含的数据类型或含义。

示例:使用聚合函数并指定别名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT AVG(salary) AS AverageSalary
FROM employees;

这个查询计算了employees表中所有员工的平均薪水,并将结果列的别名指定为AverageSalary

distinct

在MySQL中,DISTINCT关键字用于在查询结果中返回唯一不同的值。当你从表中检索数据时,如果表中有重复的行,并且你只希望看到每个唯一值一次,那么就可以使用DISTINCT

DISTINCT通常与SELECT语句一起使用,放在需要返回唯一值的列名之前。你也可以对多个列使用DISTINCT,但这意味着MySQL会考虑这些列的组合作为唯一性的判断依据。

基本用法

单列使用DISTINCT

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT DISTINCT column_name
FROM table_name;

这个查询会返回column_name中所有唯一的值。

多列使用DISTINCT

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT DISTINCT column1, column2
FROM table_name;

这个查询会返回column1column2的组合中所有唯一的值对。只有当column1column2的组合是唯一的时,它们才会出现在结果集中。

注意事项

  • DISTINCT关键字作用于它之后的所有列,直到遇到下一个逗号或查询的结束。
  • 使用DISTINCT可能会影响查询的性能,因为它需要MySQL对结果集进行排序和去重。在大数据集上使用时尤其要注意这一点。
  • 如果查询中包含了聚合函数(如COUNT()MAX()MIN()SUM()等),并且你想要基于某些列的唯一值来计算聚合结果,那么可能需要结合GROUP BY子句来使用,而不是直接使用DISTINCT

示例

假设有一个名为employees的表,其中包含department_idemployee_name两列。

返回所有唯一的department_id

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT DISTINCT department_id
FROM employees;

返回所有唯一的department_idemployee_name组合

注意:这实际上会返回所有行,因为假设每个员工都位于不同的部门或每个部门都有不同的员工名称(这通常不是真实情况,但用于说明)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT DISTINCT department_id, employee_name
FROM employees;

如果每个部门都有多个员工,但你想要按部门计算员工数,你应该使用GROUP BY而不是DISTINCT

按部门计算员工数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT department_id, COUNT(employee_name) AS employee_count
FROM employees
GROUP BY department_id;

空值参与运算

在MySQL中,空值(NULL)参与运算时,结果通常会根据运算的类型和上下文而有所不同。空值在数据库中代表缺失或未知的数据,因此在进行数学运算、字符串连接或其他类型的计算时,需要特别注意它们的行为。

数学运算

当NULL参与数学运算(如加法、减法、乘法、除法等)时,结果通常是NULL。这是因为MySQL无法对未知的值进行数学计算。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT NULL + 10;  -- 结果为 NULL
SELECT 10 - NULL;  -- 结果为 NULL
SELECT NULL * 10;  -- 结果为 NULL
SELECT 10 / NULL;  -- 结果为 NULL,尽管在真实数学中除以0是未定义的,但这里是因为有NULL

字符串连接

当使用CONCAT()等字符串函数时,如果任何参数是NULL,则整个CONCAT()函数的结果也是NULL。不过,可以使用CONCAT_WS()(其中WS代表With Separator),它允许在参数之间插入分隔符,并且会忽略NULL值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT CONCAT('Hello', NULL, 'World');  -- 结果为 NULL
SELECT CONCAT_WS(' ', 'Hello', NULL, 'World');  -- 结果为 'Hello World'

比较运算

当NULL参与比较运算时,结果也通常是特殊的。例如,任何值与NULL的比较结果都不是TRUE或FALSE,而是NULL。这意味着你不能直接使用=<>等操作符来检查一个值是否为NULL。相反,应该使用IS NULLIS NOT NULL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT 1 = NULL;  -- 结果为 NULL
SELECT 1 IS NULL;  -- 结果为 FALSE
SELECT NULL IS NULL;  -- 结果为 TRUE

逻辑运算

在逻辑运算中(如AND、OR、NOT),NULL的行为可能会更加复杂,因为它既不是TRUE也不是FALSE。但是,通常你可以预期如果逻辑表达式中的任何部分为NULL,则整个表达式的结果可能也是NULL,或者至少不会按你期望的TRUE或FALSE来评估。

处理NULL的函数

MySQL提供了几个函数来帮助处理NULL值,如IFNULL()(或COALESCE()),它们允许你为NULL值指定一个替代值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT IFNULL(NULL, 0) + 10;  -- 结果为 10
SELECT COALESCE(NULL, 0, 'default') + 10;  -- 结果为 10,因为COALESCE返回第一个非NULL

总之,当在MySQL中编写查询并处理可能包含NULL值的列时,重要的是要了解NULL在不同运算和函数中的行为,并相应地调整你的查询逻辑。

着重号

在MySQL中,“着重号”(通常指的是反引号`)主要用于标识符(如数据库名、表名、列名等)的引用,特别是在这些标识符是MySQL的保留字或者包含特殊字符(如空格、连字符等)时。使用反引号可以确保这些标识符被正确地识别和处理。

为什么使用着重号(反引号)?

  1. 避免保留字冲突:如果你的表名或列名与MySQL的保留字相同,使用反引号可以避免语法错误。
  2. 支持特殊字符:如果你的标识符包含空格、连字符(-)、点(.)等特殊字符,或者以数字开头,使用反引号可以确保MySQL能够正确解析这些标识符。

示例

避免保留字冲突

假设你想创建一个名为order的表,但order是MySQL的保留字。为了避免冲突,你可以这样写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `order` (
    id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(255)
);
支持特殊字符

如果你想创建一个包含空格的表名,你可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE `my table` (
    id INT AUTO_INCREMENT PRIMARY KEY,
    data VARCHAR(255)
);

或者,如果你的列名包含连字符:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE example (
    `user-id` INT,
    `first-name` VARCHAR(50)
);

注意事项

  • 虽然在某些情况下使用反引号是有必要的,但过度使用可能会使SQL语句看起来杂乱无章,因此建议仅在必要时使用。
  • 在某些SQL方言(如PostgreSQL)中,使用双引号(")而不是反引号来引用标识符。
  • 当使用MySQL命令行工具时,你可能需要根据你的操作系统和MySQL的配置,使用特定的转义字符来在命令行中包含反引号。例如,在Windows命令行中,你可能需要使用`order`(注意外部的双引号用于命令行字符串的界定,内部的反引号用于SQL标识符的界定)。然而,在许多现代的IDE数据库管理工具中,这个问题通常会自动得到处理。

查询常数

注意

  • 在使用SELECT语句时,应尽量避免使用*来检索所有列,特别是当表中有大量列而你只需要其中几列时。这样做可以提高查询效率,减少数据传输量。
  • WHERE子句中使用的条件可以是任何有效的表达式,包括比较运算符(如=<><>等)、逻辑运算符(如ANDORNOT)等。
  • SQL是大小写不敏感的,但出于可读性和一致性考虑,推荐使用特定的命名约定(如关键字大写,表名和列名小写)。
  • 不同的数据库系统(如MySQL、SQL Server、Oracle等)可能在SQL方言上有所不同,但基本的SELECT语句在大多数系统中都是通用的。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql(基本的SELECT语句)
SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进每条命令以 ;
一个风轻云淡
2022/11/13
1.8K0
mysql(基本的SELECT语句)
基本的SELECT语句与显示表结构
一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。
timerring
2023/02/02
1.6K0
基本的SELECT语句与显示表结构
(四)基本的SELECT语句
注:如果distinct后面接了多列数据,那就会对后面所有列名的组合进行去重 ,而且,如果两列表长度不一致,会报错。
小点点
2022/12/12
6200
(四)基本的SELECT语句
第03章_基本的SELECT语句
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/07
2290
第03章_基本的SELECT语句
【mysql】基本的select语句
1. 列的别名 as:全称:alias(别名),可以省略 列的别名可以使用一对""引起来,不要使用''。 作用:重命名一个列 ;便于计算 紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。 AS 可以省略 建议别名简短,见名知意 举例 SELECT last_name AS name FROM employees; [在这里插入图片描述] SELECT last_name AS name, department_id "部门id" FROM emp
兮动人
2022/03/01
1.6K0
MySQL数据库,从入门到精通:第三篇——MySQL 数据库规范和基础查询语句
前言 MySQL是一种流行的关系型数据库管理系统,在各行各业广泛应用。本文致力于介绍MySQL数据库规范和基本SELECT语句,帮助读者了解如何更好的使用和管理MySQL数据库。
默 语
2024/11/20
1290
MySQL数据库,从入门到精通:第三篇——MySQL 数据库规范和基础查询语句
MYSQL基础查询语句
SELECT 查询还可以对常数进行查询。对的,就是在 SELECT 查询结果中增加一列固定的常数列。这列的取值是我们指定的,而不是从数据表中动态取出的。
一个风轻云淡
2024/05/10
3380
mysql数据库概念和基本语法(一)
键值型数据库通过 Key-Value 键值的方式来存储数据,其中 Key 和 Value 可以是简单的对象,也可以是复杂的对象。Key 作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤(比如 WHERE),如果你不知道去哪里找数据,就要遍历所有的键,这就会消耗大量的计算。 键值型数据库典型的使用场景是作为 内存缓存 。 Redis 是最流行的键值型数据库。
走在努力路上的自己
2024/05/06
1750
mysql数据库概念和基本语法(一)
如何SELECT进行单表查询,怎样使用WHERE结合各种运算符对数据进行过滤,如何使用ORDER BY 子句 查询
概述:使用数据库保存数据,我们对数据库的操作主要是增,删,改,查操作,其中从数据库中查询数据更为基础,使用不同的查询方式,具有不同的查询效率。
一头小山猪
2020/04/10
3.8K0
【Java 进阶篇】MySQL多表查询之子查询详解
在数据库查询中,多表查询是一项非常常见且重要的任务。它允许我们从多个相关联的表中检索和组合数据,以满足各种复杂的查询需求。在多表查询中,子查询是一种强大的工具,用于在查询中嵌套另一个查询。本文将深入探讨MySQL中的子查询,包括什么是子查询、如何编写子查询以及使用子查询解决的常见查询问题。
繁依Fanyi
2023/10/12
4010
【Java 进阶篇】MySQL多表查询之子查询详解
【MySQL】02_子查询与多表查询
指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。
鸡先生
2022/10/29
2.8K0
【MySQL】02_子查询与多表查询
MySQL
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
闲花手札
2023/10/17
2760
MySql基础之DQL-数据查询语言
保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在SQL语句中使用一对``(着重号)引起来
冬天vs不冷
2025/01/21
1880
MySql基础之DQL-数据查询语言
MySQL基础
2、DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理 DB 3、SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言
OY
2022/03/17
2.6K0
MySQL基础
MySQL数据库,从入门到精通:第六篇——全面掌握MySQL多表查询技巧
MySQL数据库,从入门到精通:第一篇——MySQL概念详解 MySQL数据库,从入门到精通:第二篇——MySQL关系型数据库与非关系型数据库的比较 MySQL数据库,从入门到精通:第三篇——MySQL 数据库规范和基础查询语句 MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法 MySQL数据库,从入门到精通:第五篇——MySQL排序和分页 MySQL数据库,从入门到精通:第六篇——全面掌握MySQL多表查询技巧 MySQL数据库,从入门到精通:第七篇——MySQL单行函数应用 MySQL数据库,从入门到精通:第八篇——MySQL聚合函数实战探究:优化SELECT过程助力高效查询 MySQL数据库,从入门到精通:第九篇——MySQL子查询 MySQL数据库,从入门到精通:第十篇——MySQL表创建和管理指南 MySQL数据库,从入门到精通:第十一篇——MySQL数据处理之增删改指南 MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解 MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解 MySQL数据库,从入门到精通:第十四篇——MySQL视图详解 MySQL数据库,从入门到精通:第十五篇——MySQL存储过程和函数详解 MySQL数据库,从入门到精通:第十六篇——MySQL变量、流程控制和游标详解 MySQL数据库,从入门到精通:第十七篇——MySQL 触发器的使用方法及注意事项 MySQL数据库,从入门到精通:第十八篇——MySQL 8新特性全解析
默 语
2024/11/20
1920
MySQL数据库,从入门到精通:第六篇——全面掌握MySQL多表查询技巧
MySQL基础学习笔记
1.基础概念 1.1 相关概念与常用命令 数据库的好处 1.持久化数据到本地 2.可以实现结构化查询,方便管理 常见概念 1、DB:数据库,保存一组有组织的数据的容器 2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据 3、SQL: 结构化查询语言,用于和DBMS通信的语言 数据库存储数据的特点 1、将数据放到表中,表再放到库中 2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。 3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中“
素履coder
2022/02/17
1.1K0
【数据库设计和SQL基础语法】--查询数据--聚合函数
聚合函数是一类在数据库中用于对多个行进行计算并返回单个结果的函数。它们能够对数据进行汇总、统计和计算,常用于提取有关数据集的摘要信息。聚合函数在 SQL 查询中广泛应用,包括统计总数、平均值、最大值、最小值等。
喵叔
2023/12/18
8830
MySQL系列专题(2)-MySQL的SQL语句和高级特性
一、 DML 操作【重点】 ---- 1.1 新增(INSERT) INSERT INTO 表名(列 1,列 2,列 3…) VALUES(值 1,值 2,值 3…); 1.1.1 添加一条信息 #添加一条工作岗位信息 INSERT INTO t_jobs(JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY) VALUES('JAVA_Le','JAVA_Lecturer',2500,9000); #添加一条员工信息 INSERT INTO `t_employees` (EM
用户4919348
2022/01/06
3.8K0
MySQL系列专题(2)-MySQL的SQL语句和高级特性
MySQL学习笔记【基础篇】
1、DB:数据库,保存一组有组织的数据的容器 2、DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据 3、SQL:结构化查询语言,用于和DBMS通信的语言
_DIY
2020/08/19
2.2K0
MySQL学习笔记【基础篇】
学习python第三天数据库day2
day01回顾: 数据库: 定义:存储数据的仓库(database,简称db) 常用的数据库对象有哪些? 1).数据表(table) ***** 2).视图(view) 3).索引(index) 4).序列(sequence) 主流的关系型数据库有哪些?(枚举) oracle、mysql、sqlserver、db2... 谈一谈oracle和mysql的区别? oracle: 1).收费的(贵) 2).数据的存储量大,安全性高、效率比较快 mysql: 1).免费 2).数据的存储量小(相对而言的),安全系数以及效率方面较低(相对而言的) sql:structure query language(结构化查询语言) 分类: DDL:结构层面的操作,自动提交,无法回滚 比较强硬 包括的常用的操作如下: 建表、删表、修改表、清空表 --> 总结:结构发生变化了,都是ddl操作 建表的格式: create table 表名( 列名1 数据类型(长度), 列名2 数据类型(长度), ... 列名n 数据类型(长度) ); 建完表格之后我们可以使用desc关键字去查看表结构, desc关键字的使用如下: desc 表名; DML:数据层面的操作:不会自动提交,可以回滚比较柔和 包括的常用的操作如下: 增加数据(insert into ...) 删除数据(delete from 表名 where ...) 修改数据(update 表名 set 列名1 = 值1,列名2 = 值2,... where ...) 查询数据(select ... from 表名) 总结: 对于删除和修改数据而言,一般情况下都需要配合where子句进行相应的操作,否则会出现全删或者全改的问题!! DCL: 两个关键字:commit(提交)、rollback(回滚) day02(上午): 出题思考如何实现? 1).查询公司员工的编号,姓名,薪资,奖金率以及月收入? 以下代码有问题:因为有null值参与了算数运算,导致结果直接为null了,出现了与现实不符的情况!! select employee_id,last_name,salary,commission_pct,salary + salary * commission_pct from employees; 使用去空置换函数:nvl(m,n): 执行过程如下: 如果m得到的内容不为null,那么就拿它本身参与运算 如果m得到的内容为null,那么就用n的值参与运算 重构以上代码: select employee_id,last_name,salary,commission_pct,salary + salary * nvl(commission_pct,0) from employees; sql中的别名: 概念:使用别名的思想,可以让显示变得更加的优雅、简洁!并且可以优化我们的代码... 起别名有三种方式: 方式一: select employee_id,last_name,salary,commission_pct,salary + salary * nvl(commission_pct,0) as month_sal from employees; 方式二: select employee_id,last_name,salary,commission_pct,salary + salary * nvl(commission_pct,0) month_sal from employees; 方式三: select employee_id,last_name,salary,commission_pct,salary + salary * nvl(commission_pct,0) "month_sal" from employees; 比较理解以上的三种方式: 方式二可以认为是方式一的简化版,它们定义的别名在查询显示的时候,都是以全大写来进行显示 如果想要控制显示的大小写(效果),我们可以使用方式三来完成;我们可以认为方式三才是最实用的方式 where子句: 在查询数据的时候,很多情况下我们需要过滤掉一些不需要的内容,所以需要用到where子句来实现 记住: where紧随from 运算符: 分类: 1).比较运算符: 范围: >大于 >=大于等于 <小于 <=小于等于 =等于 <>不等于(还可以这么写:!=) 案例阶段: ①.查询员工号为200的员工的姓名、薪资和入职时间? select last_name,salary,hire_date from employees where employee_id = 200; ②.查询工资大于80
hankleo
2020/09/16
3850
相关推荐
mysql(基本的SELECT语句)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验