PS:五一还是要学习...虽然有点苦逼..但是路是自己选的,那么自己就要坚持的走下去...

学习内容:

1.数据库查找的补充...

查找涉及的东西比较多,在上一个章节没有完全介绍...我们还是以pet表格为例,在这里进行补充....

模式匹配:

  所谓模式匹配,无非就是按照某种模式进行查找...我们给出的一个模范,然后按照这个模范进行匹配完成的查找就属于模式匹配查找...模式匹配的查找中,我们不能够使用=或!=来操作,应该使用like或not like 进行操作...

  1. //查找名字以b开头的宠物...
  2. select * from pet where name like 'b%';
  3. //查找名字以fy结尾的宠物..
  4. select * from pet where name like '%fy';
  5. 查找名字里包含w的宠物...
  6. select * from pet where name like '%w%';

这类属于的是sql标准的模式匹配..还有另一种类型的匹配属于扩展正则表达式的模式匹配...下面进行简单介绍..

扩展正则表达式的一些字符..

  • '.'匹配任何单个字符..
  • [...]匹配在方括号包括的字符,这个可以是指定值,也可以是一个范围值。。[abc]匹配字符只能有'a','b','c'为命名范围的字符..[a-z]匹配a-z之间为命名范围的字符..
  • '*'匹配0个或者多个*之前的字符..

注意:

  • 如果regexp模式与被测值的任何地方匹配,那么该模式就匹配。。
  • 为了定位一个模式以便它必须匹配测试值的开头或者结尾...该模式开头使用'^',或者结尾使用'$'。。
  1. //查找所有以b开头的宠物名字...不区分大小写
  2.  
  3. select * from pet where name regexp '^b';
  4.  
  5. //区分大小写...
  6.  
  7. select * from pet where name regexp BINARY '^b';
  8.  
  9. //查找以fy结尾的宠物名字...
  10.  
  11. select * from pet where name regexp 'fy$';

计数行:就是使用count(*)函数..

  1. select count(*) from pet;//显示数据库数据的行数..

当我们想要查找一些特定的数据信息的时候..可以使用count(*)函数,配合着group by来进行查询..比如说,我们想要查询宠物猫和狗的数据信息的时候..我们没必要查询整个表,只需要使用count函数配合group by就可以查询的到..

  1. select species,sex count(*) from pet where species="dog" or species="cat"group by species,sex;

常用的一些查询的例子:

