一、简单查询:

基本语法:

SELECT * FROM tb_name;查询全部

SELECT field1,field2 FROM tb_name; 投影

SELECT [DISTINCT] * FROM tb_name WHERE qualification; 选择

说明:

FROM子句: 要查询的关系 表、多个表、其它SELECT语句

WHERE子句:布尔关系表达式,主要包含如下这几类表达式:

比较:=、>、>=、<=、<

逻辑关系:

AND

OR

NOT

BETWEEN ... AND ... :在两个值之间

LIKE ‘’

%: 任意长度任意字符

_:任意单个字符

REGEXP, RLIKE :正则表达式,此时索引无效

IN

IS NULL

IS NOT NULL

如下查询本博客的wp-links和wp_posts表:

mysql> select * from wp_links; 查询全部 mysql> select link_name,link_url from wp_links; 投影

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

| link_name | link_url |

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

| 旺旺腾讯微博 | http://t.qq.com/toxingwang |

| 旺旺新浪微博 | http://weibo.com/gz100ww |

| 51CTO技术博客 | http://towangwang.blog.51cto.com/ |

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

10 rows in set (0.00 sec)

mysql> select ID,post_title,post_date from wp_posts where ID>1290 and post_status='publish';选择

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

| ID | post_title | post_date |

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

| 1291 | 【转】HP 3PAR存储概念之三 | 2013-08-29 17:21:27 |

| 1298 | 【转】HP 3PAR存储概念之四 | 2013-08-29 17:22:33 |

| 1351 | 【转】XenDesktop 5.5+vSphere 5创建虚拟机报错 | 2013-09-04 17:41:26 |

| 1357 | linux下强大的网络工具Netcat | 2013-09-09 22:26:45 |

| 1360 | MySQL常用命令、技巧和注意事项 | 2013-09-20 11:04:15 |

| 1369 | 【转】数据库设计原理知识--B树、B-树、B+树、B*树都是什么 | 2013-09-21 12:30:18 |

| 1379 | MySQL基本SQL语句之常用管理SQL | 2013-09-21 12:39:23 |

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

7 rows in set (0.01 sec)

对查询结果排序:

ORDER BY field_name {ASC|DESC}

如下:

mysql> select ID,post_title,post_date from wp_posts where ID>1290 and post_status='publish' ORDER by ID; ##升序,ID是排序的字段

mysql> select ID,post_title,post_date from wp_posts where ID>1290 and post_status='publish' ORDER by ID DESC;##降序

字段别名:AS

select col_name AS COL_Aliases … :对字段使用别名

select col_name,… from tb_name AS tb_Aliases … :对表使用别名

如下:

mysql> select post_title AS 文章标题 from wp_posts where ID>1290 and post_status='publish';

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

| 文章标题 |

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

| 【转】HP 3PAR存储概念之三 |

| 【转】HP 3PAR存储概念之四 |

| 【转】XenDesktop 5.5+vSphere 5创建虚拟机报错 |

| linux下强大的网络工具Netcat |

| MySQL常用命令、技巧和注意事项 |

| 【转】数据库设计原理知识--B树、B-树、B+树、B*树都是什么 |

| MySQL基本SQL语句之常用管理SQL |

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

7 rows in set (0.02 sec)

##还可以这样:

mysql> select 3+2 AS SUM;

+-----+

| SUM |

+-----+

| 5 |

+-----+

1 row in set (0.00 sec)

LIMIT子句:LIMIT [offset,]Count

如下:

mysql> select ID,post_title,post_date from wp_posts where ID>1290 and post_status='publish' limit 5;

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

| ID | post_title | post_date |

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

| 1291 | 【转】HP 3PAR存储概念之三 | 2013-08-29 17:21:27 |

| 1298 | 【转】HP 3PAR存储概念之四 | 2013-08-29 17:22:33 |

| 1351 | 【转】XenDesktop 5.5+vSphere 5创建虚拟机报错 | 2013-09-04 17:41:26 |

| 1357 | linux下强大的网络工具Netcat | 2013-09-09 22:26:45 |

| 1360 | MySQL常用命令、技巧和注意事项 | 2013-09-20 11:04:15 |

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

5 rows in set (0.01 sec)

mysql> select ID,post_title,post_date from wp_posts where ID>1290 and post_status='publish' limit2,3; ##红色部分(逗号前的数字)表示偏移量

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

| ID | post_title | post_date |

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

| 1351 | 【转】XenDesktop 5.5+vSphere 5创建虚拟机报错 | 2013-09-04 17:41:26 |

| 1357 | linux下强大的网络工具Netcat | 2013-09-09 22:26:45 |

