基本的SELECT语句与显示表结构

news2024/11/24 14:42:46

文章目录

    • 基本的SELECT语句
      • SELECT...
      • SELECT ... FROM
      • 列的别名
      • 去除重复行
      • 空值参与运算
      • 着重号
      • 查询常数(查询同时添加常数字段)
    • 显示表结构
    • 过滤数据
    • 练习题

基本的SELECT语句

SELECT…

SELECT 1+1, 2+2;# 直接这样写相当于下面这句
SELECT 1+1, 2+2 FROM DUAL; # 这里DUAL:伪表

SELECT … FROM

语法:

SELECT 标识选择哪些字段()
FROM 标识从哪个表中选择

例如选择全部列:

SELECT *
FROM departments;

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

在生产环境下,不推荐直接使用SELECT * 进行查询

选择特定的列:

SELECT department_id, location_id
FROM departments;

MySQL中的SQL语句是不区分大小写的,因此SELECT和select的作用是相同的,但是习惯将关键字大写、数据列和表名小写

列的别名

重命名一个列(alias 别名),便于计算。注意,重命名之后结果集中的列会显示别名而非原名。

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

举例

SELECT last_name "Name", salary*12 "Annual Salary"
FROM employees;

去除重复行

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

SELECT department_id
FROM employees;

在SELECT语句中使用关键字DISTINCT去除重复行

SELECT DISTINCT department_id
FROM employees;

针对于:

SELECT DISTINCT department_id,salary
FROM employees;

注意:

  • DISTINCT 需要放到所有列名的前面,如果写成SELECT salary, DISTINCT department_id
    FROM employees 会报错。
  • DISTINCT 其实是对后面所有列名的组合进行去重,如果你想要看都有哪些不同的部门(department_id),只需要写DISTINCT department_id 即可,后面不需要再加其他的列名了。

空值参与运算

所有运算符或列值遇到null值,运算的结果都为null。当然可以采用IFNULL作为其解决方案。

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

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

着重号

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

