前端学数据库之数据库表的查询操作

一、单表查询

          创建查询环境

                 CREATE TABLE fruits(
                  f_id    char(10)         NOT NULL,
                 s_id    INT            NOT NULL,
                 f_name  char(255)      NOT NULL,
                 f_price decimal(8,2)      NOT NULL,
                 PRIMARY KEY(f_id) 
);

  解释:

  f_id:主键 使用的是CHAR类型的字符来代表主键

  s_id:这个其实是批发商的编号,也就是代表该水果是从哪个批发商那里过来的,写这个字段的目的是为了方便后面扩增表。

  f_name:水果的名字

  f_price:水果的价格,使用的是DECIMAL这个数据类型,如果不清楚这个类型去查看一下上面一篇讲解数据类型的文章。

  添加数据:

     INSERT INTO fruits (f_id, s_id, f_name, f_price)

     VALUES('a1', 101,'apple',5.2),
     ('b1',101,'blackberry', 10.2),
     ('bs1',102,'orange', 11.2),
     ('bs2',105,'melon',8.2),
     ('t1',102,'banana', 10.3),
     ('t2',102,'grape', 5.3),
     ('o2',103,'coconut', 9.2),
     ('c0',101,'cherry', 3.2),
     ('a2',103, 'apricot',2.2),
     ('l2',104,'lemon', 6.4),
     ('b2',104,'berry', 7.6),
     ('m1',106,'mango', 15.6),
     ('m2',105,'xbabay', 2.6),
     ('t4',107,'xbababa', 3.6),
     ('m3',105,'xxtt', 11.6),
     ('b5',107,'xxxx', 3.6);

  blackberry:黑莓  melon:甜瓜  grape:葡萄  coconut:椰子  cherry:樱桃  apricot:杏子  berry:浆果  mango:芒果  后面几个xbabay都是为了测试所编写的,没有实际意义。

查询所有字段

        SELECT * FROM fruits;

解释:* 代表所有字段,也就是从表中将所有字段下面的记录度查询出来

查询指定字段

  查询f_name 和 f_price 字段的记录

  SELECT f_name, f_price FROM fruits;

查询指定记录

  指定记录:也就是按条件进行查询,将满足一定条件的记录给查询出来,使用WHERE关键字

  SELECT * FROM fruits WHERE f_name = 'apple';//将名为apple的记录的所有信息度查询出来

  SELECT * FROM fruits WHERE f_price > '15';//将价格大于15的记录的所有字段  查询出来

带IN关键字的查询

  IN关键字:IN(xx,yy,...) 满足条件范围内的一个值即为匹配项

  SELECT * FROM fruits WHERE f_name IN('apple','orange');

  SELECT * FROM fruits WHERE s_id IN(101, 105); //s_id 为101 或者 105 的记录

  SELECT * FROM fruits WHERE s_id NOT IN(101,105); //s_id 不为101或者105的记录

带BETWEEN AND 的范围查询

  BETWEEN ... AND ... : 在...到...范围内的值即为匹配项,

     SELECT * FROM fruits WHERE f_price BETWEEN 5 AND 15;   //f_price 在5到15之间,包括5和15。

  SELECT * FROM fruits WHERE f_price NOT BETWEEN 5 AND 15;//f_price 不在5到15之间。

带LIKE的字符匹配查询

  LIKE: 相当于模糊查询,和LIKE一起使用的通配符有 "%"、"_"

  "%":作用是能匹配任意长度的字符。

  "_":只能匹配任意一个字符

  SELECT * FROM fruits WHERE f_name LIKE 'b%';  //f_name以b字母开头的所有记

  SELECT * FROM fruits WHERE f_name LIKE 'b%y'; //f_name以b字母开头,y字母结尾的所有记录

  SELECT * FROM fruits WHERE f_name LIKE '____y';   //此处有四个_,说明要查询以y字母结尾并且y之前只有四个字符的记录

  总结:'%'和'_'可以在任意位置使用,只需要记住%能够表示任意个字符,_只能表示一个任意字符

查询空值

  空值不是指为空字符串""或者0,一般表示数据未知或者在以后在添加数据,也就是在添加数据时,其字段上默认为NULL,也就是说,如果该字段上不插入任何值,就为NULL。此时就可以查询出来。

  SELECT * FROM 表名 WHERE 字段名 IS NULL;  //查询字段名是NULL的记录

  SELECT * FROM 表名 WHERE 字段名 IS NOT NULL;  //查询字段名不是NULL的记录

  这里由于没有合适的数据,就不自己在创建表,添加数据,然后来测试这条语句了,很简单,看一下就应该懂了

带AND的多条件查询

  AND: 相当于"逻辑与",也就是说要同时满足条件才算匹配

  SELECT * FROM fruits WHERE s_id = 101 AND f_price > 5;  //同时满足s_id = 101、f_price >5 这两个条件才算匹配。

带OR的多条件查询

  OR: 相当于"逻辑或",也就是说只要满足其中一个条件,就算匹配上了,跟IN关键字效果差不多

  SELECT * FROM fruits WHERE s_id = 101 OR f_price > 10;  //s_id =101 或者 f_price >10 ,只要符合其中一个条件,就算匹配

  可以看到,查询出来的记录,f_price有低于10的,那么其肯定s_id=101,s_id不等于101的,其f_price肯定大于10,这就说明了OR的效果。只要满足其中一个条件,就算匹配。

关键字DISTINCT(查询结果不重复)

  SELECT s_id FROM fruits;  //查询所有的s_id,会出现很多重复的值。

  使用DISTINCT就能消除重复的值

  SELECT DISTINCT s_id FROM fruits;

  将重复的值删除后,就只留下7条记录了。

  对查询结果排序(ORDER BY)

  看上面输出的值没顺序,可以给他们进行排序。使用关键字 ORDER BY,有两个值供选择 DESC 降序 、 ASC 升序(默认值)

  SELECT DISTINCT s_id FROM fruits ORDER BY s_id;    //默认就是升序,

  SELECT DISTINCT s_id FROM fruits ORDER BY s_id DESC;  //使用降序,也就是从高到底排列

分组查询(GROUP BY)

  分组查询很多人不知道什么意思,一开始我也是很蒙圈的,所以没关系,一起来看看。

  分组查询就是将相同的东西分到一个组里面去,现实生活中举个例子,厕所分男女,这也是一个分组的应用,在还没有分男女厕所前,大家度共用厕所,后面通过分男女性别,男的跟男的分为一组,女的和女的分为一组,就这样分为了男女厕所了。这就是分组的意思, 在上面对s_id进行查询的时候,发现很多重复的值,我们也就可以对它进行分组,将相同的值分为一组,

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值