【MySQL】2. MySQL基础 - 查询语句

本文详细介绍了MySQL的基础知识,包括SQL语言的介绍、MySQL数据库的特性,以及查询语句(SELECT FROM)、去重、限制结果、CASE.WHEN.END判断、筛选(WHERE)、分组(GROUP BY)、排序(ORDER BY)等关键概念。同时,讲解了SQL中的各种运算符和函数,并提供了注释规范和实例,帮助读者理解和掌握MySQL查询操作。
摘要由CSDN通过智能技术生成

1. 创建数据库并导入示例数据库

创建数据库:

CREATE DATABASE IF NOT EXISTS testdb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
USE testdb;

创建表:

CREATE TABLE World (
name VARCHAR(50) NOT NULL,
continent VARCHAR(50) NOT NULL,
area INT NOT NULL,
population INT NOT NULL,
gdp INT NOT NULL
);

插入数据:

INSERT INTO World VALUES( 'Afghanistan', 'Asia',652230,25500100,20343000);
INSERT INTO World VALUES( 'Albania', 'Europe' ,28748,2831741,12960000);
INSERT INTO World VALUES( 'Algeria', 'Africa' ,2381741,37100000,188681000);
INSERT INTO World VALUES( 'Andorra' , 'Europe' ,468,78115,3712000);
INSERT INTO World VALUES( 'Angola' , 'Africa' ,1246700,20609294,100990000);

参考 MySQL导入示例数据库 - MySQL教程™

2. SQL是什么?MySQL是什么?

SQL

SQL(发音为字母 S-Q-L或 sequel)是 Structured Query Language(结构化查询语言)的缩写。SQL是一种专门用来与数据库沟通的语言。与其他语言(如英语或 Java、C、PHP这样的编程语言)不一样,SQL中只有很少的词,这是有意而为的。设计 SQL的目的是很好地完成一项任务——提供一种从数据库中读写数据的简单有效的方法。
SQL 有如下优点:

  • SQL不是某个特定数据库供应商专有的语言。几乎所有重要的 DBMS都支持 SQL,所以学习此语言使你几乎能与所有数据库打交道。
  • SQL简单易学。它的语句全都是由有很强描述性的英语单词组成,而
  • 且这些单词的数目不多。
  • SQL虽然看上去很简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。

MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。

来自百度百科

3. 查询语句 SELECT FROM

通用语法:

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

例如,对于上面新建的表,只需要运行下面语句,即可查看表中所有信息。

SELECT * FROM World;
+-------------+-----------+---------+------------+-----------+
| name        | continent | area    | population | gdp       |
+-------------+-----------+---------+------------+-----------+
| Afghanistan | Asia      |  652230 |   25500100 |  20343000 |
| Albania     | Europe    |   28748 |    2831741 |  12960000 |
| Algeria     | Africa    | 2381741 |   37100000 | 188681000 |
| Andorra     | Europe    |     468 |      78115 |   3712000 |
| Angola      | Africa    | 1246700 |   20609294 | 100990000 |
+-------------+-----------+---------+------------+-----------+

去重语句

在 SELECT 后面加入 DISTINCT 可筛选出不同的(具有唯一性)的值。

SELECT DISTINCT continent FROM World;
+-----------+
| continent |
+-----------+
| Asia      |
| Europe    |
| Africa    |
+-----------+

限制结果

使用 LIMIT 语句可以限制返回的条数,若同时使用 OFFSET 会加入偏移(即从跳过几行后开始取)。例如我们从跳过两行后取两条数据:

SELECT * FROM World LIMIT 2 OFFSET 2;
+---------+-----------+---------+------------+-----------+
| name    | continent | area    | population | gdp       |
+---------+-----------+---------+------------+-----------+
| Algeria | Africa    | 2381741 |   37100000 | 188681000 |
| Andorra | Europe    |     468 |      78115 |   3712000 |
+---------+-----------+---------+------------+-----------+

CASE.WHEN.END判断语句

CASE WHEN END 语法一般用于判断条件后返回对应的值,其用法有两种:

-- 简单函数
CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END
-- 搜索函数
CASE WHEN [expr] THEN [result1]…ELSE [default] END

对于前一种,用于判断字段的值:

SELECT *, 
  CASE continent 
    WHEN 'Africa' THEN '亚洲' 
    WHEN 'Europe' THEN '欧洲' 
    ELSE '其他' 
  END '大陆' 
FROM World;
+-------------+-----------+---------+------------+-----------+--------+
| name        | continent | area    | population | gdp       | 大陆   |
+-------------+-----------+---------+------------+-----------+--------+
| Afghanistan | Asia      |  652230 |   25500100 |  20343000 | 其他   |
| Albania     | Europe    |   28748 |    2831741 |  12960000 | 欧洲   |
| Algeria     | Africa    | 2381741 |   37100000 | 188681000 | 亚洲   |
| Andorra     | Europe    |     468 |      78115 |   3712000 | 欧洲   |
| Angola      | Africa    | 1246700 |   20609294 | 100990000 | 亚洲   |
+-------------+-----------+---------+------------+-----------+--------+

对于后一种,用于对条件语句进行判定,如有多个条件满足,则只会返回第一个符合条件的case,其他忽略:

SELECT *, 
  CASE  
    WHEN continent='Africa' THEN '亚洲' 
    WHEN continent='Europe' THEN '欧洲' 
    ELSE '其他' 
  END '大陆' 
FROM World;
+-------------+-----------+---------+------------+-----------+--------+
| name        | continent | area    | population | gdp       | 大陆   |
+-------------+-----------+---------+------------+-----------+--------+
| Afghanistan | Asia      |  652230 |   25500100 |  20343000 | 其他   |
| Albania     | Europe    |   28748 |    2831741 |  12960000 | 欧洲   |
| Algeria     | Africa    | 2381741 |   37100000 | 188681000 | 亚洲   |
| Andorra     | Europe    |     468 |      78115 |   3712000 | 欧洲   |
| Angola      | Africa    | 1246700 |   20609294 | 100990000 | 亚洲   |
+-------------+-----------+---------+------------+-----------+--------+

4. 筛选语句 WHERE

通用语法

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....

如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。

  • 查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以使用 AND 或者 OR 指定一个或多个条件。
  • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。

操作符:

以下是操作符列表,可用于 WHERE 子句中。

操作符 描述 实例
= 等号,检测两个值是否相等,如果相等返回true (A = B) 返回false。
<>, != 不等于,检测两个值是否相等,如果不相等返回true (A != B) 返回 true。
> 大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true (A > B) 返回false。
< 小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true (A < B) 返回 true。
>= 大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true (A >= B) 返回false。
<= 小于等于号,检测左边的值是否小于于或等于右边的值, 如果左边的值小于或等于右边的值返回true (A <= B) 返回 true。
SELECT * FROM World WHERE population > 20000000 and area < 2000000;
+-------------+-----------+---------+------------+-----------+
| name        | continent | area    | population | gdp       |
+-------------+-----------+---------+------------+-----------+
| Afghanistan | Asia      |  652230 |   25500100 |  20343000 |
| Angola      | Africa    | 1246700 |   20609294 | 100990000 |
+-------------+-----------+---------+------------+-----------+

通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。SQL 通配符必须与 LIKE 运算符一起使用。在 SQL 中,可使用以下通配符:

通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符
SELECT * FROM World WHERE continent like 'A%';
+-------------+-----------+---------+----
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值