查询数据表

语法:

SELECT

{* | <字段列表》}

[

FROM <表1>, <表2>....

[ where <表达式> ]

[ group by <group by definition>] [ having <expr> ]

[ order by <..> ] [ limit <...> ]

示例  :

查询多字段   select f_name,f_price from fruits;

条件半段指定查询  mysql> select f_name, f_price from fruits where f_price = '5.2';

之间查询    mysql> select f_name,f_price from fruits where f_price between 5 and 10;

按数字大小排序  mysql> select distinct s_id from fruits order by s_id,f_name ;

升序desc

降序   asc

统计 相同的 行数 ,以及按s_id 进行分组: mysql> select f_name,s_id,count(*) as ljx from fruits group by s_id;

统计 s_id相同的 f_name

mysql> select s_id,GROUP_concat(f_name) as names from fruits group by s_id having count(f_name)>1;

+------+-------------------------+

| s_id | names |

+------+-------------------------+

| 101 | apple,blackberry,cherry |

| 102 | grape,banana,orange |

| 103 | apricot,coconut |

| 104 | lemon,berry |

| 105 | xbabay,xxtt,melon |

| 107 | xxxx,xbababa |

+------+-------------------------+

6 rows in set (0.00 sec)

统计 数字总和

mysql> select s_id ,count(8) as total

-> from fruits

-> group by s_id with rollup;

+------+-------+

| s_id | total |

+------+-------+

| 101 | 3 |

| 102 | 3 |

| 103 | 2 |

| 104 | 2 |

| 105 | 3 |

| 106 | 1 |

| 107 | 2 |

| NULL | 16 |

+------+-------+

8 rows in set (0.00 sec)

mysql> select * from fruits group by s_id,f_name; +------+------+------------+---------+

| f_id | s_id | f_name | f_price |

+------+------+------------+---------+

| a1 | 101 | apple | 5.20 |

| b1 | 101 | blackberry | 10.20 |

| c0 | 101 | cherry | 3.20 |

| t1 | 102 | banana | 10.30 |

| t2 | 102 | grape | 5.30 |

| bs1 | 102 | orange | 11.20 |

| a2 | 103 | apricot | 2.20 |

| o2 | 103 | coconut | 9.20 |

| b2 | 104 | berry | 7.60 |

| l2 | 104 | lemon | 6.40 |

| bs2 | 105 | melon | 8.20 |

| m2 | 105 | xbabay | 2.60 |

| m3 | 105 | xxtt | 11.60 |

| m1 | 106 | mango | 15.60 |

| t4 | 107 | xbababa | 3.60 |

| b5 | 107 | xxxx | 3.60 |

+------+------+------------+---------+

16 rows in set (0.01 sec)

查看前四行 的

mysql> select * from fruits limit 4; +------+------+------------+---------+

| f_id | s_id | f_name | f_price |

+------+------+------------+---------+

| a1 | 101 | apple | 5.20 |

| a2 | 103 | apricot | 2.20 |

| b1 | 101 | blackberry | 10.20 |

| b2 | 104 | berry | 7.60 |

+------+------+------------+---------+

从第四行 开始 往后数 3行

mysql> select * from fruits limit 4,3;

+------+------+--------+---------+

| f_id | s_id | f_name | f_price |

+------+------+--------+---------+

| b5 | 107 | xxxx | 3.60 |

| bs1 | 102 | orange | 11.20 |

| bs2 | 105 | melon | 8.20 |

+------+------+--------+---------+

3 rows in set (0.00 sec)

求所有水果的 单价 总和

sum

集合函数查询

AVG() COUNT()MAX() MIN ()

SUM()

mysql> select avg(f_price) as avg_price from fruits where s_id=103;

+-----------+

| avg_price |

+-----------+

| 5.700000 |

+-----------+

1 row in set (0.00 sec)

求平均值

mysql> select avg(f_price) as avg_price from fruits group by s_id;

+-----------+

| avg_price |

+-----------+

| 6.200000 |

| 8.933333 |

| 5.700000 |

| 7.000000 |

| 7.466667 |

| 15.600000 |

| 3.600000 |

+-----------+

7 rows in set (0.00 sec)

mysql> select s_id,min(f_price) as main_price from fruits group by s_id;

+------+------------+

| s_id | main_price |

+------+------------+

| 101 | 3.20 |

| 102 | 5.30 |

| 103 | 2.20 |

| 104 | 6.40 |

| 105 | 2.60 |

| 106 | 15.60 |

| 107 | 3.60 |

+------+------------+

7 rows in set (0.00 sec)

mysql> select s_id,max(f_price) as max_price from fruits group by s_id;

+------+-----------+

| s_id | max_price |

+------+-----------+

| 101 | 10.20 |

| 102 | 11.20 |

| 103 | 9.20 |

| 104 | 7.60 |

| 105 | 11.60 |

| 106 | 15.60 |

| 107 | 3.60 |

+------+-----------+

7 rows in set (0.00 sec)

mysql> select max(f_name) from fruits;

+-------------+

| max(f_name) |

+-------------+

| xxxx |

+-------------+

1 row in set (0.00 sec)

mysql> select suppliers.s_id ,s_name,f_name,f_price from fruits inner join suppliers on fruits.s_id = suppliers.s_id;

+------+--------+------------+---------+

| s_id | s_name | f_name | f_price |

+------+--------+------------+---------+

| 101 | asdas | apple | 5.20 |

| 101 | asdas | blackberry | 10.20 |

| 102 | sadas | orange | 11.20 |

| 101 | asdas | cherry | 3.20 |

| 102 | sadas | banana | 10.30 |

| 102 | sadas | grape | 5.30 |

+------+--------+------------+---------+

6 rows in set (0.00 sec)

mysql> select * from fruits

-> where exists

-> (SELECT s_name from suppliers where s_id=102);+------+------+------------+---------+

| f_id | s_id | f_name | f_price |

+------+------+------------+---------+

| a1 | 101 | apple | 5.20 |

| a2 | 103 | apricot | 2.20 |

| b1 | 101 | blackberry | 10.20 |

| b2 | 104 | berry | 7.60 |

| b5 | 107 | xxxx | 3.60 |

| bs1 | 102 | orange | 11.20 |

| bs2 | 105 | melon | 8.20 |

| c0 | 101 | cherry | 3.20 |

| l2 | 104 | lemon | 6.40 |

| m1 | 106 | mango | 15.60 |

| m2 | 105 | xbabay | 2.60 |

| m3 | 105 | xxtt | 11.60 |

| o2 | 103 | coconut | 9.20 |

| t1 | 102 | banana | 10.30 |

| t2 | 102 | grape | 5.30 |

| t4 | 107 | xbababa | 3.60 |

+------+------+------------+---------+

16 rows in set (0.00 sec)

mysql> select * from fruits where f_price = (select min(f_price) from fruits);     //先执行括号 里的 再执行 括号外面点的

+:匹配前面的字符一次或多次

<字符串>:匹配包含指定的字符串的文本

[字符集合]:匹配字符集合中任何一个字符

[^]:匹配不在括号里的任何字符

字符串{n}:匹配前面的字符串至少N次

字符串{n,m}:匹配前面的字符串至少n次,至多次

mysql> INSERT INTO person_old(id,name,age,info)

-> select id,name,age,info from person;

Query OK, 6 rows affected (0.00 sec)

Records: 6 Duplicates: 0 Warnings: 0

mysql> select * from person_old;

+----+---------+-----+----------+

| id | name | age | info |

+----+---------+-----+----------+

| 1 | asd | 21 | teacher |

| 2 | sdf | 22 | dancer |

| 3 | sdfas | 23 | Musician |

| 4 | sdf | 24 | man |

| 9 | oy | 21 | asdasd |

| 10 | tercher | 19 | asdasd |

+----+---------+-----+----------+

6 rows in set (0.00 sec)

UPDATE table_name

set column_name1=values1, column_name2=values2 WHERE .....

mysql> update person set age=15,name='hehe' where id=3;

Query OK, 1 row affected (0.01 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from person where id=3;

+----+------+-----+----------+

| id | name | age | info |

+----+------+-----+----------+

| 3 | hehe | 15 | Musician |

+----+------+-----+----------+

1 row in set (0.00 sec)

mysql> update person set info='student' where age between 19 and 22;

Query OK, 4 rows affected (0.00 sec)

Rows matched: 4 Changed: 4 Warnings: 0

mysql> select * from person where age between 19 and 22;

+----+---------+-----+---------+

| id | name | age | info |

+----+---------+-----+---------+

| 1 | asd | 21 | student |

| 2 | sdf | 22 | student |

| 9 | oy | 21 | student |

| 10 | tercher | 19 | student |

+----+---------+-----+---------+

4 rows in set (0.00 sec)

mysql> delete from person where id=10;

Query OK, 1 row affected (0.01 sec)

mysql> select * from person where id=10;

Empty set (0.00 sec)

mysql> delete from person where age between 19 and 20;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from person where age between 19 and 20;

Empty set (0.00 sec)

表与表之间的 链接  查看 有相同s_id 的 列表数据

select suppliers.s_id ,s_name ,f_name,f_price from fruits inner join suppliers on fruits.s_id=suppliers.s_id;

供应水果味a1的 人 还 供应了什么

select f1.f_id,f1.f_name from fruits as f1, fruits as f2 where f1.s_id=f2.s_id and f2.f_id='a1';

外链接  用 suppliers 链接 fruits

select fruits.s_id,f_name,s_city from fruits left outer join suppliers on suppliers.s_id=fruits.s_id;

select suppliers.s_id,s_name,f_name,f_price from fruits inner join suppliers on fruits.s_id = suppliers.s_id order by fruits.s_id;

子查询

mysql> select * from fruits where f_price>10 and exists (select * from suppliers where s_id=107);    //判断 suppliers 中是否有 s_id=107  如果存在 就输出 fruits 里 f_price 大于 10 块钱的

mysql> select s_id,f_name from fruits where s_id=(select s1.s_id from suppliers as s1 where s1.s_id='101');

使用 union 链接查询 吧 不相关的信息一起显示出来    合并查询结果  :

mysql> select s_id, f_name, f_price from fruits where f_price <10 union all select s_id, f_name,f_price from fruits where s_id in(101,103);   //数据类型 和表名是相同的

对比俩个表里面的数据

select num1 from tb1 where num1 > any (select num2 from tb2);

子查询

exists

合并查询结果

查询所有价格小于9块钱的水果 并且查询s_id是 101和103的结果

select column... from table1

union

select  column... from table2

查询所有价格小于9块钱的水果 并且查询s_id是 101和103的结果

as

表名 as 表别名

正则表达式的匹配查询

+:匹配前面的字符一次或多次

《字符串》:匹配包含制定的字符串的文本

【字符集和】:匹配自飞机盒中任何一个字符

【^】 :匹配不在括号里的任何字符

字符串{n}:匹配前面的字符串至少n次

字符串{n,m} :匹配前面的字符串至少n次,之多次

*:匹配零个或多个在他前面的字符

$: 匹配文本的结束字符号

. :代表匹配任意一个字符

| 或者

在表中查询以b为开头的水果名字

select * from fruits where f_name regexp '^b';

查询以y为结尾的水果名字

select * from fruits where f_name regexp 'y$';

包含a也包含g并且中间可以匹配任意字符的

select * from fruits where f_name regexp  ’a.g’;

所有a和g的都显示出来

select * from fruits where f_name regexp 'a*g';

查看on或者ap的字符
select * from fruits where f_name regexp 'on|ap';

select * from fruits where f_name regexp'x{1,2}';

第六章 MySQL 查询的更多相关文章

  1. JAVA / MySql 编程——第六章 Mysql 创建账户的相关命令

    1.        创建普通用户: 语法: CREATE USER `user`@`host` [IDENTIFIED 'password'];   //user:用户名,host:主机名,passw ...

  2. 高性能MySQL之【第十六章MySQL用户工具】学习记录

    接口工具:      Msql Workbench   http://www.mysql.com/products/workbench      SQLyog  http://www.webyog.c ...

  3. 第六章· MySQL索引管理及执行计划

    一.索引介绍 1.什么是索引 1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容. 2)让获取的数据更有目的性,从而提高数据库检索数据的性能. 2.索引类型介绍 1)BTREE:B+树索引 ...

  4. (Linux基础学习)第六章:查询与修改系统的本地化(locale)与键盘布局的设置(locelectl)

    第1节:可查询与修改系统的本地化(locale)与键盘布局的设置[root@centos7 ~]# localectl System Locale: LANG=en_US.UTF-8 VC Keyma ...

  5. 第六章 MySQL函数(待续)

    ············

  6. 【MySQL函数】MySQL 5.5从零开始学第六章

    说明:本文总结自:<MySQL 5.5从零开始学>第六章 MySQL中的函数包括: 数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数和加密函数等. 函数: 表示对输入参数值 ...

  7. 第三章 MySQL高级查询(一)

    第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1.       DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...

  8. 第四章 MySQL高级查询(二)

    第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...

  9. PHP+Mysql查询上一篇和下一篇文章实例

    简单的PHP+Mysql查询上一篇和下一篇文章实例,并输出上一篇和下一篇文章的标题和链接,适合新手学习 获取当前浏览文章id: $id = isset($_GET['id']) > 0 ? in ...

