了解数据库和表
为了显示当前可用的数据库,可以使用 SHOW DATABASES;
来显示当前存在的数据库.
当然mysql语法中对于大小写没有严格的规定,如show databases;
也是可以的。
为了使用test数据库,应该输入以下内容: USE test;
USE并不返回任何结果,依赖于使用的客户机,显示某种形式的通知。
必须先使用USE打开数据库,才能读取其中的数据。
为了获得数据库内的表的列表,使用SHOW TABLES;
返回了当前选择的数据库内可用的表的列表。
SHOW也可以用来显示表列。
SHOW COLUMNS 要求给出一个表名,对于每一个字段返回一行,行中包含字段名、数据类型,是否允许NULL、键信息、默认值以及其他信息。
还可以使用DESCRIBE语句来显示列的信息,即DESCRIBE customers;
是SHOW COLUMNS FROM customers;
的一种快捷方式。
检索数据
SELECT语句
用于从一个或多个表中选择信息
为了使用SELECT语句检索表数据,必须至少给出两点信息:选择什么及从什么地方选。
检索单个列
简单的SELECT语句。
这个语句利用SELECT语句从products表中检索出一个名为prod_name的列,SELECT之后跟所需的列名,FROM关键字指出从哪个表中检索数据。
检索多个列
与检索一个列不同的是检索多个列需要在SELECT 后跟多个列名。
列名之间用逗号(,)分隔。
检索所有列
可以使用SELECT* 来检索所有列。
给定一个通配符(*),返回表中所有的列。列的顺序一般是在表中定义的顺序。
检索不同的行
SELECT返回所有匹配的行,但如果我们不需要有的行多次出现,应该怎么办?
如我们想要所有的供应商ID,
返回了14行,但其实供应商只有四个,那我们可以使用DISTINTC来检索不同的列。
SELECT DISTINCT vend_id 只返回不同的vend_id行,所以只返回四行。
限制结果
SELECT 语句返回所有匹配的行,为了返回第一行或前几行,可以使用LIMIT语句。
LIMIT语句表明返回不多于5行,为了得出下一个5行,可以指定检索的开始行和行数。
LIMIT 5, 5表明从行5开始返回5行,第一个数为开始位置,第二个为要检索的行数。
使用完全限定的表名
当前使用的例子只通过列名引用列,也可以使用完全限定的名字来引用列:SELECT products.prod_name FROM products;
等同于SELECT prod_name FROM products;
但这里是完全限定的列名。表名也可以是完全限定的:SELECT products.prod_name FROM crashcourse.products;
crashcourse是当前使用的数据库。
有些情形需要使用完全限定名,以后会讲。
排序检索数据
排序数据
SELECT语句返回表中的列,但没有特定的顺序,为了排序所检出的列,可用ORDER语句。
上述例子表明对检索出的列进行字母排序。
按多个列排序
如果要显示雇员清单,可能希望按姓和名来排序(首先按姓排序,姓相同的再按名排序),为了按多个列排序只需指定列名,列名之间用逗号隔开即可。
按多个列排序时,排序按所规定的顺序进行,如上述例子,先按prod_price进行排序,prod_price相同的再按prod_name排序。
指定排序方向
默认排序顺序是升序,还可以以降序排序,降序排序需要DESC关键字
这个例子按价格以降序排序。
但如果对多个列排序时该怎么办?
例如这个例子先对产品价格降序排序,再按名字排序。
使用ORDER BY 和LIMIT 的组合可以找出一个列中最高或最低的值