当前位置: 首页 > article >正文

Mysql梳理3——基本的SELECT语句

3.1  SELECT

SELECT 1;  #没有任何子句
SELECT 9/2  #没有任何子句

3.2  SELECT...FROM

语法:

SELECT  标识选择哪些列  FROM  标识从哪个表选择

选择全部列:

SELECT *  FROM  departments;

注意:一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。使用通配符虽然可以节约输入层查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通配符的优势是,当不知道列的名称是,可以通过它获取他们。

3.2 列的别名

作用:重命名一个列

便于计算紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。 AS 可以省略,建议别名简短,见名知意

举例 SELECT department_id, location_id FROM departments;

SELECT last_name AS name, commission_pct comm FROM employees; 

3.3 去除重复行

默认情况下,查询会返回全部行,包括重复行。

  

SELECT DISTINCT department_id,salary FROM employees; 

1. DISTINCT 需要放到所有列名的前面,如果写成

SELECT salary, DISTINCT department_id FROM employees

会报错。

2. DISTINCT 其实是对后面所有列名的组合进行去重,你能看到最后的结果是 74 条,因为这 74 个部门id不同,都有 salary 这个属性值。

SELECT DISTINCT department_id FROM employees; 

能消除重复记录,但只能取一个字段,现在要同时取id,name这2个字段的值。

SELECT DISTINCT department_id,salary  FROM employees;

可以取多个字段,但只能消除这2个字段值全部相同的记录
所以用distinct达不到想要的效果,用group by可以解决这个问题

如果你想要看都有哪些不同的部门(department_id),只需要写DISTINCT department_id即可,后面不需要再加其他的列名了。

3.4 空值参与运算

所有运算符或列值遇到null值,运算的结果都为null

SELECT employee_id,salary,commission_pct, 
12 * salary * (1 + commission_pct) "annual_sal" FROM employees;

这里你一定要注意,在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长 度是空。而且,在 MySQL 里面,空值是占用空间的。

3.5  着重号

mysql> select * from order;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order' at line 1

mysql> select * from `order`;
+----------+------------+
| order_id | order_name |
+----------+------------+
|        1 | shkstart   |
|        2 | tomcat     |
|        3 | dubbo      |
+----------+------------+
3 rows in set (0.00 sec)

mysql> select * from `ORDER`;
+----------+------------+
| order_id | order_name |
+----------+------------+
|        1 | shkstart   |
|        2 | tomcat     |
|        3 | dubbo      |
+----------+------------+
3 rows in set (0.00 sec)

查询成功,我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在 SQL语句中使用一对``(着重号)引起来。

3.6  查询常数

SELECT 查询还可以对常数进行查询。

对的,就是在 SELECT 查询结果中增加一列固定的常数列。这列的取值是我们指定的,而不是从数据表中动态取出的。

你可能会问为什么我们还要对常数进行查询呢?

SQL 中的 SELECT 语法的确提供了这个功能,一般来说我们只从一个表中查询数据,通常不需要增加一个固定的常数列,但如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数。

比如说,我们想对 employees 数据表中的员工姓名进行查询,同时增加一列字段 corporation ,这个 字段固定值为“尚硅谷”,可以这样写:

4. 显示表结构 使用DESCRIBE 或 DESC 命令,表示表结构。 其中,各个字段的含义分别解释如下:

Field:表示字段名称。

Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。

Null:表示该列是否可以存储NULL值。

Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一 部分;MUL表示在列中某个给定值允许出现多次。

Default:表示该列是否有默认值,如果有,那么值是多少。 Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

SELECT  '尚硅谷'  as corporation, last_name FROM employees;

SELECT 字段1,字段2

FROM 表名

WHERE 过滤条件

使用WHERE 子句,将不满足条件的行过滤掉

WHERE子句紧随 FROM子句

SELECT employee_id, last_name, job_id, department_id

FROM employees

WHERE department_id = 90 ;

http://www.kler.cn/a/301769.html

相关文章:

  • hive数据迁移
  • C++实现图书管理系统(Qt C++ GUI界面版)
  • 2025年01月09日Github流行趋势
  • 【Ubuntu】 Ubuntu22.04搭建NFS服务
  • vulnhub靶场【DC系列】之7
  • [笔记] Jenkins 安装与配置全攻略:Ubuntu 从零开始搭建持续集成环境
  • 【Linux】Linux常见指令以及权限理解(下)
  • 【PyTorch单点知识】像素洗牌层:torch.nn.PixelShuffle在超分辨率中的作用说明
  • centos模式切换
  • 【系统架构设计师】原型模式详解
  • Vue2 和 Vue3 有什么区别?
  • Windows系统安装R语言及RStudio、RTools
  • Vue3+TS项目给el-button统一封装一个点击后转圈效果的钩子函数按钮防抖
  • DFS算法专题(四)——综合练习【含矩阵回溯】【含3道力扣困难级别算法题】
  • 数据库锁有哪些?什么是死锁?
  • Java开发安全及防护
  • C语言手撕归并——递归与非递归实现(附动画及源码)
  • TS axios封装
  • FinOps原则:云计算成本管理的关键
  • Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用增强扩展(text2sql)
  • 高教社杯数模竞赛特辑论文篇-2015年D题:众筹筑屋规划方案设计
  • AI教你学Python 第1天:Python简介与环境配置
  • Python和MATLAB及C++信噪比导图(算法模型)
  • 解开密码锁的最少次数
  • cesium.js 入门到精通(1)
  • 高级java每日一道面试题-2024年9月08日-前端篇-JS的执行顺序是什么样的?