第六章 MySQL 查询
查询数据表
语法:
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 查询的更多相关文章
- JAVA / MySql 编程——第六章 Mysql 创建账户的相关命令
1. 创建普通用户: 语法: CREATE USER `user`@`host` [IDENTIFIED 'password']; //user:用户名,host:主机名,passw ...
- 高性能MySQL之【第十六章MySQL用户工具】学习记录
接口工具: Msql Workbench http://www.mysql.com/products/workbench SQLyog http://www.webyog.c ...
- 第六章· MySQL索引管理及执行计划
一.索引介绍 1.什么是索引 1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容. 2)让获取的数据更有目的性,从而提高数据库检索数据的性能. 2.索引类型介绍 1)BTREE:B+树索引 ...
- (Linux基础学习)第六章:查询与修改系统的本地化(locale)与键盘布局的设置(locelectl)
第1节:可查询与修改系统的本地化(locale)与键盘布局的设置[root@centos7 ~]# localectl System Locale: LANG=en_US.UTF-8 VC Keyma ...
- 第六章 MySQL函数(待续)
············
- 【MySQL函数】MySQL 5.5从零开始学第六章
说明:本文总结自:<MySQL 5.5从零开始学>第六章 MySQL中的函数包括: 数学函数.字符串函数.日期和时间函数.条件判断函数.系统信息函数和加密函数等. 函数: 表示对输入参数值 ...
- 第三章 MySQL高级查询(一)
第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1. DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...
- 第四章 MySQL高级查询(二)
第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...
- PHP+Mysql查询上一篇和下一篇文章实例
简单的PHP+Mysql查询上一篇和下一篇文章实例,并输出上一篇和下一篇文章的标题和链接,适合新手学习 获取当前浏览文章id: $id = isset($_GET['id']) > 0 ? in ...
随机推荐
- python的exec
exec "一条python语句" 这样会执行python 语句.用于执行储存在字符串或文件中的Python语句. 当然 也可以 用 exec(str)这种方式, 总之一句话,尽量 ...
- 《java入门第一季》之面向对象(内部类到底在哪里?)
/* 内部类概述: 把类定义在其他类的内部,这个类就被称为内部类. 举例:在类A中定义了一个类B,类B就是内部类. 内部的访问特点: A:内部类可以直接访问外部类的成员,包括私有. B:外部类要访问内 ...
- R--线性回归诊断(一)
线性回归诊断--R [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 勿忘初心 无畏未来 作为一个初学者,水平有限,欢迎交流指正. 在R中线性回 ...
- 大型服装集团BI决策系统的分析主题模块
一般BI商业智能解决方案都包含财务.销售.客户等分析模块,本文分享的是某大型服装集团通过帆软FineBI建设的BI决策系统.该决策系统主要针对财务.资金.采购.生产.库存.物流.销售.渠道.产品.客户 ...
- Google性能工程师Ilya Grigorik谈HTTP/2
via:http://www.infoq.com/cn/news/2014/11/http2-develop HTTP/2,也就是超文本传输协议第2版,是下一代HTTP协议.该版本是自1999年HTM ...
- iOSAPP启动效果复杂动画之抽丝剥茧
一.前言 随着开发者的增多和时间的累积,AppStore已经有非常多的应用了,每年都有很多新的APP产生.但是我们手机上留存的应用有限,所以如何吸引用户,成为产品设计的一项重要内容.其中炫酷的动画效果 ...
- ERP-非财务人员的财务培训教(五)------资本结构筹划
一.融资渠道 二.融筹资管理 第五部分 资本结构筹划 一.融资渠道 l 银行借款 优点:不影响企业的营运资本,不给企 ...
- github搭建个人网站
1. 注册账号: 地址: https://github.com/ 输入账号.邮箱.密码,然后点击注册按钮. 2. 初始设置 注册完成后,选择Free免费账号完成设置. 2.1 验证邮箱 请打开你的 ...
- Unity Editor 编写unity插件类
在unity写了一个编辑类,基于iTweenpath插件,为了更方便的操作iTweenpath,顺便练习UnityEditor的操作,写了一个CreateiTweenPath,放在Editor文件夹中 ...
- ITU-T Technical Paper: NP, QoS 和 QoE的框架以及它们的区别
本文翻译自ITU-T的Technical Paper:<How to increase QoS/QoE of IP-based platform(s) to regionally agreed ...