sql语句学习教程03_select_select查询_select语句_sql查询语句
1.select语法与表达式
select查询是SQL语言中的基础,但也往往最复杂的SQL语句也是查询语句,掌握好了各种条件下的查询,也就能写出复杂的过程、函数,也就能快速掌握复杂条件下的新增、更新、删除等语句,一个完整的SQL语法框架,参考如下:
SELECT [表名|视图名].字段名
FROM 表名|视图名
WHERE 查询条件
GROUP BY 分组
HAVING 分组后再过滤筛选
LIMIT 限制显示多少行记录
ORDER BY [ASC | DESC] 排序,升序|降序
2.SELECT查询列
用select语句开头,后面跟着需要显示的列,列可以来自于在from中指定的表或视图的字段,也可以是表达式、函数、甚至是子查询,但表达式、函数或者是子查询,当做查询列使用时,在同一行记录中,只能返回单一属性值。如果是多表查询,在查询列中出现的列在多个表中都存在,就必须明确指明是哪个表的列,案例如下:
fgedu.net@mysql> select 10+20, 10*20;
+-------+-------+
| 10+20 | 10*20 |
+-------+-------+
| 30 | 200 |
+-------+-------+
1 row in set (0.00 sec)
fgedu.net@mysql> select NOW(),UNIX_TIMESTAMP();
+---------------------+------------------+
| NOW() | UNIX_TIMESTAMP() |
+---------------------+------------------+
| 2019-09-01 09:08:57 | 1567300137 |
+---------------------+------------------+
1 row in set (0.05 sec)
fgedu.net@mysql> select yg.department_id from yg, bm where yg.department_id=bm.department_id limit 1;
+---------------+
| department_id |
+---------------+
| 10 |
+---------------+
1 row in set (0.01 sec)
3.FROM子句及别名
From字句是用来指定查询的数据源,可以是表、视图,也可以是一个查询结果集,如果是一个子查询,那必须给这个子查询设置一个别名,别名是一种代号,可以为列、表、视图、子查询设置别名,设置之后,就可以用别名来指代原来的对象(仅在当前SQL语句中有效),好处是便于理解、引用,简化SQL复杂度。
案例1:在需要设置的对象后面 加上“as 别名”即可,“as 也可以省略”。
fgedu.net@mysql> select * from (select last_name from yg limit 5) a;
+-----------+
| last_name |
+-----------+
| Abel |
| Ande |
| Atkinson |
| Baer |
| Baida |
-----------+
5 rows in set (0.00 sec)
案例2:为列设置别名后,就以别名的形式显示列标题
fgedu.net@mysql> select a.department_id dept from yg a, bm b where a.department_id=b.department_id limit 1;
+------+
| dept |
+------+
| 60 |
+------+
1 row in set (0.00 sec)
4.虚拟表DUAL
DUAL表是一个虚拟的表,意思就是不是真实存在的,可以理解成是为了让语法结构更加完整而杜撰出来的,实际上在MySQL中不像在ORACLE中那么严谨,MySQL中完全可以省略掉from dual这一部分语句,例如:下面两句语句在MySQL中是一样的。
select NOW() from dual;
select NOW();