比如说,我们建立了一个商店的数据库。。。商店里有一些物品,并且每件物品都有一个价值...

  1. mysql>create table shop
  2. ->(
  3. -> article int(4) unsigned zerofill default '' not null,
  4. -> dealer char(20) default '' not null,
  5. -> price double(16,2) default '0.00' not null,
  6. -> primary key(article,dealer)
  7. ->);
  8.  
  9. mysql>insert into shop values(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C','1.69'),(3,'D',1.25),(4,'D',19.95);
  10.  
  11. 1.查询列的最大值...
  12. select max(article) as article from shop;
  13.  
  14. 2.查询某个列的最大值的一行数据...两种方法..
  15. select article,dealer,price from shop where price=(select max(article) from shop);
  16. select article,dealer,price from shop order by price desc limit;
  17.  
  18. 3.列的最大值,与第一个不一样的地方在于,第一个是显示所有物品里的最大值,这种属于显示每一种物品的一个最大值..
  19. select article max(price) as price from shop order by article;
  20.  
  21. 4.拥有某个字段的组间最大值的行..
  22. select article,dealer,price from shop s1 where price=(select max(s2.price) from shop s2 where s1.article=s2.article);

第四条使用临时表的形式也可以做到...

  1. CREATE TEMPORARY TABLE tmp
  2. (
  3.   article INT(4) UNSIGNED ZEROFILL DEFAULT '' NOT NULL,
  4.   price  DOUBLE(16,2)       DEFAULT '0.00' NOT NULL
  5. );
  6.   
  7.   LOCK TABLES article read;
  8.   
  9.   INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article;
  10.   
  11.   SELECT article, dealer, price FROM shop, tmp
  12.   WHERE shop.article=tmp.articel AND shop.price=tmp.price;
  13.   
  14.   UNLOCK TABLES;
  15.   
  16.   DROP TABLE tmp;

这个是看别人写的,自己并没有完全弄懂..有兴趣的可以研究研究...还有一种方式:

  1. SELECT article,SUBSTRING( MAX( CONCAT(LPAD(price,6,''),dealer) ), 7) AS dealer, 0.00+LEFT(MAX( CONCAT(LPAD(price,6,''),dealer) ), 6) AS price FROM shop
  2. GROUP BY article;

使用用户变量:

如果我们想要找出价格最高和最低的物品..并且还不想保存到客户端的临时变量中时..我们可以使用用户变量...

  1. mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
  2. mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;

查询还有使用外键查询。。使用auto_increment查询...自己只是了解,就不在这里班门弄斧了...

多表查询:

简单的介绍一下多表查询。。。。多表查询涉及的内容很多..在这里只是简单的介绍一下使用select子语句进行查询..

  1. CREATE TABLE IF NOT EXISTS contact(
  2. contact_id int(11) NOT NULL AUTO_INCREMENT,
  3. user_name varchar(255),
  4. nom varchar(255),
  5. prenom varchar(255),
  6. mail varchar(64),
  7. passcode char(64),
  8. PRIMARY KEY(contact_id)
  9. );
  10. CREATE TABLE IF NOT EXISTS droit(
  11. droit_id int( 11 ) NOT NULL AUTO_INCREMENT ,
  12. droit varchar(255),
  13. PRIMARY KEY(droit_id)
  14. );
  15. CREATE TABLE IF NOT EXISTS contactdroit(
  16. contactdroit_id int(11) NOT NULL AUTO_INCREMENT,
  17. contact_id int( 11 ),
  18. droit_id int( 11 ),
  19. PRIMARY KEY( contactdroit_id )
  20. );
  21. Insert into contact(contact_id, user_name) values(1,'user1');
  22. Insert into contact(contact_id, user_name) values(2,'user2');
  23. Insert into contact(contact_id, user_name) values(3,'user3');
  24. Insert into droit(droit_id, droit) values(1,'admin');
  25. Insert into droit(droit_id, droit) values(2,'superuser');
  26. Insert into contactdroit(contact_id, droit_id) values(1, 1);
  27. Insert into contactdroit(contact_id, droit_id) values(2, 1);
  28. Insert into contactdroit(contact_id, droit_id) values(3, 2);
  29.  
  30. SELECT c.contact_id, d.droit_id, d.droit FROM contact c, contactdroit cd, droit d
  31. where c.contact_id = cd.contact_id
  32. and cd.droit_id = d.droit_id;

想了解更多的多表查询:http://blog.sina.com.cn/s/blog_6ad62438010168lg.html

Mysql学习笔记(七)查(补充)的更多相关文章

  1. MySQL学习笔记七:存储引擎

    1.MySQL存储引擎的设计采用“插件式”方案,用户可以很方便地选择使用哪种存储引擎,想使用mysql没有提供的引擎时,可以自己安装进去. 查看支持的存储引擎 mysql> show engin ...

  2. mysql查询语句(mysql学习笔记七)

    Sql语句 一般顺序GHOL : group by,having ,order by,limit     如果是分组,应该使用对分组字段进行排序的group by语法                 ...

  3. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  4. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  5. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

  6. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  7. 一千行MySQL学习笔记 (转)

    出处:  一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...

  8. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  9. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  10. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

随机推荐

  1. android 常用小功能(第二版)

    经历过一段岁月,转眼2013的半年都过去了,第二版整理好的小功能,答应大家发布的,直到今日,终于和大家相见了,第二版没有第一版多,大家也可以去参考第一版的内容,希望大家使用愉快! 目录: 1.获取当前 ...

  2. [Java] 解决spring的xml标签内不能自由增加说明的难题,方便调试、部署时进行批量屏蔽

    作者:zyl910 以往我们想在spring的xml配置文件中增加说明文本时,只能使用xml注释(<!-- 注释 -->).这对于"调试.部署时想批量屏蔽部分bean" ...

  3. 奇怪吸引子---WimolBanlue

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  4. gradle介绍

    Gradle是什么? https://gradle.org/whygradle-build-automation/ 自动化编译的工具,可编程,适合各种语言,管理各种依赖,高效,提供分析报告. 我个人觉 ...

  5. 使用 CountDownLatch 控制多个线程执行顺序

    已同步更新至:http://dxjia.cn/2015/08/countdownlatch-use/ 有时候会有这样的需求,多个线程同时工作,然后其中几个可以随意并发执行,但有一个线程需要等其他线程工 ...

  6. [转载]BW增量更新的理解(时间戳)

    在BW中,存在两种数据抽取方式,完全更新与增量更新,完全更新是每次把截至到某个时间的数据全部抽取,增量抽取则只抽取上次和本次抽取之间更新的数据,很显然,增量抽取能够提高系统效率,根据SAP帮 助的说法 ...

  7. How to get the Current Controller Name, Action, or ID in ASP.NET MVC

    public static class HtmlRequestHelper { public static string Id(this HtmlHelper htmlHelper) { var ro ...

  8. Unity3d 在不同设备中的文件读写 的路径

    Application.dataPath : 数据路径   Unity Editor: <path tp project folder>/Assets Unity 编辑器:<工程文件 ...

  9. 计算A/3,不用除法

    int DividedBy3(int A) { ; ; i <= ; i += ) p += A << i; return (-p); }

  10. java中的==和equals

    1,==用于比较基本数据类型,和引用类型.而equals是Object上的方法,可以被子类重写,用于判断内容一致. 比较奇葩的是,java基本数据类型(byte,short,int,long,floa ...