示例表:

tb_manager表

DROP TABLE IF EXISTS `tb_manager`;
CREATE TABLE `tb_manager` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(30) DEFAULT NULL,`PWD` varchar(30) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
INSERT INTO `tb_manager` VALUES ('1', 'mr', 'mrsoft');
INSERT INTO `tb_manager` VALUES ('2', 'mingrisoft', 'mingrisoft');
INSERT INTO `tb_manager` VALUES ('3', 'admin', '111');

tb_bookcase 表

DROP TABLE IF EXISTS `tb_bookcase`;
CREATE TABLE `tb_bookcase` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(30) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
INSERT INTO `tb_bookcase` VALUES ('4', '左A-1');
INSERT INTO `tb_bookcase` VALUES ('5', '左A-2');
INSERT INTO `tb_bookcase` VALUES ('6', '右A-1');

tb_bookinfo 表

DROP TABLE IF EXISTS `tb_bookinfo`;
CREATE TABLE `tb_bookinfo` (`id` int(11) NOT NULL AUTO_INCREMENT,`barcode` varchar(30) DEFAULT NULL,`bookname` varchar(70) DEFAULT NULL,`typeid` int(10) unsigned DEFAULT NULL,`author` varchar(30) DEFAULT NULL,`translator` varchar(30) DEFAULT NULL,`ISBN` varchar(20) DEFAULT NULL,`price` float(8,2) DEFAULT NULL,`page` int(10) unsigned DEFAULT NULL,`bookcase` int(10) unsigned DEFAULT NULL,`inTime` date DEFAULT NULL,`operator` varchar(30) DEFAULT NULL,`del` tinyint(1) DEFAULT '0',PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
INSERT INTO `tb_bookinfo` VALUES ('7', '9787302210337', 'Java Web开发实战宝典', '4', '王国辉', '', '302', '89.00', '834', '4', '2021-02-24', 'mr', '0');
INSERT INTO `tb_bookinfo` VALUES ('8', '9787115195975', 'Java Web开发典型模块大全', '4', '王国辉、王毅、王殊宇', '', '115', '89.00', '752', '5', '2021-02-24', 'mr', '0');
INSERT INTO `tb_bookinfo` VALUES ('9', '9787115195966', 'Java Web程序设计慕课版', '5', '明日科技', '', '115', '49.80', '350', '4', '2021-02-24', 'mr', '1');
INSERT INTO `tb_bookinfo` VALUES ('10', '9787115195988', 'Android程序设计慕课版', '4', '明日科技', '', '111', '49.80', '360', '4', '2021-02-24', 'mr', '1');

tb_borrow 表

DROP TABLE IF EXISTS `tb_borrow`;
CREATE TABLE `tb_borrow` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`readerid` int(10) unsigned DEFAULT NULL,`bookid` int(10) DEFAULT NULL,`borrowTime` date DEFAULT NULL,`backTime` date DEFAULT NULL,`operator` varchar(30) DEFAULT NULL,`ifback` tinyint(1) DEFAULT '0',PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;INSERT INTO `tb_borrow` VALUES ('7', '4', '7', '2021-02-24', '2021-03-16', 'mr', '1');
INSERT INTO `tb_borrow` VALUES ('8', '4', '7', '2021-02-24', '2021-03-16', 'mr', '0');
INSERT INTO `tb_borrow` VALUES ('9', '5', '8', '2021-02-24', '2021-04-05', 'mr', '0');
基本查询语句Usage:SELECT selection_list  FROM 数据表名 WHERE primary_constraint GROUP BY grouping_columns ORDER BY sorting_cloumns HAVING secondary_constraint LIMIT count GROUP BY grouping_columns    #分组ORDER BY sorting_cloumns #排序HAVING secondary_constraint  特殊限制LIMIT count #限制查询数量单表查询         比较运算符:=> <    =>  <=  != <>IS NULL IS NOT NULLBETWEEN  IN      NOT INLIKE  NOT LIKE    REGEXP  主要内容:查询所有字段查询指定字段查询指定数据带IN关键字的查询带BETWEEN AND的范围查询带LIKE的字符匹配查询用IS NULL关键字查询空值带AND的多条件查询带OR的多条件查询用DISTINCT关键字去除结果中的重复行用ORDER BY关键字对查询结果排序用GROUP BY关键字分组查询用LIMIT限制查询结果的数量                           查询所有字段Usage:SELECT * FROM 表名;exampel:select * from tb_manager查询指定字段Usage:SELECT 字段名 FROM 表名;exampel:select name,PWD from tb_manager               查询指定数据Usage:SELECT 字段名 FROM 表名 where primary_constraint;exampel:select name,PWD from tb_manager  where id=2;select name,PWD from tb_manager where name='mr';select id,name,PWD from tb_manager  where id>=2;                 带IN关键字的查询Usage:SELECT * FROM 表名 WHERE 条件 [NOT] IN(元素1,元素2,…,元素n);exampel:select name,PWD from tb_manager where name in('admin','mr');select name,PWD from tb_manager where name not in('admin','mr');                带BETWEEN AND的范围查询Usage:SELECT * FROM 表名 WHERE 条件 [NOT] BETWEEN 取值1 AND 取值2;exampel:select id,bookname,inTime from tb_bookinfo where id  between  '9' and '10';select id,bookname,inTime from tb_bookinfo where inTime not  between  '2021-02-23' and '2021-02-24';               带LIKE的字符匹配查询Usage:%  #匹配多字符_ #匹配单字符exampel:select id,bookname,inTime from tb_bookinfo where bookname like 'java%';select * from tb_bookcase where name like '_A%';select * from tb_bookcase where name not like '_A-1';                用IS NULL关键字查询空值Usage:IS [NOT] NULLexampel:select * from tb_admin where createtime is null;select * from tb_admin where createtime is not null;               带AND的多条件查询(与运算)Usage:SELECT * FROM 数据表名 WHERE 条件表达式1 AND 条件表达式2 […AND 条件表达式n];exampel:select * from tb_admin where createtime is null and  password like '%2%' and id >2;             带OR的多条件查询(或运算)Usage:SELECT * FROM 数据表名 WHERE 条件1 OR 条件2 […OR 条件表达式n];exampel:select * from tb_admin where user='yi' or id >4;                用DISTINCT关键字去除结果中的重复行(查询的所有列表都相同才会去重)Usage:SELECT DISTINCT 字段名 FROM 表名;exampel:select distinct price from tb_bookinfo;select distinct price,bookname from tb_bookinfo where price >50;用ORDER BY关键字对查询结果排序Usage:ORDER BY 字段名 [ASC|DESC];exampel:select id,name,PWD from tb_manager  where id>=2 order by id;    #默认根据id升序排序select id,name,PWD from tb_manager  where id>=2 order by id desc;    #根据id降序排序select distinct price from tb_bookinfo order by price desc; select distinct id,price,bookcase from tb_bookinfo order by price,bookcase desc ;  #先price升序排序然后再bookcase降序排序              用GROUP BY关键字分组查询exampel:select bookcase,count(*) from tb_bookinfo group by bookcase;    #根据关键字bookcase进行分组,结果bookcase值为4的有3个,bookcase值为5的有1个,类似于unic -c,其中函数count()为统计数select group_concat(bookcase),count(*) from tb_bookinfo group by bookcase;   #group_concat()函数为列出所有字段值,然后用逗号进行分割              用LIMIT限制查询结果的数量exampel:select id,bookcase,bookname from tb_bookinfo limit 2;select id,bookcase,bookname from tb_bookinfo order by id desc limit 2; #注意limit需要放在最后,否则会报错          聚合函数查询特点:根据一组数据求出一个值,聚合函数的结果值只根据选定行不是NULL的值来进行计算,如果这个值本身是NULL就会被忽略 常见的聚合函数:COUNT()函数SUM()函数AVG()函数MAX()函数MIN()函数    COUNT()函数:是聚合函数查询,COUNT()函数用于对除“*”以外的任何参数,返回所选择集合中非NULL值的行的数目。example:select count(*) from tb_bookinfo;select count(bookname) from tb_bookinfo where bookname like 'java%';SUM()函数:SUM()函数可以求出表中某个数值类型字段取值的总和。example:select sum(id) from tb_bookinfo where bookname like 'java%';AVG()函数:AVG()函数可以求出表中某个数值类型字段取值的平均值。example:select avg(price) from tb_bookinfo where bookname like 'java%';MAX()函数:MAX()函数可以求出表中某个数值类型字段取值的最大值。example:select max(price) from tb_bookinfo where bookname like 'java%';MIN()函数:MIN()函数可以求出表中某个数值类型字段取值的最小值。example:select min(price) from tb_bookinfo where bookname like 'java%';连接查询:把不同表的记录连到一起,然后获取到最终的查询结果内连接查询:最普遍的一种连接类型而且是匀称的,因为它要求构成连接的每一部分的每个表都匹配,如果不匹配那么就被删除掉example:select tb_manager.name,tb_bookcase.name from tb_manager,tb_bookcase; 多表查询,查询结果总条数为量表条数相乘select tb_bookinfo.id,tb_bookinfo.bookname,tb_bookinfo.author,tb_bookinfo.price,tb_borrow.borrowTime,tb_borrow.backTime,tb_borrow.operator from tb_bookinfo,tb_borrow where tb_bookinfo.id=tb_borrow.bookid;外连接查询Usage: 关键字 [OUTER] JOINSELECT 字段名称 FROM 表名1 [LEFT]|RIGHT JOIN 表名2 ON 表名1.字段名1=表名2.属性名2;#[LEFT] JOIN(默认为左连接):将左表中的所有数据分别与右表中的每条数据进行连接组合,返回的结果除内连接的数据外还包括左表中不符合条件的数据,并在右表的相应列中添加NULL#RIGHT JOIN(右连接):将右表中的所有数据分别与左表中的每条数据进行连接组合,返回的结果除内连接的数据外还包括右表中不符合条件的数据,并在左表的相应列中添加NULLexample:select bookid,borrowTime,backTime,bookname,price from tb_borrow  join tb_bookinfo on tb_borrow.bookid=tb_bookinfo.id;    #左连接此时主表为左表tb_borrow,会显示坐标所有的字段值,如果有值为空则显示为NULLselect bookid,borrowTime,backTime,bookname,price from tb_borrow right join tb_bookinfo on tb_borrow.bookid=tb_bookinfo.id;    #右连接此时主表为右表tb_bookinfo,会显示右表所有的字段值,如果有值为空则显示NULL复合条件连接查询:在连接时可以增加其它的限制条件,通过多个条件的复合查询可以使查询结果更加准确,使用and关键字exanple:select bookid,borrowTime,backTime,bookname,price from tb_borrow  [left] join tb_bookinfo on tb_borrow.bookid=tb_bookinfo.id and backTime like '%5';#注意这里是否加上left显示的是不同的,如果不加left会只显示符合条件的结果,如果加上left也会把不符合条件的值输出成NULL全部显示出来子查询:子查询就是指在一个查询语句中,还包括另一个查询语句。在外一层的查询中使用里面一层查询产生的结果集。主要内容:(适用方法在于子查询返回多少值,如果返回一个值可以用比较,如果多个可以用IN等。。)带IN关键字的子查询example:select id,bookname  from  tb_bookinfo where id in(select bookid from tb_borrow );带比较运算符的子查询example:select id,bookname  from  tb_bookinfo where id = (select bookid from tb_borrow limit 1 );select id,bookname  from  tb_bookinfo where id <= (select sum(bookid) from tb_borrow where bookid >7);带EXISTS关键字的子查询:EXISTS关键字用于检查子查询是否至少返回一行数据,如果有数据返回则为真,外层查询执行;该子查询如果“没有数据结果”(没有任何数据返回),则该EXISTS()结果为:false,外层查询不执行.EXISTS后面的子查询不返回任何实际数据,只返回真或假,当返回真时where条件成立。注意:EXISTS关键字,比IN关键字的运算效率高,因此,在实际开发中,特别是大数据量时,推荐使用EXISTS关键字,并且NULL也算结果,所以为真example:select id,bookname  from  tb_bookinfo where exists (select sum(bookid) from tb_borrow where bookid > '10000');select id,bookname  from  tb_bookinfo where exists (select 1=NULL);select id,bookname  from  tb_bookinfo where exists(select bookid from tb_borrow where bookid >10);带ANY关键字的子查询:表示满足其中任意一个条件。example:select * from tb_borrow where id = any(select id from tb_bookinfo where id >6 );select * from tb_borrow where id > any(select id from tb_bookinfo where id >6 );带ALL关键字的子查询:表示表示满足所有条件example:select * from tb_borrow where id > all(select id from tb_bookinfo where id <9 );合并查询结果: 合并查询结果是将多个SELECT语句的查询结果合并到一起关键字:UNION | UNION ALLexample:select name from tb_manager union select operator from tb_borrow;  去重select name from tb_manager union all select operator from tb_borrow; 显示所有定义表和字段的别名:为表取别名关键字:as,as可以省略example:未使用别名:select tb_borrow.bookid,tb_borrow.backTime,tb_borrow.borrowTime,tb_bookinfo.bookname,tb_bookinfo.price,tb_bookinfo.author from tb_bookinfo,tb_borrow where tb_bookinfo.id=tb_borrow.bookid;使用别名:select br.bookid,br.backTime,br.borrowTime,info.bookname,info.price,info.author from tb_bookinfo as info ,tb_borrow as br where info.id=br.bookid;为字段取别名select bookname as name from tb_bookinfo;使用正则表达式查询关键字:REGEXP匹配指定字符中的任意一个:[  ]example:select * from tb_manager where name regexp '[ai]';使用“*”和“+”来匹配多个字符“*”:匹配0到多个“+”:匹配1到多个example:select * from tb_manager where name regexp 'm*r';select * from tb_manager where name regexp 'm+r';匹配开头和结尾"^":匹配开头"$":匹配结尾example:select * from tb_manager where name regexp '^mi';select * from tb_manager where name regexp 'n$';

09 MySQL 从入门到精通——数据查询相关推荐

  1. MySQL从入门到精通:多表查询的灵活运用_02

    我是 ABin-阿斌:写一生代码,创一世佳话,筑一揽芳华. 如果小伙伴们觉得我的文章有点 feel ,那就点个赞再走哦. 上一篇:MySQL从入门到精通:基本语法介绍与使用_01 下一篇:MySQL从 ...

  2. MySQL精讲(一) |DQL数据查询语句全解析

    MySQL精讲系列文章(更新完毕) <MySQL入门必看知识> <MySQL精讲(一) | DQL数据查询语句全解析> <MySQL精讲(二) | DML数据操作语句全解 ...

  3. MySQL学习记录 (二) ----- SQL数据查询语句(DQL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  4. MySQL数据库C接口的数据查询操作示例

    MySQL数据库C接口的数据查询操作示例 命令行操作 (1)建库建表(已有则不用) 连接MySQL服务器,并登录之.选择某个数据库.假设用户在这个数据库下已有一个表了. (2)查询所有数据的方法 SE ...

  5. MySQL基础入门到精通学习教程汇总【基础+高级完整版】

    MySQL是最流行的关系型数据库管理系统之一,这也是我们为什么要学习MySQL数据的库的原因之一,就连非互联网行业的人士也在开始学习MySQL去分析数据. 对于程序员来说,MySQL数据库更是需要熟练 ...

  6. MySQL从入门到精通

    一.配置 MySQL服务启动 手动 cmd --> services.msc 打开服务的窗口 使用管理员打开cmd net start mysql:启动mysql的服务 net stop mys ...

  7. MySQL数据库入门(三)--- 查询、权限、join语法、外键、备份

    MySQL数据库入门(三) 文章目录 MySQL数据库入门(三) @[toc] MySQL回顾 查询: 查看字段 权限管理 查询权限 授权查询 多表查询 join语法 外键 备份: 指定时间段备份: ...

  8. MySQL中SQL语句——DQL(数据查询语句)

    前言: 首先对于数据库有一定的了解,会对于Mysql的学习有一定的帮助: 数据库主要分为 DB(数据库),DBMS(数据库管理系统),SQL(结构化查询语言,用于和DBMS通信的语言):这篇要讲的DQ ...

  9. mysql做十亿条数据查询_数据库优化:mysql数据库单机数十亿数据查询设计

    很久没写文章,是不是想着写点什么东西,分享下我的数据库设计思路,主要是针对单机数十亿及以上数据查询优化技巧. 如果只是简单的查询,没有频繁的写入操作,对查询速度不要求在毫秒级别,就不需要什么大型的数据 ...

最新文章

  1. 实现DUBBO服务环境隔离
  2. 精通python设计模式-精通Python设计模式
  3. foxmail邮箱怎么导入邮件_163企业邮箱登录后怎么导入联系人?
  4. 关于空值null的排序问题 mysql 和oracle
  5. linux中查看文件指定行的数据
  6. 【转】C++怎么读写windows剪贴板的内容?比如说自动把一个字符串复制.
  7. 二叉树---树的深度递归理解
  8. 关于解决Python中requests模块在PyCharm工具中导入问题
  9. 《原力计划【第二季】》第 3 周周榜揭晓!!!
  10. python自学看什么书-如何自学Python ?自学看什么书比较好?
  11. 一个java项目的开发流程
  12. 解决苹果手机ios系统app store无法下载讯飞有声的问题
  13. vant 开始结束日期_在vant中使用时间选择器实现结束时间和开始时间
  14. HDU 2037 今年暑假不AC
  15. Spring Boot整合Admin
  16. C语言希冀平台作业-南京晓庄
  17. 阿里api文档链接地址
  18. 流利阅读 2019.2.23 China’s Forbidden City opens to the general public at night for the first time in 94
  19. 【学术相关】2021年国家自然科学基金高校立项情况最新数据
  20. 使用opencv从mp4视频中抽帧并保存

热门文章

  1. 魅族新系统android o,Flyme下月更新系统内核 魅族9款机型可升安卓7.0
  2. 前端需要懂的nginx
  3. 使用LMAX Disruptor构建快速、线程安全的热点跟踪库
  4. Qt 可以编译但是无法运行和 debug(debug 时出现 lauching debugger 报红)
  5. Android 性能分析工具
  6. 统计学习方法第十章隐马尔可夫模型
  7. 单片机培训班的学费是多少?学习时间是多长?
  8. 《走进计算机教室》教案,走进网络教案
  9. 牛客练习赛61 B 吃水果
  10. 3dsMax透视图模型显示破碎