当前位置:主页 > 查看内容

MySQL之查询基础

发布时间:2021-07-05 00:00| 位朋友查看

简介:前面章节我们介绍表的建立、删除和更新。这一章节我们介绍SELECT语句。 目录 1.SELECT基础语句 选择列名 选择全部列使用SELECT *语句 为列设置别名 查询常数 从结果中删除重复的行 WHERE语句来选择记录 注释书写 2.算数运算符和比较运算符 算数运算符 比较运……

前面章节我们介绍表的建立、删除和更新。这一章节我们介绍SELECT语句。

1.SELECT基础语句

  • 选择列名

SELECT <列名>..... FROM<表名>;

这里我们使用SELECT语句对数据库操作一下,选择如下三列,可以看出选择出的三列顺序和SELECT选择结果中一致。

SELECT product_id,product_name,purchase_price
FROM product;

在这里插入图片描述

  • 选择全部列,使用SELECT *语句

SELECT * FROM product;

运行之后就会选择出所有列。
在这里插入图片描述

  • 为列设置别名

使用‘AS’关键字可以为列设置别名。如果需要设置中文别名,则需要用双引号(单引号不行)引起来。

 SELECT product_id AS id,product_name AS name,purchase_price AS price
 FROM product;

在这里插入图片描述
使用中文名称。

 SELECT product_id AS "商品编号",product_name AS "商品名称",purchase_price AS "进货单价"
 FROM product;

在这里插入图片描述

  • 查询常数

查询常数:是指可以查询一些常数,比如字符串常数,数字常数,日期常数,可能这些数据数据库中没有。

SELECT '商品' AS string, 38 AS number, '2009-02-24' AS date,
       product_id, product_name
  FROM product;

可以看出,被选择的常数作为了一列数据展示了出来,而这些数据是我们选择的,不是数据库中有的。
在这里插入图片描述

  • 从结果中删除重复的行

从上可知,在product_type这一列中含有重复的值,我们可以使用DISTINCT来去除重复值。
在这里插入图片描述

SELECT DISTINCT product_type FROM product;

这样就去除了重复的行。说明一下,如果某列中含有null空值,则NULL也会看成一类数据,所有的NULL会被合成为一条数据
在这里插入图片描述
合并空值NULL

SELECT DISTINCT purchase_price FROM product;

可看见,两个NULL变成了一个NULL。
在这里插入图片描述
我们也可选择多个列的组合,将重复的数据合并为一条数据。(这里的重复是指多个列的值都重复),且DISTINCT关键字只能用在第一个列名之前。

SELECT DISTINCT product_type,regist_date FROM product;

将product_type和regist_date同时重复的列合并。
在这里插入图片描述

  • WHERE语句来选择记录

SELECT每次选择都是选择一整列的数据,有些时候,我们并不需要每次都选择出所有的数据,大部分情况下都是取出满足“销售量大于500的商品”等某些条件的数据。这时候就需要WHERE语句来指定了,需说明的是,WHERE语句必须写在FROM句子之后,要不然会报错。

SELECT <列名> FROM <表名> WHERE <条件表达式>;

例如:从product中选择出商品种类为product_type为‘衣服’的记录。

 SELECT * FROM product WHERE product_type="衣服";

在这里插入图片描述

  • 注释书写

说真的,我还真不会写注释,我还是介绍一下吧

一行注释
--书写在“--”之后,并且只能在同一行
多行注释
/*可
以
跨
多
行
*/

2.算数运算符和比较运算符

  • 算数运算符

含义运算符
加法运算+
减法运算-
乘法运算*
除法运算/

需要注意的是NULL值和其他值的加减乘除运算的结果都是NULL

  • 比较运算法

运算符含义
=和x相等
<>和x不等
>=大于等于x
>大于x
<=小于等于x
<小于x

例如:选择出销售单价大于1000日元的记录

SELECT product_name,product_type,sale_price 
FROM product 
WHERE sale_price>=1000;

在这里插入图片描述
例如:选择登记日期在2009年9月27日之前的记录

SELECT product_name,product_type,regist_date FROM product WHERE regist_date <'2009-09-27';

在这里插入图片描述
说明一下,在SQL中,使用(>=)或者(<=)作为查询条件时,一定要注意(<,>)和(=)符号位置不能颠倒,

