快速回顾MySQL:简单查询操做

利用空闲时间花几分钟回顾一下mysql

7.1 检索数据

为了查询出数据库表中的行(数据),使用SELECE语句。sql

格式:数据库

# 第一种
SELECT * FROM <table_name>;
# 第二种
SELECT field1,field2,... FROM <table_name>;
  • 第一种写法使用*通配符,会把表中行的列所有查询出来,而没必要取一一列出所有列。可是不推荐使用,这跟INSERT语句的规范写法同样。使用*通配符,列的顺序通常是列在表定义中出现的顺序,但有时候并非这样的,表的模式的变化(如添加或删除列)可能会致使顺序的变化。特别是像使用INSERT SELECT这样的语句,可能会报错,甚至可能会不会报错可是数据插入错误的列。
  • 推荐使用第二种,第二种查询方式能够查询表中行的所有列,也能够查询表中行的单列或多列。
  • 使用通配符注意事项:虽然使用通配符可能会省事,不用明确列出所需列,但检索不须要的列一般会下降检索和应用程序的性能。

例如:性能

  • 单列查询:
SELECT stu_name FROM student;
  • 多列查询:
SELECT stu_name, stu_sex FROM student;
  • 查询所有列:
SELECT * FROM student;
# 或(推荐)
SELECT stu_id, stu_name, stu_sex FROM student;

7.2 检索不一样的行

由于在表中有时候须要进行去重操做,可使用DISTINCT关键字,让SELECT查询的结果返回不一样的值。code

格式:table

SELECT DISTINCT field1,field2,... FROM <stable_name>;

DISTINCT关键字的注意:class

  • 若是是单列,那么使用该关键字会将该列做为判断去重的条件。
  • 若是是多列,那么会将该多列做为判断去重的条件。
  • 使用这些单列或多列做为去重条件,若是在表中都是不相同的,那么就会将全部行都查出来。

7.3 限制结果

SELECT语句返回全部匹配的行。若是为了返回第一行或前几行,那么可使用LIMIT子句。语法

格式:引用

# 第一种(n为整数)
SELECT field1,field2,... FROM <stable_name> LIMIT n;
# 第二种 (n,m为整数, n>=0, m>=1)
SELECT field1,field2,... FROM <stable_name> LIMIT n,m;

解释:程序

  • 第一种写法,对于查询出的数据(行)只返回很少于n行。
  • 第二种写法,LIMIT后的n表示查询的开始的位置,m表示要检索的行数。即,从第n行开始查询m行。
  • LIMIT后n是从0开始的,因此检索出来的第一行为行0而不是行1。所以,LIMIT 1,1 是将检索出第二行而不是第一行。
  • 若是LIMIT指定要检索的行数超过表中的行数,那么MySQL将返回它能返回的那么多行。

由于有人会把LIMIT n,m的语法搞混,好比LIMIT 3,4 是从行4开始的3行仍是从行3开始的4行?如上面所述,它的意思是从行3开始的4行。
因此,MySQL 5支持LIMIT的另外一种代替语法:LIMIT 4 OFFSET 3,意思是从行3开始取4行。

7.4 使用彻底限定的表名

到目前为止SQL例子只经过列名引用列。也可能会使用彻底限定的名称来引用列(同时使用代表和列名),以下:

SELECT <stable_name>.field1,<stable_name>.field2,...
    FROM <stable_name>;

在单表时可能看不出什么差异,可是在多表查询时,而且是那种有相关联的表,由于有可能两张表会有相同的列名,因此须要使用彻底限定的表名来区分。

相关文章
相关标签/搜索