SQL语法介绍
一、Select 查询
语法:
mysql> help select
Name: 'SELECT'
Description:
Syntax:
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr ...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]
1、Limit
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
mysql> select * from employees order by emp_no limit 50,5; (从50条,向后偏移5个)
+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date |
+--------+------------+------------+-----------+--------+------------+
| 10051 | 1953-07-28 | Hidefumi | Caine | M | 1992-10-15 |
| 10052 | 1961-02-26 | Heping | Nitsch | M | 1988-05-21 |
| 10053 | 1954-09-13 | Sanjiv | Zschoche | F | 1986-02-04 |
| 10054 | 1957-04-04 | Mayumi | Schueller | M | 1995-03-13 |
| 10055 | 1956-06-06 | Georgy | Dredge | M | 1992-04-27 |
+--------+------------+------------+-----------+--------+------------+
5 rows in set (0.00 sec)
2、order by 排序
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...] 默认为升序asc
mysql> select * from dept_emp order by emp_no limit 5;
+--------+---------+------------+------------+
| emp_no | dept_no | from_date | to_date |
+--------+---------+------------+------------+
| 10001 | d005 | 1986-06-26 | 9999-01-01 |
| 10002 | d007 | 1996-08-03 | 9999-01-01 |
| 10003 | d004 | 1995-12-03 | 9999-01-01 |
| 10004 | d004 | 1986-12-01 | 9999-01-01 |
| 10005 | d003 | 1989-09-12 | 9999-01-01 |
+--------+---------+------------+------------+
5 rows in set (0.00 sec)
mysql> select * from dept_emp order by emp_no desc limit 5;
+--------+---------+------------+------------+
| emp_no | dept_no | from_date | to_date |
+--------+---------+------------+------------+
| 499999 | d004 | 1997-11-30 | 9999-01-01 |
| 499998 | d002 | 1993-12-27 | 9999-01-01 |
| 499997 | d005 | 1987-08-30 | 9999-01-01 |
| 499996 | d004 | 1996-05-13 | 9999-01-01 |
| 499995 | d004 | 1997-06-02 | 9999-01-01 |
+--------+---------+------------+------------+
5 rows in set (0.00 sec)
3、where 过滤
mysql> select * from titles where title = 'Senior Engineer';
表达式:
>、=、<
and
or
not
between NUM1 and NUM2
like 模式匹配
mysql> select * from titles where emp_no between 10001 and 10004;
+--------+-----------------+------------+------------+
| emp_no | title | from_date | to_date |
+--------+-----------------+------------+------------+
| 10001 | Senior Engineer | 1986-06-26 | 9999-01-01 |
| 10002 | Staff | 1996-08-03 | 9999-01-01 |
| 10003 | Senior Engineer | 1995-12-03 | 9999-01-01 |
| 10004 | Engineer | 1986-12-01 | 1995-12-01 |
| 10004 | Senior Engineer | 1995-12-01 | 9999-01-01 |
+--------+-----------------+------------+------------+
5 rows in set (0.00 sec)
连表查询
内连接
mysql> select e.emp_no,concat(last_name,' ',first_name) as name,gender,title from employees as e,titles as t where e.emp_no = t.emp_no order by emp_no limit 10;
外连接
A:左外连接
mysql> select * from a;
+------+
| a |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
mysql> select * from n;
+------+
| a |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
mysql> select * from a left join n on a.a=n.a;
+------+------+
| a | a |
+------+------+
| 1 | 1 |
| 2 | 2 |
| 3 | NULL |
+------+------+
3 rows in set (0.00 sec)
mysql> select * from a;
+-----------+--------+
| course_id | course |
+-----------+--------+
| 1 | yuwen |
| 2 | shuxue |
| 3 | lishi |
| 4 | yingyu |
| 5 | huaxue |
+-----------+--------+
5 rows in set (0.00 sec)
mysql> select * from b;
+-----+--------+-----------+
| sid | name | course_id |
+-----+--------+-----------+
| 1 | wang | 1 |
| 2 | limeng | 3 |
| 3 | liu | 1 |
| 4 | wangli | 4 |
| 5 | di | 2 |
| 6 | kaiu | 3 |
+-----+--------+-----------+
6 rows in set (0.00 sec)
mysql> select * from b left join a on b.course_id = a.course.id;
ERROR 1054 (42S22): Unknown column 'a.course.id' in 'on clause'
mysql> select * from b left join a on b.course_id = a.course_id;
+-----+--------+-----------+-----------+--------+
| sid | name | course_id | course_id | course |
+-----+--------+-----------+-----------+--------+
| 1 | wang | 1 | 1 | yuwen |
| 3 | liu | 1 | 1 | yuwen |
| 5 | di | 2 | 2 | shuxue |
| 2 | limeng | 3 | 3 | lishi |
| 6 | kaiu | 3 | 3 | lishi |
| 4 | wangli | 4 | 4 | yingyu |
+-----+--------+-----------+-----------+--------+
6 rows in set (0.00 sec)
mysql> select * from b right join a on b.course_id = a.course_id;
+------+--------+-----------+-----------+--------+
| sid | name | course_id | course_id | course |
+------+--------+-----------+-----------+--------+
| 1 | wang | 1 | 1 | yuwen |
| 3 | liu | 1 | 1 | yuwen |
| 5 | di | 2 | 2 | shuxue |
| 2 | limeng | 3 | 3 | lishi |
| 6 | kaiu | 3 | 3 | lishi |
| 4 | wangli | 4 | 4 | yingyu |
| NULL | NULL | NULL | 5 | huaxue |
+------+--------+-----------+-----------+--------+
7 rows in set (0.00 sec)
mysql> select c.customer_id,count(o.order_id) as total_orders from customers as c left join orders as o on c.customer_id = o.customer_id where city = 'HangZhou' group by c.customer_id having total_orders <2 order by total_orders desc;
+-------------+--------------+
| customer_id | total_orders |
+-------------+--------------+
| TX | 1 |
| baidu | 0 |
+-------------+--------------+
2 rows in set (0.00 sec)
SQL语法介绍的更多相关文章
- FreeSql (二十四)Linq To Sql 语法使用介绍
原本不支持 IQueryable 主要出于使用习惯的考虑,如果继承 IQueryable,编写代码的智能总会提示出现一堆你不想使用的方法(对不起,我有强迫症),IQueryable 自身提供了一堆没法 ...
- [转]MySQL 最基本的SQL语法/语句
MySQL 最基本的SQL语法/语句,使用mysql的朋友可以参考下. DDL-数据定义语言(Create,Alter,Drop,DECLARE) DML-数据操纵语言(Select,Delete ...
- 初学者SQL语句介绍
初学者SQL语句介绍 1.用 Select 子句检索记录 Select 子句是每一个检索数据的查询核心.它告诉数据库引擎返回什么字段. Select 子句的常见形式是: S ...
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- SQLite的SQL语法
SQLite库能够解析大部分标准SQL语言.但它也省去了一些特性而且增加了一些自己的新特性.这篇文档就是试图描写叙述那些SQLite支持/不支持的SQL语法的.查看keyword列表. 例如以下语法表 ...
- SQLite的 SQL语法总结
SQLite库可以解析大部分标准SQL语言.但它也省去了一些特性并且加入了一些自己的新特性.这篇文档就是试图描述那些SQLite支持/不支持的SQL语法的.查看关键字列表. 如下语法表格中,纯文本用蓝 ...
- 面试必须要知道的SQL语法,语句
面试必须要知道的SQL语法,语句 收藏 asc 按升序排列desc 按降序排列下列语句部分是Mssql语句,不可以在access中使用.SQL分类: DDL—数据定义语言(Create,Alter,D ...
- pl/sql的介绍
为什么需要pl/sql编程? 因为使用纯的sql语句来操作数据库,有先天性的技术缺陷: 1.不能模块编程: 2.执行速度慢: 3.安全性有问题: 4.浪费带宽. pl/sql是什么? pl/sql(p ...
- SQL的介绍及MySQL的安装
基础篇 - SQL 介绍及 MySQL 安装 SQL的介绍及MySQL的安装 课程介绍 本课程为实验楼提供的 MySQL 实验教程,所有的步骤都在实验楼在线实验环境中完成, ...
随机推荐
- Java学习第一天之简单了解java语言及开发环境的安装
一.初步了解Java语言 Java语言是由Sun公司的James Gosling创造的一门面向对象的高级语言. 2009年4月20日,Sun公司被Oracle以总价值约为74亿美元的价格收购,Java ...
- 解决在Linux操作系统下无法连接MySQL服务端的问题
遇到这种问题的时候我们需要考虑的是防火墙规则,因为防火墙默认是禁止所有端口访问的,所以我们需要添加一个访问端口来连接MySQL. 命令如下: 允许某端口 firewall-cmd --zone= ...
- [Abp vNext微服务实践] - 文章目录
简介 ABP vNext是volosoft的新一代框架,ABP(vNext)完全使用.NET CORE和DDD(领域驱动)打造,目前GitHub已有6K+次提交,发布版本超过40次,Nuget包下载量 ...
- Mha-Atlas-MySQL高可用方案实践
一,mysql-mha环境准备 1.1 实验环境: 1.1 实验环境: 主机名 IP地址(NAT) 描述 mysql-master eth0:10.1.1.154 系统:CentOS6.5(6.x都可 ...
- Python 类和对象(2)
上文讲到 类 = 属性 + 方法 今天来讲一下方法里常见的一个特殊的方法: 名字叫 __init__ 的构造方法 1.特殊的方法 :__init__ 该方法在我们实例化类的时候,python就自动调用 ...
- Hadoop的简单了解与安装
hadoop 一, Hadoop 分布式 简介Hadoop 是分布式的系统架构,是 Apache 基金会顶级金牌项目 分布式是什么?学会用大数据的思想来看待和解决问题 思 想很重要 1-1 . ...
- Mysql 语法豆知识
https://www.cnblogs.com/chentianwei/p/8093748.html mysql增加了大量语法,以前没有接触过.比如 create function begin..en ...
- js 同步 异步 宏任务 微任务 文章分享
分享一篇 写的很好的 宏任务 微任务 同步异步的文章 文章原地址: https://juejin.im/post/59e85eebf265da430d571f89 这一次,彻底弄懂 JavaScri ...
- Socket嵌套字通讯
一.socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后 ...
- 第93题:复原IP地址
一. 问题描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式. 示例: 输入: "25525511135" 输出: ["255.255.11.135 ...