谓词:属于函数的一种,但其返回值是真值(true/false/unknown)

判断是否存在满足某种条件的记录,存在返回TRUE、不存在返回FALSE。

比较多用到的几种谓词:

LIKE

BETWEEN

IS NULL/IS NOT NULL

IN

EXISTS

LIKE谓词——字符串的部分一直查询(模糊查询)

--MySQL

--DDL:创建表

CREATE TABLE SampleLike

( strcol VARCHAR(6) NOT NULL,

PRIMARY KEY (strcol));

--DML:插入数据

START TRANSACTION;

INSERT INTO SampleLike (strcol) VALUES ('abcddd');

INSERT INTO SampleLike (strcol) VALUES ('dddabc');

INSERT INTO SampleLike (strcol) VALUES ('abdddc');

INSERT INTO SampleLike (strcol) VALUES ('abcdd');

INSERT INTO SampleLike (strcol) VALUES ('ddabc');

INSERT INTO SampleLike (strcol) VALUES ('abddc');

COMMIT;

1.前方一致查询,查询对象字符串起始部分相同的记录值的查询方法。

-- 匹配以ddd开始的字符串

select * from SampleLike where strcol LIKE 'ddd%';

2.中间一致查询

-- 匹配包含ddd的字符串

select * from SampleLike where strcol LIKE '%ddd%';

3.后方一致查询

-- 匹配以ddd结尾的字符串

select * from SampleLike where strcol LIKE '%ddd';

4.使用下划线_代替%,它代表的是任意一个字符

-- 匹配以abc开始的后面要有2个字符的字符串

select * from SampleLike where strcol LIKE 'abc__';

BETWEEN谓词——范围查询

(注:会包含100和1000两个临界值,如果不需要,需使用

-- 包含临界值100和1000

SELECT product_name, sale_price

FROM Product

WHERE sale_price BETWEEN 100 AND 1000;

-- 不包含临界值

SELECT product_name, sale_price

FROM Product

WHERE sale_price > 100

AND sale_price < 1000;

is null, is not null判断是否为空

为选取某些值为null的数据列,不能使用=,只能由is null

SELECT product_name, purchase_price

FROM Product

WHERE purchase_price IS NULL;

IN谓词——OR的简单用法(使用in代替or)

1.通过OR指定多个进货单价查询(阅读性较差)

SELECT product_name, purchase_price

FROM Product

WHERE purchase_price = 320

OR purchase_price = 500

OR purchase_price = 5000;

2.通过in来指定多个进货单价查询(否定形式可以使用NOT IN来实现,注:IN和NOT IN无法选出NULL数据)

SELECT product_name, purchase_price

FROM Product

WHERE purchase_price IN (320, 500, 5000);

3.使用子查询作为IN谓词的参数

SELECT product_name, sale_price

FROM Product

WHERE product_id IN (SELECT product_id

FROM ShopProduct

WHERE shop_id = '000C');

EXIST谓词

注:实际上不使用EXIST基本上也都可以使用IN(或NOT IN)来替代

SELECT product_name, sale_price

FROM Product AS P

WHERE EXISTS (SELECT *

FROM ShopProduct AS SP

WHERE SP.shop_id = '000C'

AND SP.product_id = P.product_id);

-- 创建ShopProduct商店商品表

CREATE TABLE ShopProduct

(shop_id CHAR(4) NOT NULL,

shop_name VARCHAR(200) NOT NULL,

product_id CHAR(4) NOT NULL,

quantity INTEGER NOT NULL,

PRIMARY KEY (shop_id, product_id));

-- MySQL

START TRANSACTION;

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000A','北京','0001',30);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000A','北京','0002',50);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000A','北京','0003',15);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000B','上海','0002',30);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000B','上海','0003',120);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000B','上海','0004',20);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000B','上海','0006',10);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000B','上海','0007',40);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000C','深圳','0003',20);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000C','深圳','0004',50);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000C','深圳','0006',90);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000C','深圳','0007',70);

INSERT INTO ShopProduct (shop_id, shop_name, product_id, quantity) VALUES ('000D','广州','0001',100);

COMMIT;