| 1360 | MySQL常用命令、技巧和注意事项 | 2013-09-20 11:04:15 |

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

3 rows in set (0.00 sec)

聚合:SUM(), MIN(), MAX(), AVG(), COUNT(),括号中为字段名

mysql> select sum(ID) from wp_posts;计算和

mysql> select min(ID) from wp_posts;查早最小的

mysql> select max(ID) from wp_posts; 查找最大的

mysql> select avg(ID) from wp_posts; 平均值

mysql> select count(ID) from wp_posts;计数

分组:GROUP BY,一般配合聚合运算使用

如下:

mysql> select count(post_status) AS 各状态数量,post_status AS 状态名称 from wp_posts group bypost_status;

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

| 各状态数量 | 状态名称 |

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

| 1 | auto-draft |

| 9 | draft |

| 251 | inherit |

| 238 | publish |

| 2 | trash |

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

5 rows in set (0.01 sec)

注意:可以使用HAVING qualification将GROUP BY的结果再次过滤,用法同where

二、多表查询

连接:

交叉连接:笛卡尔乘积

自然连接:将两张表某字段中相等连接起来,如下

mysql> SELECT students.Name,students.Age,courses.Cname,students.Gender FROM students,courses WHERE students.CID1 = courses.CID;

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

| Name | Age | Cname | Gender |

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

| GuoJing | 19 | TaiJiquan | M |

| YangGuo | 17 | TaiJiquan | M |

| DingDian | 25 | Qishangquan | M |

| HuFei | 31 | Wanliduxing | M |

| HuangRong | 16 | Qianzhuwandushou | F |

| YueLingshang | 18 | Wanliduxing | F |

| ZhangWuji | 20 | Hamagong | M |

| Xuzhu | 26 | TaiJiquan | M |

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

8 rows in set (0.00 sec)

外连接:

左外连接:left_tb LEFT JOIN right_tb ON ... :以左表为标准

mysql> SELECT s.Name,c.Cname FROM students AS s LEFT JOIN courses AS c ON s.CID1=c.CID;

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

| Name | Cname |

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

| GuoJing | TaiJiquan |

| YangGuo | TaiJiquan |

| DingDian | Qishangquan |

| HuFei | Wanliduxing |

| HuangRong | Qianzhuwandushou |

| YueLingshang | Wanliduxing |

| ZhangWuji | Hamagong |

| Xuzhu | TaiJiquan |

| LingHuchong | NULL |

| YiLin | NULL |

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

10 rows in set (0.00 sec)

右外连接 : left_tb RIGHT JOIN right_tb ON ... :以右表为标准

mysql> SELECT s.Name,c.Cname FROM students AS s RIGHT JOIN courses AS c ON s.CID1=c.CID;

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

| Name | Cname |

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

| GuoJing | TaiJiquan |

| YangGuo | TaiJiquan |

| DingDian | Qishangquan |

| HuFei | Wanliduxing |

| HuangRong | Qianzhuwandushou |

| YueLingshang | Wanliduxing |

| ZhangWuji | Hamagong |

| Xuzhu | TaiJiquan |

| NULL | Yiyangzhi |

| NULL | Jinshejianfa |

| NULL | Qiankundanuoyi |

| NULL | Pixiejianfa |

| NULL | Jiuyinbaiguzhua |

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

13 rows in set (0.01 sec)

自连接:本表中不同字段间进行连接

mysql> SELECT c.Name AS student,s.Name AS teacher FROM students AS c,students AS s WHERE c.TID=s.SID;

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

| student | teacher |

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

| GuoJing | DingDian |

| YangGuo | GuoJing |

| DingDian | ZhangWuji |

| HuFei | HuangRong |

| HuangRong | LingHuchong |

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

5 rows in set (0.02 sec)

注意:使用了别名

三、子查询:一个查询中嵌套另外一个查询

如下:在students表中查询年龄大于平均年龄的学生

mysql> SELECT Name,Age FROM students WHERE Age > (SELECT AVG(Age) FROM students);

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

| Name | Age |

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

| DingDian | 25 |

| HuFei | 31 |

| Xuzhu | 26 |

| LingHuchong | 22 |

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

4 rows in set (0.08 sec)

子查询注意事项:

比较操作中使用子查询:子查询只能返回单个值;

IN(): 使用子查询;

在FROM中使用子查询;

联合查询:UNION,将两个查询的结果合并

