MySQL教程之MySQL中SELECT语句简单使用
发布时间:2022-08-10 09:50:28 所属栏目:MySql教程 来源:互联网
导读:最近开始复习mysql,查漏补缺吧。 关于mysql 1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名、表名、列名这些标识符默认是区分大小写的;在之后的版本中默认不区分大小写。 2.MySQL不需要在单条SQL语句后加上分号,但是在特定的DBMS(数据库
|
最近开始复习mysql,查漏补缺吧。 关于mysql 1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名、表名、列名这些标识符默认是区分大小写的;在之后的版本中默认不区分大小写。 2.MySQL不需要在单条SQL语句后加上分号,但是在特定的DBMS(数据库管理系统)可能必须加分号以此结束。如果使用的是MySQL命令行,必须加上分号来结束SQL语句。 SELECT语句简单使用 SELECT COLUMNS FROM TABLE; 同时检索多列,字段名之间用英文逗号“,”分隔,最后一个字段名后不用跟逗号。一般,除非确实需要表中的每一列,否则别在SELECT语句中使用通配符“*”。因为检索不需要的列通常会降低检索和应用程序的性能。 1.DISTINCT关键字 使用此关键字表示去掉检索结果中相同的值。如果使用DISTINCT关键字,它必须直接放在字段名的前面。 1.不使用DISTINCT关键字 2.使用DISTINCT关键字 可以看到,使用了DISTINCT关键字后去掉了检索结果中的重复值。 问题:如果在DISTINCT关键字后面的跟多个列名呢? 不使用DISTINCT关键字 使用DISTINCT关键字 结果一样,但并不是DISTINCT关键字不起作用,DISTINCT关键字是应用于所有列的,而不是它后面紧接着的那一列。在有多列的情况下,每行的每个字段的值都相同时才不会被检索出来。如上,如果将值conductor2改成conductor1,那么第0行(和编程语言一样,检索结果序号也是从0开始)和第1行检索出来的两列值相同,所以只会出现一行。(这里不确定出现的是前一行还是后一行。) (2)LIMIT关键字 LIMIT关键字放于查询语句末尾,用于限制检索结果的行数,即只返回制定的行数。 不使用LIMIT关键字 共返回了11行。 使用LIMIT关键字(带1个参数) 返回指定的行数,即5行。 使用LIMIT关键字(带2个参数) 从第3行开始,共返回5行。 总结: LIMIT带一个参数,即返回总行数,从0行开始返回。LIMIT带2个参数,第一个参数表示从第几行处开始返回,第2个参数表示返回的总行数。另外,如果实际行数少于LIMIT后面设置的返回总行数,则返回实际行数。 在Mysql 5 中的LIMIT做了一点修改:LIMIT 3,4的含义容易被混淆,究竟是从第3行返回4行还是从第4行返回3行呢?因此在Mysql 5 中,出现了它的替代语法:LIMIT 4 OFFSET 3(返回4行,从第3行开始返回) (3)使用完全限定的表名 在上面我们用到的查询语句都只是列名来查询,现在我们在列名前加上表名来查询: SELECT user.password FROM user; 这条语句其实等价于SELECT password FROM user;但这里指定了一个完全限定的列名。 同样,我们也可以完全限定表名: SELECT user.password FROM product.user; 前提是user表在product数据库中存在。 总结:列名前用表名限定,表名前用数据库名来限定。 (4)排序数据(ORDER BY子句) 一般的,检索出来的数据并不是以纯粹的随即顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。这可以是数据最初添加到表中的顺序。但是,如果数据后来进行过更新或者删除,则此时的顺序将会受到MySQL重用回收存储空间的影响。 关于MySQL重用存储空间:当你使用delete删除数据 时,mysql并不会回收被已删除数据的占据的存储空间以及索引位,而是空在那里,等待新的数据来弥补这个空缺。被删除的数据的信息将会被保存在一个链接清单中,当有新数据写入的时候,mysql会利用这些已删除的空间再写入。这样就有一个缺点,如果一时半会,没有数据来填补这个空缺,那这样就太浪费资源了。所以对于写比较频烦的表,要定期进行optimize(参考文章) (编辑:济宁站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

