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

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 【MySQL】基本SELECT语句与运算符,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、最基本的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 BETWEEN 边界值1 AND 边界值2即可
    • 判断是否在列表中: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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136726.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!