文章目录
数据库管理系统的一个最重要功能就是数据查询,数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选,以及确定数据以什么样的格式显示。MySQL提供了功能强大、灵活的语句来实现这些操作。
一、SELECT语句
从数据库表中查询数据的基本语句为SELECT语句,语法如下:
SELECT 属性列表
FROM 表名和视图
{WHERE 条件表达式}
{GROUP BY 属性名}
{HAVING 条件表达式}
{ORDER BY 属性名 ASC | DESC}
所有被使用的子句必须按语法说明中显示的顺序严格地排序。
二、简单查询
1. 查询表所有数据
- 列出表中所有字段
在SELECT语句的属性列表中列出查询表的所有字段,从而可以查询表中所有数据。 - 使用星号通配符
SELECT语句的属性列表可以为星号*,语法格式:
SELECT * FROM table_name;
SELECT * FROM table_name\G;
在执行SQL语句时,有时返回的数据中字段非常多,无法在CMD窗口的一行全部展示,而如果将字段名称显示在多行,会导致字段下的数据不能和字段名称展示在同一列,显示结果非常混乱。
使用结束符\G,可以将结果以纵向结构显示,在字段非常多时,能让显示结果更加整齐美观。
2. 查询部分数据
在SELECT语句的属性列表中指定要查找的字段名称,可以有针对性的查询结果。
MySQL中的SQL语句是不区分大小写的。因此,SELECT和select是相同的。很多书籍推荐将关键字大写,表名和数据列使用小写。
我认为,应该全部使用小写,并且我在平时的工作中也是这么做的。理由如下:
一、使用大写+小写需要切换输入法,降低开发速度,所有全部小写可以更快的编写SQL语句。
二、时间相同的情况下,单词小写的识别正确率高于大写的正确率,所以小写的SQL语句更容易识别和维护。
3. 计算结果
在查询时,可以根据需要使用算术运算符或逻辑运算符对查询结果进行处理。
例如,表emp中有员工姓名name和当前工资salary,可以查询员工工资和调薪20%以后的工资。
SELECT name, salary, salary + salary*0.2 AS salary_new FROM emp;
4. 列别名
显示查询结果时,选择的列通常是以原表中的列名作为标题。但列名通常比较简短、甚至在一些情况下含义也模糊。为改善查询结果的显示,可以在SELECT语句的列名后使用AS 新列名重新命令该列。
AS:关键字。可有可无。
5. 去除重复项
使用DISTINCT选项可以在查询结果中删除重复项。
6. 表别名
如果要查询的数据表名称较长时使用不太方便,可以为表取一个别名来代替,简化查询SQL。
7. LIMIT限制数据
当数据表中包含大量数据时,可以通过指定显示记录数限制返回结果集中的行数。
LIMIT用法有两种:
- 指定初始位置
LIMIT offset, row_count
offset指定返回的第一行的偏移量。初始行的偏移量是0,不是1。
row_count指定返回的行数的最大值。 - 不指定初始位置
LIMIT row_count
三、WHERE子句
WHERE子句用于给定源表和视图中记录的筛选条件,只能符合筛选条件的记录才能入选结果集。
1. 比较查询条件
在查询条件中使用比较运算符进行比较。