MySQL CRASH COURSE命令总结(第四章检索数据)

来源:互联网 发布:站长工具源码 编辑:程序博客网 时间:2024/06/08 09:42

SHOW DATABASES;


USE crashcourse;


SHOW TABLES;


SHOW COLUMNS FROM customers; = DESCRIBE customers;后者是前者的快捷方式

SQL语句不区分大小写,建议对所有SQL关键字使用大写,而对所有列和表名使用小写,这样做使代码更容易阅读和调试。但是,有些标识符可能不同(如数据库名,表名,列名):在MySQL4.1及之前的版本中,这些标识符默认是区分大小写的;在MySQL4.1.1版本中,这些标识符默认是不区分大小写的;4.1.1之后的版本应该也是不区分(待确认)。

使用空格:在处理SQL语句时,其中所有的空格都被忽略。SQL语句可以在一行上给出,也可以分成许多行。多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。


检索多个列:

SELECT prod_id, prod_name, prod_price

FROM products;

数据表示:从上述输出可以看到,SQL语句一般返回原始的、无格式的数据。数据的格式化是一个表示问题,而不是一个检索问题。因此,表示(对齐和显示上面的价格值,用货币符号和逗号表示其金额)一般在显示该数据的应用程序中规定。一般很少使用实际检索出的原始数据( 没有应用程序提供的格式)。


检索所有列:

SELECT *

FROM products;

如果给定一个通配符(*),则返回表中所有列。列的顺序一般是列在表定义中出现的顺序。但有时候并不是这样,表的模式的变化(如添加 或删除列)可能会导致顺序的变化。

使用通配符:一般,除非你确实需要表中的每个列,否则最好别使用*通配符。虽然使用通配符可能会使你省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。

检索未知列:使用通配符有一个大优点。由于不明确指定列名(因为星号检索每个列),所以能检索出名字未知的列。


检索不同的行:

SELECT vend_id

FROM products;

SELECT语句返回14行(即使表中只有4个供应商),因为products表中列出了14个产品。

SELECT DISTINCT vend_id

FROM products;

SELECT DISTINCT vend_id告诉MySQL只返回不同(唯一)的vend_id行,因此只返回4行。

不能部分使用DISTINCT:DISTINCT关键字应用于所有列而不仅是前置它的列。如果给出SELECT DISTINCT vend_id, prod_price,除非指定的两个列都不同,否则所有行都被检索出来。


限制结果:

SELECT prod_name

FROM products

LIMIT 5;

此语句使用SELECT语句检索单个列。LIMIT 5指示MySQL返回不多于5行。

为得出下一个5行,可指定要检索的开始行和行数,如下所示:

SELECT prod_name

FROM products

LIMIT 5,5;

分析:LIMIT 5,5指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。

所以带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始。

【注意】行0:检索出来的是第一行为行0而不是行1。因此,LIMIT 1,1将检索出第二行而不是第一行。

在行数不够时:LIMIT中指定要检索的行数为检索的最大行数。如果没有足够的行(例如,给出LIMIT 10,5,但只有13行),MySQL将只返回它能返回的那么多行。

MySQL5的LIMIT语法:LIMIT 3,4的含义是从行4开始的3行还是从行3开始的4行?如前所述,它的意思是从行3开始的4行,这容易把人搞糊涂。由于这个原因,MySQL5支持LIMIT的另一种替代语法。LIMIT 4 OFFSET 3 意为从行3开始取4行,就像LIMIT 3,4一样。


使用完全限定的表名:

SELECT products.prod_name

FROM products;

这条SQL语句功能与SELECT prod_name FROM products;一样,但这里指定了一个完全限定的列名。

表名也可以是完全限定的:

SELECT products.prod_name

FROM crashcourse.products;

这条语句在功能上也等同于SELECT prod_name FROM products;(当然,假定products表确实位于crashcourse数据库中)。

正如以后章节所介绍的那样,有一些情形需要完全限定名。现在,需要注意这个语法,以便在遇到时知道它的作用。


小结:

本章学习了如何使用SQL的SELECT语句来检索单个表列、多个表列以及所有表列。下一章将讲授如何排序检索出来的数据。





0 0
原创粉丝点击