SQL学习指南2——查询入门

每当查询被发送到服务器端时,服务器在执行语句之前将会进行下面的检查:

  用户是否有权限执行该语句?

  用户是否有权限访问目标数据?

  语句的语法是否正确?

Select 子句是select 语句中的第一个组成部分,但实际上在数据库服务器中,它是最后被评估的。因为在确定结果集最后包含哪些列之前,必须先要知道结果集所有可能包含的列。

mysql> select version(),user(),database();

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

| version()           | user()         | database() |

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

| 5.0.45-community-nt | root@localhost | NULL       |

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

1 row in set (0.03 sec)

// distinct去掉重复行,默认为显示所有记录,或用关键字all,常省略

Select distinct name from tab;             

表:永久表(create table语句创建的表),临时表(子查询所返回的表),虚拟表(使用create view子句所创建的视图)。

//子查询产生的表

mysql> select t.id,post_type from (select * from wp_posts) t;

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

| id | post_type |

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

|  1 | post      |

|  2 | page      |

|  3 | post      |

|  4 | post      |

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

4 rows in set (0.02 sec)

视图是存储在数据字典中的查询,它的行为表现得像一个表,但实际上并不拥有任何数据。当发出一个对视图的查询时,该查询会被绑定到视图定义上,以产生最终被执行的查询。

mysql> create view view_test as select * from wp_posts;

Query OK, 0 rows affected (0.01 sec)

mysql> select id,post_type from view_test;

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

| ID | post_type |

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

|  2 | page      |

|  3 | post      |

|  4 | post      |

|  1 | post      |

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

4 rows in set (0.00 sec)

Order by

       升序或降序排序:asc升,desc降,默认为升。

       根据表达式排序:order by right(fed_id, 3)。

       根据数字占位符排序:如果需要根据select子句中的列来排序,那么可以选择使用该列位于select子句中的位置号来替代列名。如:order by 2, 5 表示根据查询返回的第2个和第5个列排序。不常用。

原文地址:https://www.cnblogs.com/lltong/p/2611983.html