mysql> (SELECT Name,Age FROM students) UNION (SELECT Tname,Age FROM tutors);+--------------+------+| Name | Age |+--------------+------+| GuoJing | 19 || YangGuo | 17 || DingDian | 25 || HuFei | 31 || HuangRong | 16 || YueLingshang | 18 || ZhangWuji | 20 || HuYidao | 42 || NingZhongze | 49 |+--------------+------+19 rows in set (0.00 sec)

mysql多表查询sql语句怎么写_MySQL基本SQL语句之单表查询、多表查询和子查询相关推荐

  1. mysql数据库insert语句怎么写_MySQL数据库Insert语句7种写法

    简介 很多开发人员工作了几年之后,都会自嘲,自己啥技术都没学到,就会CRUD,可是我要说的是,CRUD你真的都会吗,你在MySQL数据库中,会几种insert语句写法呢.在这里我会7种写法,下面我就来 ...

  2. php mysql循环语句怎么写_mysql数据库循环语句该怎么写???

    数据库结构 num date 2 2013-07-24 5 2013-07-25 8 2013-08-03 10 2013-08-22 4 2013-09-10 最后要在页面中输出为一个行行统计格式 ...

  3. mysql数据库条件语句怎么写_Mysql数据库的条件查询语句

    对于分析人员来讲,Mysql数据库应用最多的是select查询语句,此篇文章主要介绍Mysql数据库的查询语句. 一.单表查询 1.带条件的查询 基本语法:select * from +表名称 +wh ...

  4. mysql 查询语句属性值_MySQL学习——SQL查询语句(一)

    查询数据是指从数据库中获取所需要的数据,查询数据是数据库操作中最常用也是最重要的操作,用户可以根据对数据的需求,使用不同的查询方式,通过不同的查询方式可以获得不同的数据,在MySQL中使用select ...

  5. oracle中删除表字段 sql语句怎么写,oracle使用sql语句增加字段示例(sql删除字段语句)...

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); 修改字段的语法:alter ...

  6. mysql 语句性能分析_mysql的sql语句的性能诊断分析

    1> explain SQL,类似于Oracle中explain语句 例如:explain select * from nad_aditem; 2> select benchmark(co ...

  7. 创建bbs mysql语句怎么写_MySQL常用语句 | 小灰灰博客

    常用的语句 查询 select * from bbs where id=1; 增加 insert into bbs (name,data_year) values ("jack", ...

  8. mysql 查看表v空间自增涨_MySQL性能管理及架构设计(一):什么影响了数据库查询速度、什么影响了MySQL性能

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒能够相应的查 ...

  9. mysql删除数据库数据库语句怎么写_mysql数据库的删除语句怎么写

    我就废话不多说了,大家还是直接看代码吧~create or replace function aa1(a1 integer[],a2 bigint) returns void AS $$declare ...

最新文章

  1. SDOI2015 约数个数和(莫比乌斯反演经典、双上限整除分块)超详细笔记
  2. 解决phpmyadmin 遇见的问题
  3. SAP最佳业务实践:重复制造(149)-4发料
  4. getsockname与getpeername用法与区别
  5. php常用代码(一)
  6. 变量、属性、函数、方法总结
  7. 我的技术博客开通了!
  8. 如何将两段音乐合并成一段?
  9. 天线匹配与人体之间的关系
  10. 无法更改硬件兼容性时解决“虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本”的方法
  11. 自动发货-用千牛如何做到发货号自动转接人工号
  12. python 工资条_当财务部的人会编程,会发生什么?Python实现自动化群发工资条...
  13. 电影数据分析——国产烂片深度揭秘
  14. 无人机这个创业方向靠谱吗?值得投资吗?
  15. 特斯拉新董事长:在我看来马斯克发推特很明智
  16. 你真会进制的转换吗?进制之间的快速转换方法(我的转换很快,你忍一下)
  17. Mysql like语句的一个注意点,查询含有百分号的SQL语句
  18. windows下 兼容性助手 修改的注册表位置
  19. 怎么使计算机软件运行快w10,w10怎么优化开机速度_w10优化开机速度的方法
  20. 释迦牟尼的悲哀(转)

热门文章

  1. hdu 1241Oil Deposits(BFS)
  2. 使用wireshark抓取3G包
  3. 语音合成与识别技术在C#中的应用 (转 )
  4. 应用层协议与网络应用
  5. 【剑指offer】面试题21:调整数组顺序使奇数位于偶数前面
  6. mysql排序规则错误_MySQL中“非法混合排序规则”错误的疑难解答
  7. 查看ie保存的表单_小学信息技术gt;搜索保存网页教师资格证面试模板
  8. html代码type,HTML中type是什么意思
  9. Python获得某个范围的的随机整数
  10. 用S-函数编写Simulink中的正弦模块