SQL查询操作的一些具体使用案例(即SELECT和WHERE的组合使用)

从表中选取数据时,需要使用SELECT,SELECT语句是SQL语言中使用最多的最基本的语句。同时,为了找出符合我们条件的数据,我们需要使用WHERE子句来添加条件。

基本的SELECT 语句:

SELECT <列名>,······
FROM <表名>

我们先来创建一个表

CREATE TABLE books
(name    CHAR(100)   NOT NULL,
sale_price  INTEGER     ,
publisher   CHAR(100)   ,
pages   INTEGER         ,
PRIMARY KEY (name));

创建了books这个表后,我们开始插入数据

# 由于我使用的是MySQL,如果有使用PostgreSQL的同学,需要将START TRANSACTION; 改写为 BEGIN TRANSACTION;

START TRANSACTION;

INSERT INTO books VALUES ('Python编程从入门到实践','89','人民邮电出版社','460');
INSERT INTO books VALUES ('Python学习手册','219','机械工业出版社','1467');
INSERT INTO books VALUES ('流畅的Python册','139','人民邮电出版社','600');
INSERT INTO books VALUES ('利用Python进行数据分析','119','机械工业出版社','476');
INSERT INTO books VALUES ('Python编程快速上手','69','人民邮电出版社','391');

COMMIT;

# 我们现在来看一看创建的这个表
SELECT * FROM books;

========output========

+------------------------+------------+----------------+-------+
| name                   | sale_price | publisher      | pages |
+------------------------+------------+----------------+-------+
| Python学习手册         |        219 | 机械工业出版社 |  1467 |
| Python编程从入门到实践 |         89 | 人民邮电出版社 |   460 |
| Python编程快速上手     |         69 | 人民邮电出版社 |   391 |
| 利用Python进行数据分析 |        119 | 机械工业出版社 |   476 |
| 流畅的Python册         |        139 | 人民邮电出版社 |   600 |
+------------------------+------------+----------------+-------+

到这里这个表就创建好了,接下来我们开始介绍SELECT语句

1. 我们使用WHERE语句来过滤记录,显示出价格大于100元的书籍和对应的价钱。

SELECT name, sale_price FROM books
WHERE sale_price > 100;

======output======

+------------------------+------------+
| name                   | sale_price |
+------------------------+------------+
| Python学习手册         |        219 |
| 利用Python进行数据分析 |        119 |
| 流畅的Python册         |        139 |
+------------------------+------------+

从显示出的结果可以看出来,我们利用WHERE语句将价钱大于100的书籍和对应的价钱显示出来。

2. 显示出价钱大于100的书籍的书名和页均价钱(定义sale_price/pages为页均价钱),这个问题将会使用到生成新列的语句AS。

SELECT name, sale_price/pages AS 'per pages price'
FROM books
WHERE sale_price > 100========output========

+------------------------+-----------------+
| name                   | per pages price |
+------------------------+-----------------+
| Python学习手册         |          0.1493 |
| 利用Python进行数据分析 |          0.2500 |
| 流畅的Python册         |          0.2317 |
+------------------------+-----------------+

这个实例中,我们学到了如何利用AS 生成一个新显示的列。

3. 我们选出所有书名形如’PythonXXXX’的书的名字。

SELECT name
FROM books
WHERE name LIKE 'Python%';

==========output==========

+------------------------+
| name                   |
+------------------------+
| Python学习手册         |
| Python编程从入门到实践 |
| Python编程快速上手     |
+------------------------+

在本案例中,我们学到了更加模糊的谓词LIKE 的用法,同时还学到了模糊查找关键字符%,如果我们想查找所有书名形为’XXXXPython’,我们可以使用 ‘%Python’,同样的,我们想找出所有书名包含’Python’的书,则为’%Python%’。

4. 我们现在找出价钱大于100,或者书页大于400的书籍,显示出书名、价钱、页码。

SELECT name,sale_price,pages
FROM books
WHERE sale_price > 100 OR pages > 400;

========output========

+------------------------+------------+-------+
| name                   | sale_price | pages |
+------------------------+------------+-------+
| Python学习手册         |        219 |  1467 |
| Python编程从入门到实践 |         89 |   460 |
| 利用Python进行数据分析 |        119 |   476 |
| 流畅的Python册         |        139 |   600 |
+------------------------+------------+-------+

在这个案例中,我们学到了在WHERE子句中,我们可以通过使用形如’OR’的逻辑运算符来显示出我们需要的数据。同样,也可以使用’AND’(表示“和”)和’NOT’(表示“不是 ~ ”)

5. 在案例4中,我们学习了逻辑运算符’OR’,我们现在来考虑这样一种情况。我们不需要那些价钱大于100,同时页码又大于400的书,我们只需要满足这两个条件中的一个即可。这种判断方法便是‘异或’,用’XOR’表示。我们来看下具体怎么使用

SELECT name,sale_price,pages
FROM books
WHERE sale_price > 100 XOR pages > 400;

==========output==========

+------------------------+------------+-------+
| name                   | sale_price | pages |
+------------------------+------------+-------+
| Python编程从入门到实践 |         89 |   460 |
+------------------------+------------+-------+

我们可以清楚看到,使用XOR时,只会筛选出符合一个条件的结果。在本案例中,就是页码大于400,同时我价钱并不大于100

6. 我们要选出页码大于400的书籍的美元价格(此价格要精确到小数点后两位),(人民币对美元汇率为6.9

SELECT name, ROUND(sale_price/6.9,2) AS 'sale_price in dollar'
FROM books
WHERE pages > 400;

======output======

+------------------------+----------------------+
| name                   | sale_price in dollar |
+------------------------+----------------------+
| Python学习手册         |                31.74 |
| Python编程从入门到实践 |                12.90 |
| 利用Python进行数据分析 |                17.25 |
| 流畅的Python册         |                20.14 |
+------------------------+----------------------+

ROUND函数为四舍五入函数,他接受需要四舍五入的列和精度,即ROUND(‘列名’,x)列名可以形如本案例中sale_price/6.9这样的运算式,x为精度。可以定义为负值,如果定义为负值。就会表示小数点前的四舍五入。

以上就是一些常用的SQL中数据查找的案例。通过这几个例子的学习,可以对SELECT和WHERE有一个大概的认知。

你可能感兴趣的:(SQL,数据分析)