【MySQL】基本SELECT语句与运算符

news/2024/11/29 22:39:34/

一、最基本的SELECT语句

1、基本结构
SELECT 字段1,字段2 FROM 表名;

select * from table_name;
*表示表中的所有字段(或者列)

2、列的别名、去重

  • 列的别名:
    假设我们要从t_employee表中查询employee_id并给他一个别名

    • 使用as关键字:SELECT employee_id AS emp_id FROM t_employee;
    • 使用空格:SELECT employee_id emp_id FROM t_employee;
    • 使用双引号:SELECT employee_id AS "emp id" FROM t_employee;,假如别名中存在空格,我们就需要用到双引号了
  • 去重:使用DISTINCT关键字,假设我们要从员工表中看公司多少部门
    SELECT DISTINCT department_id FROM t_employee;

3、空值参与计算,结果字段也会为null
解决方案:引入IFNULL
空值:null
数据库中null不等于0和’ ’

4、着重号
如果你的表名或者字段与保留字、数据库系统或者常用方法重名,我们在执行SELECT语句进行查询时就要使用着重号进行规避。假设有一个表的名字叫ORDER,这与排序关键字重名了

SELECT * FROM `ORDER`;

5、查询常数
如果我们想在查询语句的结果集的每一行都额外展示某些固定内容,就可以使用查询常数了

SELECT '十年设置的查询常数',employee_id,employee_name 
FROM t_employee;

6、显示表结构:使用DESCRIBE或者DESC,查看创建表时各个字段的详细信息

DESCRIBE t_employee;

7、使用Where过滤
想要根据某些条件查询指定数据,可以使用WHERE关键字,将其声明在FROM关键字后面

SELECT * 
FROM t_employee
WHERE employee_id = 'decade001';

二、SQL中运算符的使用

1、算数运算符
包含加+ 减- 乘* 除/(或者使用DIV) 取模%(或者使用MOD)

2、比较运算符

  • 比较运算符用来比较表达式左边和右边的操作数,结果为真返回1,结果为假返回0
  • 等于判断:=
    • 如果数值和字符串进行比较,会对字符串做一个隐式转换,字符串转换不成功,将它的值视作0,两边都是字符串时就正常比较
    • 只要有null参与判断,结果就为null,所以当我们想使用WHERE关键字去筛选某个字段为空值的数据时,不能使用WHERE condition = NULL,而是使用WHERE condition IS NULL或者下面的安全等于
  • 安全等于:<=>,它的作用和等于类似,但是区别在于它可以对空值NULL做一个判断
  • 不等于:<>或者!=,大于>,大于等于>=,小于等于<=,小于<
  • 关键字:除了上面的运算符之外,还有一些关键字供我们进行运算
    • 判断是否为NULL:WHERE 字段 IS NULLWHERE ISNULL(字段)WHERE 字段 IS NOT NULL(使用WHERE NOT 字段 <=> NULL也可以)
    • 最小和最大:SELECT LEAST(a1, a2, a3) FROM ...SELECT GREATEST(a1, a2, a3) FROM ...,字符就是按照字段顺序比,数值就是比大小
    • 在某个区间内:WHERE 条件字段 BETWEEN 边界值1 AND 边界值2,它会包含边界值,如果想筛选区间之外的,只需要在BETWEEN前面加上NOT即可
    • 判断是否在列表中:INNOT IN,例如SELECT * FROM t_test WHERE 字段 IN (a1, a2, a3);SELECT * FROM t_test WHERE 字段 NOT IN (a1, a2, a3);
    • 模糊查询:LIKE
      • %:表示不确定个数的字符,可能是一个或多个。例如我们想查询某个名字包含a的人员的信息,那么对应的语句就是SELECT * FROM t_test WHERE name LIKE '%a%';,如果是a%就代表以a开头的模糊匹配,如果是%a就是以a结尾的模糊匹配
      • _:表示一个不确定的字符,如果我们想查询名字的第二位是a的人员的信息,那么对应的语句就是SELECT * FROM t_test WHERE name LIKE '_a%';,以此类推,可以限定a所在的位置
      • \:转义字符,假如我们想查询名字的第二位是_,第三位是a的人员的信息,那么对应的语句就是SELECT * FROM t_test WHERE name LIKE '_\_a%';,或者SELECT * FROM t_test WHERE name LIKE '_$_a%' ESCAPE '$';(告诉系统$在这里起转义字符的作用)
    • 正则表达式:REGEXP和RLIKE