算数运算法和比较运算法可以一起使用。例如:获取sale_price比purchase_price高出500元的商品信息。

SELECT product_name,sale_price,purchase_price FROM product WHERE sale_price-purchase_price >=500;

在这里插入图片描述

  • 对字符串使用不等号时的规则

我们先来创建一个表

--插入数据
CREATE TABLE Chars
(chr CHAR(3) NOT NULL,
PRIMARY KEY (chr));
--插入数据
START TRANSACTION;
INSERT INTO Chars VALUES ('1');
INSERT INTO Chars VALUES ('2');
INSERT INTO Chars VALUES ('3');
INSERT INTO Chars VALUES ('10');
INSERT INTO Chars VALUES ('11');
INSERT INTO Chars VALUES ('222');
COMMIT;

创建的是字符串类型的。
在这里插入图片描述

--选择出大于‘2’的数据SELECT语句
SELECT chr FROM Chars WHERE chr>'2';

在这里插入图片描述
是不是超级神奇,这里是对字符串进行比较,不是数据类型的数据,那么它们首先会对首字母进行比较,比如‘10’和‘11’它们首字母是‘1’都比2小,根据这些原理我们可以知道‘1-3’<‘1’ ‘3’>‘2-2’

  • 对NULL类型的数据不能使用比较运算符

我们product表中的purchase_price中存在空值,我们用比较运算法试一试

--选择出商品单价为2800的商品
SELECT product_name,purchase_price 
FROM product 
WHERE purchase_price=2800;

在这里插入图片描述

--选择出商品单价为不为2800的商品
SELECT product_name,purchase_price 
FROM product 
WHERE purchase_price <> 2800;

在这里插入图片描述
以上可知NULL类型都未被选中,可知NULL无法用比较运算法进行计算。如果需要选出NULL,需要用IS NULL或者IS NOT NULL

--选择为空的记录
SELECT product_name,purchase_price 
FROM product 
WHERE purchase_price IS NULL;

在这里插入图片描述

--选择不为空的记录
SELECT product_name,purchase_price 
FROM product 
WHERE purchase_price IS NOT NULL;

在这里插入图片描述

3.逻辑运算符

  • NOT运算符

NOT不能单独使用,必须和其他查询条件组合起来使用。

--这里我们使用NOT选择进口价格小于或等于1000元的商品
SELECT product_name,purchase_price 
FROM product 
WHERE NOT purchase_price > 1000;

在这里插入图片描述

  • AND运算符和OR运算符

AND是逻辑与的意思,OR为逻辑或的意思

--获取进口价格大于1000并且商品类型为厨房用具为‘厨房用具’
SELECT product_name,purchase_price 
FROM product 
WHERE  purchase_price > 1000 AND product_type="厨房用具";

在这里插入图片描述

--获取进口价格大于1000或者商品类型为厨房用具为‘厨房用具’
SELECT product_name,purchase_price 
FROM product 
WHERE  purchase_price > 1000 OR product_type="厨房用具";

在这里插入图片描述
其实有很多情况不止有两个条件,还会有三个,四个甚至更多,这时我们就需要用括号来选择哪些条件是一起的,哪些条件是分开的。

--选择‘商品种类为办公用品’,并且‘登记日期为2009年9月11日或者2009年9年20日’的商品
SELECT product_name,product_type,regist_date 
FROM product 
WHERE product_type='办公用品' AND regist_date = '2009-09-11' OR regist_date = '2009-09-20';

发现结果错了,因为计算机中AND优先计算,然后在计算OR
在这里插入图片描述
所以我们需要加上括号

SELECT product_name,product_type,regist_date 
FROM product
WHERE product_type='办公用品' 
AND  ( regist_date = '2009-09-11' 
OR regist_date = '2009-09-20' ) ;

在这里插入图片描述
其实在逻辑运算中,不止有1和0还有一种UNKOWN的值,NULL值不属于TRUE 也不属于FALSE,一考虑到NULL情况就会多变,所以我们一般尽量不使用NULL

参考资料

图书:《SQL基础教程》

;原文链接:https://blog.csdn.net/weixin_48077303/article/details/115691261
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:FastReport动态改变字体颜色 下一篇:没有了

推荐图文


随机推荐