【长期更新】【SQL数据库】MYSQL数据库学习笔记第二章

本文是MySQL数据库学习笔记的第二章,主要介绍了查询基础,包括SELECT语句的使用,列的查询,设置列别名,常数查询,去除重复行,WHERE子句的选择条件,以及注释的书写方法。此外,还讲解了算数运算符、比较运算符和逻辑运算符的用法,涉及NULL值的处理。
摘要由CSDN通过智能技术生成

第二章 查询基础

2-1 SELECT语句基础

列的查询

从表中选取数据时可以使用select语句,通过select语句查询并选取出必要数据的过程称为匹配查询查询(query),基本语法如下:

SELECT <列名1>,<列名2>,<列名3>......
	FROM <表名>;

该select语句包含了select 和 from 两个子句子句是SQL语句的组成要素,是以select或者from等作为起始的短语

查询出表中所有的列

要想查询出全部列时,可以使用代表所有列的星号(*)

SELECT *
	FROM <表名>;

但是,如果使用星号的话,就无法设定列的显示顺序了,这时就会按照CREATE TABLE语句定义时的列的顺序显示

为列设定别名

SQL语句可以使用AS关键字为列设定别名,别名限制会小很多,甚至可以使用中文,使用中文的时候要用**双引号(“呆”)**这样括起来,注意不是单引号

eg:

SELECT product_id AS id,
	   product_name AS "名字"
	FROM Product;

常数的查询

SELECT子句中不仅可以书写列名,还可以书写常数。

SELECT '商品' AS string,38 AS number,'2020-5-29' AS date
	product_id,product_name
  FROM Product;

其中,商品是字符串常数,38是数字常数,‘2020-5-29’是日期常数,它们将与product_id列与product_name列一起被查询出来

从结果中删除重复行

在一张列表中,如果我们只关心这堆数据中有多少个不同的类型,而不关心具体每个类型有多少个数据,我们可以对类型那列的数据通过删除重复数据的方式,得到这堆数据中的全部类型。

想要删除一列中的重复行我们可以使用select子句中的DISTINCT实现。例如:

SELECT DISTINCT product_type
	FROM Product;

注意:在使用SELECT子句中的DISTINCT删除重复行时,NULL也会被视为一类数据,如果NULL类型存在于多行中,那么它也会被合并为一项。

举例,对于Product表输入SQL语句:

在这里插入图片描述

在这里插入图片描述

当然,也可以多两条列同时使用DISTINCT去除重复行,但是,DISTINCT子句只能加在第一个要去除重复行的列名前

SELECT DISTINCT product_type,regist_date
	FROM Product;

根据WHERE语句来选择记录

SELECT语句通过WHERE子句来指定查询数据的条件,在WHERE子句中可以指定类似“商品种类为衣服”,“销售单价要在1000美元以上”等各种条件,通过执行包含有这些条件的SELECT语句,就可以查询出只符合该条件的记录了。SELECT语句中使用WHERE语句的语法如下:

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

eg:还是上面的product表,我们要从里面选出所有product_type为衣服类型的product_name

SELECT product_name,product_type
FROM Product
WHERE product_type='衣服';

注意,SQL中子句的书写顺序是固定的,不能随意更改WHERE子句就必须跟在FROM子句中,随意调整书写顺序可能会造成执行错误

注释的书写方法

注释的书写方法有两种,一种是1行注释,另一种是多行注释

一行注释:

在SQL语句中使用“–(注释)”来注释,但只能注释一行

多行注释:

在SQL语句中使用“/*"和”*/"来进行多行注释

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

算数运算符

SQL四则运算的主要运算符

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

SQL运算中可以使用括号()来表示运算的优先级

举例:把上面的product表中的sale_price各个商品单价乘2倍,然后以“sale_price_x2”列的形式读取出来

SELECT product_name,sale_price,
	sale_price*2 AS "sale_price_x2"
	FROM Product;

需要注意NULL

所有包含NULL的运算,结果肯定是NULL,即使是NULL/0这样(5/0会报错),结果也是NULL,但是注意NULL和0不同,5+NULL=NULL而不是5

比较运算符

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

关于比较运算符有以下几点需要注意:

  • 比较运算符中,不等号一定要写到等号的前面

  • 当使用比较运算符比较字符串时,SQL是使用ASCII码对字符串每个字节逐一比较,SQL比较日期也是如此,在字符串比较中,只要两个字符串有一位不同比较出了大小,那么这两个字符串之后的字节都将不会比较,要注意“2”和2不一样,一个是数字常数,一个是字符串常数

  • 不能对NULL使用比较运算符,在对所有数据类型进行比较的过程中,NULL数据类型不会参与比较,最终也不会输出NULL类型的数据,但是可以通过IS NULLIS NOT NULL来选出NULL类型的数据

    举例:如图,第一张图中product_name为空,第二张图中product_name有了含有NULL类型的数据

    在这里插入图片描述

    在这里插入图片描述

2-3 逻辑运算符

三种基本的逻辑运算符

运算符含义
NOT对条件取“非”操作,用来否定某一个条件
AND在两侧查询条件都成立时整个查询条件才成立(AND运算符又被称为逻辑积)
OR在两侧查询条件有一个成立时整个查询条件就成立(OR运算符又被称为逻辑和)

需要注意的是:

  • NOT用来否定某一个条件,但最好不要滥用,会降低代码易读性

  • AND的优先级要高于OR,当两个逻辑运算符同时存在时,会先优先执行AND两侧条件,再执行满足AND两侧条件的结果和OR另一侧条件进行逻辑运算,如果想优先执行OR两侧运算,可以使用括号()把OR两侧条件括起来

  • SQL除了逻辑真和逻辑假以外还有另一种针对NULL类型的逻辑值—不确定(UNKNOWN),这种类型的逻辑运算被称为三值逻辑,NULL不能使用逻辑运算或者算术运算符和比较运算符得出,只能通过IS NULLIS NOT NULL得出

    语法举例:提取出product表中,regist_date是2009-09-11或者2009–09-20并且是办公用品类型的product_name

    SELECT product_name,product_type,regist_date
    FROM Product
    WHERE product_type='办公用品'
    AND (regist_date='2009-09-11'
        OR regist_date='2009-09-20');
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值