# 错误
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`;

查询常数(查询同时添加常数字段)

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

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

SELECT 'timering' as corporation, last_name
FROM employees;

显示表结构

使用DESCRIBE 或 DESC 命令,表示表结构。

DESCRIBE employees;DESC employees;
mysql> desc employees;
+----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| employee_id | int(6) | NO | PRI | 0 | |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(25) | NO | | NULL | |
| email | varchar(25) | NO | UNI | NULL | |
| phone_number | varchar(20) | YES | | NULL | |
| hire_date | date | NO | | NULL | |
| job_id | varchar(10) | NO | MUL | NULL | |
| salary | double(8,2) | YES | | NULL | |
| commission_pct | double(2,2) | YES | | NULL | |
| manager_id | int(6) | YES | MUL | NULL | |
| department_id | int(4) | YES | MUL | NULL | |
+----------------+-------------+------+-----+---------+-------+
11 rows in set (0.00 sec)

其中,各个字段的含义分别解释如下:

  • Field:表示字段名称。
  • Type:表示字段类型,这里 barcodegoodsname 是文本型的,price 是整数类型的。
  • Null:表示该列是否可以存储NULL值。
  • Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。
  • Default:表示该列是否有默认值,如果有,那么值是多少。
  • Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

过滤数据

SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件
  • 使用WHERE 子句,将不满足条件的行过滤掉
  • WHERE子句紧随 FROM子句

举例

SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;

练习题

1.查询员工12个月的工资总和,并起别名为ANNUAL SALARY

基本工资

SELECT employee_id, last_name, salary * 12 "ANNUAL SALARY"
FROM employees;

加权工资

SELECT employee_id, last_name, salary * 12 * ( 1 + IFNULL(commission_pct,0)) "ANNUAL SALARY"
FROM employees;

2.查询employees表中去除重复的job_id以后的数据

SELECT DISTINCT job_id
FROM employees;

3.查询工资大于12000的员工姓名和工资

SELECT first_name, last_name, salary
FROM employees
WHERE salary > 12000;

4.查询员工号为176的员工的姓名和部门号

SELECT first_name, last_name, department_id
FROM employees
WHERE employee_id = 176;

5.显示表 departments 的结构,并查询其中的全部数据

DESC departments;
SELECT * FROM departments;

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

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

相关文章

【云攻防系列】从攻击者视角聊聊K8S集群安全(上)

前言 作为云原生管理与编排系统的代表,Kubernetes(简称K8S)正受到越来越多的关注,有报告[1]显示,96% 的组织正在使用或评估 K8S,其在生产环境下的市场占有率可见一斑。 K8S 的功能十分强大,其…

day38【代码随想录】动态规划之斐波那契数、爬楼梯、使用最小花费爬楼梯

文章目录前言一、斐波那契数(力扣509)二、爬楼梯(力扣70)三、使用最小花费爬楼梯(力扣746)总结前言 1、斐波那契数 2、爬楼梯 3、使用最小花费爬楼梯 一、斐波那契数(力扣509) 思路…

详解C语言预处理

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C/C】 本文目录程序的翻译环境和执行环境翻译环境(C语言程序的编译链接)执行(运行)环境…

扩展Linux根目录磁盘空间

问题:如果一开始创建虚拟机,挂载给虚拟机根目录(/)的磁盘空间太小了,所以磁盘空间很快就会填满。如果根目录的磁盘空间占用超过90%,会导致无法再新安装软件。 查看根目录磁盘空间: 可以--右键…

导入若依项目数据库脚本到mysql数据库

使用DBeaver工具连接本地mysql数据库 在之前的文章中,已经介绍过,怎么样去寻找某款软件的替代软件了,如果不知道怎么找的,可以再看看之前的文章:为大家介绍一个我常用的搜索同类替代软件的网站 大家都知道,…

day18集合

1.Map集合 1.1Map集合概述和特点【理解】 Map集合概述 interface Map<K,V> K&#xff1a;键的类型&#xff1b;V&#xff1a;值的类型Map集合的特点 双列集合,一个键对应一个值键不可以重复,值可以重复 Map集合的基本使用 public class MapDemo01 {public static void…

Linux常用命令——trap命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) trap 指定在接收到信号后将要采取的动作 补充说明 trap命令用于指定在接收到信号后将要采取的动作&#xff0c;常见的用途是在脚本程序被中断时完成清理工作。当shell接收到sigspec指定的信号时&#xff0c;ar…

数据类型(个人学习笔记)

这里写自定义目录标题数据类型浮点型数据浮点型常量浮点型变量字符串数据字符串型常量混合运算与printf()printf模型进制转换数据类型 常量&#xff1a;整形、实型&#xff08;浮点&#xff09;、字符型和字符串型 变量&#xff1a;变量名、变量值 整型数据 define 直接将字…

Windows 服务器刷题(带答案)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.刷题 前言 本章将会讲解Windows服务器刷题 一.刷题 1.[多选题]windows …

一编文章就让你明白什么是ES6

一、ES6 简介 1.什么是 ES6 ? ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。 ES6 实际上是一个泛指&#xff0c;泛指 ES2015 及后续的版本。 2.为什么使用 ES6 ? 每一次标准的诞生都意味着语言的完善&#xff0c;功能的加强。…

卷积神经网络-猫狗识别(附源码)

一&#xff0c;项目描述该项目将使用卷积神经网络算法&#xff0c;识别图片中的动物是猫还是狗数据集地址&#xff1a;https://momodel.cn/explore/5efc77dbc018c95e69fb2a81?typedataset其中&#xff0c;训练用的图片数据集在 dogs_cats/data 文件夹下&#xff0c;整个数据集…

计算机视觉Computer Vision课程学习笔记六之Fourier Analysis傅里叶分析

第六章 傅里叶分析 处理图像频率信息 图像的频率是表征图像中灰度变化剧烈程度的指标&#xff0c;是灰度在平面空间上的梯度。 从纯粹的数学意义上看&#xff0c;傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看&#xff0c;傅立叶变换是将图像从空间域转换…

LinkedList链表知识点概括(一)

作者&#xff1a;爱塔居的博客_CSDN博客-JavaSE,数据结构领域博主 专栏&#xff1a;数据结构 作者简介&#xff1a;大三学生&#xff0c;希望2023年迎来更优秀的自己&#xff01;希望跟大家一同进步~ 文章目录 前言 一、链表的基本概念 二、面试题实战 前言 顺序表/ArrayList:…

vue2中keepalive手动清理内存,存在子路由内存无法回收的问题

起因 近期客户经常反馈系统崩溃的问题&#xff0c;尤其是在下午最频繁&#xff0c;经过自己的自测&#xff0c;发现系统tab关闭后内存并没有回收掉&#xff0c;目前我已经处理了&#xff0c;tab页签关闭后&#xff0c;手动清理keep-alive内的缓存&#xff0c;应该不存在内存泄…

Qt+C++自定义标题栏最大最小化关闭堆叠切换美化

程序示例精选 QtC自定义标题栏最大最小化关闭堆叠切换美化 如需安装运行环境或远程调试&#xff0c;见文章底部个人微信名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<QtC自定义标题栏最大最小化关闭堆叠切换美化>>编写代码&#xff0c…

这几个办公技巧竟还不知道

技巧一&#xff1a;压缩文件大小 我们可以通过压缩文件大小的方法来减少电脑内存&#xff0c;正好Windows就有自带的压缩包可以操作。 首先我们可以用鼠标右击文件&#xff0c;选择“添加到压缩文件”&#xff0c;最后系统即可帮我们自动压缩文件大小。技巧二&#xff1a;定时清…

C++封装对MySQL的基本操作

1.环境搭建在这里&#xff0c;我将使用vscode来搭建MySQL的编程环境。首先&#xff0c;下载MySQL&#xff0c;配置好系统环境变量并运行MySQL数据库。接着&#xff0c;vscode扩展中搜索并下载MySQL与MySQL Syntax插件。安装完成后&#xff0c;在资源管理器的MySQL栏中点击号&am…

从0到1完成一个Node后端(express)项目(五、session、token)

往期 从0到1完成一个Node后端&#xff08;express&#xff09;项目&#xff08;一、初始化项目、安装nodemon&#xff09; 从0到1完成一个Node后端&#xff08;express&#xff09;项目&#xff08;二、下载数据库、navicat、express连接数据库&#xff09; 从0到1完成一个Nod…

“暗黑天使”降临:DarkAngels勒索病毒全解密

恶意文件分析 恶意文件描述 近期&#xff0c;深信服深盾终端实验室在运营工作中发现了一种 ELF 格式的勒索软件&#xff0c;该勒索软件近期开始出现&#xff0c;其释放的勒索信中的 Onion 链接似乎已关闭&#xff0c;这表明该勒索软件可能仍在开发中。 经过分析&#xff0c;…

AtCoder Beginner Contest 281 (A-F,口胡G)青大acmer 日常vp

A - Count Down 输出小于等于nnn的数 代码 B - Sandwich Number 题意 问字符串是否是第一个和最后一个字符是大小写&#xff0c;中间的字符是100000−99999100000-99999100000−99999之间的数字。 暴力模拟即可&#xff0c;需要注意的例子是A0100000AA0100000AA0100000A 代码 …