随机推荐

  1. H5 学习之旅-H5表格(7)

    表格语法 table:简历表格 captian:表格标题 th:表格行表头 tr:表格行 td:单元格 thead:表格页眉 tfoot:表格页脚 tbody:表格主体 col:列属性 !!!代码实例 ...

  2. Aliyun上Linux服务器挂载数据盘及速度测试

    原始文档来自于阿里云官方文档:  Linux 系统挂载数据盘 铁锚 于 2013年12月19日 根据自己的需要进行整理 操作系统: CentOS 6.3, 平台  : 阿里云 ECS 云服务器 1. ...

  3. Mahout系列之----距离度量

       x = (x1,...,xn) 和y = (y1,...,yn) 之间的距离为 (1)欧氏距离   EuclideanDistanceMeasure (2)曼哈顿距离  ManhattanDis ...

  4. Android万能的指示器

    说到 ViewPager 指示器,想必大家都不陌生,绝大部分应用中都有这个.使用频率非常之高.但系统对它的支持并不好,自带的 PagerTabStrip 和 PagerTitleStrip 太弱,很难 ...

  5. android开发之http协议

    http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web C ...

  6. 网络I/O中的同步、异步、阻塞和非阻塞概念

    在学习网络编程过程中,经常会把这几个概念搞混淆. 同步I/O与异步I/O区别 我们先来看一下操作I/O时涉及的对象和步骤(这里我们以read为例): 这里会涉及到两个系统对象,一个是调用这个I/O的应 ...

  7. Android开发技巧——实现可复用的ActionSheet菜单

    在上一篇<Android开发技巧--使用Dialog实现仿QQ的ActionSheet菜单>中,讲了这种菜单的实现过程,接下来将把它改成一个可复用的控件库. 本文原创,转载请注明出处: h ...

  8. 理解 Linux 条件变量

    理解 Linux 条件变量 1 简介 当多个线程之间因为存在某种依赖关系,导致只有当某个条件存在时,才可以执行某个线程,此时条件变量(pthread_cond_t)可以派上用场.比如: 例1: 当系统 ...

  9. 真机测试遇到0xE8008016错误修改方法

    错误描述 真机测试过程中,更换Provisioning Profile之后,出现错误:The entitlements specified in your application's Code Sig ...

  10. ThreadPoolExecutor运行机制

    最近发现几起对ThreadPoolExecutor的误用,其中包括自己,发现都是因为没有仔细看注释和内部运转机制,想当然的揣测参数导致,先看一下新建一个ThreadPoolExecutor的构建参数: ...