欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-09-28 16:47:27
利用空闲时间花几分钟回顾一下 7.1 检索数据 为了查询出数据库表中的行(数据),使用SELECE语句。 格式: 第一种写法使用\ 通配符,会把表中行的列全部查询出来,而不必取一一列出全部列。但是不推荐使用,这跟INSERT语句的规范写法一样。 使用\ 通配符,列的顺序一般是列在表定义中出现的顺序, ......

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

7.1 检索数据

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

格式:

# 第一种
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查询的结果返回不同的值。

格式:

select distinct field1,field2,... from <stable_name>;

distinct关键字的注意:

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

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>;

在单表时可能看不出什么差别,但是在多表查询时,并且是那种有相关联的表,因为有可能两张表会有相同的列名,所以需要使用完全限定的表名来区分。