【MySQL必知必会】学习笔记Day2

【MySQL必知必会】学习笔记Day2&1.22&D5-7章&P28-45页

基本概念
  • 子句:SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。

  • ORDER BY:为了明确地排序用SELECT语句检索出的数据,可使用ORDER BY子句。 ORDER BY子句取一个或多个列的名字,据此对输出进行排序。

  • NULL 无值(no value):它与字段包含0、空字符串或仅仅包含空格不同。

  • 操作符:用来联结或改变WHERE子句中的子句的关键字。也称为逻辑操作符

  • AND :用来指示检索满足所有给定条件的行

  • OR :用来表示检索匹配任一给定条件的行

  • NOT:WHERE子句中用来否定后跟条件的关键字

  • IN:WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当

  • IN操作符的优点:

    • 在使用长的合法选项清单时,IN操作符的语法更清楚且更直观。
    • 在使用IN时,计算的次序更容易管理(因为使用的操作符更少)。
    • IN操作符一般比OR操作符清单执行更快
    • IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建WHERE子句
3、排序检索数据

(1)排序数据

  • 以字母顺序排序数据
  SELECT 列名
  FROM 表名
  ORDER BY  列名;

注:

  • 通过非选择列进行排序 通常,ORDERBY子句中使用的列将 是为显示所选择的列。但是,实际上并不一定要这样,用非 检索的列排序数据是完全合法的。

(2)按多个列排序

  • 按多个列排序,先按列名2排,再按列名3排
  SELECT 列名1,列名2,列名3
  FROM 表名
  ORDER BY  列名2,列名3;

注:

  • 通过非选择列进行排序 通常,ORDERBY子句中使用的列将 是为显示所选择的列。但是,实际上并不一定要这样,用非 检索的列排序数据是完全合法的。

(3)指定排序方向

  • 加DESC按列名2降序排列
  SELECT 列名1,列名2,列名3
  FROM 表名
  ORDER BY  列名2  DESC;
  • 先按列名2降序排列,再对列名3进行默认的升序排序;
  SELECT 列名1,列名2,列名3
  FROM 表名
  ORDER BY  列名2  DESC,列名3;

注:

  • DESC关键字只应用到直接位于其前面的列名。在上例中,只对列名2指定DESC,对列名3不指定。因此, 列2以降序排序,而列3仍然按标准的升序排序。
  • 如果想在多个列上进行降序排序,必须对每个列指定DESC关键字。
  • 与DESC相反的关键字是ASC,在升序排序时可以指定它。 但实际上,ASC没有多大用处,因为升序是默认的。

(4)例:返回最高价格

  • ORDER BY和LIMIT的组合,能够找出一个列中最高或最低的值
  SELECT prod_price
  FROM products
  ORDER BY  prod_price DESC
  LIMIT 1;

注:

  • 在给出ORDER BY子句时,应该保证它位于FROM子句之后。如果使用LIMIT,它必须位于ORDER BY 之后。使用子句的次序不对将产生错误消息。
4、过滤数据

(1)使用WHERE子句

  • eg:从products表中检索两个列,但不返回所有行,只返回prod_price值为2.50的行。
  SELECT prod_name,prod_price
  FROM products
  WHERE  prod_price = 2.50;

注:

  • 在同时使用ORDERBY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误。

(2)WHERE子句操作符

操作符      说明
=          等于
<>         不等于
!=         不等于
<          小于
<=         小于等于
>          大于
>=         大于等于
BETWEEN    在指定的两个值之间

(3)检查单个值

  • eg : 它返回prod_name的值为Fuses的一行
  SELECT prod_name,prod_price
  FROM products
  WHERE  prod_name= 'fuses';
  • eg : 检索价格小于10美元的所有产品
  SELECT prod_name,prod_price
  FROM products
  WHERE  prod_price < 10;
  • eg : 检索价格小于等于10美元的所有产品
  SELECT prod_name,prod_price
  FROM products
  WHERE  prod_price < =10;
  • eg : 检索不是由供应商1003制造的所有产品
  SELECT vend_id,prod_name
  FROM products
  WHERE  vend_id <> 1003;

  SELECT vend_id,prod_name
  FROM products
  WHERE  vend_id != 1003;

(4)范围值检查

  • eg:检索价格在5美元和10 美元之间的所有产品
  SELECT prod_name,prod_price
  FROM products
  WHERE  prod_price BETWEEN 5 AND 10;

(5)空值检查

  • eg:检索电子邮件地址为空的顾客
  SELECT  cust_id
  FROM customers
  WHERE  cust_email IS NULL;

注:

  • 在过滤数据时,一定要验证返回数据中确实给出了被 过滤列具有NULL的行。
5、数据过滤

(1)组合WHERE子句

  • 以AND子句的方式或OR子句的方式使用。
  • AND的计算次序优先级高于OR

(2)AND操作符

  • eg:检索由供应商1003制造且价格小于等于10美元的所
    有产品的名称和价格
  SELECT prod_id,prod_price,prod_name
  FROM products
  WHERE  vend_id= 1003 AND prod_price <= 10;

(3) OR操作符

  • eg:检索由任一个指定供应商制造的所有产品的产品名和价格。
  SELECT prod_id,prod_price,prod_name
  FROM products
  WHERE  vend_id= 1003 OR vend_id= 1005;

(4) 计算次序

  • eg:检索价格为10美元(含)以上且由1002或1003制 造的所有产品。
  SELECT prod_name,prod_price
  FROM products
  WHERE  (vend_id= 1002 OR vend_id= 1003)AND prod_price >=10;

注:

  • AND的计算次序优先级高于OR
  • 在WHERE子句中使用圆括号能消除歧义

(5) IN操作符

  • eg:检索供应商1002和1003制造的所有产品
 SELECT prod_name,prod_price
 FROM products
 WHERE  vend_id IN (1002,1003)
 ORDER  BY prod_name;

等同于OR,上述语句还可以表述为:

  SELECT prod_name,prod_price
  FROM products
  WHERE  vend_id =1002 OR vend_id=1003
  ORDER  BY prod_name;

(6)NOT操作符

  • eg:列出除1002和1003之外的所有供应商制造的产品
  SELECT prod_name,prod_price
  FROM products
  WHERE  vend_id NOT IN (1002,1003)
  ORDER  BY prod_name;

注:

  • MySQL中的NOT :MySQL支持使用NOT对IN、BETWEEN和 EXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件取反有很大的差别。

【MySQL必知必会】系列笔记:
【MySQL必知必会1-4章】学习笔记Day1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值