3、逻辑运算符

  • 逻辑非:NOT或 !
  • 逻辑与:AND或 &&,注意AND的优先级高于OR
  • 逻辑或:OR或 ||
  • 逻辑异或:XOR,表达式左右两边一个条件为真一个条件为假,例如SELECT * FROM t_test WHERE t_id > 50 XOR salary < 10000;,这样就会返回id大于50且工资大于等于10000,或者id小于等于50且工资小于10000的人员信息

4、位运算符
位运算符在SQL不常用,我们只需要简单了解用法即可
位运算会先将操作数变成二进制数,然后进行位运算,最后再将计算结果从二进制数变回十进制数

|:按位或,A|B中,二进制相同位只要有一个为1时就为1
&:按位与,A&B中,二进制相同位如果都为1时才为1
^:按位异或,A^B中,二进制相同位如果都为1或者都为0,异或之后该位就为0,只有相同位上的数不同时才会为1
~:按位取反,1就变0,0就变1
<<:按位左移,将二进制整体向左移,然后用0来补空出来的位置
>>:按位右移,将二进制数整体向右移

-- 5变成二进制0101
-- 1变成二进制0001
select 5 & 1 FROM DUAL; --1
select 5 | 1 FROM DUAL; --5
select 5 ^ 1 FROM DUAL; --4
select 5 & ~1 FROM DUAL; --4
select 5 << 1 FROM DUAL;  --10
select 5 >> 1 FROM DUAL; --2

如有错误,欢迎指正!!!


http://www.ppmy.cn/news/28331.html

相关文章

前端基础之HTML扫盲

文章目录一. 第一个HTML程序1. 创建一个HTML文件并运行2. HTML的基本结构二. HTML常见标签1. 注释标签2. 标题标签3. 段落标签4. 换行标签5. 格式化标签6. 图片标签7. 超链接标签8. 表格标签9. 列表标签10. 表单标签10.1 input标签10.2 select标签10.3 textarea标签11. 无语义标…

【C++】类和对象的六个默认成员函数

类的6个默认成员函数构造函数概念特性析构函数概念特性拷贝构造函数概念特征拷贝构造函数典型调用场景&#xff1a;赋值运算符重载运算符重载赋值运算符重载取地址及const取地址操作符重载类的6个默认成员函数 到底什么是类的6个默认成员函数呢&#xff1f;相信大家一定对此怀…

Centos7 安装jenkins java1.8版本

1. 首先安装好jdk1.8 2. 安装jenkins 命令&#xff1a;(可以在根目录&#xff0c;创建文件夹 mkdir home 然后在此文件夹下操作 cd /home) a 清华源&#xff0c;获取jenkins安装包 wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.346-1.1.noarch.rp…

决策树、随机森林、极端随机树(ERT)

声明&#xff1a;本文仅为个人学习记录所用&#xff0c;参考较多&#xff0c;如有侵权&#xff0c;联系删除 决策树 通俗来说&#xff0c;决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友&#xff0c;于是有了下面的对话&#xff1a; 女儿&#x…

信号类型(雷达)——脉冲雷达(三)

系列文章目录 《信号类型&#xff08;雷达通信&#xff09;》 《信号类型&#xff08;雷达&#xff09;——雷达波形认识&#xff08;一&#xff09;》 《信号类型&#xff08;雷达&#xff09;——连续波雷达&#xff08;二&#xff09;》 文章目录 前言 一、相参雷达 1…

基础数据结构--线段树(Python版本)

文章目录前言特点操作数据存储updateLazy下移查询实现前言 月末了&#xff0c;划个水&#xff0c;赶一下指标&#xff08;更新一些活跃值&#xff0c;狗头&#xff09; 本文主要是关于线段树的内容。这个线段树的话&#xff0c;主要是适合求解我们一个数组的一些区间的问题&am…

数据结构---单链表

专栏&#xff1a;数据结构 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;从零开始&#xff0c;数据结构&#xff01;&#xff01; 单链表前言顺序表的缺陷链表的概念以及结构链表接口实现打印链表中的元素SLTPrintphead->next!NULL和phead!NULL的区别开辟空间SLTNewNod…

Codeforces Round#853 div2 A-C

Codeforces Round#853 div2 A-C 等了很久终于迎来了一场cf比赛&#xff0c;白天出去玩了一圈&#xff0c;晚上回来打比赛&#xff0c;这次只出了A,B题。C题思路很巧妙&#xff0c;赛时没做出来&#xff0c;看了大佬学习到了&#xff0c;还是很不错。 A.Serval and Mocha’s A…