mysql 谓词_数据库谓词相关推荐

  1. xshell安装mysql步骤_数据库Mysql与禅道安装

    一.Linux上搭建禅道 Mysql 是关系型数据库管理系统 1.下载安装包:将安装包直接解压到/opt目录下,不要 解压到别的目录在拷贝到/opt/,因为这样会导致文件的所有者和读写权限改变 2.解 ...

  2. MySQL学习_数据库和表的基本操作

    目录 1 创建和查看数据库 1.1 创建数据库 1.2 查看数据库 1.3 修改数据库 1.4 删除数据库 2 数据类型 2.1 整数类型 2.2 日期数据类型 2.3 字符串数据类型 3表的基本操作 ...

  3. mysql 多线程_数据库选型之MySQL(多线程并发)

    本博客记录作者在工作与研究中所经历的点滴,一方面给自己的工作与生活留下印记,另一方面若是能对大家有所帮助,则幸甚至哉矣! 简介 鉴于高频中心库task部分占用机器较多,为节省成本,调研数据库或缓存.在 ...

  4. es mysql 预处理_数据库选型之MySQL vs ElasticSearch

    前言 应用系统通常需要借助数据预处理(如物化视图等)来实现数据查询加速的需求.目前业界主流数据库主要有以下两大类,一种是基于传统RDBMS关系型数据库来实现:另一种是基于NoSQL非关系型数据库来实现 ...

  5. ubuntu mysql 更新_数据库应用(三): Ubuntu 下 MySQL添加、更新与删除数据

    添加.更新与删除数据 1.添加数据 命令格式: INSERT|replace INTO 表名(字段名1,字段名2,--) VALUES(值1,值2,--), (值1,值2,--); 需要注意:使用in ...

  6. 数据库mysql存储过程_[数据库]mysql存储过程的建立及使用

    mysql存储过程的建立及使用 建立存储过程,特别是带有参数的情况反复出错,经常提示"字符串格式不正确",或者是找不到这样,找不到那样,经分细心分析.分步测试,终于上传成功,这里介 ...

  7. mysql 文件组织_数据库如何组织数据?

    DBMS设计之初便假定数据主要位于非易失性的磁盘上,毕竟内存容量有限.而磁盘的访问速度远远大于内存访问速度,因此数据库存储引擎一项重要工作便是:管理数据在内存与非易失性存储之间移动,提高数据访问速度和 ...

  8. c从oracle到mysql移植_数据库从oracle移植到mysql时需要进行的修改

    分页方式不同,oracle使用rownum,mysql使用limit 使用hibernate的QBC不用修改,但hql和sql都应该用统一方法修改 mysql子查询必须带别名 select * fro ...

  9. app怎么调用mysql数据_数据库: 安装配置数据库,使用Navicat for MySQL和手机APP 连接测试...

    数据库软件可在官方下载 也可 官网下载步骤 咱用安装版的 现在安装 咱就选择默认的 注意:如果你的电脑没有相应的VS运行库,有可能还需要VS运行库 等待着..... 官方提供了一个工具,可以用来管理配 ...

最新文章

  1. CentOS 6.3安装Nginx开启目录浏览、下载功能
  2. oracle11g 数据库导出报“ EXP-00003: 未找到段 (0,0) 的存储定义”错误的解决方案
  3. void和void *
  4. Centos7访问本地电脑共享文件夹遇到的问题
  5. 如何应对糟糕的面试官(2)
  6. Pandas深入浅出
  7. 49 张图详解 WiFi 的 26 个知识点
  8. 常用心理学实验刺激呈现软件介绍
  9. 图像质量评价(IQA)综述
  10. MFC深入浅出--永久保存
  11. mybatis sql语句格式化 trim prefix suffix
  12. Spring| AOP之 引入(Introductions)
  13. 【v1.4.4】H5匿名信一封来信更新公告,新版升级教程
  14. 用Scratch+Python做一个联网游戏!不比打游戏差吧!
  15. Warning: [antdv: LocaleProvider] `LocaleProvider` is deprecated. Please use `local
  16. WWW‘22 推荐系统论文之序列推荐篇
  17. Dremio 数据湖以及数据仓库
  18. 浅谈5G网络及其应用
  19. 计算机每次关机需要配置,电脑关机,详细教您怎么设置电脑定时关机
  20. gunicorn工作原理

热门文章

  1. springboot+mysql养老院信息管理系统-计算机毕业设计源码27500
  2. 【Unity3D日常开发】提高开发效率之定时器系统实现
  3. 下套玩人术 独立自主的思维
  4. 运营商IT“铸剑之道”
  5. [文明6]自然/世界奇观英文台词
  6. STM32从零开始(三) 点亮led灯并且配置时钟为72mhz
  7. BGP的RR反射原理和实验配置
  8. 取消蓝牙BLE设备30秒内仅能搜索5次的限制,或者修改相应的需求也行
  9. java控制音量_java-在MIDI音序器中控制音量的方法是什么?
  10. calibre-web(web图书库)